情報系学生のお勉強覚書

情報系学生の記録

IBM Quantumを触ってみる

こんにちは、Chihoです。

大学院に入学して、三か月…。

卒論のこととか色々あったけど、授業や研究に忙しい感じでした…。

今日は量子ゲート方式であるIBM Quantumを触ってみたので、その覚書です。

ちなみに参考はInterfaceの2022年6月号。ちょっぴり引っかかったところもあったのでその辺を重点的に。

量子コンピュータとは

簡単に言えば、量子力学に基づいたコンピュータ。

今あるコンピュータ(古典コンピュータ)は古典力学に基づいています。そこを変えるようなコンピュータ。実際に実機もあるので触ろうと思えば触れる。

完成すると何が嬉しいかというと、今までびっくりするくらい時間のかかる計算が速くできると信じられていることです。(前IBMが言ってたのは、スパコンが1万年かかる計算が3分ちょっとでできるそう…)

実現がなかなか難しいけど、完成したら機械学習とかシミュレーションとかに応用できる。暗号面だとデメリットもあるけど…

詳しいこと書いてるとキリがないので、とりあえず計算が速くなると思われるコンピュータだと思えばいいでしょう、きっと。

量子ゲート方式

量子コンピュータと言えばこれ。歴史も長い。今回はこっちを触ります。

簡単に言えば、今のコンピュータみたいに汎用的な量子コンピュータ。論理ゲートの代わりに量子ゲートを使います。

量子アニーリング方式を聞いた後の方が分かりやすいかも。

IBMとかGoogleが頑張って開発しています。昔はNECとかも頑張っていて、量子ビットを実現させたのは日本だったりする。

IBMのやつが一部タダで使えます。量子ビット数は125ビットくらい?

量子アニーリング方式

商用化されていて、社会でよく広まっているのはこっちかも。

量子ゲート方式とはそもそもが違います。イジングモデル基底状態探索問題を解くための専用機。汎用性がない代わりに大規模化しやすい。

こいつを使うためには、解きたい問題を基底状態探索問題の形に変えなきゃいけないです。

カナダのD-Waveが有名。日本発案のアイデアだったりします。だからかもしれないけど、日本企業は量子アニーリング方式を結構やってる気がする。

なぜかNECも、こっちに注力してる。

D-Waveのやつは月に1分間無料で使えます。量子ビットは約5000ビット。ゲート方式とは比べ物にならない規模です。

 

今実現化されているのはアニーリング方式だけど、きっと将来はゲート方式が主流になるに違いないと思っています。(今のコンピュータも似たような歴史を辿っているので…)

前置きが長くなりましたが、実際に触ってみます。

 

IBM Quantumを触ってみる!!

実行環境

  • Windows11
  • AnacondaのJupyter(仮想環境は使ってないです。)

 

アカウント作成

まずはIBMのサイトでアカウントを作成します。

普通にやってればOK。

quantum-computing.ibm.com

自分のダッシュボードにAPI Tokenがあるのでコピーしておきます。

これがないと実機が使えない。

 

必要なライブラリを入れる

2つ入れれば動きます。どっちも現時点ではcondaで入らないので、pipで入れるしかないです。

  • qskit

シミュレーションしてみるとき、実機を触るとき、両方で使います。

  • pylatexenc

結果をビジュアルとして出すときに必要??

Interfaceでは特に書いてなかったけど入れないと動かないです。

 

触ってみた

細かいコード等は、Interfaceにあるので書きません。

ここら辺見るとコードは書いてあるでしょう…

qiskit.org

実行にはそこそこ時間がかかります。というか、自分自身D-Waveのアニーリングばっかりだったので…(あれは一瞬で終わる)

混み具合がかなり影響してそうです。自分の時は300人くらいいたかな…

IBM Quantumのソルバー&待ち人数

混んでないやつはビット数が少なかったり、有料だったりするっぽい。

無料だと時間があるときに遊ぶ程度かな。あとはシミュレーション使ってみるしかない。そういった意味ではD-Waveはそこそこ使えるのだと改めて認識しました。

 

ゲートの説明

次は、Interfaceで説明がなかったと思われるゲートについて自分用に書いていきます。

  • Xゲート

NOTゲートのこと。具体的には以下のように書ける。

Xゲート(なぜがTexがうまく表示されない…)



ユニタリ行列であることも確認できる。

 

  • Hゲート

Hadamard行列のこと。具体的には以下のように書ける。

Hゲート(なぜかTexがうまく表示されない…)

これを各ビットに適用すると、0,1が同じ確率で出力される。

こちらもユニタリ行列。

 

とりあえず今回はこんな感じ。記事書いてる間に結果出るかなと思ったけどまだ出ない。(´;ω;`)