NoiseLearner
class NoiseLearner(mode=None, options=None)
Basi: object
Classe per l'esecuzione di esperimenti di apprendimento del rumore.
La classe noise learner consente di caratterizzare i processi di rumore che interessano le porte di uno o più circuiti di interesse, sulla base del modello di rumore di Pauli-Lindblad descritto al punto [1].
Il metodo run() consente di eseguire un lavoro di apprendimento del rumore per un elenco di circuiti. Dopo l'invio del lavoro, le porte vengono raccolte in strati indipendenti e successivamente gli strati risultanti vengono caratterizzati individualmente.
Il modo in cui le porte vengono raccolte in strati dipende dal twirling strategy specificato nel dato options (vedere NoiseLearnerOptions per maggiori dettagli). Si noti che tutte le strategie rispettano le barriere. Ad esempio, se si dispone di tre strati di entangling ISA di interesse, si può pensare di inserirli in un circuito separato da barriere che agiscono sui qubit che si desidera far ruotare, e selezionare strategy="active-circuit".
Il seguente snippet mostra un esempio in cui il noise learner viene utilizzato per caratterizzare i livelli di due circuiti GHZ.
from qiskit.circuit import QuantumCircuit
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.noise_learner import NoiseLearner
from qiskit_ibm_runtime.options import NoiseLearnerOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# a circuit returning a two-qubit GHZ state
ghz = QuantumCircuit(2)
ghz.h(0)
ghz.cx(0, 1)
# another circuit returning a two-qubit GHZ state
another_ghz = QuantumCircuit(3)
another_ghz.h(0)
another_ghz.cx(0, 1)
another_ghz.cx(1, 2)
another_ghz.cx(0, 1)
pm = generate_preset_pass_manager(backend=backend, optimization_level=1)
circuits = pm.run([ghz, another_ghz])
# set the options
options = NoiseLearnerOptions()
options.layer_pair_depths = [0, 1, 10]
# run the noise learner job
learner = NoiseLearner(backend, options)
job = learner.run(circuits)Parametri
-
mode (BackendV2 | Session |Batch | None) –
La modalità di esecuzione utilizzata per la query primitiva. Può essere:
- A
Backendse si utilizza la modalità lavoro. - A
Sessionse si utilizza la modalità di esecuzione della sessione. - A
Batchse si utilizza la modalità di esecuzione batch.
Per ulteriori informazioni sulle modalità di esecuzione, consultare la documentazione Qiskit Runtime.
- A
-
options (dict | NoiseLearnerOptions |EstimatorOptions | None) –
NoiseLearnerOptions. In alternativa,EstimatorOptionspuò essere fornito per comodità, nel qual caso le opzioni dello stimatore vengono riformattate in opzioni di apprendimento del rumore e tutti i campi irrilevanti vengono ignorati.
Riferimenti
- E. van den Berg, Z. Minev, A. Kandala, K. Temme, Probabilistic error cancellation with sparse Pauli-Lindblad models on noisy quantum processors, Nature Physics volume 19, pagine 1116-1121 (2023). arXiv:2201.09866 [quant-ph]
Attributi
options
Le opzioni in questo rumore apprendono.
Metodi
backend
backend()
Restituisce il backend su cui verrà eseguita la query primitiva.
Tipo di restituzione
BackendV2
run
run(circuits)
Presentare una richiesta al programma di apprendimento del rumore.
Questa funzione scompone l'elenco dato di circuiti in un elenco di livelli unici, seguendo la strategia impostata dal campo twirling_strategy specificato in options (vedere NoiseLearnerOptions per maggiori dettagli) e ordinandoli in base al numero di volte in cui si presentano nei vari circuiti. Quindi, esegue l'esperimento di apprendimento del rumore per il numero di livelli specificato dal campo max_layers_to_learn nel sito options, dando priorità ai livelli che si presentano più frequentemente.
Parametri
circuits (Iterable[QuantumCircuit | EstimatorPubLike]) – Un iterabile di circuiti su cui eseguire il programma di apprendimento del rumore. In alternativa, è possibile specificare oggetti simili a "pub" (blocchi unificati primitivi), come le tuple (circuit, observables) o (circuit, observables, parameter_values). In questo caso, gli oggetti di tipo "pub" vengono convertiti in un elenco di circuiti, mentre tutti gli altri campi (come observables e parameter_values) vengono ignorati.
Risultati
Il lavoro presentato.
Tipo di restituzione