Pular para o conteúdo principal

Configurar gerenciamento de ruído com o Estimator

Versões dos pacotes

O código desta página foi desenvolvido usando os seguintes requisitos. Recomendamos usar essas versões ou versões mais recentes.

qiskit-ibm-runtime~=0.46.1

Existem várias maneiras de gerenciar o ruído, normalmente usando diversas técnicas de mitigação e supressão de erros para evitar erros antes que eles ocorram. Essas técnicas geralmente causam sobrecarga de pré-processamento. Portanto, é importante alcançar um equilíbrio entre aperfeiçoar seus resultados e garantir que seu job seja concluído em um tempo razoável.

O Estimator suporta as seguintes técnicas de gerenciamento de ruído. Veja Técnicas de mitigação e supressão de erros para uma explicação de cada uma. Veja a seção Configurações personalizadas de erros para instruções sobre como habilitar essas técnicas.

Nível de resiliência

O resilience_level especifica quanto de resiliência construir contra erros. Níveis mais altos geram resultados mais precisos, ao custo de tempos de processamento mais longos. Os níveis de resiliência podem ser usados para configurar o trade-off custo/precisão ao aplicar gerenciamento de ruído à sua consulta de primitiva. O gerenciamento de ruído reduz erros (viés) nos resultados processando as saídas de uma coleção, ou conjunto, de circuitos relacionados. O grau de redução de erros depende do método aplicado. O nível de resiliência abstrai a escolha detalhada do método de gerenciamento de ruído para permitir que os usuários raciocinem sobre o trade-off custo/precisão que é apropriado para sua aplicação.

Dado isso, cada nível corresponde a um método ou métodos com nível crescente de sobrecarga de amostragem quântica para permitir que você experimente diferentes trade-offs de tempo-precisão. A tabela a seguir mostra quais níveis e métodos correspondentes estão disponíveis para cada uma das primitivas.

Nível de ResiliênciaDescriçãoTécnica
0Sem mitigaçãoNenhuma
1 [Padrão]Custos mínimos de mitigação: Mitiga erros associados a erros de leituraTwirling de medição Twirled Readout Error eXtinction (TREX)
2Custos médios de mitigação. Normalmente reduz o viés nos estimadores, mas não é garantido que seja sem viés.Nível 1 + Extrapolação de Ruído Zero (ZNE) e twirling de gate
Atenção

Os níveis de resiliência estão atualmente em beta, portanto a sobrecarga de amostragem e a qualidade da solução variarão de circuito para circuito. Novos recursos, opções avançadas e ferramentas de gerenciamento serão lançados de forma contínua. Métodos específicos de gerenciamento de ruído não têm garantia de serem aplicados em cada nível de resiliência.

Configurar o Estimator com níveis de resiliência

Você pode usar os níveis de resiliência para especificar técnicas de gerenciamento de ruído, ou pode definir técnicas personalizadas individualmente conforme descrito em Configurações personalizadas de erros.

Importante

Quaisquer opções que você especifique manualmente além do nível de resiliência são aplicadas em adição ao conjunto base de opções definidas pelo nível de resiliência. Portanto, em princípio, você poderia definir o nível de resiliência como 1, mas então desativar a mitigação de medição, embora isso não seja aconselhável.

Por exemplo, definir o nível de resiliência como 0 desativa zne_mitigation, mas estimator.options.resilience.zne_mitigation = True substitui esse valor.

Exemplo

O código a seguir habilita ZNE, TREX e twirling de gate definindo resilience_level 2.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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 primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})

Configurações personalizadas de gerenciamento de ruído

Você pode ativar e desativar métodos individuais de gerenciamento de ruído usando as opções do Estimator.

nota

Nem todas as opções funcionam juntas em todos os tipos de circuitos. Veja a tabela de compatibilidade de recursos para detalhes.

Exemplo

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(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True

print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True

Desativar toda a mitigação de erros

Para instruções sobre como desativar toda a mitigação de erros, veja a seção Desativar toda a supressão e mitigação de erros no guia de opções do Estimator.

Próximos passos

Recomendações