Configurarea gestionării zgomotului cu Estimator
Versiuni de pachete
Codul de pe această pagină a fost dezvoltat folosind următoarele cerințe. Recomandăm utilizarea acestor versiuni sau a unor versiuni mai noi.
qiskit-ibm-runtime~=0.47.0
Există mai multe modalități de a gestiona zgomotul, de obicei prin utilizarea diferitelor tehnici de atenuare și suprimare a erorilor pentru a evita erorile înainte ca acestea să apară. Aceste tehnici cauzează de obicei un overhead de pre-procesare. Prin urmare, este important să se realizeze un echilibru între perfecționarea rezultatelor și asigurarea că jobul se finalizează într-un timp rezonabil.
Estimator suportă următoarele tehnici de gestionare a zgomotului. Consultă Tehnici de atenuare și suprimare a erorilor pentru o explicație a fiecăreia. Consultă secțiunea Setări personalizate de gestionare a zgomotului pentru un exemplu de activare a acestor tehnici.
Decuplare dinamică
Cum se activează: options.dynamical_decoupling.enable = True
Referință API: DynamicalDecouplingOptions
Opțiuni notabile: sequence_type
Twirling Pauli
Cum se activează: options.twirling.enable_gates = True
Referință API: TwirlingOptions
Opțiuni notabile: num_randomizations, shots_per_randomization
TREX
Cum se activează: options.resilience.measure_mitigation = True
Referință API: MeasureNoiseLearningOptions
Opțiuni notabile:
ZNE
Cum se activează: options.resilience.zne_mitigation = True
Referință API: ZneOptions
Opțiuni notabile: noise_factors, extrapolator
PEA
Cum se activează: (trebuie activat și ZNE) options.resilience.zne_mitigation = True și options.resilience.zne.amplifier = "pea"
Referință API: ZneOptions
Opțiuni notabile: noise_factors, extrapolator
PEC
Cum se activează: options.resilience.pec_mitigation = True
Referință API: PecOptions
Opțiuni notabile: max_overhead
Nivel de reziliență
resilience_level specifică cât de multă reziliență să construiești împotriva erorilor. Nivelurile mai ridicate generează rezultate mai precise, cu prețul unor timpi de procesare mai lungi. Nivelurile de reziliență pot fi folosite pentru a configura compromisul cost/acuratețe atunci când aplici gestionarea zgomotului la interogarea primitivă. Gestionarea zgomotului reduce erorile (biasul) din rezultate prin procesarea ieșirilor dintr-o colecție sau ansamblu de circuite înrudite. Gradul de reducere a erorilor depinde de metoda aplicată. Nivelul de reziliență abstractizează alegerea detaliată a metodei de gestionare a zgomotului pentru a permite utilizatorilor să raționeze despre compromisul cost/acuratețe adecvat aplicației lor.
Astfel, fiecare nivel corespunde unei metode sau unor metode cu un nivel crescând de overhead de eșantionare cuantică pentru a-ți permite să experimentezi cu diferite compromisuri timp-acuratețe. Tabelul următor îți arată ce niveluri și metode corespunzătoare sunt disponibile pentru fiecare dintre primitive.
| Nivel de reziliență | Descriere | Tehnică |
|---|---|---|
| 0 | Fără atenuare | Niciuna |
| 1 [Implicit] | Costuri minime de atenuare: Atenuarea erorilor asociate cu erorile de citire | Twirling-ul măsurătorilor Twirled Readout Error eXtinction (TREX) |
| 2 | Costuri medii de atenuare. De obicei reduce biasul în estimatori, dar nu este garantat să fie zero-bias. | Nivelul 1 + Extrapolare Zero Zgomot (ZNE) și twirling de gate |
Nivelurile de reziliență sunt în prezent în versiune beta, astfel că overhead-ul de eșantionare și calitatea soluției vor varia de la circuit la circuit. Caracteristici noi, opțiuni avansate și instrumente de management vor fi lansate continuu. Metodele specifice de gestionare a zgomotului nu sunt garantate să fie aplicate la fiecare nivel de reziliență.
Configurarea Estimator cu niveluri de reziliență
Poți folosi nivelurile de reziliență pentru a specifica tehnicile de gestionare a zgomotului sau poți seta tehnici personalizate individual, după cum este descris în Setări personalizate de gestionare a zgomotului.
Orice opțiuni pe care le specifici manual în plus față de nivelul de reziliență sunt aplicate în plus față de setul de bază de opțiuni definite de nivelul de reziliență. Prin urmare, în principiu, ai putea seta nivelul de reziliență la 1, dar apoi dezactiva atenuarea măsurătorilor, deși acest lucru nu este recomandat.
De exemplu, setarea nivelului de reziliență la 0 dezactivează zne_mitigation, dar estimator.options.resilience.zne_mitigation = True suprascrie acea valoare.
Exemplu
Codul următor activează ZNE, TREX și twirling de gate prin setarea 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})
Setări personalizate de gestionare a zgomotului
Poți activa și dezactiva metodele individuale de gestionare a zgomotului folosind opțiunile Estimator.
- Nu toate opțiunile funcționează împreună pe toate tipurile de circuite. Consultă tabelul de compatibilitate al funcționalităților pentru detalii.
- Dacă folosești noul Estimator de pe partea clientului introdus în
qiskit-ibm-runtimev0.50.0, este necesar un job separat de învățare a zgomotului pentru a folosi PEA și PEC. Consultă Migrarea de la Sampler și Estimator de pe partea serverului la cele de pe partea clientului pentru mai multe informații.
Exemplu complet cu mai multe opțiuni
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
Dezactivarea tuturor atenuărilor de erori
Pentru instrucțiuni privind dezactivarea tuturor atenuărilor de erori, consultă secțiunea Dezactivarea tuturor suprimărilor și atenuărilor de erori din ghidul de opțiuni Estimator.
Pașii următori
- Parcurge un exemplu care utilizează atenuarea erorilor în lecția despre funcțiile de cost din IBM Quantum Learning.
- Află mai multe despre tehnicile de atenuare și suprimare a erorilor.
- Explorează opțiunile Estimator.
- Decide în ce mod de execuție să rulezi jobul.