Estimator によるノイズ管理の設定
パッケージ・バージョン
このページのコードは、以下の要件を使用して開発されました。 これらのバージョン以降を使用することをお勧めします。
qiskit-ibm-runtime~=0.47.0
ノイズを管理する方法はいくつかあり、通常はさまざまなエラー緩和およびエラー抑制技術を使用して、エラーが発生する前に回避します。これらの技術は通常、前処理のオーバーヘッドを引き起こします。そのため、結果を完璧なものにすることと、ジョブが妥当な時間内に完了するようにすることの間でバランスを取ることが重要です。
Estimator は以下のノイズ管理技術をサポートしています。各技術の説明については、エラー緩和と抑制技術を参照してください。これらの技術を有効にする例については、カスタム・ノイズ管理設定セクションを参照してください。
動的デカップリング
有効化の方法: options.dynamical_decoupling.enable = True
API リファレンス: DynamicalDecouplingOptions
主なオプション: sequence_type
パウリ・ツワーリング
有効化の方法: options.twirling.enable_gates = True
API リファレンス: TwirlingOptions
主なオプション: num_randomizations, shots_per_randomization
TREX
ZNE
有効化の方法: options.resilience.zne_mitigation = True
API リファレンス: ZneOptions
主なオプション: noise_factors, extrapolator
PEA
有効化の方法:(ZNE も有効にする必要があります)options.resilience.zne_mitigation = True および options.resilience.zne.amplifier = "pea"
API リファレンス: ZneOptions
主なオプション: noise_factors, extrapolator
PEC
レジリエンス・レベル
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 — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
カスタム・ノイズ管理設定
Estimator オプションを使用して、個別のノイズ管理手法のオン・オフを切り替えることができます。
- すべてのオプションが、あらゆる種類の回路で併用できるわけではありません。詳細は機能互換性の表を参照してください。
qiskit-ibm-runtimev0.50.0 で導入された新しいクライアントサイド Estimator を使用する場合、PEA と PEC を使用するには別途ノイズ学習ジョブが必要です。詳細はサーバーサイドからクライアントサイドの Sampler と Estimator への移行を参照してください。
複数のオプションを使った完全な例
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import 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 オプションを確認します。
- ジョブを実行する実行モードを決定します。