NoiseLearner
class NoiseLearner(mode=None, options=None)
Bases: object
Clase para ejecutar experimentos de aprendizaje de ruido.
La clase aprendiz de ruido permite caracterizar los procesos de ruido que afectan a las compuertas en uno o más circuitos de interés, basándose en el modelo de ruido de Pauli-Lindblad descrito en [1].
El método run() permite ejecutar un trabajo de búsqueda de ruido para una lista de circuitos. Una vez enviado el trabajo, las puertas se reúnen en capas independientes y, posteriormente, las capas resultantes se caracterizan individualmente.
La forma en que las compuertas se reúnen en capas depende del giro strategy especificado en la dirección options (véase NoiseLearnerOptions para más detalles). Obsérvese que todas las estrategias obedecen a barreras. Por ejemplo, si tienes tres capas de enredo ISA de interés, considera ponerlas en un circuito separadas por barreras que actúen sobre los qubits que deseas enroscar, y selecciona strategy="active-circuit".
El siguiente fragmento muestra un ejemplo en el que se utiliza el aprendiz de ruido para caracterizar las capas de dos circuitos 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)Parámetros
-
mode (BackendV2 | Session |Batch | None) –
El modo de ejecución utilizado para realizar la consulta primitiva. Puede ser:
- A
Backendsi está utilizando el modo trabajo. - A
Sessionsi está utilizando el modo de ejecución de sesión. - A
Batchsi está utilizando el modo de ejecución por lotes.
Consulte la documentación de Qiskit Runtime para obtener más información sobre los modos de ejecución.
- A
-
options (dict | NoiseLearnerOptions |EstimatorOptions | None) –
NoiseLearnerOptions. Alternativamente, seEstimatorOptionspuede proporcionar por comodidad, en cuyo caso las opciones del estimador se reformatean en opciones de aprendizaje de ruido y se ignoran todos los campos irrelevantes.
Referencias
- E. van den Berg, Z. Minev, A. Kandala, K. Temme, Probabilistic error cancellation with sparse Pauli-Lindblad models on noisy quantum processors, Nature Physics volumen 19, páginas 1116-1121 (2023). arXiv:2201.09866 [quant-ph]
Atributos
options
Las opciones en este aprendiz de ruido.
Métodos
backend
backend()
Devuelve el backend en el que se ejecutará la consulta primitiva.
Tipo de retorno
BackendV2
run
run(circuits)
Presentar una solicitud al programa de aprendices de ruido.
Esta función descompone la lista de circuitos dada en una lista de capas únicas, siguiendo la estrategia establecida por el campo twirling_strategy especificado en options (véase NoiseLearnerOptions para más detalles) y ordenándolas en función del número de veces que aparecen en los distintos circuitos. A continuación, ejecuta el experimento de aprendizaje de ruido para tantas capas como se especifique en el campo max_layers_to_learn de options, dando prioridad a las capas que aparecen con más frecuencia.
Parámetros
circuits (Iterable[QuantumCircuit | EstimatorPubLike]) – Una secuencia de circuitos sobre los que ejecutar el programa de aprendizaje de ruido. Como alternativa, se pueden especificar objetos similares a «pub» del estimador (bloque unificado primitivo), como tuplas (circuit, observables) o (circuit, observables, parameter_values). En este caso, los objetos de tipo «pub» se convierten en una lista de circuitos, y se ignoran todos los demás campos (como observables y parameter_values).
Devuelve
El trabajo presentado.
Tipo de retorno