Configure o gerenciamento de ruído com o Estimator
O código desta página foi desenvolvido com base nos seguintes requisitos. Recomendamos usar essas versões ou versões mais recentes.
qiskit-ibm-runtime~=0.47.0
Existem várias maneiras de gerenciar ruídos, geralmente por meio do uso de diversas técnicas de mitigação e supressão de erros para evitar que estes ocorram. Essas técnicas geralmente acarretam uma sobrecarga no pré-processamento. Portanto, é importante encontrar um equilíbrio entre aperfeiçoar seus resultados e garantir que seu trabalho seja concluído em um prazo razoável.
O Estimator oferece suporte às seguintes técnicas de gerenciamento de ruído. Consulte “Técnicas de mitigação e supressão de erros” para obter uma explicação sobre cada uma delas. Consulte a seção “Configurações de erros personalizados” para obter instruções sobre como ativar essas técnicas.
Nível de resiliência
O resilience_level especifica o nível de resiliência a ser incorporado para
lidar com erros. Níveis mais altos geram resultados mais precisos, em detrimento de
tempos de processamento mais longos. Os níveis de resiliência podem ser usados para definir o
equilíbrio entre custo e precisão ao aplicar o gerenciamento de ruído à sua
consulta primitiva. O gerenciamento de ruído reduz os erros (viés) nos resultados ao processar
as saídas de um conjunto de circuitos relacionados. O
grau de redução do erro depende do método aplicado. O nível de resiliência
abstraí a escolha detalhada do método de gerenciamento de ruído para permitir
que os usuários avaliem o equilíbrio entre custo e precisão adequado à
sua aplicação.
Diante disso, cada nível corresponde a um ou mais métodos com um nível crescente de sobrecarga de amostragem quântica, permitindo que você experimente diferentes equilíbrios entre tempo e 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ência | Descrição | Técnica |
|---|---|---|
| 0 | Sem medidas de mitigação | Nenhum |
| 1 [Padrão] | Custos mínimos de mitigação: Mitigar erros associados a falhas na leitura | Medição de eXtinction de erro de leitura rotativa (TREX) |
| 2 | Custos médios de mitigação. Normalmente reduz o viés nos estimadores, mas não é garantido que tenha viés zero. | Nível 1 + Extrapolação de Ruído Zero (ZNE) e rotação de portas |
Os níveis de resiliência estão atualmente em fase beta, portanto, a sobrecarga de amostragem e a qualidade da solução variam de circuito para circuito. Novos recursos, opções avançadas e ferramentas de gerenciamento serão lançados progressivamente. Não há garantia de que métodos específicos de gestão de ruído sejam aplicados em cada nível de resiliência.
Configurar o Estimador com níveis de resiliência
Você pode usar os níveis de resiliência para definir técnicas de gerenciamento de ruído ou definir técnicas personalizadas individualmente, conforme descrito em Configurações personalizadas de erro.
Quaisquer opções que você especificar manualmente, além do nível de resiliência, são aplicadas em conjunto com o conjunto básico de opções definido pelo nível de resiliência. Portanto, em princípio, você poderia definir o nível de resiliência como 1, mas desativar a mitigação de medição, embora isso não seja recomendado.
Por exemplo, definir o nível de resiliência como 0 desativa a função zne_mitigation, mas estimator.options.resilience.zne_mitigation = True substitui esse valor.
Exemplo
O código a seguir habilita o ZNE, o TREX e a rotação de portas ao
definir resilience_level 2.
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 Estimador.
Nem todas as opções são compatíveis entre si em todos os tipos de circuitos. Consulte a tabela de compatibilidade de recursos para obter mais 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}"
)Output:
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
Desative todas as medidas de mitigação de erros
Para obter instruções sobre como desativar todas as medidas de mitigação de erros, consulte a seção “Desativar todas as medidas de supressão e mitigação de erros ” no guia de opções do Estimator.
Próximas etapas
- Analise um exemplo que utiliza a mitigação de erros na lição sobre a função de custo em IBM Quantum Learning.
- Saiba mais sobre técnicas de mitigação e supressão de erros.
- Explore as opções do Estimador.
- Decida em que modo de execução deseja executar sua tarefa.