Configurare la gestione del rumore con Estimator
Versioni dei pacchetti
Il codice in questa pagina è stato sviluppato con i seguenti requisiti. Ti consigliamo di utilizzare queste versioni o versioni più recenti.
qiskit-ibm-runtime~=0.47.0
Esistono diversi modi per gestire il rumore, tipicamente utilizzando varie tecniche di mitigazione degli errori e soppressione degli errori per evitare che gli errori si verifichino. Queste tecniche causano solitamente un overhead di pre-elaborazione. Pertanto, è importante trovare un equilibrio tra il perfezionamento dei risultati e la garanzia che il job venga completato in un tempo ragionevole.
Estimator supporta le seguenti tecniche di gestione del rumore. Leggi Tecniche di mitigazione e soppressione degli errori per una spiegazione di ciascuna. Vedi la sezione Impostazioni personalizzate di gestione del rumore per un esempio di come abilitare queste tecniche.
Dynamical decoupling
Come abilitarlo: options.dynamical_decoupling.enable = True
Riferimento API: DynamicalDecouplingOptions
Opzioni rilevanti: sequence_type
Twirling di Pauli
Come abilitarlo: options.twirling.enable_gates = True
Riferimento API: TwirlingOptions
Opzioni rilevanti: num_randomizations, shots_per_randomization
TREX
Come abilitarlo: options.resilience.measure_mitigation = True
Riferimento API: MeasureNoiseLearningOptions
Opzioni rilevanti:
ZNE
Come abilitarlo: options.resilience.zne_mitigation = True
Riferimento API: ZneOptions
Opzioni rilevanti: noise_factors, extrapolator
PEA
Come abilitarlo: (devi abilitare anche ZNE) options.resilience.zne_mitigation = True e options.resilience.zne.amplifier = "pea"
Riferimento API: ZneOptions
Opzioni rilevanti: noise_factors, extrapolator
PEC
Come abilitarlo: options.resilience.pec_mitigation = True
Riferimento API: PecOptions
Opzioni rilevanti: max_overhead
Livello di resilienza
Il resilience_level specifica quanta resilienza costruire contro gli errori. Livelli più alti generano risultati più accurati, a spese di tempi di elaborazione più lunghi. I livelli di resilienza possono essere usati per configurare il compromesso costo/accuratezza quando si applica la gestione del rumore alla query della primitiva. La gestione del rumore riduce gli errori (bias) nei risultati elaborando gli output da una raccolta, o ensemble, di Circuit correlati. Il grado di riduzione degli errori dipende dal metodo applicato. Il livello di resilienza astrae la scelta dettagliata del metodo di gestione del rumore per consentire agli utenti di ragionare sul compromesso costo/accuratezza appropriato per la loro applicazione.
Di conseguenza, ogni livello corrisponde a uno o più metodi con un overhead di campionamento quantistico crescente per permetterti di sperimentare diversi compromessi tempo-accuratezza. La tabella seguente mostra quali livelli e i corrispondenti metodi sono disponibili per ciascuna delle primitive.
| Livello di resilienza | Descrizione | Tecnica |
|---|---|---|
| 0 | Nessuna mitigazione | Nessuna |
| 1 [Predefinito] | Costi minimi di mitigazione: Mitiga gli errori associati agli errori di lettura | Twirled Readout Error eXtinction (TREX) measurement twirling |
| 2 | Costi medi di mitigazione. Tipicamente riduce il bias negli stimatori, ma non è garantito che sia a bias nullo. | 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 verranno rilasciati su base continua. Non è garantito che metodi specifici di gestione del rumore vengano applicati a ogni livello di resilienza.
Configura Estimator con i livelli di resilienza
Puoi usare i livelli di resilienza per specificare le tecniche di gestione del rumore, oppure puoi impostare tecniche personalizzate individualmente come descritto in Impostazioni personalizzate di gestione del rumore.
Qualsiasi opzione che specifichi manualmente in aggiunta al livello di resilienza viene applicata in aggiunta all'insieme di base di opzioni definite dal livello di resilienza. Quindi, in linea di principio, potresti impostare il livello di resilienza a 1, ma poi disattivare la mitigazione della misura, anche se non è consigliato.
Ad esempio, impostare il livello di resilienza a 0 disattiva zne_mitigation, ma estimator.options.resilience.zne_mitigation = True sovrascrive quel valore.
Esempio
Il codice seguente abilita ZNE, TREX e gate twirling impostando 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})
Impostazioni personalizzate di gestione del rumore
Puoi attivare e disattivare singoli metodi di gestione del rumore utilizzando le opzioni di Estimator.
- Non tutte le opzioni funzionano insieme su tutti i tipi di circuiti. Consulta la tabella di compatibilità delle funzionalità per i dettagli.
- Se usi il nuovo Estimator lato client introdotto in
qiskit-ibm-runtimev0.50.0, è necessario un job separato di apprendimento del rumore per usare PEA e PEC. Consulta Migrare dai Sampler ed Estimator lato server a quelli lato client per maggiori informazioni.
Esempio completo con più opzioni
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
Disattiva tutta la mitigazione degli errori
Per le istruzioni su come disattivare tutta la mitigazione degli errori, consulta la sezione Disattiva tutta la soppressione e mitigazione degli errori nella guida alle opzioni di Estimator.
Passi successivi
- Esegui un esempio che usa la mitigazione degli errori nella lezione sulle funzioni di costo in IBM Quantum Learning.
- Scopri di più sulle tecniche di mitigazione e soppressione degli errori.
- Esplora le opzioni di Estimator.
- Decidi in quale modalità di esecuzione eseguire il tuo job.