IBM Quantum無料利用枠の新しい計算方法:最近気付いたことだが、私にとってはちょっと重要事項なので書き留める!
![]() |
| Here’s the image illustrating the change in IBM Quantum’s free usage calculation method. |
![]() |
| An example |
I am a professor emeritus of CS at Kanagawa Institute of Technology, Japan. Originally my specialty was parallel and distributed systems. My current interests include machine learning, natural language processing, creating mobile apps with MIT App Inventor, and quantum computing. In the web version of this blog, clicking the icon on the right (a plastic sphere) will take you to the "List of Quantum Computing Articles". - Fujio Yamamoto (for e-mail, add "@ieee.org" after "yamamotof")
IBM Quantum無料利用枠の新しい計算方法:最近気付いたことだが、私にとってはちょっと重要事項なので書き留める!
![]() |
| Here’s the image illustrating the change in IBM Quantum’s free usage calculation method. |
![]() |
| An example |
English version here
【要旨】量子コンピューティングの代表的な開発環境として、IBM Qiskitを利用している。そのバージョンアップは頻繁になされて、すぐにdeprecated(非推奨、または廃止)となる部分が多く、困惑する場合がある。量子ゲートや量子回路の記述などはほとんど変わらないが、シミュレータ、および実機での実行方法などの変更が多発する。ここでは、現時点(2024-11-10)での典型的な実行方法3つをメモして置きたい。
🔴例題:Shorの素因数分解アルゴリズムの量子計算部分
ここでは、Shorのアルゴリズムの主要部である位数計算(order finding)量子回路を動かすことだけに注目する。Fig.1は、デモとして動かすための、極く小さな整数15の素因数分解(15 = 3 × 5)の場合である。Shorのアルゴリズム全体とFIg.1の量子回路との関係などは今回は説明しないので、例えば以下のような過去記事をご覧いただきたい。
🔴[1]Qiskit Samplerによるシミュレーション(ローカルPCで実行)
Fig.1のような量子回路(名称:qc)の実行(下位3量子ビットの測定を含む)を行うための最も一般的なシミュレータとして、Qiskit Samplerがある。その利用の要点は以下のとおりである。このシミュレーションの結果(1,000 shotsの測定結果)をFig.2に示す。
# シミュレーションの実行
from qiskit_aer.primitives import Sampler
sampler = Sampler()
result = sampler.run(qc, shots=1000).result()
# 測定結果の取り出しと図示
quasi_dists = result.quasi_dists
binary_quasi_dist = quasi_dists[0].binary_probabilities()
counts_dict = quasi_dists[0].binary_probabilities()
counts = Counts(counts_dict)
plot_histogram(counts)
【要旨】予告通り本日(現地時間 2024-5-15)、IBM Quantum Labのサービスが停止。これまでWeb上でQiskitコード(with Python)で量子回路を編集し、シミュレータや実機で実行できた環境がなくなってしまった!そのかわり、従来のComposerと呼ばれるビジュアル量子回路編集のサービスの質向上が図られた。そこから、実機で実行することもできるので、全体としては、ユーザサービスは向上したと言える。
🔴IBM Quantumからのアナウンス
図1に示す通りだが、アナウンスはこのサイトの中にある。今後は、Qiskitコード編集、および実行環境はユーザ自身がローカルマシンに構築しなければならない。Webでのサービスは終了したのである。量子コンピュータハードウェア開発競争が激化し、IBMもハードウエア開発により注力するためらしい。
Qiskitで作成した量子回路は、ユーザのローカル環境からもIBM Quantumマシン実機で実行できるので、中級以上のユーザには特に問題ないであろう。一方、初級ユーザ(および中級ユーザ)は、従来のビジュアル型のComposerが利用でき、今回はそのサービス内容もかなり向上したようである。
🔴新しいIBM Quantum Composerを使ってみる
前向きに捉えて、新しくなったComposerを使ってみた。簡単な例題として、先のポストで示した「位相キックバックの量子回路」を使う。図2上部のように、量子回路の編集において、その各フェースで、確率振幅と位相を分かりやすく円盤で表示できる。また、図2下部に示すように、基底ベクトル毎の確率計算結果も表示される。
このようにビジュアルに編集した量子回路に対して生成されるQiskitコードも見ることができる。図3にそれを示す。このコードをコピーして、自分のQiskit環境で使うこともできる。そして、注目すべきは、この画面から、IBM Quantumマシン実機で実行させることができることだ。特に嬉しいことに、利用可能なマシンそれぞれの混み具合(キューに何個のジョブが実行待ちか)を確認できるので、早く実行できそうなマシンを指定できる。性能(誤り発生率など)指標も表示されるので選択の参考にもなる。
今回は、ibm_brisbaneという名称のマシンを指定したところ、まもなく実行された。実行結果として、1024ショット(デフォルト試行回数)のうちの、各基底ベクトルの出現頻度(Frequency)がヒストグラムで表示される。
ここで良いことがある。この実行の結果、基底ベクトル|01>の頻度は図4の通り、94%であった。本来は、図2に示した通り、この頻度は理論計算上100%のはずだが、実際のマシンでは、このように数%程度の誤差が生ずる。
もう一例示そう。図5は、3-qubitの強い量子もつれを起こすGHZと呼ばれる量子回路である。そのシミュレータ(小生自作のアプリ)とQuantumマシン実機(ibm_brisbane)の結果も図4の場合と同様に若干の差異が生じている。理論計算では、右側のシミュレータが示す通り、基底ベクトル|000>と|111>以外の基底ベクトルの頻度はゼロになるはずである。
現状の本物の量子コンピュータとはこういうものである。それを実感することはとても重要なのではないか。現在の量子コンピュータ開発競争ではこのような誤差の低減を目指しているのだが、量子物理の世界はそういうものだ、として受け入れて利用したいという気にもなる。もちろん、幾つか分野の数理アルゴリズムでは、このような少しの誤差も許容できない場合があることも事実だ。
数週間までまで正常に動いていた、Qiskitコードが、2024-03-10現在、突然エラーが出て動かなくなった。これはどうしたことか。Qiskitドキュメントを調べると、Qiskit 1.0.1になって、かなりの変更があったことが分かった。よくみると、migration guideもあるではないか。それに従って、以下のような点を修正する必要があった。
●シミュレータを使う場合:以下のようにして解決
qiskitからAer, executeなどをimportできなくなった。
qiskit.tools.visualizationからplot_histogramなどがimportできなくなった。等々。
→別のライブラリから、QiskitRuntimeService等のimportが必要。
●IBM Quantum実機を使う場合:以下のようにして解決
Qiskitの素晴らしい点として、シミュレータibmq_qasm_simulatorで動かしていた量子回路はそのままIBM Quantum実機でも動くことであった。シミュレータの名前を単に、実機の名前、例えばibm_brisbane等に変更するだけであった。
しかし、こちらも、突然動かなくなったのである。実機で動かす前に、まず、無償で利用できる実機を確認した。登録ユーザの地域で異なるのだろうが、私の場合、ibm_brisbane、ibm_osaka、ibm_kyotoの3つであったが、いずれも、127量子ビットを装備した新鋭機 Eagle r3である。素晴らしい!だが、早速実行させてみると、以下のエラーが発生。しかも、"CX (CNOT) is not supported"という信じ難いエラーメッセージが!
最初は、戸惑ったのだが、すぐにピンと来ました。このCXやHなどという量子ゲートは数学モデルにすぎない。実機がそのまま実装している訳ではないということだろうと。案の定そのその通りでした。シミュレータで動かしていた時の量子回路をtranspileというツールで変換した後に実機で実行すると成功しました!●Transpileが1分間でわかるビデオ解説
以下のビデオはとても良いのではないか!最適化レベルもいくつかある!
How can I Transpile a Quantum Circuit? 1 Minute Qiskit
https://www.youtube.com/watch?v=8mrPNSctRIg