Skip to main content
IBM Quantum Platform

NoiseLearner

class NoiseLearner(mode=None, options=None)

GitHub

Bases: object

Classe para execução de experimentos de aprendizado de ruído.

A classe de aprendiz de ruído permite caracterizar os processos de ruído que afetam as portas em um ou mais circuitos de interesse, com base no modelo de ruído Pauli-Lindblad descrito em [1].

O método run() permite executar um trabalho de aprendiz de ruído para uma lista de circuitos. Depois que o trabalho é enviado, as portas são coletadas em camadas independentes e, posteriormente, as camadas resultantes são caracterizadas individualmente.

A maneira pela qual as portas são coletadas em camadas depende do giro strategy especificado no site options (consulte NoiseLearnerOptions para obter mais detalhes). Observe que todas as estratégias obedecem a barreiras. Por exemplo, se você tiver três camadas de entrelaçamento ISA de interesse, considere colocá-las em um circuito separado por barreiras que atuam nos qubits que você deseja girar e selecione strategy="active-circuit".

O trecho a seguir mostra um exemplo em que o aprendiz de ruído é usado para caracterizar as camadas de dois 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) –

    O modo de execução usado para fazer a consulta primitiva. Ele pode ser:

    • A Backend se você estiver usando o modo de trabalho.
    • A Session se você estiver usando o modo de execução de sessão.
    • A Batch se você estiver usando o modo de execução em lote.

    Consulte a documentação do site Qiskit Runtime para obter mais informações sobre os modos de execução.

  • options (dict | NoiseLearnerOptions |EstimatorOptions | None) – NoiseLearnerOptions. Alternativamente, EstimatorOptions pode ser fornecido por conveniência, caso em que as opções do estimador são reformatadas em opções do aprendizado de ruído e todos os campos irrelevantes são ignorados.

Referências

  1. 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]

Atributos

options

As opções nesse aprendiz de ruído.


Métodos

backend

backend()

GitHub

Retorna o backend no qual a consulta primitiva será executada.

Tipo de retorno

BackendV2

run

run(circuits)

GitHub

Envie uma solicitação ao programa de aprendizes de ruído.

Essa função divide a lista de circuitos fornecida em uma lista de camadas exclusivas, seguindo a estratégia definida pelo campo twirling_strategy especificado em options (consulte NoiseLearnerOptions para obter mais detalhes) e classificando-as com base no número de vezes que elas ocorrem nos vários circuitos. Em seguida, ele executa o experimento de aprendizado de ruído para o número de camadas especificado pelo campo max_layers_to_learn no site options, priorizando as camadas que ocorrem com mais frequência.

Parâmetros

circuits (Iterable[QuantumCircuit | EstimatorPubLike]) – Um iterável de circuitos nos quais o programa de aprendizado de ruído será executado. Como alternativa, é possível especificar objetos do tipo “pub” do estimador (bloco unificado primitivo), como tuplas (circuit, observables) ou (circuit, observables, parameter_values). Nesse caso, os objetos do tipo “pub” são convertidos em uma lista de circuitos, e todos os outros campos (como observables e parameter_values) são ignorados.

Retorna

O trabalho enviado.

Tipo de retorno

RuntimeJobV2

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.