Menentukan opsi Sampler
Versi paket
Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami sarankan pakai versi ini atau yang lebih baru.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
Anda bisa pakai opsi untuk menyesuaikan primitif Sampler. Bagian ini fokus pada cara menentukan opsi primitif Qiskit Runtime. Meskipun antarmuka metode run() primitif sama di semua implementasi, opsinya tidak demikian. Lihat referensi API yang sesuai untuk info tentang opsi qiskit.primitives.BackendSamplerV2 dan qiskit_aer.primitives.SamplerV2.
Mengatur opsi Sampler
Anda bisa mengatur opsi saat menginisialisasi Sampler, setelah menginisialisasi Sampler, atau Anda bisa memperbarui opsi setelah Sampler diinisialisasi. Untuk instruksi penggunaan teknik-teknik ini, lihat topik Pengantar opsi.
Selain itu, Anda bisa mengatur nilai shots di metode run(), seperti dijelaskan di bagian berikut.
Metode Run()
Satu-satunya nilai yang bisa Anda masukkan ke run() adalah yang didefinisikan di antarmuka. Yaitu, shots. Ini menimpa nilai apa pun yang diatur untuk default_shots pada run saat ini.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
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)
<RuntimeJobV2('d8286680bvlc73d1vmu0', 'sampler')>
Kasus khusus
Shots
Metode SamplerV2.run menerima dua argumen: daftar PUB, di mana setiap PUB bisa menentukan nilai shots khusus untuk PUB tersebut, dan argumen keyword shots. Nilai shots ini adalah bagian dari antarmuka eksekusi Sampler, dan tidak bergantung pada opsi Runtime Sampler. Nilai ini diutamakan di atas nilai apa pun yang ditentukan sebagai opsi agar sesuai dengan abstraksi Sampler.
Namun, jika shots tidak ditentukan oleh PUB mana pun atau dalam argumen keyword run (atau semuanya None), maka nilai shots dari opsi yang digunakan, terutama default_shots.
Untuk merangkum, ini adalah urutan prioritas untuk menentukan shots di Sampler, untuk PUB tertentu:
- Jika PUB menentukan shots, gunakan nilai itu.
- Jika argumen keyword
shotsditentukan dirun, gunakan nilai itu. - Jika
twirlingdiaktifkan (True secara default), maka hasil perkaliannum_randomizationsdanshots_per_randomization, yang ditentukan sebagai opsitwirling, yang digunakan. - Jika
sampler.options.default_shotsditentukan, gunakan nilai itu.
Jadi, jika shots ditentukan di semua tempat yang mungkin, yang memiliki prioritas tertinggi (shots yang ditentukan di PUB) yang digunakan.
Meskipun shots yang ditentukan di PUB dan di run memiliki prioritas lebih tinggi, job akan gagal jika twirling diaktifkan dan hasil kali num_randomizations dan shots_per_randomization lebih kecil dari nilai shots. Dalam skenario ini, SamplerV2 tidak dapat mengalokasikan shots di antara num_randomizations yang ditentukan.
Contoh:
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)
<RuntimeJobV2('d82868ugbeec73alfa80', 'sampler')>
Opsi yang tersedia
Tabel berikut mendokumentasikan opsi dari versi terbaru qiskit-ibm-runtime. Untuk melihat versi opsi yang lebih lama, kunjungi referensi API qiskit-ibm-runtime dan pilih versi sebelumnya.
default_shots
Jumlah total shots yang digunakan per sirkuit per konfigurasi.
Pilihan: Integer >= 0
Default: None
dynamical_decoupling
Mengontrol pengaturan mitigasi error dynamical decoupling.
Dokumentasi API dynamical_decoupling
dynamical_decoupling.enable
Pilihan: True, False
Default: False
dynamical_decoupling.extra_slack_distribution
Pilihan: middle, edges
Default: middle
dynamical_decoupling.scheduling_method
Pilihan: asap, alap
Default: alap
dynamical_decoupling.sequence_type
Pilihan: XX, XpXm, XY4
Default: XX
dynamical_decoupling.skip_reset_qubits
Pilihan: True, False
Default: False
environment
environment.job_tags
Daftar tag.
Pilihan: None
Default: None
environment.log_level
Pilihan: DEBUG, INFO, WARNING, ERROR, CRITICAL
Default: WARNING
environment.private
Pilihan: True, False
Default: False
execution
execution.init_qubits
Apakah mereset qubit ke ground state untuk setiap shot.
Pilihan: True, False
Default: True
execution.rep_delay
Jeda antara pengukuran dan sirkuit kuantum berikutnya.
Pilihan: Nilai dalam rentang yang disediakan oleh backend.rep_delay_range
Default: Diberikan oleh backend.default_rep_delay
execution.meas_type
Pilihan: classified, kerneled, avg_kerneled
Default: classified
max_execution_time
Membatasi berapa lama job bisa berjalan, dalam detik. Lihat panduan waktu eksekusi maksimum untuk detail.
Pilihan: Bilangan bulat detik dalam rentang [1, 10800]
Default: 10800 (3 jam)
simulator
Opsi untuk dimasukkan saat mensimulasikan Backend
simulator.basis_gates
Pilihan: Daftar nama gate basis untuk di-unroll ke
Default: Sekumpulan semua gate basis yang didukung oleh simulator Qiskit Aer
simulator.coupling_map
Pilihan: Daftar interaksi dua qubit terarah
Default: None, yang berarti tidak ada kendala konektivitas (konektivitas penuh).
simulator.noise_model
Pilihan: Qiskit Aer NoiseModel, atau representasinya
Default: None
simulator.seed_simulator
Pilihan: Integer
Default: None
twirling
Opsi Twirling
twirling.enable_gates
Pilihan: True, False
Default: False
twirling.enable_measure
Pilihan: True, False
Default: False
twirling.num_randomizations
Pilihan: auto, Integer >= 1
Default: auto
twirling.shots_per_randomization
Pilihan: auto, Integer >= 1
Default: auto
twirling.strategy
Pilihan: active, active-circuit, active-accum, all
Default: active-accum
experimental
Opsi eksperimental, jika tersedia.
Kompatibilitas fitur
Fitur-fitur Runtime tertentu tidak bisa digunakan bersama dalam satu job. Klik tab yang sesuai untuk daftar fitur yang tidak kompatibel dengan fitur yang dipilih:
Dynamic circuits
Tidak kompatibel dengan:
- Dynamical decoupling
Catatan lain:
- Gate twirling bisa diterapkan ke sirkuit dinamis, tapi hanya pada gate yang tidak berada di dalam blok kondisional. Measurement twirling hanya bisa diterapkan ke pengukuran terminal.
- Kompatibel dengan gate fraksional saat menggunakan
qiskit-ibm-runtimev0.42.0 atau yang lebih baru.
Dynamical decoupling
Tidak kompatibel dengan:
- Dynamic circuits
Fractional gates
Tidak kompatibel dengan:
- Gate twirling
Kompatibel dengan sirkuit dinamis saat menggunakan qiskit-ibm-runtime v0.42.0 atau yang lebih baru.
Gate twirling
Tidak kompatibel dengan:
- Fractional gates
- Stretches
Catatan lain:
- Gate twirling bisa diterapkan ke sirkuit dinamis, tapi hanya pada gate yang tidak berada di dalam blok kondisional.
- Measurement twirling hanya bisa diterapkan ke pengukuran terminal.
- Measurement twirling tidak kompatibel dengan instruksi
store. - Tidak bekerja dengan entangler non-Clifford.
Langkah berikutnya
- Tinjau panduan Pengantar opsi.
- Temukan detail lebih lanjut tentang metode
SamplerV2di referensi API Sampler. - Tentukan mode eksekusi mana yang akan digunakan untuk job kamu.
- Pelajari tentang manajemen noise dengan Sampler.