Riferimento all'API di mitigazione degli errori della rete Tensor di Algorithmiq
Qiskit Functions — strumenti preconfigurati realizzati da organizzazioni partner — astraggono alcune parti del flusso di lavoro dello sviluppo software per semplificare e accelerare l'individuazione di algoritmi su larga scala e lo sviluppo di applicazioni. Clicca qui per visualizzare la guida relativa a questa funzione di Qiskit.
Guida alle funzioni Algorithmiq TEM Qiskit
Input
Attualmente TEM presenta le seguenti limitazioni:
- I circuiti parametrizzati non sono supportati. Se viene specificata la precisione, l'argomento
None"parameters" deve essere impostato su. Questa limitazione verrà eliminata nelle versioni future. - Sono supportati solo i circuiti senza anelli. Questa limitazione verrà eliminata nelle versioni future.
- I gate non unitari, come i gate di reset, di misurazione e tutte le forme di controllo del flusso, non sono supportati. Il supporto per il ripristino verrà aggiunto nelle prossime versioni.
Parametri
pubs
Tipo: Iterable[EstimatorPubLike]
Un iterabile di oggetti simili a quelli di PUB (blocchi unificati primitivi), come le tuple (circuit, observables) o (circuit, observables, parameters, precision). Per ulteriori informazioni, consultare la panoramica sui PUB. Se viene superato un circuito non ISA, verrà transpilato con impostazioni ottimali. Se un circuito ISA viene eseguito, non verrà transpilato; in questo caso, l'osservabile deve essere definito sull'intera QPU.
- Obbligatorio: sì
- Esempio:
(circuit, observables)
backend_name
Tipo: str
Valore predefinito: Least busy backend
Nome del backend su cui eseguire la query
- Obbligatorio: No
- Esempio:
"ibm_fez"
Opzioni
Tipo: dict
I parametri di input per questa funzione sono specificati sotto forma di dizionario annidato. Consulta l 'elenco completo delle opzioni e i relativi valori predefiniti.
- Obbligatorio: No
- Esempio:
{"max_bond_dimension": 100}
Un elenco contenente le opzioni avanzate del TEM. Il dizionario può contenere le chiavi elencate di seguito. Se una delle opzioni non viene specificata, verrà utilizzato il valore predefinito indicato nell'elenco. I valori predefiniti sono adeguati per un utilizzo standard di TEM.
Elenco opzioni
tem_max_bond_dimension
Tipo: int
Valore predefinito: 500
La dimensione massima dei legami da utilizzare per le reti tensoriali.
tem_compression_cutoff
Tipo: float
Valore predefinito: 1e-16
Il valore di soglia da utilizzare per le reti tensoriali.
compute_shadows_bias_from_observable
Tipo: bool
Valore predefinito: False
Un flag booleano che indica se la correzione per il protocollo di misurazione delle ombre classiche debba essere adattata all'osservabile " PUB " oppure no. Se il valore è False, verrà utilizzato il protocollo delle ombre classico (probabilità uguale di misurare Z, X, Y).
shadows_bias
Tipo: np.ndarray
Valore predefinito: np.array([1 / 3, 1 / 3, 1 / 3])
Il bias da utilizzare per il protocollo di misurazione delle ombre classiche randomizzate, ovvero una matrice di tipo 1d o 2d di dimensione 3 o di forma (num_qubits, 3) rispettivamente. L'ordine è ZXY.
max_execution_time
Tipo: int or None
Valore predefinito: None
Il tempo massimo di esecuzione sulla QPU, espresso in secondi. Se il tempo di esecuzione supera tale valore, il processo verrà annullato. In tal caso None, verrà applicato il limite predefinito stabilito dal servizio Compute di IBM Quantum.
num_randomizations
Tipo: int
Valore predefinito: 32
Il numero di randomizzazioni da utilizzare per l'apprendimento del rumore e il gate twirling.
max_layers_to_learn
Tipo: int
Valore predefinito: True
Il numero massimo di livelli distinti da apprendere.
mitigate_readout_error
Tipo: bool
Valore predefinito: True
Un flag booleano che indica se applicare o meno la mitigazione degli errori di lettura.
num_readout_calibration_shots
Tipo: int
Valore predefinito: 10000
Il numero di campioni da utilizzare per ridurre l'errore di lettura.
default_precision
Tipo: float
Valore predefinito: 0.02
La precisione predefinita da utilizzare per i PUB per i quali non è specificata alcuna precisione.
seed
Tipo: int or None
Valore predefinito: None
Imposta il seme del generatore di numeri casuali per garantire la riproducibilità. In tal caso None, non impostare il seme.
shots_per_randomization
Tipo: int
Valore predefinito: 128
Il numero totale di tentativi da utilizzare per ogni ciclo di apprendimento casuale.
layer_pair_depths
Tipo: list[int]
Valore predefinito: [0, 1, 2, 4, 16, 32]
Il numero di livelli del circuito (misurato in numero di coppie) da utilizzare negli esperimenti di apprendimento.
layer_noise_model
Tipo: NoiseLearnerResult, Sequence[LayerError], or None
Valore predefinito: None
Il modello di apprendimento del rumore precalcolato derivante da un'esecuzione precedente.
private
Tipo: bool
Valore predefinito: False
Se i lavori della QPU debbano essere privati. Impostando questo valore su True si impedirà il download successivo dei dati dell'esperimento; questa opzione è consigliata per i lavori riservati.
tem_enforce_linear_circuit
Tipo: bool
Valore predefinito: False
Se imporre che il circuito abbia una topologia lineare.
Precisione
È possibile richiedere la precisione dei risultati in tre modi. È possibile specificare la precisione nell' PUB; tale impostazione verrà applicata solo a quell' PUB. In alternativa, è possibile default_precision specificare un nelle opzioni come indicato sopra. Infine, per un utilizzo avanzato, è possibile specificare il numero esatto di scatti per ogni " PUB " tramite le opzioni default_shots, e tale impostazione avrà la precedenza su qualsiasi altra opzione relativa alla precisione.
Se viene passato un valore default_precision o un valore per PUB, il numero di prove viene stimato in modo da ottenere la precisione desiderata. Ciò avviene in base ai parametri della QPU e ai tassi di errore selezionati, come segue:
- Calcolo dell'errore per gate a più livelli (EPLG), che quantifica il rumore introdotto dagli strati di gate a due qubit. Se sono disponibili proprietà del backend, estrae il valore di precisione corrispondente; in caso contrario, utilizza un valore predefinito.
- Contare il numero di porte a due qubit presenti nel circuito, poiché sono solitamente le principali responsabili del rumore.
- Calcolo di un prefattore di rumore basato sul numero di porte a due qubit e sull'EPLG.
- Utilizzando la precisione richiesta, calcola il numero di misurazioni necessarie moltiplicando il valore per il prefattore di rumore e l'inverso del quadrato della precisione.
Questo approccio garantisce che il numero di cicli sia sufficiente per ottenere la precisione desiderata, tenendo conto sia della struttura del circuito che delle caratteristiche di rumore del backend.
Output
Un Qiskit PrimitiveResults contenente il risultato corretto con il metodo TEM. Il risultato per ogni PUB viene restituito come un oggetto PubResult contenente i seguenti campi:
dati
Tipo: Databin
Un oggetto Qiskit DataBin contenente l'osservabile corretto con il metodo TEM e il suo errore standard. L' DataBin e presenta i seguenti campi:
evs: Il valore osservabile corretto mediante TEM.stds: L'errore standard dell'osservabile corretto per il TEM.
metadati
Tipo: dict
Un dizionario contenente ulteriori risultati. Il dizionario contiene le seguenti voci:
"evs_non_mitigated": Il valore osservabile senza mitigazione dell'errore."stds_non_mitigated": L'errore standard del risultato senza mitigazione dell'errore."evs_mitigated_no_readout_mitigation": Il valore osservabile con mitigazione dell'errore, ma senza mitigazione dell'errore di lettura."stds_mitigated_no_readout_mitigation": L'errore standard del risultato con mitigazione dell'errore, ma senza mitigazione dell'errore di lettura."evs_non_mitigated_with_readout_mitigation": Il valore osservabile senza mitigazione degli errori, ma con mitigazione degli errori di lettura."stds_non_mitigated_with_readout_mitigation": L'errore standard del risultato senza mitigazione degli errori, ma con mitigazione degli errori di lettura."resource_usage": Un dizionario contenente le risorse temporali utilizzate dal TEM.