Konfigurasi manajemen noise dengan Estimator
Versi paket
Kode di halaman ini dikembangkan menggunakan persyaratan berikut. Kami menyarankan menggunakan versi ini atau yang lebih baru.
qiskit-ibm-runtime~=0.47.0
Ada beberapa cara untuk mengelola noise, biasanya dengan menggunakan berbagai teknik mitigasi error dan penekanan error untuk menghindari error sebelum terjadi. Teknik-teknik ini biasanya menyebabkan overhead pra-pemrosesan. Oleh karena itu, penting untuk mencapai keseimbangan antara menyempurnakan hasilmu dan memastikan jobmu selesai dalam waktu yang wajar.
Estimator mendukung teknik manajemen noise berikut. Lihat Teknik mitigasi dan supresi error untuk penjelasan masing-masing. Lihat bagian Pengaturan manajemen noise kustom untuk contoh cara mengaktifkan teknik-teknik ini.
Dynamical decoupling
Cara mengaktifkan: options.dynamical_decoupling.enable = True
Referensi API: DynamicalDecouplingOptions
Opsi penting: sequence_type
Pauli twirling
Cara mengaktifkan: options.twirling.enable_gates = True
Referensi API: TwirlingOptions
Opsi penting: num_randomizations, shots_per_randomization
TREX
Cara mengaktifkan: options.resilience.measure_mitigation = True
Referensi API: MeasureNoiseLearningOptions
Opsi penting:
ZNE
Cara mengaktifkan: options.resilience.zne_mitigation = True
Referensi API: ZneOptions
Opsi penting: noise_factors, extrapolator
PEA
Cara mengaktifkan: (Harus mengaktifkan ZNE juga) options.resilience.zne_mitigation = True dan options.resilience.zne.amplifier = "pea"
Referensi API: ZneOptions
Opsi penting: noise_factors, extrapolator
PEC
Cara mengaktifkan: options.resilience.pec_mitigation = True
Referensi API: PecOptions
Opsi penting: max_overhead
Tingkat ketahanan
resilience_level menentukan seberapa besar ketahanan yang dibangun terhadap error. Level yang lebih tinggi memberikan hasil yang lebih akurat, dengan konsekuensi waktu pemrosesan yang lebih lama. Tingkat ketahanan dapat digunakan untuk mengonfigurasi trade-off biaya/akurasi saat menerapkan manajemen noise ke kueri primitifmu. Manajemen noise mengurangi error (bias) dalam hasil dengan memproses output dari kumpulan, atau ansambel, Circuit yang saling berkaitan. Tingkat pengurangan error tergantung pada metode yang diterapkan. Tingkat ketahanan mengabstraksi pilihan metode manajemen noise yang detail agar pengguna dapat mempertimbangkan trade-off biaya/akurasi yang sesuai untuk aplikasi mereka.
Dengan demikian, setiap level sesuai dengan satu metode atau lebih dengan level overhead sampling kuantum yang meningkat agar kamu bisa bereksperimen dengan trade-off waktu-akurasi yang berbeda. Tabel berikut menunjukkan level dan metode yang sesuai yang tersedia untuk masing-masing primitif.
| Level Resilience | Deskripsi | Teknik |
|---|---|---|
| 0 | Tanpa mitigasi | Tidak ada |
| 1 [Default] | Biaya mitigasi minimal: Memitigasi error yang terkait dengan error readout | Twirling pengukuran Twirled Readout Error eXtinction (TREX) |
| 2 | Biaya mitigasi sedang. Biasanya mengurangi bias dalam estimator, tapi tidak dijamin zero-bias. | Level 1 + Zero Noise Extrapolation (ZNE) dan gate twirling |
Level resilience saat ini masih dalam beta sehingga overhead sampling dan kualitas solusi akan bervariasi dari satu sirkuit ke sirkuit lainnya. Fitur baru, opsi lanjutan, dan tool manajemen akan dirilis secara bertahap. Metode manajemen noise tertentu tidak dijamin diterapkan pada setiap level resilience.
Konfigurasi Estimator dengan level resilience
Kamu bisa menggunakan level resilience untuk menentukan teknik manajemen noise, atau kamu bisa mengatur teknik kustom secara individual seperti yang dijelaskan di Pengaturan manajemen noise kustom.
Opsi apa pun yang kamu tentukan secara manual selain level resilience diterapkan di samping set opsi dasar yang ditentukan oleh level resilience. Oleh karena itu, pada prinsipnya, kamu bisa mengatur level resilience ke 1, tapi kemudian menonaktifkan mitigasi pengukuran, meskipun ini tidak disarankan.
Misalnya, mengatur level resilience ke 0 menonaktifkan zne_mitigation, tapi estimator.options.resilience.zne_mitigation = True menimpa nilai tersebut.
Contoh
Kode berikut mengaktifkan ZNE, TREX, dan gate twirling dengan mengatur resilience_level 2.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
Pengaturan manajemen noise kustom
Kamu bisa mengaktifkan dan menonaktifkan metode manajemen noise individual menggunakan opsi Estimator.
- Tidak semua opsi dapat digunakan bersamaan pada semua jenis circuit. Lihat tabel kompatibilitas fitur untuk detailnya.
- Jika kamu menggunakan Estimator sisi klien baru yang diperkenalkan di
qiskit-ibm-runtimev0.50.0, diperlukan job noise-learning terpisah untuk menggunakan PEA dan PEC. Lihat Migrasi dari Sampler dan Estimator sisi server ke sisi klien untuk informasi lebih lanjut.
Contoh lengkap dengan beberapa opsi
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
Matikan semua mitigasi error
Untuk instruksi mematikan semua mitigasi error, lihat bagian Matikan semua penekanan dan mitigasi error di panduan opsi Estimator.
Langkah selanjutnya
- Ikuti contoh yang menggunakan mitigasi error dalam pelajaran fungsi biaya di IBM Quantum Learning.
- Pelajari lebih lanjut tentang teknik mitigasi error dan penekanan error.
- Jelajahi opsi Estimator.
- Tentukan mode eksekusi mana yang akan digunakan untuk menjalankan job kamu.