Skip to main content
IBM Quantum Platform

Introdução às opções

Você pode usar opções para personalizar os elementos básicos d Qiskit Runtime, de acordo com suas necessidades.


Estrutura

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


Padrões

Se você não especificar um valor para uma opção, ela receberá um valor especial de Unset e o valor padrão do servidor será usado. Portanto, o valor padrão será o mesmo, independentemente da versão do código.

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


Configurar opções

As opções podem ser definidas antes da construção de uma primitiva e passadas para ela como uma instância da classe de opções ou como um dicionário. A primitiva cria 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 pertencentes à primitiva.

Além disso, é possível alterar as opções após a construção da primitiva. Use o fluxo de trabalho mais adequado para a sua aplicação.

Notas sobre a especificação de opções 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, será atribuído a ela um valor especial de Unset e serão utilizados os valores padrão do servidor.
  • O options atributo é do dataclass tipo Python. Você pode usar o método integrado asdict para convertê-lo em um dicionário.

options classe

Ao criar uma instância da classe primitiva, você pode passar uma instância da options classe. Essas opções sã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.

Consulte SamplerOptions ou EstimatorOptions para obter todos os detalhes sobre a aula.

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

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit_ibm_runtime.options 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

É possível especificar opções na forma de um dicionário ao inicializar uma primitiva.

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

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as 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]},
        },
    },
)

Opções de atualização 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 update() método 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 as opções após a inicialização da primitiva.

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

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as 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óximas etapas

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