Skip to main content
IBM Quantum Platform

PEA

class PEA

GitHub

Basi: MitigationTask

Calcola i valori attesi delle grandezze osservabili utilizzando il metodo di mitigazione denominato "Probabilistic Error Amplification" (PEA).

La classe consente di preparare un QuantumProgram con circuito mitigato utilizzando il metodo PEA, che può essere eseguito su hardware tramite l'Executor, e di elaborare successivamente i risultati per calcolare i valori attesi mitigati di determinate grandezze osservabili. I parametri dell'attività devono essere forniti come input alla funzione prepare, mentre le variabili necessarie per la post-elaborazione vengono salvate internamente:

pea_task = PEA()
program = pea_task.prepare(circuit=circuit,
                           observables=observables,
                           parameters=parameter_values,
                           noise_factors=noise_factors_array,
                           extrapolator=extrapolators_list)
job = executor.run(program)
results = job.result()
mitigated_result = pea_task.postprocess(results)

Per calcolare i valori attesi del risultato di un lavoro caricato, è possibile creare un’attività PEA a partire dai risultati del lavoro, includendo tutte le variabili interne necessarie per la post-elaborazione. In alternativa, le variabili necessarie per la post-elaborazione possono essere fornite direttamente come input al metodo statico compute_expectation_value . Esempio di esecuzione della post-elaborazione per un risultato caricato:

pea_task = PEA()
program = pea_task.prepare(circuit=circuit,
                           observables=observables,
                           parameters=parameter_values,
                           noise_factors=noise_factors_array,
                           extrapolator=extrapolators_list)
job_id = executor.run(program).job_id

job = service.job(job_id)
results = job.result()
pea_task = load_tasks_from_result(results)[0]
mitigated_result = pea_task.postprocess(results)

Creare un'istanza di un'attività PEA.


Attributi

VERSIONE

Valore predefinito: '0.1'


Metodi

compute_expectation_value

static compute_expectation_value(item_result, observables, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)

GitHub

Valori attesi di elaborazione per il risultato relativo a un singolo elemento.

Questa funzione può essere utilizzata per calcolare i valori attesi relativi al risultato di una singola voce non mitigata senza creare una nuova istanza della classe.

Parametri

  • item_result (QuantumProgramItemResult) – Il risultato della ricerca.
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Le grandezze osservabili per le quali calcolare i valori attesi.
  • param_shape (tuple[int, ...] | None) – La forma dei valori dei parametri.
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La mappa tra i parametri e gli indici per misurare la base.
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Un elenco delle basi di Pauli misurate. L'elemento ° i è una base di misura che si presume corrisponda alla ° i porzione dei dati in item_result.
  • broadcast_obs_and_params (bool) – Se trasmettere o meno gli osservabili e i valori dei parametri.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Dati di calibrazione del rumore di misura per la mitigazione del TREX.

Risultati

Un oggetto di tipo PubResult che contiene evs e std come campi nei propri dati, dove evs sono i valori attesi e std sono le deviazioni standard dei valori attesi. Se broadcast_obs_and_params è impostato su True, i dati conterranno anche un campo twirl_stds che rappresenta la deviazione standard tra le diverse randomizzazioni.

Aumenti

  • ValueError – Se non item_result ha alcuna chiave '_meas' .
  • ValueError – Se il numero di assi non item_result['_meas'] è valido.
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi l'uno contro l'altro.

Tipo di restituzione

PubResult

compute_expectation_value_pea

static compute_expectation_value_pea(item_result, observables, param_shape, param_basis_pairs, noise_factors, extrapolator, extrapolated_noise_factors=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None, custom_fit=None)

GitHub

Valori attesi di elaborazione per il risultato relativo a un singolo elemento.

Questa funzione può essere utilizzata per calcolare i valori attesi relativi al risultato di un singolo elemento mitigato di tipo "pea" senza creare una nuova istanza della classe.

