Quickstart Sampler
Tugas inti Sampler adalah mengambil sampel register output dari eksekusi satu atau lebih Circuit kuantum. Circuit dinamis dan Circuit terparameterisasi diterima sebagai input (jika Circuit terparameterisasi dikirimkan, nilai parameter juga harus disertakan). Sampler juga mendukung dynamical decoupling dan twirling bawaan untuk penekanan error.
Langkah-langkah dalam topik ini menjelaskan cara menyiapkan Sampler, menjelajahi opsi yang bisa kamu gunakan untuk mengonfigurasinya, dan memanggilnya dalam sebuah program.
Versi paket
Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami menyarankan menggunakan versi ini atau yang lebih baru.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
# Added by doQumentation — required packages for this notebook
!pip install -q numpy qiskit qiskit-ibm-runtime
Langkah-langkah menggunakan primitif Sampler
1. Inisialisasi akun
Karena Qiskit Runtime adalah layanan terkelola, kamu perlu menginisialisasi akunmu terlebih dahulu. Kemudian kamu bisa memilih QPU yang ingin kamu gunakan untuk menghitung nilai ekspektasi.
Ikuti langkah-langkah di topik Atur akun IBM Cloud-mu jika kamu belum memiliki akun yang disiapkan.
Untuk menggunakan fractional gates yang baru didukung, atur use_fractional_gates=True saat meminta backend dari instance QiskitRuntimeService. Contoh:
service = QiskitRuntimeService()
fractional_gate_backend = service.least_busy(use_fractional_gates=True)
Ini adalah fitur eksperimental dan mungkin berubah di masa mendatang.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True, simulator=False, min_num_qubits=127
)
2. Buat sebuah sirkuit
Kamu membutuhkan setidaknya satu sirkuit sebagai input ke primitif Sampler.
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)
Circuit dan observabel perlu ditransformasi untuk hanya menggunakan instruksi yang didukung oleh QPU (disebut sebagai Circuit instruction set architecture (ISA)). Gunakan Transpiler untuk melakukan ini.
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. Inisialisasi Sampler Qiskit Runtime
Saat kamu menginisialisasi Sampler, gunakan parameter mode untuk menentukan mode yang ingin dijalankan. Nilai yang mungkin adalah objek batch, session, atau backend untuk mode eksekusi batch, session, dan job, masing-masing. Untuk info lebih lanjut, lihat Pengantar mode eksekusi Qiskit Runtime. Perlu diperhatikan bahwa pengguna Open Plan tidak bisa mengirimkan job session.
from qiskit_ibm_runtime import SamplerV2 as Sampler
sampler = Sampler(mode=backend)
4. Panggil Sampler dan dapatkan hasilnya
Selanjutnya, panggil metode run() untuk menghasilkan output. Circuit dan set nilai parameter opsional dimasukkan sebagai tuple primitive unified bloc (PUB).
job = sampler.run([(isa_circuit, param_values)])
print(f">>> Job ID: {job.job_id()}")
print(f">>> Job Status: {job.status()}")
>>> Job ID: d82863mgbeec73alf9sg
>>> 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: ['1100110011001011111111111010000010001010100100011000001011001101000110011000110100100100101010111001110100100000000011111100000', '0101001001010000100111000110110001001101010110110000110111101110001100000001000001111111101110000000010011111100100110001101000', '0111111110011011000011110111010111101100110010001010010001100000000100000000001010101010111010110000001100100001010110000101000', '0000110011001100110011101100000111011001110100001100001100110111010100101010001010000011000111001010101111110110100110001010000', '0011110011100001100110111001000011011111011110111100000110001000111011101101000110011011101011001110110000010010001100100011001', '1010001000010101011100101010101001101000100010011011100110010111010001110111110010100010111010011010110011001101100110010000010', '0001110010001011001100010000000001001101001110101100110011101111100100100110110010101000011010101000101011101011010100000101010', '1110100100001100110010000010011010111000001010110010111111011010010100110011100101110011101111100001010011100110011000101001001', '1101011100110101011001010100011001110100001011110101101110111011011001100110001011000010001100100011000000110101011100111111000', '1101000110000000101010000000110000011000000000010110011001001000001110101110010111011010101100011000100100110000000000000011001']
Langkah selanjutnya
- Pelajari cara menguji secara lokal sebelum menjalankan di komputer kuantum.
- Tinjau contoh-contoh detail.
- Berlatih dengan primitif melalui pelajaran fungsi biaya di IBM Quantum Learning.
- Pelajari cara transpile secara lokal di bagian Transpile.
- Coba panduan Bandingkan pengaturan transpiler.
- Pelajari cara menggunakan opsi primitif.
- Lihat API untuk opsi Sampler.
- Baca Migrasi ke primitif V2.