Estimator によるノイズ管理の設定
パッケージ・バージョン
このページのコードは、以下の要件を使用して開発されました。 これらのバージョン以降の使用をお勧めします。
qiskit-ibm-runtime~=0.46.1
ノイズを管理する方法はいくつかあります。一般的に、エラーが発生する前に回避するためのさまざまなエラー緩和およびエラー抑制技術を使用します。これらの技術は通常、前処理のオーバーヘッドを引き起こします。そのため、結果を完璧にすることと、ジョブが適切な時間内に完了することのバランスを取ることが重要です。
Estimator は以下のノイズ管理技術をサポートしています。各技術の説明については、エラー緩和と抑制技術を参照してください。これらの技術を有効にする手順については、カスタム・エラー設定セクションを参照してください。
レジリエンス・レベル
resilience_level は、エラーに対してどの程度の耐性を構築するかを指定します。レベルが高いほど、処理時間が長くなる代わりに、より正確な結果が得られます。レジリエンス・レベルを使用して、プリミティブ・クエリーにノイズ管理を適用する際のコスト・精度のトレードオフを設定できます。ノイズ管理は、関連する回路のコレクション(アンサンブル)の出力を処理することで、結果のエラー(バイアス)を低減します。エラー低減の程度は、適用する手法によって異なります。レジリエンス・レベルは、ノイズ管理手法の詳細な選択を抽象化して、ユーザーがアプリケーションに適したコスト・精度のトレードオフについて考えられるようにします。
そのため、各レベルは、さまざまな時間・精度のトレードオフを試せるように、量子サンプリングのオーバーヘッドが増加する手法または手法群に対応しています。次の表は、各プリミティブで使用可能なレベルと対応する手法を示しています。
| レジリエンス・レベル | 説明 | 技術 |
|---|---|---|
| 0 | 緩和なし | なし |
| 1 [デフォルト] | 最小限の緩和コスト:読み出しエラーに関連するエラーを緩和 | ツワーリング読み出しエラー消去(TREX)測定ツワーリング |
| 2 | 中程度の緩和コスト。通常、推定量のバイアスを低減しますが、ゼロバイアスであることは保証されません。 | レベル 1 + ゼロノイズ外挿(ZNE)とゲート・ツワーリング |
レジリエンス・レベルは現在ベータ版であるため、サンプリング・オーバーヘッドとソリューション品質は回路によって異なります。新機能、高度なオプション、管理ツールは段階的にリリースされます。特定のノイズ管理手法が各レジリエンス・レベルで適用されることは保証されていません。
レジリエンス・レベルを使用した Estimator の設定
レジリエンス・レベルを使用してノイズ管理技術を指定するか、カスタム・エラー設定で説明されているように技術を個別にカスタム設定することができます。
レジリエンス・レベルに加えて手動で指定したオプションは、レジリエンス・レベルで定義された基本オプション・セットに追加して適用されます。したがって、原則的に、レジリエンス・レベルを 1 に設定しても測定緩和をオフにすることができますが、これは推奨されません。
例えば、レジリエンス・レベルを 0 に設定すると zne_mitigation がオフになりますが、estimator.options.resilience.zne_mitigation = True はその値をオーバーライドします。
例
以下のコードは、resilience_level 2 を設定することで ZNE、TREX、ゲート・ツワーリングを有効にします。
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
カスタム・ノイズ管理設定
Estimator オプションを使用して、個別のノイズ管理手法のオン・オフを切り替えることができます。
すべてのオプションがすべての種類の回路で連携して機能するわけではありません。詳細については、機能互換性テーブルを参照してください。
例
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
すべてのエラー緩和をオフにする
すべてのエラー緩和をオフにする手順については、Estimator オプション・ガイドのすべてのエラー抑制と緩和をオフにするセクションを参照してください。
次のステップ
- IBM Quantum Learning のコスト関数レッスンでエラー緩和を使用した例を実践します。
- エラー緩和とエラー抑制技術について詳しく学びます。
- Estimator オプションを探索します。
- ジョブを実行する実行モードを決定します。