オプションの紹介
オプションを使用することで、 IBM Quantum のプリミティブをニーズに合わせてカスタマイズすることができます。
構造
プリミティブ関数を呼び出す際、オプションクラスまたは辞書を使用してオプションを渡すことができます。 や resilience_levelなどのよく使われるオプションは、最初のレベルにあります。 その他のオプションは、次のようなカテゴリに分類 executionされています。 オプションは次の形式で指定してください: options.option.sub-option.sub-sub-option = choice. 例: options.dynamical_decoupling.enable = True。
デフォルト
オプションに値を指定しなかった場合、そのオプションには特別な値 Unset が与えられ、サーバーのデフォルト値が使われる。 したがって、デフォルト値はコードのバージョンに関係なく同じになる。
各プリミティブの「オプション」ガイドにある「オプションクラスの概要」セクションの表には、デフォルト値が記載されています。
オプションの設定
オプションは、プリミティブが構築される前に定義し、オプションクラスのインスタンスまたは辞書としてプリミティブに渡すことができます。 プリミティブはそれらのコピーを作成するため、元の辞書やオプションインスタンスを変更しても、プリミティブが保持するオプションには影響しません。
また、プリミティブが構築された後でも、オプションを変更することができます。 アプリケーションに最適なワークフローを使用してください。
- プリミティブの初期化中または初期化後に、利用可能なオプションを確認できます。
- オプションの値を指定しない場合、そのオプションには特別な値が割り当てられ、
Unsetサーバーのデフォルト設定が使用されます。 - この
options属性は、 Python 型ですdataclass。 組み込みasdictのメソッドを使って、それを辞書に変換することができます。
options クラス
プリミティブクラスのインスタンスを作成する際、その options クラスのインスタンスを渡すことができます。 run() これらのオプションは、計算を実行する際に適用されます。 オプションは次の形式で指定してください: options.option.sub-option.sub-sub-option = choice. 例: options.dynamical_decoupling.enable = True。
クラスの詳細については、こちらまたは EstimatorOptions こちらをご覧ください SamplerOptions 。
以下の例ではEstimatorプリミティブを使用していますが、他のプリミティブの構文も同様です。
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)辞書
プリミティブを初期化する際、オプションを辞書として指定することができます。
以下の例では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)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)初期化後のオプションの更新
オプションは、 _primitive_.options.option.sub-option.sub-sub-option = choice オートコンプリート機能を利用するためにこの形式で指定するか、一括更新を行うには メソッド update() を使用してください。
SamplerOptionsプリミティブのオプションクラス(EstimatorOptions または)は、プリミティブの初期化後にオプションを設定する場合、インスタンス化する必要はありません。
以下の例では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(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)次のステップ
- エラーの抑制および軽減の設定方法の詳細については、こちらをご覧ください。
- 見積もり機能のオプションについて詳しくはこちら。
- サンプラーのオプションについて詳しくはこちら。
- 「実行者」のオプションについて詳しくはこちら。