Tentukan pilihan Estimator
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 menggunakan pilihan untuk menyesuaikan primitif Estimator. Walaupun antara muka kaedah run() primitif adalah sama merentasi semua pelaksanaan, pilihan mereka tidak sama. Rujuk rujukan API untuk maklumat tentang pilihan qiskit.primitives.BaseEstimatorV2 dan qiskit_aer.BaseEstimatorV2.
Nota :
- Kamu boleh melihat pilihan yang tersedia dan mengemas kini nilai pilihan semasa atau selepas inisialisasi Estimator.
- Gunakan kaedah
update()untuk menggunakan perubahan pada atributoptions. - Jika kamu tidak menentukan nilai untuk sesuatu pilihan, ia diberikan nilai khas
Unsetdan lalai pelayan digunakan. - Atribut
optionsadalah jenis Pythondataclass. Kamu boleh menggunakan kaedah terbinaasdictuntuk menukarnya kepada kamus.
Tetapkan pilihan Estimator
Kamu boleh menetapkan pilihan semasa menginisialisasi Estimator, selepas menginisialisasi Estimator, atau (untuk precision sahaja), dalam kaedah run().
Inisialisasi primitif
Kamu boleh menghantar contoh kelas pilihan atau kamus semasa menginisialisasi Estimator, yang kemudiannya membuat salinan pilihan tersebut. Oleh itu, mengubah kamus asal atau contoh pilihan tidak memberi kesan kepada pilihan yang dimiliki oleh primitif.
Kelas pilihan
Semasa mencipta contoh kelas EstimatorV2, kamu boleh menghantar contoh kelas pilihan. Pilihan tersebut akan digunakan apabila kamu menggunakan run() untuk melakukan pengiraan. Tentukan pilihan dalam format ini: options.option.sub-option.sub-sub-option = choice. Contohnya: options.dynamical_decoupling.enable = True
Contoh:
# 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 EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
Kamus
Kamu boleh menentukan pilihan sebagai kamus semasa menginisialisasi Estimator.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
Kemas kini pilihan selepas inisialisasi
Kamu boleh menentukan pilihan dalam format ini: estimator.options.option.sub-option.sub-sub-option = choice untuk memanfaatkan auto-complete, atau gunakan kaedah update() untuk membuat kemas kini secara pukal.
Kelas pilihan EstimatorV2 (EstimatorOptions) tidak perlu dipasang jika kamu menetapkan pilihan selepas menginisialisasi primitif.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
Kaedah Run()
Satu-satunya nilai yang boleh anda hantar kepada run() adalah yang ditakrifkan dalam antara muka. Iaitu, precision untuk Estimator. Ini menimpa sebarang nilai yang ditetapkan untuk default_precision untuk run semasa.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
observable = SparsePauliOp("Z" * 3)
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
isa_observable1 = observable.apply_layout(transpiled1.layout)
isa_observable2 = observable.apply_layout(transpiled2.layout)
estimator = Estimator(mode=backend)
# Default precision to use if not specified in run()
estimator.options.default_precision = 0.01
# Run two circuits, requiring a precision of .02 for both.
estimator.run(
[(transpiled1, isa_observable1), (transpiled2, isa_observable2)],
precision=0.02,
)
<RuntimeJobV2('d7amh42k86tc73a1sa20', 'estimator')>
Kes khas: ketepatan
Kaedah EstimatorV2.run menerima dua argumen: senarai PUB, yang masing-masing boleh menentukan nilai ketepatan khusus PUB, dan argumen kata kunci ketepatan. Nilai ketepatan ini adalah sebahagian daripada antara muka pelaksanaan Estimator, dan bebas daripada pilihan Runtime Estimator. Ia mengambil keutamaan daripada sebarang nilai yang dinyatakan sebagai pilihan untuk mematuhi abstraksi Estimator.
Walau bagaimanapun, jika precision tidak dinyatakan oleh mana-mana PUB atau dalam argumen kata kunci run (atau jika semuanya None), maka nilai ketepatan daripada pilihan digunakan, terutamanya default_precision.
Parameter ketepatan ini hanya untuk menentukan ketepatan sasaran, dan keputusan tidak dijamin akan mencapai ketepatan yang dinyatakan.
Perlu diambil perhatian bahawa pilihan Estimator mengandungi kedua-dua default_shots dan default_precision. Walau bagaimanapun, kerana gate-twirling diaktifkan secara lalai, hasil darab num_randomizations dan shots_per_randomization mengambil keutamaan daripada kedua-dua pilihan tersebut.
Khususnya, untuk mana-mana Estimator PUB:
- Jika PUB menentukan ketepatan, gunakan nilai tersebut.
- Jika argumen kata kunci ketepatan dinyatakan dalam
run, gunakan nilai tersebut. - Jika
twirlingdiaktifkan (True secara lalai), maka hasil darabnum_randomizationsdanshots_per_randomization, seperti yang dinyatakan dalam pilihantwirling, digunakan. - Jika
estimator.options.default_shotsdinyatakan, gunakan nilai tersebut untuk mengawal jumlah data. - Jika
estimator.options.default_precisiondinyatakan, gunakan nilai tersebut.
Sebagai contoh, jika ketepatan dinyatakan di keempat-empat tempat, yang mempunyai keutamaan tertinggi (ketepatan yang dinyatakan dalam PUB) digunakan.
Walaupun ketepatan yang dinyatakan dalam PUB dan dalam run mempunyai keutamaan lebih tinggi, tugas akan gagal jika twirling diaktifkan dan hasil darab num_randomizations dan shots_per_randomization lebih kecil daripada shot yang diperlukan untuk mencapai ketepatan tersebut. Dalam senario ini, EstimatorV2 tidak dapat mengagihkan shot di kalangan num_randomizations yang dinyatakan.
Ketepatan berskala songsang dengan penggunaan. Iaitu, semakin rendah ketepatan, semakin banyak masa QPU yang diperlukan untuk dijalankan.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
observable = SparsePauliOp("Z" * 3)
circuit = random_iqp(3)
circuit.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
isa_circuit = pass_manager.run(circuit)
isa_observable = observable.apply_layout(isa_circuit.layout)
# Setting precision during primitive initialization
estimator = Estimator(mode=backend, options={"default_precision": 0.05})
# Run with precision=0.02, overwriting the default.
estimator.run(
[(isa_circuit, isa_observable1)],
precision=0.02,
)
<RuntimeJobV2('d8286b00bvlc73d1vn50', 'estimator')>
Matikan semua mitigasi ralat dan penindasan ralat
Anda boleh mematikan semua mitigasi dan penindasan ralat jika anda sedang, sebagai contoh, membuat kajian tentang teknik mitigasi sendiri. Untuk melakukan ini, tetapkan resilience_level = 0.
Contoh:
from qiskit_ibm_runtime import EstimatorV2 as Estimator, QiskitRuntimeService
# Define the service. This allows you to access an IBM QPU.
service = QiskitRuntimeService()
# Get a backend
backend = service.least_busy(operational=True, simulator=False)
# Define Estimator
estimator = Estimator(backend)
options = estimator.options
# Turn off all error mitigation and suppression
options.resilience_level = 0
Pilihan yang tersedia
Jadual berikut mendokumentasikan pilihan daripada versi terkini 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
default_precision
Ketepatan lalai yang digunakan untuk mana-mana PUB atau panggilan run() yang tidak menentukannya.
Pilihan: Float > 0
Lalai: 0.015625 (1 / sqrt(4096))
dynamical_decoupling
Kawal 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.callback
Fungsi boleh panggil yang menerima Job ID dan Job result.
Pilihan: None
Lalai: None
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 untuk menetapkan semula qubit ke keadaan asas untuk 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
max_execution_time
Mengehadkan tempoh masa sesuatu kerja boleh berjalan, dalam saat. Lihat panduan masa pelaksanaan maksimum untuk butiran.
Pilihan: Nombor integer saat dalam julat [1, 10800]
Lalai: 10800 (3 jam)
resilience
Pilihan ketahanan lanjutan untuk menala strategi ketahanan dengan tepat.
resilience.layer_noise_learning
Pilihan untuk pembelajaran hingar lapisan.
resilience.layer_noise_learning.layer_pair_depths
Pilihan: list[int] daripada 2-10 nilai dalam julat [0, 200]
Lalai: (0, 1, 2, 4, 16, 32)
resilience.layer_noise_learning.max_layers_to_learn
Pilihan: None, Integer >= 1
Lalai: 4
resilience.layer_noise_learning.num_randomizations
Pilihan: Integer >= 1
Lalai: 32
resilience.layer_noise_learning.shots_per_randomization
Pilihan: Integer >= 1
Lalai: 128
resilience.layer_noise_model
Pilihan: NoiseLearnerResult, Sequence[LayerError]
Lalai: None
resilience.measure_mitigation
Pilihan: True, False
Lalai: True
resilience.measure_noise_learning
Pilihan untuk pembelajaran hingar pengukuran.
resilience.measure_noise_learning.num_randomizations
Pilihan: Integer >= 1
Lalai: 32
resilience.measure_noise_learning.shots_per_randomization
Pilihan: Integer, auto
Lalai: auto
resilience.pec_mitigation
Pilihan: True, False
Lalai: False
resilience.pec
Pilihan mitigasi pembatalan ralat berkemungkinan.
resilience.pec.max_overhead
Pilihan: None, Integer >= 1
Lalai: 100
resilience.pec.noise_gain
Pilihan: auto, float dalam julat [0, 1]
Lalai: auto
resilience.zne_mitigation
Pilihan: True, False
Lalai: False
resilience.zne
resilience.zne.amplifier
Pilihan: gate_folding, gate_folding_front, gate_folding_back, pea
Lalai: gate_folding
resilience.zne.extrapolated_noise_factors
Pilihan: Senarai float
Lalai: [0, *noise_factors]
resilience.zne.extrapolator
Pilihan: Satu atau lebih daripada: exponential, linear, double_exponential, polynomial_degree_(1 <= k <= 7), fallback
Lalai: (exponential, linear)
resilience.zne.noise_factors
Pilihan: Senarai float; setiap float >= 1
Lalai: (1, 1.5, 2) untuk PEA, dan (1, 3, 5) sebaliknya
resilience_level
Sejauh mana ketahanan yang perlu dibina terhadap ralat. Tahap yang lebih tinggi menghasilkan keputusan yang lebih tepat dengan mengorbankan masa pemprosesan yang lebih lama. Lihat bahagian tahap ketahanan dalam topik Pengurusan hingar untuk mengetahui lebih lanjut.
Pilihan: 0, 1, 2
Lalai: 1
seed_estimator
simulator
Pilihan untuk dihantar semasa mensimulasikan Backend
simulator.basis_gates
Pilihan: Senarai nama gate asas untuk diurai
Lalai: Set semua gate asas yang disokong oleh simulator Qiskit Aer
simulator.coupling_map
Pilihan: Senarai interaksi dua qubit berarah
Lalai: None, yang bermakna tiada kekangan sambungan (sambungan 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: True
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:
Gate pecahan
Tidak serasi dengan:
- Gate twirling
- PEA
- PEC
Gate-folding ZNE
Mungkin tidak berfungsi apabila menggunakan gate tersuai. Tidak serasi dengan:
- PEA
- PEC
Gate twirling
Tidak serasi dengan:
- Gate pecahan
- Regangan
Nota lain:
- Twirling pengukuran hanya boleh diterapkan pada pengukuran terminal.
- Tidak berfungsi dengan entangler bukan-Clifford.
PEA
Tidak serasi dengan:
- Gate pecahan
- Gate-folding ZNE
- PEC
PEC
Tidak serasi dengan:
- Gate pecahan
- Gate-folding ZNE
- PEA
Langkah seterusnya
- Cari butiran lanjut tentang kaedah
EstimatorV2dalam rujukan API Estimator. - Tentukan mod pelaksanaan untuk menjalankan kerja anda.
- Ketahui tentang pengurusan hingar dengan Estimator.