から移行する BackendV1 BackendV2
Qiskit BackendV1 クラスは非推奨となり、サービスから削除されます。 この移行ガイドでは、プロバイダを次のようにアップグレードした場合に必要な微調整について説明します。 BackendV1 から BackendV2.
qiskit_ibm_runtime と qiskit_aer のみを使用している場合は、何もする必要はない。 qiskit_ibm_runtime パッケージは常に BackendV2 を使用し、 qiskit_aer はバージョン 0.13 以降 BackendV2 を使用している。
高次元の変化 BackendV2
Qiskit Backend モデルは、 Qiskit SDK、SDKの範囲内で量子コンピュータに関する推論を可能にする抽象化レイヤーを提供するために設計された。 SDKの範囲内で量子コンピュータに関する推論を可能にする抽象化レイヤーを提供するために設計された。 モデルの最初のイテレーションは、次のように導入された。 BackendV1 クラスで導入された。 このクラスは、バックエンドの情報を一連の データコンテナの BackendConfiguration そして BackendProperties クラスである。
その BackendV2 クラスは クラスは、ほとんどのバックエンドプロパティに対するユーザーアクセスを再定義し、ネイティブのQiskitデータ構造と連動して、よりフラットな アクセスパターンを持つようになりました。 モデルの核となるのは BackendV2 モデルは Target クラスであり、Qiskitが実行のために回路を最適化するために使用できる転置制約を含むQPUの表現です。
Qiskit SDK は、以下の入力専用にアップデートされた。 BackendV2 入力専用に更新されました、 ほとんどのプロバイダーは BackendV1 から BackendV2. 既存のプロバイダーは、可能な限り古いアクセスを非推奨とし、優雅な移行を提供することが期待されるが、最終的にはユーザーがコードを調整する必要がある。
その原理は BackendV2 の原則は バックエンドに関する情報のほとんどは、そのバックエンドの Target バックエンドの属性はしばしば バックエンドの属性は、情報を返すために BackendV2.target 属性に問い合わせることが多いからです。 しかし、多くの場合、属性は を提供するだけである。 例えば backend.coupling_map は CouplingMap を返します。 Target 属性でアクセス可能な BackendV2.target 属性から構築されたものを返します。 しかし、ターゲットには には表現できない)。 CouplingMapで表現できない)、あるいは のサブセット(2量子ビットの命令では2つの量子ビットリンク)だけを操作する命令があるかもしれません。 によって返される完全なカップリングマップには詳細がありません。 BackendV2.coupling_map. そのため、ユースケースによっては を使った同等のアクセスだけでなく、もっと深く調べる必要があるかもしれない。 BackendV2.
特定の変更 BackendV2
ほとんどのアトリビュートには直接的な置き換えがあり、移行作業を簡素化できる。 インターフェイス間で唯一ミスマッチがあるのは CouplingMap.
のアクセスパターンの例を以下に示す。 BackendV1 と新しいフォーム と BackendV2.
重要な注意事項は右側にスクロールしてご覧ください。
ノート | ||
|---|---|---|
backend.configuration().n_qubits | backend.num_qubits | |
backend.configuration().coupling_map | backend.coupling_map | からのリターンは BackendV2 は CouplingMap オブジェクトである。 それは BackendV1 はエッジ・リストである。 また、これは backend.target に含まれる情報のビューに過ぎず、オブジェクトに含まれる情報のサブセットに過ぎないかもしれない。 Target オブジェクトに含まれる情報のサブセットに過ぎないかもしれません。 |
backend.configuration().backend_name | backend.name | |
backend.configuration().backend_version | backend.backend_version | BackendV2.version 。 Backend を表し、 BackendV2.backend_version はバックエンド自体のバージョンに関するメタデータです。 |
backend.configuration().basis_gates | backend.operation_names | は BackendV2 は、 backend.target 属性に含まれる操作名のリストを返します。 この Target は、この名前のリストで表現できる以上の情報を含んでいるかもしれない。 例えば、あるオペレーションは量子ビットのサブセットでしか機能しないし、ある名前は同じゲートを異なるパラメータで実装している。 |
backend.configuration().dt | backend.dt | |
backend.configuration().dtm | backend.dtm | |
backend.configuration().max_experiments | backend.max_circuits | |
backend.configuration().online_date | backend.online_date | |
InstructionDurations.from_backend(backend) | backend.instruction_durations | |
backend.defaults().instruction_schedule_map | backend.instruction_schedule_map | |
backend.properties().t1(0) | backend.qubit_properties(0).t1 | |
backend.properties().t2(0) | backend.qubit_properties(0).t2 | |
backend.properties().frequency(0) | backend.qubit_properties(0).frequency | |
backend.properties().readout_error(0) | backend.target["measure"][(0,)].error | で BackendV2では Measure では、与えられた量子ビットに対する演算の誤差率が読み出し誤差のモデルに使用されます。 しかし BackendV2 オブジェクトは複数の測定タイプを実装でき、それらを別々に Target. |
backend.properties().readout_length(0) | backend.target["measure"][(0,)].duration | で BackendV2では Measure では、読み出し長をモデル化するために、与えられた量子ビットに対する演算の時間が使用されます。 しかし BackendV2 オブジェクトは複数の測定タイプを実装でき、それらを別々に Target. |