Pular para o conteúdo principal
Este projeto está em fase beta. Encontrou um bug? Abra uma issue no GitHub. Tem uma pergunta ou ideia? Pergunte no Discussions — adoraríamos receber seu feedback!
Como está a qualidade da tradução nesta página?

Introdução às opções

Você pode usar opções para personalizar as primitivas do IBM Quantum de acordo com suas necessidades.

Estrutura​

Ao chamar as primitivas, você pode passar opções usando uma classe de opções ou um dicionário. Opções usadas com frequência, como resilience_level, ficam no primeiro nível. Outras opções são agrupadas em categorias, como execution. Especifique as opções neste formato: options.option.sub-option.sub-sub-option = choice. Por exemplo: options.dynamical_decoupling.enable = True.

Valores padrão​

Se você não especificar um valor para uma opção, ela recebe um valor especial Unset e os valores padrão do servidor são utilizados. Assim, o valor padrão será o mesmo independentemente da versão do seu código.

As tabelas na seção "Resumo das classes de opções" em cada guia de "opções" das primitivas listam os valores padrão.

Definir opções​

As opções podem ser definidas antes de uma primitiva ser construída e passadas para ela como uma instância da classe de opções ou um dicionário. A primitiva faz uma cópia delas, o que significa que alterar o dicionário original ou a instância de opções não afeta as opções que a primitiva possui.

Além disso, você pode alterar as opções após a primitiva ser construída. Use o fluxo de trabalho que melhor se adapte à sua aplicação.

Notas sobre como especificar opções de primitivas
  • Você pode ver as opções disponíveis durante ou após a inicialização da primitiva.
  • Se você não especificar um valor para uma opção, ela recebe um valor especial Unset e os padrões do servidor são usados.
  • O atributo options é do tipo Python dataclass. Você pode usar o método embutido asdict para convertê-lo em um dicionário.

Classe options​

Ao criar uma instância da classe primitiva, você pode passar uma instância da classe options. Essas opções são então aplicadas quando você usa run() para realizar o cálculo. Especifique as opções neste formato: options.option.sub-option.sub-sub-option = choice. Por exemplo: options.dynamical_decoupling.enable = True.

Veja SamplerOptions ou EstimatorOptions para obter detalhes completos sobre a classe.

O exemplo a seguir usa a primitiva Estimator, mas a sintaxe para outras primitivas é semelhante.

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# from qiskit_ibm_runtime.options import EstimatorOptions

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
from qiskit_ibm_runtime.options_models import EstimatorOptions

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)

# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]

estimator = Estimator(mode=backend, options=options)

Dicionário​

Você pode especificar opções como um dicionário ao inicializar uma primitiva.

O exemplo a seguir usa a primitiva Estimator, mas a sintaxe para outras primitivas é semelhante.

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)

Atualizar opções após a inicialização​

Você pode especificar as opções neste formato: _primitive_.options.option.sub-option.sub-sub-option = choice para aproveitar o preenchimento automático, ou usar o método update() para fazer atualizações em massa.

A classe de opções da primitiva (EstimatorOptions ou SamplerOptions) não precisa ser instanciada se você estiver definindo opções após inicializar a primitiva.

O exemplo a seguir usa a primitiva Estimator, mas a sintaxe para outras primitivas é semelhante.

from qiskit_ibm_runtime import QiskitRuntimeService

# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator

# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

estimator = Estimator(mode=backend)

# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)

Próximos passos​

Recomendações