メインコンテンツへスキップ
このプロジェクトはベータ版です。バグを見つけましたか?GitHub Issueを開く。質問やアイデアがありますか?Discussionsで質問する — フィードバックをお待ちしています!
このページの翻訳品質はいかがですか?

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

有効化の方法: options.resilience.measure_mitigation = True

API リファレンス: MeasureNoiseLearningOptions

主なオプション:

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

有効化の方法: options.resilience.pec_mitigation = True

API リファレンス: PecOptions

主なオプション: max_overhead

レジリエンス・レベル​

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 オプションを使用して、個別のノイズ管理手法のオン・オフを切り替えることができます。

注意

複数のオプションを使った完全な例​

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 オプション・ガイドのすべてのエラー抑制と緩和をオフにするセクションを参照してください。

次のステップ​

おすすめ