NoiseLearner
class NoiseLearner(mode=None, options=None)
Bases : object
Classe permettant d'exécuter des expériences d'apprentissage par le bruit.
La classe "noise learner" permet de caractériser les processus de bruit affectant les portes dans un ou plusieurs circuits d'intérêt, sur la base du modèle de bruit de Pauli-Lindblad décrit au point [1.]
La méthode run() permet d'exécuter un travail d'apprentissage du bruit pour une liste de circuits. Une fois le travail soumis, les portes sont regroupées en couches indépendantes, puis les couches résultantes sont caractérisées individuellement.
La manière dont les portes sont rassemblées en couches dépend du tourbillon strategy spécifié dans le site options (voir NoiseLearnerOptions pour plus de détails). Notez que toutes les stratégies obéissent à des barrières. Par exemple, si vous avez trois couches d'intrication ISA intéressantes, envisagez de les placer dans un circuit séparé par des barrières agissant sur les qubits que vous souhaitez faire tourner, et sélectionnez strategy="active-circuit".
L'extrait suivant montre un exemple où l'apprenant du bruit est utilisé pour caractériser les couches de deux circuits 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)Paramètres
-
mode (BackendV2 | Session |Batch | None) –
Le mode d'exécution utilisé pour effectuer la requête primitive. Les valeurs peuvent être les suivantes :
- A
Backendsi vous utilisez le mode travail. - A
Sessionsi vous utilisez le mode d'exécution par session. - A
Batchsi vous utilisez le mode d'exécution par lots.
Pour plus d'informations sur les modes d'exécution, reportez-vous à la documentation de Qiskit Runtime.
- A
-
options (dict | NoiseLearnerOptions |EstimatorOptions | None) –
NoiseLearnerOptions. IlEstimatorOptionsest également possible de fournir pour plus de commodité, auquel cas les options de l'estimateur sont reformatées en options d'apprentissage du bruit et tous les champs non pertinents sont ignorés.
Références
- 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, pages 1116-1121 (2023). arXiv:2201.09866 [quant-ph]
Attributs
options
Les options dans ce bruit apprennent.
Méthodes
backend
backend()
Retourne le backend sur lequel la requête primitive sera exécutée.
Type de retour
BackendV2
run
run(circuits)
Soumettre une demande au programme d'apprentissage du bruit.
Cette fonction décompose la liste de circuits donnée en une liste de couches uniques, en suivant la stratégie définie par le champ twirling_strategy spécifié dans options (voir NoiseLearnerOptions pour plus de détails) et en les triant en fonction du nombre de fois qu'elles apparaissent dans les différents circuits. Ensuite, il exécute l'expérience d'apprentissage du bruit pour autant de couches que spécifié par le champ max_layers_to_learn dans le site options, en donnant la priorité aux couches qui se produisent plus fréquemment.
Paramètres
circuits (Iterable[QuantumCircuit | EstimatorPubLike]) – Une collection de circuits sur lesquels exécuter le programme d'apprentissage du bruit. Il est également possible de spécifier des objets de type « pub » (bloc unifié primitif), tels que des tuples (circuit, observables) ou (circuit, observables, parameter_values). Dans ce cas, les objets de type « pub » sont convertis en une liste de circuits, et tous les autres champs (tels que observables et parameter_values) sont ignorés.
Retours
Le travail soumis.
Type de retour