Menentukan pilihan Sampler
Versi pakej
Kod di halaman ini dibangunkan menggunakan keperluan berikut. Kami mengesyorkan penggunaan versi ini atau yang lebih baharu.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
Anda boleh guna pilihan untuk menyesuaikan primitif Sampler. Bahagian ini menumpukan pada cara menentukan pilihan primitif Qiskit Runtime. Walaupun antara muka kaedah run() primitif adalah sama merentas semua pelaksanaan, pilihan mereka tidak demikian. Rujuk rujukan API yang berkaitan untuk maklumat tentang pilihan qiskit.primitives.BackendSamplerV2 dan qiskit_aer.primitives.SamplerV2.
Menetapkan pilihan Sampler
Anda boleh menetapkan pilihan semasa memulakan Sampler, selepas memulakan Sampler, atau anda boleh mengemas kini pilihan selepas Sampler dimulakan. Untuk arahan menggunakan teknik-teknik ini, lihat topik Pengenalan kepada pilihan.
Selain itu, anda boleh menetapkan nilai shots dalam kaedah run(), seperti yang diterangkan dalam bahagian berikut.
Kaedah Run()
Satu-satunya nilai yang boleh anda masukkan ke run() ialah yang ditakrifkan dalam antara muka. Iaitu, shots. Ini mengatasi mana-mana nilai yang ditetapkan untuk default_shots bagi run semasa.
# 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')>
Kes khas
Shots
Kaedah SamplerV2.run menerima dua argumen: senarai PUB, di mana setiap satu boleh menentukan nilai shots khusus untuk PUB tersebut, dan argumen keyword shots. Nilai shots ini adalah sebahagian daripada antara muka pelaksanaan Sampler, dan bebas daripada pilihan Runtime Sampler. Ia diutamakan berbanding mana-mana nilai yang ditentukan sebagai pilihan bagi mematuhi abstraksi Sampler.
Walau bagaimanapun, jika shots tidak ditentukan oleh mana-mana PUB atau dalam argumen keyword run (atau semua None), maka nilai shots daripada pilihan digunakan, terutamanya default_shots.
Untuk merumuskan, ini adalah susunan keutamaan untuk menentukan shots dalam Sampler, bagi setiap PUB tertentu:
- Jika PUB menentukan shots, gunakan nilai itu.
- Jika argumen keyword
shotsditentukan dalamrun, gunakan nilai itu. - Jika
twirlingdidayakan (True secara lalai), maka hasil darabnum_randomizationsdanshots_per_randomization, yang ditentukan sebagai pilihantwirling, digunakan. - Jika
sampler.options.default_shotsditentukan, gunakan nilai itu.
Oleh itu, jika shots ditentukan di semua tempat yang mungkin, yang mempunyai keutamaan tertinggi (shots yang ditentukan dalam PUB) digunakan.
Walaupun shots yang ditentukan dalam PUB dan dalam run mempunyai keutamaan lebih tinggi, kerja akan gagal jika twirling didayakan dan hasil darab num_randomizations dan shots_per_randomization lebih kecil daripada nilai shots. Dalam senario ini, SamplerV2 tidak dapat memperuntukkan 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')>
Pilihan yang tersedia
Jadual berikut mendokumentasikan pilihan daripada versi terbaru qiskit-ibm-runtime. Untuk melihat versi pilihan yang lebih lama, lawati rujukan API qiskit-ibm-runtime dan pilih versi sebelumnya.
default_shots
Jumlah keseluruhan shots yang digunakan bagi setiap litar bagi setiap konfigurasi.
Pilihan: Integer >= 0
Lalai: None
dynamical_decoupling
Mengawal tetapan mitigasi ralat dynamical decoupling.
Dokumentasi API dynamical_decoupling
dynamical_decoupling.enable
Pilihan: True, False
Lalai: False
dynamical_decoupling.extra_slack_distribution
Pilihan: middle, edges
Lalai: middle
dynamical_decoupling.scheduling_method
Pilihan: asap, alap
Lalai: alap
dynamical_decoupling.sequence_type
Pilihan: XX, XpXm, XY4
Lalai: XX
dynamical_decoupling.skip_reset_qubits
Pilihan: True, False
Lalai: False
environment
environment.job_tags
Senarai tag.
Pilihan: None
Lalai: None
environment.log_level
Pilihan: DEBUG, INFO, WARNING, ERROR, CRITICAL
Lalai: WARNING
environment.private
Pilihan: True, False
Lalai: False
execution
execution.init_qubits
Sama ada menetapkan semula qubit ke keadaan asas bagi setiap shot.
Pilihan: True, False
Lalai: True
execution.rep_delay
Kelewatan antara pengukuran dan litar kuantum berikutnya.
Pilihan: Nilai dalam julat yang disediakan oleh backend.rep_delay_range
Lalai: Diberikan oleh backend.default_rep_delay
execution.meas_type
Pilihan: classified, kerneled, avg_kerneled
Lalai: classified
max_execution_time
Mengehadkan berapa lama kerja boleh berjalan, dalam saat. Lihat panduan masa pelaksanaan maksimum untuk butiran.
Pilihan: Bilangan bulat saat dalam julat [1, 10800]
Lalai: 10800 (3 jam)
simulator
Pilihan untuk dimasukkan semasa mensimulasikan Backend
simulator.basis_gates
Pilihan: Senarai nama gate asas untuk di-unroll ke
Lalai: Set semua gate asas yang disokong oleh simulator Qiskit Aer
simulator.coupling_map
Pilihan: Senarai interaksi dua qubit terarah
Lalai: None, yang bermaksud tiada kekangan ketersambungan (ketersambungan penuh).
simulator.noise_model
Pilihan: Qiskit Aer NoiseModel, atau representasinya
Lalai: None
simulator.seed_simulator
Pilihan: Integer
Lalai: None
twirling
Pilihan Twirling
twirling.enable_gates
Pilihan: True, False
Lalai: False
twirling.enable_measure
Pilihan: True, False
Lalai: False
twirling.num_randomizations
Pilihan: auto, Integer >= 1
Lalai: auto
twirling.shots_per_randomization
Pilihan: auto, Integer >= 1
Lalai: auto
twirling.strategy
Pilihan: active, active-circuit, active-accum, all
Lalai: active-accum
experimental
Pilihan eksperimental, apabila tersedia.
Keserasian ciri
Ciri-ciri Runtime tertentu tidak boleh digunakan bersama dalam satu kerja. Klik tab yang sesuai untuk senarai ciri yang tidak serasi dengan ciri yang dipilih:
Litar dinamik
Tidak serasi dengan:
- Dynamical decoupling
Nota lain:
- Gate twirling boleh diterapkan pada litar dinamik, tetapi hanya pada gate yang tidak berada dalam blok bersyarat. Measurement twirling hanya boleh diterapkan pada pengukuran terminal.
- Serasi dengan gate pecahan apabila menggunakan
qiskit-ibm-runtimev0.42.0 atau lebih baharu.
Dynamical decoupling
Tidak serasi dengan:
- Litar dinamik
Gate pecahan
Tidak serasi dengan:
- Gate twirling
Serasi dengan litar dinamik apabila menggunakan qiskit-ibm-runtime v0.42.0 atau lebih baharu.
Gate twirling
Tidak serasi dengan:
- Gate pecahan
- Stretches
Nota lain:
- Gate twirling boleh diterapkan pada litar dinamik, tetapi hanya pada gate yang tidak berada dalam blok bersyarat.
- Measurement twirling hanya boleh diterapkan pada pengukuran terminal.
- Measurement twirling tidak serasi dengan arahan
store. - Tidak berfungsi dengan entangler bukan-Clifford.
Langkah seterusnya
- Semak panduan Pengenalan kepada pilihan.
- Cari butiran lanjut tentang kaedah
SamplerV2dalam rujukan API Sampler. - Tentukan mod pelaksanaan mana yang hendak digunakan untuk kerja anda.
- Pelajari tentang pengurusan hingar dengan Sampler.