Qiskit Runtime primitives を使用するためのマイグレーション¶
このガイドでは、QisKit Runtime primitive を使用するために、従来の qiskit-ibmq-provider
パッケージからコードを移行するのに役立つコード例と使用例について説明します。
Primitive は、アプリケーションパッケージで見られる一般的なデバイスクエリーをカプセル化し、Qiskit Runtimeサービスを通じてパフォーマンスを管理できるため、量子アルゴリズムを書くための推奨ツールです。しかし、アルゴリズムがプリショット測定など、より詳細な情報を必要とする場合、Primitive は望ましい抽象化レベルを提供しないかもしれません。
Qiskit RuntimeのPrimitiveは、 qiskit.primitives にある参照用の Sampler
と Estimator
インターフェイスを実装します。これらのインターフェースにより、最小限のコード変更でPrimitive の実装を切り替えることができます。異なるPrimitive の実装は qiskit
, qiskit_aer
, qiskit_ibm_runtime
ライブラリーで見つけることができます。それぞれの実装は特定の目的を果たすものです:
qiskit
の Primitive は、ローカルな状態ベクトルのシミュレーションを行うことができ、アルゴリズムの迅速なプロトタイピングに有用です。qiskit_aer
の Primitive は、ノイジーシミュレーションなどのタスクのために、ローカルAerシミュレーターへのアクセスを提供します。qiskit_ibm_runtime
の Primitive は、Qiskit Runtimeサービスを通じて、クラウドシミュレーターや実際のハードウェアにアクセスすることができます。回路最適化やエラー軽減のサポートなど、独自の機能を内蔵しています。
注意
Qiskit Runtimeサービスへのアクセスを提供するPrimitive は、 qiskit_ibm_runtime
(Qiskit Runtime Primitives)からインポートしたものだけです。
移行する際、Primitive を使って同等のアルゴリズムを書くには、まずアルゴリズムが基づいている情報の最小単位が何であるかを特定することが重要です:
どの Primitive を使うかを決めたら、アルゴリズムがバックエンドにアクセスする箇所を特定します。 backend.run()
という呼び出しを探します。次に、この呼び出しを、以下の例のように、それぞれの Primitive の呼び出しに置き換えます。
注釈
Qiskitライブラリの中には、独自の backend.run()
ラッパーを提供しているものがあります。例えば、以前 qiskit.algorithms
で使用されていた QuantumInstance
です。このような依存関係を持つコードを移行するには、実行メソッドを対応する Primitive に置き換えます。
このガイドでは、2つの基本的なタイプのユーザーを対象にした例を紹介しています:
アルゴリズムをリファクタリングして backend.run の代わりに Primitive を使用する必要があるアルゴリズム開発者は、これらのトピックを参照する必要があります:
Qiskitアルゴリズムを参照しているが、Primitiveを直接使用していないアルゴリズムユーザー。 これらのユーザーは、更新されたQiskitアルゴリズムに、バックエンドの代わりにPrimitiveを渡す必要があります。 詳細については、このトピックを参照してください:
` 更新された Qiskit アルゴリズムの処理 <migrate-qiskit-alg.html>`__
以下のトピックは、コードの移行例のユースケースです:
` 実行中のパラメーター値の更新 <migrate-update-parm.html>`__
QisKit Runtime を使う理由¶
機能 |
Backend.run |
Runtime Primitives |
---|---|---|
単純化されたアルゴリズム構築ブロック |
||
柔軟なインターフェース |
||
柔軟な計算の統合 |
||
キューの効率化 |
||
データ キャッシング |
||
エラー緩和のサポート |
||
SAAS 有効化 |
キー:
はサポートされていません
フル・サポート
将来のサポート
Qiskit Runtimeを使うメリット:
アルゴリズムの設計と最適化を簡素化
量子サブコンポーネントと古典サブコンポーネントの間の人工的なレイテンシーを最小化し、反復作業負荷を効率的に管理するように設計されたコンテキストマネージャーであるセッションを使用して、回路をより速く実行します。
エラーの抑制や軽減などの機能を含む、最新のパフォーマンスとハードウェアの最適化により、最も強力な量子システムにアクセスできます。
量子サーバーレス・ツールキットを使用することで、Qiskit Runtimeをクラウドまたはオンプレミスの古典的な計算リソースと簡単に統合することができます。
簡易化されたインタフェース:
Use primitives to write code more efficiently. For details, see the examples topics, such as Using Estimator to design an algorithm.
![]()
図 4 Primitive を使用しないコードと、Primitive を使用するように書き直した後の同じコード。¶
FAQ¶
ユーザーは、コードを Qiskit Runtime に移行する際に、以下の質問を持つ場合があります。
Which channel should I use?
Qiskit Runtime primitive を使用することを決定した後、ユーザーはIBM CloudまたはIBM Quantum PlatformのどちらでQiskit Runtimeにアクセスするかを決める必要があります。 その判断に役立つ情報としては、以下のようなものがあります:
利用可能なプラン:
Qiskit Runtime は、 IBM Quantum Platformでのオープン (無料アクセス) またはプレミアム (契約ベースの有料アクセス) プランの両方で使用可能です。 詳しくは、IBM Quantumアクセスプラン を参照してください。
Qiskit Runtimeは、 IBM クラウドで ライトプラン (無料アクセス) またはスタンダードプラン (お客様へのお支払いによるアクセス) を介してアクセスが可能です。 詳細については、 プラン を参照してください。
ユース・ケース要件:
IBM Quantum Platform は、ビジュアルなサーキット・コンポーザー (Quantum Composer) とJupyter Notebook 環境 (Quantum Lab) を提供しています。
IBM クラウド は、他のクラウドサービスと量子機能を統合する必要がある場合に理想的なクラウドネイティブサービスを提供します。
How do I set up my channel?
QisKit Runtime とのやり取りに使用するチャンネルを決定した後、以下の手順を使用して、いずれかのプラットフォームで設定できます。
IBM Quantum Platform 上の Qiskit Runtime を開始するには、 Experiment with Qiskit Runtime を参照してください。
IBM クラウド上で Qiskit Runtimeを開始するには、Getting Started guide を参照してください。
Should I modify the Qiskit Terra algorithms?
V0.22 以降では、 Qiskit Terra アルゴリズム は Qiskit Runtime primitive を使用します。 したがって、振幅推定値や他のQisKit Terraアルゴリズムを変更する必要はありません。
Which primitive should I use?
どちらのPrimitive を使用するかを選択する際には、まず、アルゴリズムが量子状態 ( 準確率のリスト) から抽出された 準確率分布 を使用するか、または量子状態 ( 実数) に関して、ある特定の観測値の 期待値 を使用するかを理解する必要があります。
確率分布は、目の前の問題に対する特定の解を符号化した古典的なビット列を返す最適化問題で、しばしば関心を持たれます。このような場合、例えば、量子状態から測定される確率が最も大きいケット値に対応するビット列を見つけることに興味があるかもしれません。
量子状態を知ることが重要でないシナリオでは、観測値の期待値を目標量とすることができます。これは、最適化問題や化学の応用でよく起こることです。 例えば、あるシステムの極限エネルギーを発見しようとする場合などです。