NoiseLearner
class NoiseLearner(mode=None, options=None)
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
Backendse você estiver usando o modo de trabalho. - A
Sessionse você estiver usando o modo de execução de sessão. - A
Batchse 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.
- A
-
options (dict | NoiseLearnerOptions |EstimatorOptions | None) –
NoiseLearnerOptions. Alternativamente,EstimatorOptionspode 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
- 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()
Retorna o backend no qual a consulta primitiva será executada.
Tipo de retorno
BackendV2
run
run(circuits)
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