Qiskitを使って量子回路を構築し、その量子回路の実行結果を取得するためには、量子回路を実行するバックエンドを指定する必要があります。
このバックエンドには、Pythonのライブラリqiskit-aer
をインポートすれば使えるもの、IBM CloudのQiskit Runtimeサービスを利用するもの、IBM Quantum Platformサービスを利用するものがあります。
バックエンドにも色々と種類があり使用するときに困りそうだったので、簡単ではありますが調べたことをまとめたいと思います。
(2024/05時点、qiskit-aer
は0.14.1)
実行環境の準備
qiskit-aer
以下のコマンドを実施して、ライブラリをインストールすれば使用できるようになります。
python -m pip install qiskit-aer
ライブラリの詳細な利用方法については今回は省きますが、公式ドキュメントのチュートリアルなどが参考になるかと思います。
Qiskit Runtime
Qiskit RuntimeとIBM Quantum Platformを利用するにはIBMidが必要です。(IBMidの取得方法については @kifumi さんの下記の記事で詳しく説明してくださっています)
IBMidを作成したら、IBM Cloudにログインします。
ログインしたら画面上部のリソース検索バーにqiskit
と入力してQiskit Runtime
を探します。
画像赤枠の部分をクリックしてQiskit Runtime
のカタログを表示したら、料金プランを選択し、利用規約にチェックを入れて作成します。(今回は無料の範囲で使用したいのでLiteプランで作成します。)
リソース作成後、リソースリストでQiskit Runtime
のステータスが アクティブ になっていればサービスが利用できるようになっています。あとはQiskitRuntimeService()
に作成したサービスの情報を指定すれば利用できます。
具体的には、Qiskit Runtimeリソース画面のCRNとIBM CloudのAPI Key(作成していなければAPI Key発行画面にアクセスして作成する必要があります)を以下のコードのqiskit_ibm_runtime
に指定します。
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel="ibm_cloud", token="<IBM Cloud API key>", instance="<IBM Cloud CRN>")
IBM Quantum Platform
IBMidを作成したら、IBM Quantum Platformにログインすることでサービスを使用可能になります。
具体的な使用方法は、画面に表示されているAPI Tokenを、以下のコードのqiskit_ibm_runtime
に指定します。
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel="ibm_quantum", token="<IQP_API_TOKEN>")
実際にコードを書いて実行してみたい方
この記事ではバックエンドの詳しい実行方法については記載しませんが、以下の記事を参考に、バックエンドの部分だけ変更して実施すると試すことができるかなと思います。
実行環境の差異
各ツールについて、量子プログラムが実行される場所と、その実行されるバックエンドについて表にすると以下のようになります。
ツール | 実行場所 | 実行環境(太字は実機) |
---|---|---|
qiskit-aer | ローカルPC上 | AerSimulator StatevectorSimulator UnitarySimulator |
Qiskit Runtime | リモート | ibmq_qasm_simulator simulator_stabilizer simulator_mps simulator_extended_stabilizer simulator_statevector |
IBM Quantum Platform | リモート | ibmq_qasm_simulator simulator_stabilizer simulator_mps simulator_extended_stabilizer simulator_statevector ibm_brisbane ibm_sherbrooke ibm_kyoto ibm_osaka |
qiskit-aer
はローカルで実行できる分、Qiskit Runtime
やIBM Quantum Platform
と異なりすぐに導入できるうえ、リモートでの処理を待つことがないので気軽に試すことができます。ただし量子回路に設定する量子ビットの個数を増やすと処理が目に見えて重くなってしまうので、少ない量子ビットの回路に限定されてしまうという問題はあります。
Qiskit Runtime
のライトプランは、実行環境がシミュレーターに限定されているものの、最大3時間まで無料で利用できます。(Standardプランにして利用した分の料金を払えばIBM Quantum Platform
と同じように実機を使用することもできます。)
IBM Quantum Platform
は現状使用可能なすべてのシミュレーターと実機を無料で利用できるものの、1ヶ月で最大10分しか利用できません。
Qiskit RuntimeとIBM Quantum Platformの利用可能時間について
Qiskit Runtime
とIBM Quantum Platform
は同じシミュレーターが利用できるので、それぞれの利用可能時間は共有されているのか疑問に思い、実行して調べてみましたが、それぞれ別の環境となっているようでした。そのため、シミュレーターを利用したい場合はQiskit Runtime
、実機を利用したい場合はIBM Quantum Platform
を利用するようにすると良いかなと思います。
まとめ
量子回路のバックエンドについて、使う判断基準を簡単にまとめると以下のようになるかなと思います。
-
qiskit-aer
- 量子回路の実行を試してみたい場合
- 基本はこれで十分
-
Qiskit Runtime
- qiskit-aerより多くの量子ビットを使用するシミュレーションを実行したい場合
-
IBM Quantum Platform
- 無料で量子回路の実機実行をしたい場合
もっと詳しい情報や、記述内容の間違い、実行環境の構築が上手くできないなどございましたら、コメント等で指摘いただけるとありがたいです。