PEA
class PEA
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)
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 °iporzione dei dati initem_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_resultha alcuna chiave'_meas'. - ValueError – Se il numero di assi non
item_result['_meas']è valido. - ValueError – Se e
param_shapeobservables.shapenon possono essere trasmessi l'uno contro l'altro.
Tipo di restituzione
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)
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ù bassocustom: La funzione di estrapolazione personalizzata specificata nel parametrocustom_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 °iporzione dei dati initem_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 funzionescipy.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 alpunti 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_resultha alcuna chiave'_meas'. - ValueError – Se il numero di assi non
item_result['_meas']è valido. - ValueError – Se e
param_shapeobservables.shapenon 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)
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
Nonecaso 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
find_unique_layers
find_unique_layers(circuit, custom_boxing_options=None)
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
postprocess
postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)
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ù bassocustom: La funzione di estrapolazione personalizzata specificata nel parametrocustom_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 funzionescipy.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 alpunti 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_shapeobservables.shapenon 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)
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_layerscon 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 rumorex):"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