Skip to main content
IBM Quantum Platform

サンプラーのオプションを指定する

  • このページのコードは、以下の要件に基づいて開発されました。 これらのバージョン以降のご利用をお勧めします。

    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でショットを指定する際の優先順位は以下の通りです:

  1. PUB にショット数が指定されている場合は、その値を使用してください。
  2. でキーワード shots 引数が指定 runされている場合は、その値を使用します。
  3. が有効になっている twirling 場合(デフォルトでは True)、 オプション twirling として指定された と shots_per_randomization num_randomizations の積が使用されます。
  4. が指定されている sampler.options.default_shots 場合は、その値を使用します。

したがって、すべての可能な箇所でショットが指定されている場合、優先順位が最も高いもの( PUB で指定されたショット)が使用されます。

Note

PUB および で run 指定されたショットは優先順位が高いものの、 が有効になっており、 と shots_per_randomizationnum_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 リファレンスにアクセスし、以前のバージョンを選択してください。

  • 構成ごとに、1つの回路あたりに使用するショットの総数。

    選択肢 :0以上の整数

    既定値 :なし

    default_shots APIドキュメント

  • 動的デカップリング誤差の低減設定を制御します。

    dynamical_decoupling APIドキュメント

    • 選択肢True, False

      既定値False

    • 選択肢middle, edges

      既定値middle

    • 選択肢: asap, alap デフォルト: alap

    • 選択肢: XX, XpXm, XY4 デフォルト: XX

    • 選択肢: True, False デフォルト: False

  • environment APIドキュメント

    • タグの一覧。

      選択肢 :なし

      既定値 :なし

    • 選択肢 :DEBUG、INFO、WARNING、ERROR、CRITICAL

      デフォルト : 警告

    • 選択肢True, False

      既定値False

  • execution APIドキュメント

    • ショットごとに量子ビットを基底状態にリセットするかどうか。

      選択肢True, False

      既定値True

    • 測定とそれに続く量子回路との間の時間差。

      選択肢 :指定された範囲内の値 backend.rep_delay_range

      デフォルト :指定された値 backend.default_rep_delay

    • 選択肢classified, kerneled, avg_kerneled

      既定値classified

  • ジョブの実行時間を秒単位で制限します。 詳細については、最大実行時間に関するガイドをご覧ください。

    選択肢 : [1 から 10800 までの]範囲の秒数(整数)

    デフォルト :10800(3時間)

    max_execution_time APIドキュメント

  • バックエンドをシミュレートする際に渡すオプション

    simulator APIドキュメント

    • 選択肢 :アンロール先の基本ゲート名のリスト

      デフォルトQiskit Aer シミュレータがサポートするすべての基本ゲートの集合

    • 選択肢 :方向性を持つ2量子ビット相互作用の一覧

      デフォルト :なし。これは、接続性の制約がない(完全接続)ことを意味します。

    • 選択肢Qiskit Aer NoiseModel、またはその表現

      既定値 :なし

    • 選択肢 :整数

      既定値 :なし

  • 回転オプション

    twirling APIドキュメント

    • 選択肢 :はい、いいえ

      デフォルト : False

    • 選択肢 :はい、いいえ

      デフォルト : False

    • 選択肢auto、1以上の整数

      既定値auto

    • 選択肢auto、1以上の整数

      既定値auto

    • 選択肢active, active-circuit, active-accum, all

      既定値active-accum

  • 利用可能な場合は、実験的なオプション。


フィーチャーの互換性

特定のランタイム機能は、1つのジョブ内で同時に使用することはできません。 選択した機能と互換性のない機能の一覧を表示するには、該当するタブをクリックしてください:

  • 互換性がないもの:

    • 動的デカップリング

    その他の注意事項:

    • ゲートの回転は動的回路に適用できますが、条件付きブロック内にあるゲートには適用できません。 測定の反転は、端子測定にのみ適用できます。
    • v0.42.0qiskit-ibm-runtime 以降を使用する場合、フラクショナルゲートに対応しています。
  • 互換性がないもの:

    • 動的回路
  • 互換性がないもの:

    • 門をくるくる回す

    v0.42.0qiskit-ibm-runtime 以降を使用する場合、動的回路に対応しています。

  • 互換性がないもの:

    • 部分ゲート
    • ストレッチ

    その他の注意事項:

    • ゲートの回転は動的回路に適用できますが、条件付きブロック内のゲートには適用できません。
    • 測定の反転は、端子測定にのみ適用できます。
    • 「Measurement twirling」は、この store 命令と互換性がありません。
    • Clifford型以外のエンタングラーでは動作しません。

次のステップ

推奨事項
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。