Estimator を使用してノイズ管理を設定する
このページのコードは、以下の要件に基づいて開発されました。 これらのバージョン以降のご利用をお勧めします。
qiskit-ibm-runtime~=0.47.0
ノイズを管理するにはいくつかの方法があり、一般的には、エラーが発生する前に未然に防ぐために、さまざまなエラー軽減やエラー抑制の手法を用います。 これらの手法は通常、前処理のオーバーヘッドを伴います。 したがって、成果を完璧に仕上げることと、作業を妥当な時間内に完了させることとのバランスをとることが重要です。
Estimatorは、以下のノイズ管理手法に対応しています。 それぞれの説明については、 「エラーの軽減および抑制手法 」を参照してください。 これらの機能を有効にする方法については、 「カスタムエラー設定 」のセクションを参照してください。
レジリエンスレベル
ここでは、エラーに対してどの程度のresilience_level耐性を備えるかを指定します レベルが高いほど、処理時間は長くなりますが、
より正確な結果が得られます。 レジリエンスレベルを設定することで、
プリミティブクエリにノイズ管理を適用する際の
コストと精度のバランスを調整できます。 ノイズ管理は、関連する回路群(アンサンブル)からの出力を処理することで、
結果における誤差(バイアス)を低減します。 誤差の低減度は、適用される手法によって異なります この耐障害性レベルは、ノイズ管理手法の具体的な選択を抽象化することで、
ユーザーが自身のアプリケーションに適したコストと精度のトレードオフについて
検討できるようにする。
したがって、各レベルは、量子サンプリングのオーバーヘッドが 段階的に増加する1つまたは複数の手法に対応しており、 時間精度のトレードオフを自由に試すことができます。 次の表は、 各プリミティブで利用可能なレベルと、 それに対応するメソッドを示しています。
レジリエンスレベル | 説明 | 技法 |
|---|---|---|
| 0 | 緩和策なし | なし |
| 1 [デフォルト] | 最小限の是正コスト:読み取りエラーに伴う誤差を是正する | TREX( eXtinction ) 測定のツイリング |
| 2 | 中程度の緩和コスト。 通常、推定量のバイアスを低減させるが、バイアスがゼロになることは保証されない。 | レベル1 + ゼロノイズ外挿(ZNE) およびゲートツイリング |
レジリエンスのレベルは現在ベータ版であるため、サンプリングのオーバーヘッドや ソリューションの品質は回路ごとに異なります。 新機能、 高度なオプション、および管理ツールは、順次 リリースされます。 特定の騒音対策が、各レジリエンスレベルにおいて 必ず適用されるとは限りません。
耐障害性レベルを設定してEstimatorを構成する
レジリエンスレベルを使用してノイズ管理手法を指定することもできますし、「 カスタムエラー設定」 の説明に従って、個別にカスタム手法を設定することもできます。
レジリエンスレベルに加えて手動で指定したオプションは、レジリエンスレベルによって定義された基本オプションセットに追加して適用されます。 したがって、原則として、レジリエンスレベルを1に設定し、測定の緩和機能を無効にすることも可能ですが、これは推奨されません。
たとえば、レジリエンスレベルを0に設定すると無効になりますが zne_mitigation、その値は estimator.options.resilience.zne_mitigation = True 上書きされます。
例
以下のコードでは、
を設定することで resilience_level 2、ZNE、TREX、およびゲート・トゥワリングを有効にします。
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}"
)Output:
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
すべてのエラー緩和機能を無効にする
すべてのエラー抑制機能を無効にする方法については、『Estimator オプションガイド』の 「すべてのエラー抑制および緩和機能を無効にする 」のセクションを参照してください。
次のステップ
- IBM Quantum Learning の「 コスト関数 」のレッスンで、エラー緩和機能を使用した例を順を追って見ていきましょう。
- エラーの軽減および抑制の手法について詳しく知る。
- 見積もりツールのオプションを確認する。
- ジョブを実行するモードを決定します。