{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "d59934c8-76a1-4eda-97ba-4fcfb6f15776",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"Configurer la gestion du bruit avec Estimator\"\n",
        "description: \"Comment configurer la gestion du bruit à l'aide de la primitive « Estimator » d' IBM Quantum.\"\n",
        "---\n",
        "\n",
        "<span id=\"configure-noise-management-with-estimator\" />\n",
        "\n",
        "# Configurer la gestion du bruit avec 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=\"Versions de package\">\n",
        "    Le code présenté sur cette page a été développé en tenant compte des exigences suivantes.\n",
        "    Nous vous recommandons d'utiliser ces versions ou des versions plus récentes.\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": [
        "Il existe plusieurs façons de gérer le bruit, généralement en recourant à diverses techniques d'atténuation et de suppression des erreurs afin d'éviter que celles-ci ne se produisent.  Ces techniques entraînent généralement une surcharge liée au prétraitement.  Il est donc important de trouver un juste équilibre entre la recherche de la perfection dans vos résultats et la garantie que votre travail soit achevé dans un délai raisonnable.\n",
        "\n",
        "Estimator prend en charge les techniques de gestion du bruit suivantes. Pour plus d'informations sur chacune de [ces techniques,](error-mitigation-and-suppression-techniques) consultez la section « Techniques d'atténuation et de suppression des erreurs ». Consultez la section «[ Paramètres d'erreurs personnalisés](#advanced-error) » pour savoir comment activer ces techniques.\n",
        "\n",
        "* [découplage dynamique](/docs/api/qiskit-ibm-runtime/options-dynamical-decoupling-options#dynamicaldecouplingoptions)\n",
        "* [La pirouette 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",
        "## Niveau de résilience\n",
        "\n",
        "Ce paramètre `resilience_level` permet de définir le niveau de résilience à mettre en place face aux\n",
        "erreurs. Des niveaux plus élevés donnent des résultats plus précis, mais\n",
        "allongent les temps de traitement. Les niveaux de résilience permettent de définir le\n",
        "compromis entre coût et précision lors de l'application de la gestion du bruit à votre\n",
        "requête primitive. La gestion du bruit réduit les erreurs (biais) dans les résultats en traitant\n",
        "les sorties d'un ensemble de circuits interdépendants. Le\n",
        "degré de réduction de l'erreur dépend de la méthode utilisée. Le niveau de résilience\n",
        "fait abstraction du choix précis de la méthode de gestion du bruit afin de permettre\n",
        "aux utilisateurs d'évaluer le compromis coût/précision le plus adapté à\n",
        "leur application.\n",
        "\n",
        "Dans cette optique, chaque niveau correspond à une ou plusieurs méthodes présentant\n",
        "un surcoût croissant lié à l'échantillonnage quantique, ce qui vous permet d'expérimenter\n",
        "différents compromis entre temps et précision. Le tableau suivant vous indique\n",
        "quels niveaux et méthodes correspondantes sont disponibles pour chacune des\n",
        "primitives.\n",
        "\n",
        "<span id=\"resilience-table\" />\n",
        "\n",
        "| Niveau de résilience | Description                                                                                                        | Technique                                                                                                                      |\n",
        "| -------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |\n",
        "| 0                    | Aucune mesure d'atténuation                                                                                        | Aucun                                                                                                                          |\n",
        "| 1 \\[Par défaut]      | Coûts d'atténuation minimaux : atténuer les erreurs liées aux erreurs de lecture                                   | Mesure [par](/docs/guides/error-mitigation-and-suppression-techniques#trex) rotation TREX ( eXtinction )                       |\n",
        "| 2                    | Coûts d'atténuation modérés. Cela réduit généralement le biais des estimateurs, mais ne garantit pas un biais nul. | Niveau 1 + [extrapolation sans bruit (ZNE)](/docs/guides/error-mitigation-and-suppression-techniques#zne) et rotation de porte |\n",
        "\n",
        "<Admonition type=\"info\" title=\"Attention :\">\n",
        "  Les niveaux de résilience sont actuellement en phase bêta; par conséquent, la charge liée à l'échantillonnage et\n",
        "  la qualité de la solution varieront d'un circuit à l'autre. De nouvelles fonctionnalités,\n",
        "  des options avancées et des outils de gestion seront mis à disposition\n",
        "  au fur et à mesure. Il n'est pas garanti que des méthodes spécifiques de gestion du bruit soient\n",
        "  mises en œuvre à chaque niveau de résilience.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"configure-estimator-with-resilience-levels\" />\n",
        "\n",
        "### Configurer l'estimateur avec des niveaux de résilience\n",
        "\n",
        "Vous pouvez utiliser les niveaux de résilience pour définir des techniques de gestion du bruit, ou vous pouvez configurer des techniques personnalisées individuellement, comme décrit dans [la section « Paramètres d'erreur personnalisés](#advanced-error) ».\n",
        "\n",
        "<Admonition type=\"note\" title=\"Important\">\n",
        "  Toutes les options que vous spécifiez manuellement en plus du niveau de résilience s'ajoutent à l'ensemble d'options de base défini par ce niveau. Par conséquent, en principe, vous pourriez régler le niveau de résilience sur 1, puis désactiver l'atténuation des mesures, bien que cela ne soit pas recommandé.\n",
        "\n",
        "  Par exemple, si l'on règle le niveau de résilience sur 0, la fonction est désactivée `zne_mitigation`, mais cette valeur `estimator.options.resilience.zne_mitigation = True` est ignorée.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Exemple\n",
        "\n",
        "Le code suivant active les fonctions ZNE, TREX et la rotation des portes en\n",
        "définissant `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",
        "## Paramètres personnalisés de gestion du bruit\n",
        "\n",
        "Vous pouvez activer ou désactiver chaque méthode de gestion du bruit à l'aide des [options de l'estimateur](/docs/guides/estimator-options).\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  Toutes les options ne sont pas compatibles entre elles sur tous les types de circuits.  Consultez le [tableau de compatibilité des fonctionnalités](estimator-options#options-compatibility-table) pour plus de détails.\n",
        "</Admonition>\n",
        "\n",
        "<span id=\"example\" />\n",
        "\n",
        "### Exemple\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",
        "## Désactivez toutes les mesures d'atténuation des erreurs\n",
        "\n",
        "Pour savoir comment désactiver toutes les mesures d'atténuation des erreurs, consultez la section «[ Désactiver toutes les mesures de suppression et d'atténuation des erreurs](estimator-options#no-error-mitigation) » du guide des options d'Estimator.\n",
        "\n",
        "<span id=\"next-steps\" />\n",
        "\n",
        "## Etapes suivantes\n",
        "\n",
        "<Admonition type=\"tip\" title=\"Recommandations\">\n",
        "  * Découvrez un exemple utilisant l'atténuation des erreurs dans la [leçon](/learning/courses/variational-algorithm-design/cost-functions) consacrée à la fonction de coût sur IBM Quantum Learning.\n",
        "  * Découvrez-en davantage sur [les techniques d'atténuation et de suppression des erreurs](error-mitigation-and-suppression-techniques).\n",
        "  * Découvrez [les options d'Estimator](/docs/guides/estimator-options).\n",
        "  * Choisissez [le mode d'exécution](/docs/guides/execution-modes) dans lequel vous souhaitez exécuter votre tâche.\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
}