{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "d59934c8-76a1-4eda-97ba-4fcfb6f15776",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Configure o gerenciamento de ruído com o Estimator\"\n",
        "description: \"Como configurar o gerenciamento de ruído com a primitiva Estimator do Qiskit Runtime.\"\n",
        "---\n",
        "\n",
        "<span id=\"configure-noise-management-with-estimator\" />\n",
        "\n",
        "# Configure o gerenciamento de ruído com o Estimator\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "8f3a25e1-b73d-48d1-8b82-9c57095c9108",
      "metadata": {
        "tags": [
          "version-info"
        ]
      },
      "source": [
        "{/*\n",
        "  DO NOT EDIT THIS CELL!!!\n",
        "  This cell's content is generated automatically by a script. Anything you add\n",
        "  here will be removed next time the notebook is run. To add new content, create\n",
        "  a new cell before or after this one.\n",
        "  */}\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"Versões do pacote\">\n",
        "    O código desta página foi desenvolvido com base nos seguintes requisitos.\n",
        "    Recomendamos usar essas versões ou versões mais recentes.\n",
        "\n",
        "    ```\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3f1ea669-4144-4071-a4e9-88e01056f465",
      "metadata": {},
      "source": [
        "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.\n",
        "\n",
        "O Estimator oferece suporte às seguintes técnicas de gerenciamento de ruído. Consulte [“Técnicas de mitigação e supressão de erros”](error-mitigation-and-suppression-techniques) para obter uma explicação sobre cada uma delas. Consulte a seção [“Configurações de erros personalizados”](#advanced-error) para obter instruções sobre como ativar essas técnicas.\n",
        "\n",
        "* [desacoplamento dinâmico](/docs/api/qiskit-ibm-runtime/options-dynamical-decoupling-options#dynamicaldecouplingoptions)\n",
        "* [Giro de Pauli](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "* [PEA](/docs/api/qiskit-ibm-runtime/options-zne-options)\n",
        "* [PEC](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#pec)\n",
        "* [`resilience_level`](/docs/api/qiskit-ibm-runtime/options-estimator-options#resilience_level)\n",
        "* [TREX](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#measure_mitigation)\n",
        "* [ZNE](/docs/api/qiskit-ibm-runtime/options-resilience-options-v2#zne)\n",
        "\n",
        "<span id=\"resilience\" />\n",
        "\n",
        "<span id=\"resilience-level\" />\n",
        "\n",
        "## Nível de resiliência\n",
        "\n",
        "O `resilience_level` especifica o nível de resiliência a ser incorporado para\n",
        "lidar com erros. Níveis mais altos geram resultados mais precisos, em detrimento de\n",
        "tempos de processamento mais longos. Os níveis de resiliência podem ser usados para definir o\n",
        "equilíbrio entre custo e precisão ao aplicar o gerenciamento de ruído à sua\n",
        "consulta primitiva. O gerenciamento de ruído reduz os erros (viés) nos resultados ao processar\n",
        "as saídas de um conjunto de circuitos relacionados. O\n",
        "grau de redução do erro depende do método aplicado. O nível de resiliência\n",
        "abstraí a escolha detalhada do método de gerenciamento de ruído para permitir\n",
        "que os usuários avaliem o equilíbrio entre custo e precisão adequado à\n",
        "sua aplicação.\n",
        "\n",
        "Diante disso, cada nível corresponde a um ou mais métodos com\n",
        "um nível crescente de sobrecarga de amostragem quântica, permitindo que você experimente\n",
        "diferentes equilíbrios entre tempo e precisão. A tabela a seguir mostra\n",
        "quais níveis e métodos correspondentes estão disponíveis para cada uma das\n",
        "primitivas.\n",
        "\n",
        "<span id=\"resilience-table\" />\n",
        "\n",
        "| Nível de resiliência | Descrição                                                                                                      | Técnica                                                                                                                        |\n",
        "| -------------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |\n",
        "| 0                    | Sem medidas de mitigação                                                                                       | Nenhum                                                                                                                         |\n",
        "| 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)](/docs/guides/error-mitigation-and-suppression-techniques#trex)      |\n",
        "| 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)](/docs/guides/error-mitigation-and-suppression-techniques#zne) e rotação de portas |\n",
        "\n",
        "<Admonition type=\"info\" title=\"Atenção\">\n",
        "  Os níveis de resiliência estão atualmente em fase beta, portanto, a sobrecarga de amostragem e\n",
        "  a qualidade da solução variam de circuito para circuito. Novos recursos,\n",
        "  opções avançadas e ferramentas de gerenciamento serão lançados\n",
        "  progressivamente. Não há garantia de que métodos específicos de gestão de ruído sejam\n",
        "  aplicados em cada nível de resiliência.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"configure-estimator-with-resilience-levels\" />\n",
        "\n",
        "### Configurar o Estimador com níveis de resiliência\n",
        "\n",
        "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](#advanced-error).\n",
        "\n",
        "<Admonition type=\"note\" title=\"Importante\">\n",
        "  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.\n",
        "\n",
        "  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.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Exemplo\n",
        "\n",
        "O código a seguir habilita o ZNE, o TREX e a rotação de portas ao\n",
        "definir `resilience_level 2`.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "841b526d-55b8-4125-bd2c-758d9db8dbb3",
      "metadata": {},
      "outputs": [],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "# Setting options during primitive initialization\n",
        "estimator = Estimator(backend, options={\"resilience_level\": 2})"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "c497a0e5-bcb7-4954-8096-70b4514ea498",
      "metadata": {},
      "source": [
        "<span id=\"advanced-error\" />\n",
        "\n",
        "<span id=\"custom-noise-management-settings\" />\n",
        "\n",
        "## Configurações personalizadas de gerenciamento de ruído\n",
        "\n",
        "Você pode ativar e desativar métodos individuais de gerenciamento de ruído usando as [opções do Estimador](/docs/guides/estimator-options).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Nem todas as opções são compatíveis entre si em todos os tipos de circuitos.  Consulte a [tabela de compatibilidade de recursos](estimator-options#options-compatibility-table) para obter mais detalhes.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Exemplo\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "89f1827d-92a1-40a4-bd71-6d67a18f0932",
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            ">>> gate twirling is turned on: True\n",
            ">>> measurement error mitigation is turned on: True\n"
          ]
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import EstimatorV2 as Estimator\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "estimator = Estimator(backend)\n",
        "options = estimator.options\n",
        "# Turn on gate twirling.\n",
        "options.twirling.enable_gates = True\n",
        "# Turn on measurement error mitigation.\n",
        "options.resilience.measure_mitigation = True\n",
        "\n",
        "print(\n",
        "    f\">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}\"\n",
        ")\n",
        "print(\n",
        "    f\">>> measurement error mitigation is turned on: \"\n",
        "    f\"{estimator.options.twirling.enable_gates}\"\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "0eba7825-2725-4406-82b7-3911c33957c5",
      "metadata": {},
      "source": [
        "<span id=\"turn-off-all-error-mitigation\" />\n",
        "\n",
        "## Desative todas as medidas de mitigação de erros\n",
        "\n",
        "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](estimator-options#no-error-mitigation) ” no guia de opções do Estimator.\n",
        "\n",
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Próximas etapas\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recomendações\">\n",
        "  * Analise um exemplo que utiliza a mitigação de erros na [lição](/learning/courses/variational-algorithm-design/cost-functions) sobre a função de custo em IBM Quantum Learning.\n",
        "  * Saiba mais sobre [técnicas de mitigação e supressão de erros](error-mitigation-and-suppression-techniques).\n",
        "  * Explore [as opções do Estimador](/docs/guides/estimator-options).\n",
        "  * Decida em que [modo de execução](/docs/guides/execution-modes) deseja executar sua tarefa.\n",
        "</Admonition>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "id": "a1b8767d",
      "source": "© IBM Corp., 2017-2026"
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}