Sampler クイックスタート
Sampler のコア・タスクは、1 つまたは複数の量子回路の実行から出力レジスターをサンプリングすることです。動的回路およびパラメーター化された回路が入力として受け入れられます(パラメーター化された回路を送信する場合は、パラメーター値も提供する必要があります)。Sampler は、エラー抑制のための組み込みダイナミカル・デカップリングとツワーリングもサポートしています。
このトピックのステップでは、Sampler のセットアップ方法、設定に使用できるオプション、およびプログラムでの呼び出し方法を説明します。
パッケージ・バージョン
このページのコードは、以下の要件を使用して開発されました。 これらのバージョン以降の使用をお勧めします。
qiskit[all]~=2.5.2
qiskit-ibm-runtime~=0.47.0
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
Sampler プリミティブを使用するステップ
1. アカウントの初期化
まずアカウントを初期化する必要があります。その後、期待値の計算に使用する QPU を選択できます。
アカウントをまだセットアップしていない場合は、IBM Cloud アカウントのセットアップトピックの手順に従ってください。
新しくサポートされた分数ゲートを使用するには、QiskitRuntimeService インスタンスから Backend を要求する際に use_fractional_gates=True を設定します。例:
service = QiskitRuntimeService()
fractional_gate_backend = service.least_busy(use_fractional_gates=True)
これは実験的な機能であり、将来変更される可能性があります。
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True, simulator=False, min_num_qubits=127
)
2. 回路の作成
Sampler プリミティブへの入力として、少なくとも 1 つの回路が必要です。
import numpy as np
from qiskit.circuit.library import efficient_su2
circuit = efficient_su2(127, entanglement="linear")
circuit.measure_all()
# The circuit is parametrized, so we will define the parameter values for execution
param_values = np.random.rand(circuit.num_parameters)
回路とオブザーバブルは、QPU でサポートされている命令のみを使用するように変換する必要があります(命令セット・アーキテクチャー(ISA)回路と呼ばれます)。これにはトランスパイラーを使用します。
from qiskit.transpiler import generate_preset_pass_manager
pm = generate_preset_pass_manager(optimization_level=1, backend=backend)
isa_circuit = pm.run(circuit)
print(f">>> Circuit ops (ISA): {isa_circuit.count_ops()}")
>>> Circuit ops (ISA): OrderedDict([('rz', 3036), ('sx', 1769), ('cz', 378), ('measure', 127), ('barrier', 1)])
3. IBM Quantum Sampler の初期化
Sampler を初期化するときは、mode パラメーターを使用して実行するモードを指定します。可能な値は、バッチ、Session、ジョブ実行モードに対してそれぞれ batch、session、または backend オブジェクトです。詳細については、IBM Quantum Compute Service 実行モードの概要を参照してください。なお、オープン・プランのユーザーは Session ジョブを送信できません。
from qiskit_ibm_runtime import SamplerV2 as Sampler
sampler = Sampler(mode=backend)
4. Sampler の呼び出しと結果の取得
次に、run() メソッドを呼び出して出力を生成します。回路とオプションのパラメーター値セットは、プリミティブ統合ブロック(PUB)タプルとして入力されます。
job = sampler.run([(isa_circuit, param_values)])
print(f">>> Job ID: {job.job_id()}")
print(f">>> Job Status: {job.status()}")
>>> Job ID: dab7lb6rrl7c7386gjgg
>>> Job Status: QUEUED
result = job.result()
# Get results for the first (and only) PUB
pub_result = result[0]
print(
f"First ten results for the 'meas' output register: "
f"{pub_result.data.meas.get_bitstrings()[:10]}"
)
First ten results for the 'meas' output register: ['1110001000100100100111011000001001000101010000001100010010110011001100110111100000000110001000011001101000110100101110101010011', '1110101100010101010001010111111011000110011010100101001100110101010010101010101110001010100100000000011110101101011000100000100', '1100110011101000110000000100110111101010110001100010111100001101100001010100111001101010101110000101010001001101010101001000100', '1011001001011000000101010111111010011101001111010100001011110011000101110101011001100110011011110011101010000111001111110110011', '1110111011011111101011110101110101010110011001100110101111100100011101100011011100101100101001001111110101111010101110111111011', '0101001110001110010001010100010111011001000000011110000000000001110000010010101101011001000100000001011011101111010010110111110', '1101101001000100010000110001000101010010101011000011000011001010000111100110010101010110100110011010101100001011100110001111011', '1000110011111111100010101010101111001001100001110111101001100111010101010111110110011000110011010010010000100000100010010010101', '0101010100110011110011010000000100011001111100101100101100101111101110100001101101111010100011011000010011111010001100110000010', '0010000111011100000000110000001110001100010011000100101110111111100011001100011001101010011111111100000000011100101101111010100']
次のステップ
- 量子コンピューターで実行する前にローカルでテストする方法を学びます。
- 詳細な例を確認します。
- IBM Quantum Learning のコスト関数レッスンを通じてプリミティブを練習します。
- トランスパイルセクションでローカル・トランスパイルの方法を学びます。
- トランスパイラー設定の比較ガイドを試してみてください。
- プリミティブ・オプションの使用方法を学びます。
- Sampler オプションの API を参照します。