Skip to main content
IBM Quantum Platform

PEC (qiskit_mitigation.pec)

Pec

class PEC

GitHub

Basi: MitigationTask

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

La classe consente di preparare un modello " QuantumProgram " con circuito mitigato mediante il metodo PEC, che può essere eseguito su hardware utilizzando 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 rilevanti necessarie per la post-elaborazione vengono salvate internamente:

pec = PEC()
program = pec.prepare(circuit=circuit,
                      observables=observables,
                      parameters=parameter_valuesת
                      noise_maps=learned_noise)
job = executor.run(program)
results = job.result()
mitigated_result = pec.postprocess(results)

Per calcolare i valori attesi del risultato di un lavoro caricato, è possibile creare un’attività PEC 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 di un risultato caricato:

pec = PEC()
program = pec.prepare(circuit=circuit,
                      observables=observables,
                      parameters=parameter_valuesת
                      noise_maps=learned_noise)
job_id = executor.run(program).job_id

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

Creare un'istanza di un'attività PEC.

Metodi

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

Restituisce i livelli "boxed" univoci del circuito specificato, utilizzando le opzioni di "boxing" 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 nel circuito specificato.

Tipo di restituzione

elenco [ CircuitInstruction ]

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, scale_randomizations_by_gamma=True, noise_gain='auto', max_sampling_overhead=100)

GitHub

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

Crea un elemento per un QuantumProgram, che può essere eseguito tramite Executor e che è mitigato tramite PEC (inietta rumore inverso per annullare il rumore appreso). 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 calcolarne i valori attesi.
  • parameters (ndarray |BindingsArray | 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 corrispondenza tra il riferimento al livello e un modello di rumore da utilizzare per il metodo di mitigazione PEC. 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.
  • scale_randomizations_by_gamma (bool) – Se scalare automaticamente il numero di randomizzazioni in base a gamma**2.
  • noise_gain (float |Literal['auto']) – La percentuale di rumore da mantenere dopo la mitigazione. Un valore pari a 0 corrisponde alla rimozione completa del rumore appreso. Un valore pari a 1 corrisponde all'assenza di rimozione del rumore appreso. Un valore compreso tra e 0 1 corrisponde alla rimozione parziale del rumore appreso. Un valore superiore a uno corrisponde all'amplificazione del rumore appreso. Se "auto", il valore compreso nell'intervallo [0, 1] verrà scelto automaticamente dalla formula 1 - log(max_overhead) / log(gamma^2).
  • max_sampling_overhead (float | None) – Se scale_randomizations_by_gamma è True, limitare il rapporto moltiplicativo del numero di randomizzazioni.

Risultati

Un elemento con QuantumProgram mitigazione PEC che può essere eseguito tramite Executor.

Tipo di restituzione

QuantumProgram

postprocess

postprocess(results, measure_noise_data=None)

GitHub

Valori attesi di processo per un singolo risultato relativo a un elemento sottoposto a mitigazione PEC.

Parametri

  • results (QuantumProgramItemResult |QuantumProgramResult) – I risultati dell'esecuzione. Può trattarsi sia dell'intero oggetto dei risultati sia del risultato relativo alla voce "mitigazione del rischio" 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.
  • measure_noise_data (PauliLindbladMap |ndarray | None) – I dati relativi al rumore di misura appreso da utilizzare per la mitigazione del TREX. Se è specificato None e nel programma quantistico è presente un’attività di calibrazione, il rumore di misura verrà calcolato in base ai risultati dell’attività di calibrazione, a condizione che venga fornito l’intero oggetto dei risultati.

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 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 non observables.shape possono essere trasmessi l'uno contro l'altro, mentre broadcast_obs_and_params era stato impostato su durante True la preparazione dell'attività.

Tipo di restituzione

PubResult

compute_expectation_value_pec

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

GitHub

Valori attesi di processo per un singolo risultato relativo a un elemento sottoposto a mitigazione PEC.

Questa funzione può essere utilizzata per calcolare i valori attesi relativi al risultato di un singolo elemento sottoposto a mitigazione PEC 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.
  • gamma (float) – Il fattore gamma del modello di rumore appreso per il circuito eseguito.
  • 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 la chiave '_meas' .
  • ValueError – Se il numero di assi non item_result['_meas'] è valido.
  • ValueError – Se non item_result ha la chiave 'pauli_signs' .
  • ValueError – Se e param_shape observables.shape non possono essere trasmessi l'uno contro l'altro.

Tipo di restituzione

PubResult

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

Creare un'istanza PEC 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 PEC.

Tipo di restituzione

PEC

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