Skip to main content
IBM Quantum Platform

ZneOptions

class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)

GitHub

Basi: object

Opzioni di mitigazione dell'estrapolazione del rumore zero. Viene utilizzato solo dallo Stimatore V2.

Nota

Qualsiasi stimatore V2 è in grado di restituire campi dati chiamati evs e stds che riportano rispettivamente le stime del valore di aspettativa e gli errori desiderati. Quando le opzioni ZNE sono abilitate nello stimatore runtime, vengono restituiti dati aggiuntivi.

In particolare, supponiamo che un pub in ingresso abbia una matrice osservabile di forma obs_shape e valori dei parametri di forma par_shape, con la corrispondente forma del pub shape=np.broadcast_shapes(obs_shape, par_shape). Allora il risultato pub corrispondente conterrà anche:

  1. pub_result.data.evs_extrapolated e pub_result.data.stds_extrapolated,

    entrambi con forma (*shape, num_extrapolators, num_evaluation_points), dove num_extrapolators è la lunghezza dell'elenco di options.resilience.zne.extrapolators, e num_evaluation_points è la lunghezza dell'elenco options.resilience.extrapolated_noise_factors. Questi valori forniscono le valutazioni di ogni estrapolatore per ogni valore di estrapolazione del rumore specificato.

  2. pub_result.data.evs_noise_factors, pub_result.data.stds_noise_factors e ensemble_stds_noise_factors hanno tutti la forma (*shape, num_noise_factors) dove num_noise_factors è la lunghezza di options.resilience.zne.noise_factors. Questi valori forniscono i valori di aspettativa grezzi, mediati sul twirling, se applicabile, a ciascuna delle amplificazioni del rumore; è possibile basare le proprie routine di adattamento su questi valori. Nel caso in cui non si verifichi il twirling, entrambe le matrici *stds* saranno uguali; altrimenti, stds_noise_factors è derivato dallo spread sui campioni twirling, mentre ensemble_stds_noise_factors assume solo il rumore dei colpi e nessuna deriva.

Nota tecnica: per le singole osservabili con termini base multipli potrebbe risultare che vengono utilizzati più metodi di estrapolazione nello stesso valore di aspettativa, ad esempio XX viene estrapolato linearmente ma XY viene estrapolato esponenzialmente nell'osservabile {"XX": 0.5, "XY": 0.5}. Si tratta di un adattamento eterogeneo. I dati della (2) sono valutati da fit eterogenei, selezionando il miglior fit per ogni singolo termine distinto, mentre i dati della (1) sono valutati da fit omogenei forzati, uno per ogni estrapolatore fornito. Se il vostro lavoro richiede una distinzione sfumata in questo senso, vi consigliamo di utilizzare osservabili a termine singolo in aggiunta agli osservabili a termine multiplo.

Riferimenti

  1. Z. Cai, Multi-exponential error extrapolation and combining error mitigation techniques for NISQ applications, npj Quantum Inf 7, 80 (2021)

Attributi

Parametri

  • amplifier (UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea'])
  • noise_factors (UnsetType | Sequence[float])
  • extrapolator (UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback'] | ~collections.abc.Sequence[~typing.Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']])
  • extrapolated_noise_factors (UnsetType | Sequence[float])

amplifier

Tipo: UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea']

Valore predefinito: Unset

Quale tecnica utilizzare per amplificare il rumore.

Uno di:

  • "gate_folding" (predefinito) utilizza il gate folding a 2 qubit per amplificare il rumore. Se il rumore

    richiede l'amplificazione solo di un sottoinsieme di porte, allora queste porte vengono scelte in modo casuale.

  • "gate_folding_front" utilizza il gate folding a 2 qubit per amplificare il rumore. Se il rumore

    richiede l'amplificazione solo di un sottoinsieme di porte, allora queste porte vengono selezionate dal fronte del circuito DAG topologicamente ordinato.

  • "gate_folding_back" utilizza il gate folding a 2 qubit per amplificare il rumore. Se il rumore

    richiede l'amplificazione solo di un sottoinsieme di porte, allora queste porte vengono selezionate dal retro del circuito DAG topologicamente ordinato.

  • "pea" utilizza una tecnica chiamata Amplificazione Probabilistica degli Errori

    (PEA ) per amplificare il rumore. Quando si seleziona questa opzione, il gate twirling verrà sempre utilizzato, indipendentemente dal fatto che sia stato abilitato o meno nelle opzioni. In questa tecnica, il modello di rumore roteato di ogni singolo strato di porte entangling nei circuiti ISA viene appreso in anticipo, vedi LayerNoiseLearningOptions per le relative opzioni di apprendimento. Una volta completati, i circuiti vengono eseguiti a ogni fattore di rumore, dove ogni strato entangling dei circuiti viene amplificato iniettando probabilisticamente un rumore a singolo qubit proporzionale al corrispondente modello di rumore appreso.

extrapolated_noise_factors

Tipo: UnsetType | Sequence[float]

Valore predefinito: Unset

Fattori di rumore per valutare l'adattamento dei modelli di estrapolazione.

Se non specificato, il valore predefinito è [0, *noise_factors]. Questa opzione non influisce in alcun modo sull'esecuzione o sull'adattamento del modello, ma determina semplicemente i punti in cui vengono calcolati i extrapolator valori da restituire nei campi dati denominati evs_extrapolated e stds_extrapolated.

extrapolator

Tipo: UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback' |] Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']]

Valore predefinito: Unset

Estrapolatore/i da provare (in ordine) per l'estrapolazione a rumore zero.

Le opzioni disponibili sono:

  • "exponential", che adatta i dati utilizzando una funzione esponenziale decrescente

    definito come f(x;A,τ)=Aex/τf(x; A, \tau) = A e^{-x/\tau}, dove A=f(0;A,τ)A = f(0; A, \tau) è il valore a rumore zero ( x=0x=0 ) e τ>0\tau>0 è un tasso positivo.

  • "double_exponential"che utilizza una somma di due esponenziali come in Rif. 1.

  • "polynomial_degree_(1 <= k <= 7)", che utilizza una funzione polinomiale definita come

    f(x;c0,c1,,ck)=i=0,kcixif(x; c_0, c_1, \ldots, c_k) = \sum_{i=0, k} c_i x^i.

  • "linear", che è equivalente a "polynomial_degree_1".

  • "fallback", che restituisce semplicemente i dati grezzi corrispondenti al rumore più basso

    1fattore (in genere) senza effettuare alcun tipo di estrapolazione.

I valori estrapolati (evs_extrapolated e stds_extrapolated) sono ordinati secondo l'ordine degli estrapolatori forniti. Se viene specificato più di un estrapolatore, i valori evs e stds riportati nei dati del risultato si riferiscono al primo estrapolatore riuscito, dove il successo di un estrapolatore è determinato in modo euristico.

Predefinito: ("exponential", "linear").

noise_factors

Tipo: UnsetType | Sequence[float]

Valore predefinito: Unset

Fattori di rumore da utilizzare per l'amplificazione del rumore.

Impostazione predefinita: (1, 3, 5).

Tipo

fattori_rumore


Metodi

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.