サンプラーのオプションを指定する
このページのコードは、以下の要件に基づいて開発されました。 これらのバージョン以降のご利用をお勧めします。
qiskit[all]~=2.5.1 qiskit-ibm-runtime~=0.47.0
オプションを使用して、サンプラープリミティブをカスタマイズすることができます。 このセクションでは、 IBM Quantum のプリミティブオプションの指定方法について解説します。 プリミティブのメソッド run() のインターフェースはすべての実装で共通していますが、そのオプションは共通ではありません。 および qiskit.primitives.BackendSamplerV2 オプション qiskit_aer.primitives.SamplerV2 に関する詳細については、それぞれのAPIリファレンスを参照してください。
サンプラーの設定
Samplerの初期化時、初期化後、あるいはSamplerの初期化後にオプションを設定することができます。 これらのテクニックの使用方法については、 「オプションの概要」 のトピックを参照してください。
さらに、次のセクションで説明するように、 run() method 内で shots value を設定することもできます。
Run() メソッド
に渡し得る値は、 run() インターフェースで定義されているものに限られます。 つまり、 shots。 これにより、現在の実行に対して default_shots 設定された値が上書きされます。
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9mq9qo8csec73fagtb0', 'sampler')>
特別な事例
ショット
この SamplerV2.run メソッドは2つの引数を受け取ります。1つはPUBのリストで、各PUBは「shots」に対して PUB 固有の値を指定できます。もう1つは「shots」というキーワード引数です。 これらのショット値はサンプラーの実行インターフェースの一部であり、ランタイム・サンプラーのオプションとは独立しています。 これらは、Samplerの抽象化に準拠するため、オプションとして指定された値よりも優先されます。
ただし、 PUB やrunキーワード引数で指定されていない場合(あるいはそれらがすべて Noneである shots 場合)、オプションで指定されたshotsの値が使用されます。特に、 default_shotsが該当します。
要約すると、特定の PUB において、Samplerでショットを指定する際の優先順位は以下の通りです:
- PUB にショット数が指定されている場合は、その値を使用してください。
- でキーワード
shots引数が指定runされている場合は、その値を使用します。 - が有効になっている
twirling場合(デフォルトでは True)、 オプションtwirlingとして指定された とshots_per_randomizationnum_randomizationsの積が使用されます。 - が指定されている
sampler.options.default_shots場合は、その値を使用します。
したがって、すべての可能な箇所でショットが指定されている場合、優先順位が最も高いもの( PUB で指定されたショット)が使用されます。
PUB および で run 指定されたショットは優先順位が高いものの、 が有効になっており、 と shots_per_randomization の num_randomizations 積が の shots 値よりも小さい場合 twirling 、ジョブは失敗します。 num_randomizationsこのシナリオでは、 SamplerV2 指定された対象にショットを割り当てることができません。
例:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9mq9snurbec73e67ah0', 'sampler')>
使用可能なオプション
次の表は、最新バージョンの qiskit-ibm-runtime.のオプションをまとめたものです。 以前のバージョンのオプションを確認するには、 API qiskit-ibm-runtime リファレンスにアクセスし、以前のバージョンを選択してください。
動的デカップリング誤差の低減設定を制御します。
dynamical_decouplingAPIドキュメント選択肢 :
True,False既定値 :
False選択肢 :
middle,edges既定値 :
middle選択肢:
asap,alapデフォルト:alap選択肢:
XX,XpXm,XY4デフォルト:XX選択肢:
True,Falseデフォルト:False
タグの一覧。
選択肢 :なし
既定値 :なし
選択肢 :DEBUG、INFO、WARNING、ERROR、CRITICAL
デフォルト : 警告
選択肢 :
True,False既定値 :
False
ショットごとに量子ビットを基底状態にリセットするかどうか。
選択肢 :
True,False既定値 :
True測定とそれに続く量子回路との間の時間差。
選択肢 :指定された範囲内の値
backend.rep_delay_rangeデフォルト :指定された値
backend.default_rep_delay選択肢 :
classified,kerneled,avg_kerneled既定値 :
classified
バックエンドをシミュレートする際に渡すオプション
選択肢 :アンロール先の基本ゲート名のリスト
デフォルト : Qiskit Aer シミュレータがサポートするすべての基本ゲートの集合
選択肢 :方向性を持つ2量子ビット相互作用の一覧
デフォルト :なし。これは、接続性の制約がない(完全接続)ことを意味します。
選択肢 : Qiskit Aer NoiseModel、またはその表現
既定値 :なし
選択肢 :整数
既定値 :なし
回転オプション
選択肢 :はい、いいえ
デフォルト : False
選択肢 :はい、いいえ
デフォルト : False
選択肢 :
auto、1以上の整数既定値 :
auto選択肢 :
auto、1以上の整数既定値 :
auto選択肢 :
active,active-circuit,active-accum,all既定値 :
active-accum
利用可能な場合は、実験的なオプション。
フィーチャーの互換性
特定のランタイム機能は、1つのジョブ内で同時に使用することはできません。 選択した機能と互換性のない機能の一覧を表示するには、該当するタブをクリックしてください:
互換性がないもの:
- 動的デカップリング
その他の注意事項:
- ゲートの回転は動的回路に適用できますが、条件付きブロック内にあるゲートには適用できません。 測定の反転は、端子測定にのみ適用できます。
- v0.42.0
qiskit-ibm-runtime以降を使用する場合、フラクショナルゲートに対応しています。
互換性がないもの:
- 動的回路
互換性がないもの:
- 門をくるくる回す
v0.42.0
qiskit-ibm-runtime以降を使用する場合、動的回路に対応しています。互換性がないもの:
- 部分ゲート
- ストレッチ
その他の注意事項:
- ゲートの回転は動的回路に適用できますが、条件付きブロック内のゲートには適用できません。
- 測定の反転は、端子測定にのみ適用できます。
- 「Measurement twirling」は、この
store命令と互換性がありません。 - Clifford型以外のエンタングラーでは動作しません。
次のステップ
- 「オプション入門」 ガイドをご確認ください。
- 各メソッドの
SamplerV2詳細については、 Sampler API リファレンスをご覧ください。 - ジョブを実行するモードを決定します。
- Samplerを使った騒音管理について学びましょう。