2024年3月16日土曜日

量子コンピュータで動的回路(Dynamic circuits)を使う

要旨:量子コンピューティングでは、量子ビットを測定してしまうとそこでお終いになる。つまり、その測定結果に応じて量子回路を変更することはできない、と思っていたが、最近それができるようになっていた。QiskitでIBM Quantumマシンを使う場合のDynamic Circuits機能がそれだ。

動的回路(Dynamic Circuits)機能
 量子回路を実行していて、あるところで測定を実行したとする。その結果(古典ビット0か1)に応じて、その後に必要な量子ゲートを動的に加えて実行を継続することができる機能[1][2][3]である。具体的には、図1(a)のようなif文による制御、(b)のようなswitch(case)文による制御、それ以外に、forループやwhileループも使える。ただし、使用するシミュレータ、および実機マシンによっては、これらのいくつかはサポートされていないようだ。


動的回路で量子テレポーテーションを実行
 参考資料[3]に示されているように、このような動的回路で思いつくのが、量子テレポーテーションである。量子テレポーテーションの仕組みについては、[4]の記事を参照願いたい。図2に示す、Aliceによる2つの量子q0とq1の測定後、Bobにその古典2ビット情報を通常通信で送るのだが、そこでその量子回路はおしまいになっていた。その後別途、Bobは受信内容を確認し、それに応じたデコード用の量子回路を設定していた。

 この状況に対して、動的回路を図3のように組むことができる。これによって、途中の動的回路を含む、全体で一つの量子回路で動作を完結させることができる。これは、アルゴリズムを確かめる上でとても便利であり、強力である。
 念の為であるが、qc0はどんな状態であっても良い。ここでは一例として、|0>にRX(π/4)を適用した状態とした。もちろん、その状態はBobは知らない訳だが、動的回路の部分はいつもこのままで良く、Bobは送られてきたどんな状態でも再現できるのである。そこが、量子テレポーテーションの驚異的なところである。


量子テレポーテーションの実機による確認 
 さて、図3の量子回路がうまく働くかを、IBM Quantum実機(ibm_kyoto)で確認した結果が図4である。結論を言うと、この図から、この実機では80%の確率で量子テレポーテーションが成功した。全部で1000shotの実行のうち、図4の赤点線で囲ったカウント(合計200)は、何らかのノイズによるエラーであろう。本来はこの部分は全て0となるはずである。
 ここで80%成功とは何か?それは、図4の左側4本のカウントは、いずれも最上位ビット(qc2に対応)が0であることを指す。レジスタqc2の最後でBobが測定する直前に、RY(-π/4)を設定しているので、これによって、元々Aliceがqc0に設定した状態をキャンセルする、すなわち|0>に戻るからである。

 なお、実機ではなくシミュレータで実行した結果は図5のようになった。現状の実機では、シミュレータとの差がこのように生ずる場合がある。

 なお、IBM Quantum Composer(ただし、シミュレータによる実行)でも以下ように同様にできる。だが、古典ビットレジスタCの検査が、図3の場合と異なり、ビット毎ではなく、3ビットの10進数として扱うので、注意が必要である。if文による動的ゲートの設定が4つになっている。

(補足事項1)Quantum Labに置くfile容量に注意
 突然、QuantumのLabサーバ起動しなくなった。ブラウザのキャッシュやクッキーを削除したりしてみたが直らない。Qiskiには、ipynbファイル内で、ブロッホ球やその上のtransition表示や、Latex形式回路図表示などができる。しかし、これらはかなりのファイル容量を占める。一つの回路で35MBにもなっていた。それが数十個もあった。そこが原因だったらしい。これらの表示をコメントアウトしてsaveして、再起動したところ回復したようだ。

(補足事項2)実機使用可能無料枠
 実機での実行を繰り返してきたので、使用状況を見てみた。今月は、無料枠ではあと3分強しか使えない。有効に活用しよう。

参考文献

[1] Classical feedforward and control flow
https://docs.quantum.ibm.com/build/classical-feedforward-and-control-flow

[2] Repeat until success
https://learning.quantum.ibm.com/tutorial/repeat-until-success

[3] @kifumi、動的回路で量子テレポーテーションを実行する
Qiita記事、最終更新日 2023年03月20日

[4] 超高密度符号化と量子テレポーテーション(その3)
https://sparse-dense.blogspot.com/2022/12/blog-post_2.html

0 件のコメント:

コメントを投稿