Configurare la mitigazione degli errori
La versione beta di un nuovo modello di esecuzione è ora disponibile. Il modello di esecuzione diretto offre maggiore flessibilità nella personalizzazione del tuo workflow di mitigazione degli errori. Consulta la guida al Modello di esecuzione diretto per ulteriori informazioni.
Versioni dei pacchetti
Il codice in questa pagina è stato sviluppato con i seguenti requisiti. Si consiglia di usare queste versioni o versioni più recenti.
qiskit-ibm-runtime~=0.43.1
Le tecniche di mitigazione degli errori permettono agli utenti di ridurre gli errori dei circuiti modellando il rumore del dispositivo al momento dell'esecuzione. Questo comporta tipicamente un overhead di pre-elaborazione quantistica legato all'addestramento del modello e un overhead di post-elaborazione classica per mitigare gli errori nei risultati grezzi tramite il modello generato.
La primitiva Estimator supporta diverse tecniche di mitigazione degli errori, tra cui TREX, ZNE, PEC e PEA. Consulta Tecniche di mitigazione e soppressione degli errori per una spiegazione di ciascuna. Quando usi le primitive, puoi attivare o disattivare i singoli metodi. Consulta la sezione Impostazioni personalizzate degli errori per i dettagli.
Sampler non supporta la mitigazione degli errori, ma puoi usare il pacchetto mthree (matrix-free measurement mitigation) per eseguire la mitigazione degli errori localmente.
Estimator supporta anche resilience_level. Il livello di resilienza specifica quanto rafforzare la resistenza agli errori. Livelli più alti producono risultati più accurati, a scapito di tempi di elaborazione più lunghi. I livelli di resilienza possono essere usati per configurare il compromesso costo/accuratezza quando si applica la mitigazione degli errori alle query delle primitive. La mitigazione degli errori riduce gli errori (bias) nei risultati elaborando gli output di una collezione, o ensemble, di circuiti correlati. Il grado di riduzione degli errori dipende dal metodo applicato. Il livello di resilienza astrae la scelta dettagliata del metodo di mitigazione degli errori per consentire agli utenti di ragionare sul compromesso costo/accuratezza più adatto alla loro applicazione.
Detto questo, ogni livello corrisponde a uno o più metodi con un livello crescente di overhead di campionamento quantistico, per permetterti di sperimentare diversi compromessi tra tempo e accuratezza. La tabella seguente mostra quali livelli e metodi corrispondenti sono disponibili per ciascuna delle primitive.
La mitigazione degli errori è specifica per il task, quindi le tecniche che puoi applicare variano a seconda che tu stia campionando una distribuzione o calcolando valori di aspettazione.
Estimator supporta i seguenti livelli di resilienza. Sampler non supporta i livelli di resilienza.
| Livello di resilienza | Definizione | Tecnica |
|---|---|---|
| 0 | Nessuna mitigazione | Nessuna |
| 1 [Predefinito] | Costi di mitigazione minimi: mitiga gli errori associati agli errori di readout | Twirled Readout Error eXtinction (TREX) con measurement twirling |
| 2 | Costi di mitigazione medi. Riduce tipicamente il bias negli stimatori, ma non garantisce risultati privi di bias. | Livello 1 + Zero Noise Extrapolation (ZNE) e gate twirling |
I livelli di resilienza sono attualmente in beta, quindi l'overhead di campionamento e la qualità della soluzione varieranno da circuito a circuito. Nuove funzionalità , opzioni avanzate e strumenti di gestione saranno rilasciati progressivamente. Non è garantito che specifici metodi di mitigazione degli errori vengano applicati a ogni livello di resilienza.
Configurare Estimator con i livelli di resilienza​
Puoi usare i livelli di resilienza per specificare le tecniche di mitigazione degli errori, oppure impostare tecniche personalizzate individualmente come descritto in Impostazioni personalizzate degli errori.
Livello di resilienza 0
Nessuna mitigazione degli errori viene applicata al programma dell'utente.
Livello di resilienza 1
Il livello 1 applica la mitigazione degli errori di readout e il measurement twirling tramite una tecnica model-free nota come Twirled Readout Error eXtinction (TREX). Riduce l'errore di misura diagonalizzando il canale di rumore associato alla misura, ribaltando casualmente i qubit tramite gate X immediatamente prima della misura. Un termine di riscalatura dal canale di rumore diagonale viene appreso eseguendo il benchmarking di circuiti casuali inizializzati nello stato zero. Ciò consente al servizio di rimuovere il bias dai valori di aspettazione causato dal rumore di readout. Questo approccio è descritto ulteriormente in Model-free readout-error mitigation for quantum expectation values.
Livello di resilienza 2
Il livello 2 applica le tecniche di mitigazione degli errori incluse nel livello 1 e applica inoltre il gate twirling e usa il metodo Zero Noise Extrapolation (ZNE). ZNE calcola il valore di aspettazione dell'osservabile per diversi fattori di rumore (fase di amplificazione) e poi usa i valori di aspettazione misurati per inferire il valore di aspettazione ideale al limite di rumore zero (fase di estrapolazione). Questo approccio tende a ridurre gli errori nei valori di aspettazione, ma non garantisce un risultato privo di bias.
L'overhead di questo metodo scala con il numero di fattori di rumore. Le impostazioni predefinite campionano il valore di aspettazione a tre fattori di rumore, con un overhead di circa 3x quando si utilizza questo livello di resilienza.
Nel livello 2, il metodo TREX ribalta casualmente i qubit tramite gate X immediatamente prima della misura e ribalta il bit misurato corrispondente se è stato applicato un gate X. Questo approccio è descritto ulteriormente in Model-free readout-error mitigation for quantum expectation values.
Esempio​
L'interfaccia EstimatorV2 permette agli utenti di lavorare agevolmente con la varietà di metodi di mitigazione degli errori per ridurre gli errori nei valori di aspettazione degli osservabili. Il codice seguente usa la Zero Noise Extrapolation e la mitigazione degli errori di readout semplicemente impostando resilience_level 2.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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 primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
Impostazioni personalizzate degli errori​
Puoi attivare e disattivare i singoli metodi di mitigazione e soppressione degli errori, tra cui il dynamical decoupling, il gate e measurement twirling, la mitigazione degli errori di misura, PEC e ZNE. Consulta Tecniche di mitigazione e soppressione degli errori per una spiegazione di ciascuno.
- Non tutte le opzioni sono disponibili per entrambe le primitive. Consulta la tabella delle opzioni disponibili per l'elenco delle opzioni disponibili.
- Non tutti i metodi funzionano insieme su tutti i tipi di circuiti. Consulta la tabella di compatibilità delle funzionalità per i dettagli.
- Estimator
- Sampler
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(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: {estimator.options.resilience.measure_mitigation}")
from qiskit_ibm_runtime import SamplerV2 as Sampler
# Estimator and Sampler have different options
sampler = Sampler(backend)
options = sampler.options
options.dynamical_decoupling.enable = True
# Turn on gate twirling. Requires qiskit_ibm_runtime 0.23.0 or later.
options.twirling.enable_gates = True
print(f">>> dynamical decoupling is turned on: {sampler.options.dynamical_decoupling.enable}")
print(f">>> gate twirling is turned on: {sampler.options.twirling.enable_gates}")
Disattivare tutta la mitigazione degli errori​
Per le istruzioni su come disattivare tutta la mitigazione degli errori, consulta la sezione Disattivare tutta la soppressione e la mitigazione degli errori.
Passi successivi​
- Segui un esempio che usa la mitigazione degli errori nella lezione sulle funzioni di costo di IBM Quantum Learning.
- Scopri di più sulle tecniche di mitigazione e soppressione degli errori.
- Configura la soppressione degli errori.
- Esplora le altre opzioni.
- Decidi in quale modalità di esecuzione eseguire il tuo job.