Skip to main content
IBM Quantum Platform

GateFolding

class GateFolding

GitHub

Basi: MitigationTask

Calcola i valori attesi delle grandezze osservabili utilizzando l'estrapolazione a rumore zero (ZNE) con il metodo di mitigazione del gate folding.

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

gf_task = GateFolding()
program = gf_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 = gf_task.postprocess(results)

Per calcolare i valori attesi del risultato di un lavoro caricato, è possibile creare un’attività “ GateFolding ” a partire dai risultati del lavoro, con 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:

gf_task = GateFolding()
program = gf_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()
gf_task = load_tasks_from_result(results)[0]
mitigated_result = gf_task.postprocess(results)

Creare un'istanza di un'attività " GateFolding ".


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 esima 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 in contemporanea.

Tipo di restituzione

PubResult

compute_expectation_value_gate_folding

static compute_expectation_value_gate_folding(item_results, 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 sottoposto a mitigazione tramite gate_folding senza creare una nuova istanza della classe.

Parametri

  • item_results (list[QuantumProgramItemResult]) – Elenco dei risultati relativi alle voci: uno per ciascun fattore di rumore.

  • 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 limitati 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 ciascuno dei item_results.

  • 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 separati. p_0 è un array contenente i valori iniziali ipotizzati per i parametri, mentre bounds indica gli intervalli di definizione 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 in corrispondenza del punto di estrapolazione a rumore zero.

Tipo di restituzione

Un oggetto di tipo " PubResult " che contiene i seguenti campi

Aumenti

  • ValueError – Se uno dei non item_results ha una chiave '_meas' .
  • ValueError – Se uno dei dati item_results``'_meas' presenta un numero di assi non valido.
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi in contemporanea.
  • 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 di GateFolding a partire da un dizionario "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 di GateFolding.

Tipo di restituzione

GateFolding

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 di una singola attività “ GateFolding ”.

Parametri

  • results (list[QuantumProgramItemResult] | QuantumProgramResult) – I risultati dell'esecuzione. Può trattarsi sia dell'intero oggetto dei risultati sia delle voci di questa attività per le quali è stata mitigata la "gate folding". 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 limitati 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 separati. p_0 è un array contenente i valori iniziali ipotizzati per i parametri, mentre bounds indica gli intervalli di definizione 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 in corrispondenza del punto di estrapolazione a rumore zero.

Tipo di restituzione

Un oggetto di tipo " PubResult " che contiene i seguenti campi

Aumenti

  • ValueError – Se uno dei risultati dell'elemento dell'attività non ha una chiave '_meas' .
  • ValueError – Se uno dei dati '_meas' relativi ai risultati degli elementi presenta un numero di assi non valido.
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi in contemporanea.

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, *, folding_method='random', noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Crea un elemento QuantumProgram con mitigazione “ GateFolding ” da eseguire tramite Executor.

Crea un elemento per un QuantumProgram, che può essere eseguito tramite Executor ed è sottoposto a mitigazione “ GateFolding ” (amplifica il rumore utilizzando tecniche di “gate folding” 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.

  • folding_method (Literal['random', 'front', 'back']) –

    La tecnica da utilizzare per combinare le porte a 2 qubit al fine di amplificare il rumore. Se il fattore di rumore richiede l'amplificazione solo di un sottoinsieme di porte, queste vengono selezionate secondo il seguente metodo:

    • "random" (impostazione predefinita): i cancelli vengono scelti in modo casuale.
    • "front": i gate vengono selezionati dalla parte anteriore del circuito DAG ordinato topologicamente.
    • "back": i gate vengono selezionati dalla parte posteriore del circuito DAG ordinato topologicamente.
  • 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 limitati 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 mitigazione “ GateFolding ” 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.