Especificar opções do Sampler
O código desta página foi desenvolvido com base nos seguintes requisitos. Recomendamos usar essas versões ou versões mais recentes.
qiskit[all]~=2.5.0 qiskit-ibm-runtime~=0.47.0
Você pode usar as opções para personalizar a primitiva Sampler. Esta seção aborda como definir as opções primárias d Qiskit Runtime. Embora a interface do método run() das primitivas seja comum a todas as implementações, suas opções não o são. Consulte as referências da API correspondentes para obter informações sobre as opções qiskit.primitives.BackendSamplerV2 qiskit_aer.primitives.SamplerV2 e.
Definir opções do Sampler
Você pode definir as opções ao inicializar o Sampler, após a inicialização do Sampler, ou pode atualizar as opções depois que o Sampler tiver sido inicializado. Para obter instruções sobre como usar essas técnicas, consulte o tópico “Introdução às opções ”.
Além disso, você pode definir o shots valor no run() método, conforme descrito na seção a seguir.
Método Run()
Os únicos valores que você run() pode passar são aqueles definidos na interface. Ou seja, shots. Isso substitui qualquer valor definido para default_shots na execução atual.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9bjiq3v6alc73ct5690', 'sampler')>
Casos especiais
Tentativas
O SamplerV2.run método aceita dois argumentos: uma lista de PUBs, cada um dos quais pode especificar um valor específico do PUB para o número de fotos, e um argumento de palavra-chave para o número de fotos. Esses valores de amostragem fazem parte da interface de execução do Sampler e são independentes das opções do Runtime Sampler. Eles têm precedência sobre quaisquer valores especificados como opções, a fim de estar em conformidade com a abstração do Sampler.
No entanto, se não shots for especificado por nenhuma opção PUB nem no argumento de palavra-chave run (ou se todos forem None ), então é utilizado o valor de shots das opções, mais especificamente default_shots.
Em resumo, esta é a ordem de precedência para especificar shots no Sampler, para qualquer PUB específico:
- Se o parâmetro
PUBespecificar o número de fotos, use esse valor. - Se o argumento
shotsda palavra-chave for especificado emrun, use esse valor. - Se
twirlingestiver ativado (True por padrão), então é utilizado o produto denum_randomizationseshots_per_randomization, conforme especificado nastwirlingopções. - Se
sampler.options.default_shotsfor especificado, use esse valor.
Assim, se forem especificadas jogadas em todos os locais possíveis, será utilizada aquela com maior prioridade (as jogadas especificadas no PUB).
Embora as doses especificadas no PUB e e em run tenham maior prioridade, a tarefa falha se twirling estiver ativado e o produto de num_randomizations e shots_per_randomization for menor que o shots valor de. num_randomizationsNesse cenário, SamplerV2 não é possível distribuir as tomadas entre os especificados.
Exemplo:
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})
# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000
# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)Output:
<RuntimeJobV2('d9bjirnu62qs738pbieg', 'sampler')>
Opções disponíveis
A tabela a seguir apresenta as opções da versão mais recente do qiskit-ibm-runtime. Para ver versões anteriores das opções, acesse a qiskit-ibm-runtime referência da API e selecione uma versão anterior.
O número total de disparos a serem utilizados por circuito por configuração.
Opções : Número inteiro >= 0
Padrão : Nenhum
Controle as configurações de mitigação de erros de desacoplamento dinâmico.
dynamical_decouplingDocumentação da APIOpções :
True,FalsePadrão :
FalseOpções :
middle,edgesPadrão :
middleOpções:
asap,alapPadrão:alapOpções:
XX,XpXm,XY4Padrão:XXOpções:
True,FalsePadrão:False
environmentDocumentação da APILista de tags.
Opções : Nenhuma
Padrão : Nenhum
Opções : DEBUG, INFO, WARNING, ERROR, CRITICAL
Padrão : AVISO
Opções :
True,FalsePadrão :
False
Se os qubits devem ser reinicializados para o estado fundamental a cada disparo.
Opções :
True,FalsePadrão :
TrueO intervalo entre uma medição e o circuito quântico subsequente.
Opções : Valor na faixa fornecida por
backend.rep_delay_rangePadrão : Definido por
backend.default_rep_delayOpções :
classified,kerneled,avg_kerneledPadrão :
classified
Limita o tempo de execução de uma tarefa, em segundos. Consulte o guia sobre o tempo máximo de execução para obter mais detalhes.
Opções : Número inteiro de segundos no intervalo [de] 1 a 10.800
Padrão : 10800 (3 horas)
Opções a serem passadas ao simular um backend
Opções : Lista de nomes de portas básicas para as quais se deve realizar o desenrolamento
Padrão : O conjunto de todas as portas básicas suportadas pelo simulador Qiskit Aer
Opções : Lista de interações direcionadas entre dois qubits
Padrão : Nenhum, o que implica a ausência de restrições de conectividade (conectividade total).
Opções : Qiskit Aer NoiseModel ou sua representação
Padrão : Nenhum
Opções : Inteiro
Padrão : Nenhum
Opções de rotação
Opções : Verdadeiro, Falso
Padrão : Falso
Opções : Verdadeiro, Falso
Padrão : Falso
Opções :
auto, Número inteiro >= 1Padrão :
autoOpções :
auto, Número inteiro >= 1Padrão :
autoOpções :
active,active-circuit,active-accum,allPadrão :
active-accum
Opções experimentais, quando disponíveis.
Compatibilidade de recurso
Certas funcionalidades de tempo de execução não podem ser utilizadas em conjunto em um único trabalho. Clique na guia correspondente para ver uma lista de recursos incompatíveis com o recurso selecionado:
Incompatível com:
- Desacoplamento dinâmico
Outras observações:
- A rotação de portas pode ser aplicada a circuitos dinâmicos, mas apenas a portas que não estejam dentro de blocos condicionais. A rotação da medição só pode ser aplicada a medições em terminais.
- Compatível com portas fracionárias ao usar o
qiskit-ibm-runtimev0.42.0ou versões posteriores.
Incompatível com:
- Circuitos dinâmicos
Incompatível com:
- Giro do portão
Compatível com circuitos dinâmicos ao usar o
qiskit-ibm-runtimev0.42.0 ou versões posteriores.Incompatível com:
- Portas fracionárias
- Alongamentos
Outras observações:
- A rotação de portas pode ser aplicada a circuitos dinâmicos, mas apenas a portas que não estejam dentro de blocos condicionais.
- A rotação da medição só pode ser aplicada a medições em terminais.
- A manipulação das medidas é incompatível com a
storeinstrução. - Não funciona com entanglers que não sejam Clifford.
Próximas etapas
- Consulte o guia “Introdução às opções ”.
- Veja mais detalhes sobre os
SamplerV2métodos na referência da API do Sampler. - Decida em que modo de execução deseja executar sua tarefa.
- Saiba mais sobre o gerenciamento de ruídos com o Sampler.