Parametri

  • item_result (QuantumProgramItemResult) – Il pisello ha attenuato l'esito dell'operazione.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Le grandezze osservabili per le quali calcolare i valori attesi.

  • param_shape (tuple[int, ...] | None) – La forma dei valori dei parametri.

  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – La mappa tra i parametri e gli indici per misurare la base.

  • noise_factors (list[float]) – I fattori di rumore utilizzati per amplificare il rumore.

  • extrapolated_noise_factors (float |int |list[float] | None) – Fattori di rumore da considerare nella valutazione dell'adattamento.

  • extrapolator (list[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', 'custom']]) –

    Il modello o i modelli di estrapolazione da utilizzare. I modelli saranno testati in ordine di priorità. Modelli supportati (ognuno dei quali soddisfa la funzione indicata del fattore di rumore x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio di grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tassi vincolati al decadimento)
    • "fallback": nessuna corrispondenza; il valore misurato al fattore di rumore più basso
    • custom: La funzione di estrapolazione personalizzata specificata nel parametro custom_fit
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – Un elenco delle basi di Pauli misurate. L'elemento ° i è una base di misura che si presume corrisponda alla ° i porzione dei dati in item_result.

  • broadcast_obs_and_params (bool) – Se trasmettere o meno gli osservabili e i valori dei parametri.

  • measure_noise_data (PauliLindbladMap |ndarray | None) – Dati di calibrazione del rumore di misura per la mitigazione del TREX. Può trattarsi sia di un modello di rumore appreso in anticipo ( PauliLindbladMap ), sia del risultato di un circuito di calibrazione.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una funzione di adattamento personalizzata che verrà utilizzata per l'estrapolazione. Dovrebbe includere una tupla nella forma: (function, p_0, bounds). La funzione dovrebbe accettare la variabile indipendente come primo argomento e i parametri di adattamento come argomenti successivi distinti. p_0 è un array contenente i valori iniziali stimati per i parametri, mentre bounds indica i limiti dei parametri. Questi parametri verranno inviati come argomenti alla funzione scipy.optimize.curve_fit .

Risultati

  • evs: valori attesi calcolati nel punto di rumore zero.

  • std: le deviazioni standard dei valori attesi estrapolati calcolati nel punto di rumore zero.

  • evs_noise_factors: valori attesi calcolati nei punti noise_factors.

  • stds_noise_factors: deviazioni standard calcolate nei punti noise_factors.

  • stds_twirl_noise_factors: deviazioni standard tra le diverse randomizzazioni calcolate al

    punti relativi ai fattori di rumore.

  • evs_extrapolated: valori attesi calcolati nei punti extrapolated_noise_factors.

    Impostare su None se extrapolated_noise_factors è None.

  • stds_extrapolated: deviazioni standard calcolate nei punti relativi ai fattori di rumore estrapolati.

    Impostare su None se extrapolated_noise_factors è None.

L' PubResult a conterrà inoltre un campo selected_extrapolators nei metadati che indica gli estrapolatori validi utilizzati per estrapolare i dati per ciascun termine osservabile per il punto di estrapolazione a rumore zero.

Tipo di restituzione

Un oggetto di tipo “ PubResult ” che contiene i seguenti campi

Aumenti

  • ValueError – Se non item_result ha alcuna chiave '_meas' .
  • ValueError – Se il numero di assi non item_result['_meas'] è valido.
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi l'uno contro l'altro.
  • ValueError – Se noise_factors è sottospecificato per qualsiasi estrapolatore.

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Crea un'istanza PEA a partire da un dizionario di passthrough caricato dal risultato dell'esecuzione di un programma quantistico.

Parametri

  • passthrough (dict[str, Any]) – Dizionario Passthrough_data caricato dal risultato dell'esecuzione di un programma quantistico.
  • trex (TREX | None) – Un'istanza TREX contenente un circuito di calibrazione viene eseguita all'interno dello stesso programma quantistico. Deve essere mantenuto nel None caso in cui non sia stata utilizzata la mitigazione TREX o non sia stata eseguita una calibrazione TREX nell'ambito dello stesso programma quantistico.

Risultati

Un'istanza PEA.

Tipo di restituzione

PEA

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Restituisce i livelli raggruppati in blocchi univoci del circuito specificato, utilizzando le opzioni di raggruppamento specificate.

Parametri

  • circuit (QuantumCircuit) – Il circuito per scoprire i suoi strati unici.
  • custom_boxing_options (dict | None) – Le opzioni di impacchettamento personalizzate che verranno utilizzate dalla funzione generate_boxing_pass_manager() .

Risultati

Strati unici racchiusi in riquadri del circuito in questione.

Tipo di restituzione

elenco [ CircuitInstruction ]

postprocess

postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)

GitHub

Valori attesi di elaborazione per il risultato relativo a un singolo elemento.

Parametri

  • results (QuantumProgramItemResult |QuantumProgramResult) – I risultati dell'esecuzione. Può trattarsi sia dell'intero oggetto dei risultati sia del risultato relativo alla voce "pea mitigated" di questa attività. Se al programma quantistico viene aggiunta l'attività di calibrazione TREX, i relativi risultati saranno utilizzati per calcolare i dati relativi al rumore di misura, a condizione che venga fornito l'intero oggetto dei risultati.

  • noise_factors (Sequence[float] | None) – I fattori di rumore utilizzati per amplificare il rumore.

  • extrapolated_noise_factors (list[float] | None) – Fattori di rumore da considerare nella valutazione dell'adattamento.

  • extrapolator (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', 'custom']] | None) –

    Il modello o i modelli di estrapolazione da utilizzare. I modelli saranno testati in ordine di priorità. Modelli supportati (ognuno dei quali soddisfa la funzione indicata del fattore di rumore x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio di grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tassi vincolati al decadimento)
    • "fallback": nessuna corrispondenza; il valore misurato al fattore di rumore più basso
    • custom: La funzione di estrapolazione personalizzata specificata nel parametro custom_fit
  • measure_noise_data (PauliLindbladMap |ndarray | None) – Dati di calibrazione del rumore di misura per la mitigazione del TREX. Può trattarsi sia di un modello di rumore appreso in anticipo ( PauliLindbladMap ), sia del risultato di un circuito di calibrazione.

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – Una funzione di adattamento personalizzata che verrà utilizzata per l'estrapolazione. Dovrebbe includere una tupla nella forma: (function, p_0, bounds). La funzione dovrebbe accettare la variabile indipendente come primo argomento e i parametri di adattamento come argomenti successivi distinti. p_0 è un array contenente i valori iniziali stimati per i parametri, mentre bounds indica i limiti dei parametri. Questi parametri verranno inviati come argomenti alla funzione scipy.optimize.curve_fit .

Risultati

  • evs: valori attesi calcolati nel punto di rumore zero.

  • std: le deviazioni standard dei valori attesi estrapolati calcolati nel punto di rumore zero.

  • evs_noise_factors: valori attesi calcolati nei punti noise_factors.

  • stds_noise_factors: deviazioni standard calcolate nei punti noise_factors.

  • stds_twirl_noise_factors: deviazioni standard tra le diverse randomizzazioni calcolate al

    punti relativi ai fattori di rumore.

  • evs_extrapolated: valori attesi calcolati nei punti extrapolated_noise_factors.

    Impostare su None se extrapolated_noise_factors è None.

  • stds_extrapolated: deviazioni standard calcolate nei punti relativi ai fattori di rumore estrapolati.

    Impostare su None se extrapolated_noise_factors è None.

L' PubResult a conterrà inoltre un campo selected_extrapolators nei metadati che indica gli estrapolatori validi utilizzati per estrapolare i dati per ciascun termine osservabile per il punto di estrapolazione a rumore zero.

Tipo di restituzione

Un oggetto di tipo “ PubResult ” che contiene i seguenti campi

Aumenti

  • ValueError – Se il risultato dell’elemento dell’attività non ha alcuna '_meas' chiave.
  • ValueError – Se i dati '_meas' del risultato dell'elemento presentano un numero di assi non valido.
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi l'uno contro l'altro.

prepare

prepare(circuit, observables, parameters, custom_boxing_options=None, shots_per_randomization=64, num_randomizations=128, broadcast_obs_and_params=False, trex=None, quantum_program=None, *, noise_maps=None, noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Crea un elemento QuantumProgram con mitigazione PEA da eseguire tramite Executor.

Crea un elemento per un QuantumProgram, che può essere eseguito tramite Executor ed è mitigato secondo il metodo PEA (amplifica il rumore scalando il rumore di Pauli iniettato ed estrapola fino al punto di rumore zero). Se viene quantum_program specificato un, il nuovo elemento verrà aggiunto al programma esistente; in caso contrario, verrà creato un nuovo programma contenente solo l'elemento appena creato. Se è broadcast_obs_and_params True, gli osservabili e i parametri verranno trasmessi utilizzando le regole di trasmissione di Samplomatic, per consentire di associare alcuni dei parametri ad alcuni degli osservabili. In caso contrario, ogni parametro verrà eseguito per ciascun osservabile (prodotto esterno dei parametri e degli osservabili). Si noti che la post-elaborazione di un prodotto esterno è solitamente più veloce.

Parametri

  • circuit (QuantumCircuit) – Il circuito quantistico.

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – Le grandezze osservabili per calcolare i loro valori attesi.

  • parameters (ndarray | None) – I parametri di un circuito parametrico.

  • custom_boxing_options (dict | None) – Le opzioni di impacchettamento personalizzate che verranno utilizzate dalla funzione generate_boxing_pass_manager() .

  • shots_per_randomization (int) – Il numero di misurazioni per ogni randomizzazione.

  • num_randomizations (int) – Il numero di randomizzazioni.

  • broadcast_obs_and_params (bool) – Se trasmettere gli osservabili e i parametri.

  • trex (TREX | None) – Un'istanza di mitigazione TREX che verrà utilizzata per mitigare gli errori di lettura.

  • quantum_program (QuantumProgram | None) – Il programma quantistico per cui aggiungere un elemento. Se il valore è None, verrà creato un nuovo programma.

  • noise_maps (dict[str, PauliLindbladMap] | None) – Una mappatura tra il riferimento al livello e un modello di rumore da utilizzare per l'amplificazione del rumore. Il dizionario potrebbe contenere livelli non presenti nel circuito specificato, ma deve contenere tutti i livelli sottoposti a misure di mitigazione. Si presume che i livelli univoci utilizzati per l'apprendimento del rumore siano stati estratti utilizzando il metodo find_unique_layers con le stesse opzioni di "boxing" personalizzate.

  • noise_factors (Sequence[float |int]) – I fattori di rumore da utilizzare per amplificare il rumore.

  • extrapolator (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', 'custom']] | None) –

    Il modello o i modelli di estrapolazione che si prevede di utilizzare nella post-elaborazione. Utilizzato in fase di preparazione per verificare che siano presenti fattori di rumore sufficienti a garantire un adattamento valido utilizzando questi estrapolatori. In tal caso None, non verrà effettuata alcuna convalida. Modelli supportati (ognuno dei quali soddisfa la funzione indicata del fattore di rumore x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7): un polinomio di grado k
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (tassi vincolati al decadimento)
    • "fallback": nessuna corrispondenza; il valore misurato al fattore di rumore più basso
  • extrapolated_noise_factors (list[float] | None) – Si prevede di utilizzare i fattori di rumore per valutare l'adattamento dei modelli in fase di post-elaborazione. Utilizzato per salvare i dati e facilitarne la successiva elaborazione. Può essere sovrascritto in fase di post-elaborazione.

Risultati

Un elemento con QuantumProgram PEA mitigato che può essere eseguito tramite Executor.

Tipo di restituzione

QuantumProgram

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