backend.runはQiskit Qiskit Runtime primitiveとどう違うのか?¶
既存のQiskit backendインターフェース( backend.run()
)は、元々回路リストを受け取り、各ジョブのshot数を返すように設計されています。ユーザーのニーズが変化するにつれて、そのニーズに対応するために、より柔軟な新しいツールが必要であると認識し、Qiskit Runtimeが誕生しました。
Qiskitを単独で使用する¶
Qiskitはもともと、回路を直接実行するために設計されました。Qiskitのユーザーは回路を送信し、量子システム上で実行されるジョブから結果を受け取ります。多くの場合、これらのジョブは、回路パラメーターを最適化するための反復(変分)アプローチを含む、より大きなアルゴリズムの一部となっています。このような場合、各ジョブをキューイングすると、処理時間が長くなります。
Qiskit Runtimeの活用¶
Qiskit Runtimeは、ワークロードのパフォーマンスにおいて優位性を発揮します。変分アルゴリズムは、Estimator primitive を通じて、QPUとコロケーションされた従来の計算リソース上で実行することができます。これにより、ユーザーは反復アルゴリズム回路を繰り返し実行することができます。また、sessionは、各ジョブを待ち行列に入れることなく一連のジョブを駆動することができ、sessionがアクティブに実行された後のキュー待ち時間のレイテンシーを回避することができます。その結果、Qiskit Runtimeは従来のものと比べてはるかに効率的なものとなっています。
機能 |
backend.run |
Qiskit Runtime Primitives |
---|---|---|
回路と変分作業負荷のための抽象化としてのPrimitiveインタフェース |
No |
Yes |
一連のジョブの性能を向上させるためのsession |
No |
Yes |
自動的なエラー抑制と緩和を可能にする抽象化されたインタフェース |
No |
Yes |
変分アルゴリズムの性能向上 |
No |
Yes |
Qiskitコミュニティによって開発されたコードの実用例 |
Yes |
Yes |
Pulse Gates |
Yes |
Yes |
動的回路 |
Yes |
No |