Mula pantas Sampler
Tugas teras Sampler adalah pensampelan daftar output daripada pelaksanaan satu atau lebih Circuit kuantum. Circuit dinamik dan Circuit berparameter diterima sebagai input (jika Circuit berparameter dihantar, nilai parameter juga mesti disediakan). Sampler juga menyokong dynamical decoupling dan twirling terbina dalam untuk penindasan ralat.
Langkah-langkah dalam topik ini menerangkan cara menyediakan Sampler, meneroka pilihan yang boleh anda gunakan untuk mengkonfigurasinya, dan memanggilnya dalam program.
Versi pakej
Kod di halaman ini dibangunkan menggunakan keperluan berikut. Kami syorkan 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 untuk menggunakan primitif Sampler
1. Mulakan akaun
Kerana Qiskit Runtime adalah perkhidmatan terurus, anda perlu memulakan akaun anda terlebih dahulu. Anda kemudian boleh memilih QPU yang ingin anda gunakan untuk mengira nilai jangkaan.
Ikuti langkah-langkah dalam topik Sediakan akaun IBM Cloud anda jika anda belum menyediakan akaun.
Untuk menggunakan gate pecahan yang baru disokong, tetapkan use_fractional_gates=True apabila meminta Backend dari instans QiskitRuntimeService. Contohnya:
service = QiskitRuntimeService()
fractional_gate_backend = service.least_busy(use_fractional_gates=True)
Ini adalah ciri eksperimen dan mungkin berubah pada masa depan.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.least_busy(
operational=True, simulator=False, min_num_qubits=127
)
2. Cipta Circuit
Anda memerlukan sekurang-kurangnya satu Circuit sebagai input kepada 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 observable perlu ditransformasi untuk hanya menggunakan arahan yang disokong oleh QPU (dirujuk sebagai Circuit set seni bina arahan (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. Mulakan Sampler Qiskit Runtime
Apabila anda memulakan Sampler, gunakan parameter mode untuk menentukan mod yang anda mahu ia jalankan. Nilai yang mungkin adalah objek batch, session, atau backend untuk mod pelaksanaan kumpulan, session, dan kerja masing-masing. Untuk maklumat lanjut, lihat Pengenalan kepada mod pelaksanaan Qiskit Runtime. Perhatikan bahawa pengguna Pelan Terbuka tidak boleh menghantar kerja session.
from qiskit_ibm_runtime import SamplerV2 as Sampler
sampler = Sampler(mode=backend)
4. Panggil Sampler dan dapatkan keputusan
Seterusnya, panggil kaedah run() untuk menjana output. Circuit dan set nilai parameter pilihan dimasukkan sebagai tupel blok bersatu primitif (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 seterusnya
- Ketahui cara menguji secara tempatan sebelum menjalankan pada komputer kuantum.
- Semak contoh terperinci.
- Amalkan penggunaan primitif melalui pelajaran Fungsi kos dalam IBM Quantum Learning.
- Ketahui cara mentranspil secara tempatan dalam bahagian Transpil.
- Cuba panduan Bandingkan tetapan Transpiler.
- Ketahui cara menggunakan pilihan primitif.
- Lihat API untuk pilihan Sampler.
- Baca Migrasi ke primitif V2.