アルゴリズムのチューニングオプションのガイド¶
Primitive の利点の一つは、アルゴリズム開発者が純粋なアルゴリズムコンポーネントに集中できるように、回路実行の設定を抽象化することです。しかし、アルゴリズムを最大限に活用するために、特定のprimitiveのオプションを調整したい場合があります。このセクションでは、一般的に必要とされる設定について説明します。
注意
このセクションでは、Qiskit Runtime の Primitive Options`( ``qiskit_ibm_runtime`
からインポートする)に焦点を当てます。 primitives インターフェイスのほとんどは実装間で共通ですが、 Options
のほとんどはそうではありません。 qiskit.primitives
および qiskit_aer.primitives
オプションに関する情報については、対応するAPIリファレンスを参照してください。
1. ショット¶
アルゴリズムによっては、特定のショット数を設定することがルーチンの中核をなすものがあります。以前は、 backend.run() を呼び出す際に shots を設定することができました。例えば、 backend.run(shots=1024)
といった具合です。現在では、その設定は実行オプション( 「second level option」 )の一部となっています。これは、Primitive のセットアップ中に行うことができます:
from qiskit_ibm_runtime import Estimator, Options
options = Options()
options.execution.shots = 1024
estimator = Estimator(session=session, options=options)
反復処理(プリミティブコール)の間に設定したショット数を変更する必要がある場合は、 run()
メソッドで直接ショット数を設定することができます。これにより、最初の shots
設定が上書きされます。
from qiskit_ibm_runtime import Estimator
estimator = Estimator(session=session)
estimator.run(circuits=circuits, observables=observables, shots=50)
# other logic
estimator.run(circuits=circuits, observables=observables, shots=100)
Primitive オプションの詳細については、 OptionsクラスのAPIリファレンス を参照してください。
2. Transpilation¶
デフォルトでは、 Qiskit Runtime primitive は回路のトランスパイルを実行します。最適化レベルはいくつかあり、選択することができます。これらのレベルはトランスパイルの戦略に影響し、追加のエラー抑制メカニズムを含むかもしれません。レベル0は、基本的なトランスパイルのみを行います。各最適化レベルについては、 エラー抑制のトピック にある最適化レベルのテーブルを参照してください。
最適化レベルオプションは「第1レベルのオプション」であり、次のように設定することができます:
from qiskit_ibm_runtime import Estimator, Options
options = Options(optimization_level=2)
# or..
options = Options()
options.optimization_level = 2
estimator = Estimator(session=session, options=options)
トランスパイル戦略をさらに設定したい場合があります。そのために、高度なトランスパイルオプションを設定することができます。これは「セカンドレベルオプション」と呼ばれるもので、以下のように設定することができます:
from qiskit_ibm_runtime import Estimator, Options
options = Options()
options.transpilation.initial_layout = ...
options.transpilation.routing_method = ...
estimator = Estimator(session=session, options=options)
詳細と高度なトランスパイルオプションの完全なリストについては、エラー抑制トピック の高度なトランスパイルオプションのテーブルを参照してください。
最後に、Primitive インターフェイスで利用できない設定を指定したり、カスタム・トランスパイラー・パスを使用したい場合があります。このような場合、 skip_transpilation=True
を設定して、ユーザーがトランスパイルした回路を送信することができます。この方法については、 Primitive を使用したユーザー・トランスパイル回路の送信のチュートリアル を参照してください。
skip_transpilation
オプションは、高度なトランスパイルオプションであり、以下のように設定します:
from qiskit_ibm_runtime import Estimator, Options
options = Options()
options.transpilation.skip_transpilation = True
estimator = Estimator(session=session, options=options)
3. エラー緩和¶
さまざまなエラー緩和方法を活用し、アルゴリズムの性能にどのような影響を与えるかを確認したい場合があります。これらは resilience_level
オプションで設定することも可能です。各レベルで選択される方法は、 Sampler
と``Estimator`` で異なります。詳細は、 Error mitigation optionの設定のトピック に記載されています。
設定方法は、他のオプションと同様です:
from qiskit_ibm_runtime import Estimator, Options
options = Options(resilience_level = 2)
# or...
options = Options()
options.resilience_level = 2
estimator = Estimator(session=session, options=options)