{
  "cells": [
    {
      "cell_type": "markdown",
      "id": "bed19311-f71d-4d8c-9a05-1b68fa72df29",
      "metadata": {},
      "source": [
        "---\n",
        "title: \"샘플러 옵션 지정\"\n",
        "description: \"Sampler 프리미티브로 빌드할 때 옵션을 지정합니다.\"\n",
        "---\n",
        "\n",
        "<span id=\"specify-sampler-options\" />\n",
        "\n",
        "# 샘플러 옵션 지정\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3adc856a-0fcd-47e4-94d9-22b90bddc24f",
      "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=\"패키지 버전\">\n",
        "    이 페이지의 코드는 다음 요구 사항을 바탕으로 개발되었습니다.\n",
        "    이 버전 이상을 사용하시기를 권장합니다.\n",
        "\n",
        "    ```\n",
        "    qiskit[all]~=2.5.2\n",
        "    qiskit-ibm-runtime~=0.47.0\n",
        "    ```\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "56db929d-8b84-49b2-a98b-55d33f91ea30",
      "metadata": {},
      "source": [
        "옵션을 사용하여 샘플러 프리미티브를 사용자 정의할 수 있습니다. 이 섹션에서는 ‘ IBM Quantum ’ 기본 옵션의 지정 방법에 대해 중점적으로 다룹니다. 프라이머리 메서드의 인터페이스는 모든 구현체에서 공통적이지만, 해당 메서드의 `run()` 옵션은 그렇지 않습니다. 및 [`qiskit.primitives.BackendSamplerV2`](/docs/api/qiskit/qiskit.primitives.BackendSamplerV2) 옵션에 [`qiskit_aer.primitives.SamplerV2`](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.primitives.SamplerV2.html) 대한 자세한 내용은 해당 API 참조 문서를 참조하십시오.\n",
        "\n",
        "<span id=\"pass-options\" />\n",
        "\n",
        "<span id=\"set-sampler-options\" />\n",
        "\n",
        "## 샘플러 옵션 설정\n",
        "\n",
        "Sampler를 초기화할 때, 초기화 후, 또는 초기화가 완료된 후에 옵션을 설정하거나 업데이트할 수 있습니다. 이 기술들을 사용하는 방법에 대한 안내는 [‘옵션 소개’](/docs/guides/runtime-options-overview#options-precedence) 항목을 참조하십시오.\n",
        "\n",
        "또한, 다음 섹션에서 설명하는 대로 메서드에서 `run()` 값을 `shots` 설정할 수 있습니다.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "3ca44016-acfe-4540-ab0e-659b9577c4eb",
      "metadata": {},
      "source": [
        "<span id=\"run-method\" />\n",
        "\n",
        "<span id=\"run-method\" />\n",
        "\n",
        "### Run() 메서드\n",
        "\n",
        "에 전달할 수 있는 값은 `run()` 인터페이스에 정의된 값들뿐입니다.  즉, `shots`. 이렇게 하면 현재 실행에 `default_shots` 대해 설정된 모든 값이 덮어쓰게 됩니다.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "id": "c2423fcc-7f7f-4674-af6f-fc90f4b28b17",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('dab7ld3vpcac73ddek50', 'sampler')>"
            ]
          },
          "execution_count": 1,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "circuit1 = random_iqp(3)\n",
        "circuit1.measure_all()\n",
        "circuit2 = random_iqp(3)\n",
        "circuit2.measure_all()\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "transpiled1 = pass_manager.run(circuit1)\n",
        "transpiled2 = pass_manager.run(circuit2)\n",
        "\n",
        "sampler = Sampler(mode=backend)\n",
        "# Default shots to use if not specified in run()\n",
        "sampler.options.default_shots = 500\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "4bf67f60-ce62-4b95-b70c-b15f131be46d",
      "metadata": {},
      "source": [
        "<span id=\"special-cases\" />\n",
        "\n",
        "### 특수 케이스\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "857e40a1-de1d-46f0-9db8-db55a6954f47",
      "metadata": {},
      "source": [
        "<span id=\"shots\" />\n",
        "\n",
        "<span id=\"shots\" />\n",
        "\n",
        "#### 샷\n",
        "\n",
        "이 `SamplerV2.run` 메서드는 두 개의 인수를 받습니다. 하나는 PUB 목록으로, 각 PUB는 shots에 대해 PUB 전용 값을 지정할 수 있으며, 다른 하나는 shots 키워드 인수입니다. 이러한 샷 값은 샘플러 실행 인터페이스의 일부이며, 런타임 샘플러의 옵션과는 별개입니다.  이는 Sampler 추상화를 준수하기 위해 옵션으로 지정된 모든 값보다 우선합니다.\n",
        "\n",
        "그러나 PUB 이나 run 키워드 인자에서 가 명시되지 않은 `shots` 경우(또는 모두 인 `None`경우), options의 shots 값이 사용되며, 특히 `default_shots`가 적용됩니다.\n",
        "\n",
        "요약하자면, 특정 PUB 에 대해 샘플러에서 샷을 지정할 때의 우선순위는 다음과 같습니다:\n",
        "\n",
        "1. PUB 에 촬영 횟수가 지정되어 있다면 해당 값을 사용하십시오.\n",
        "2. 에서 키워드 `shots` 인수가 `run` 지정된 경우, 해당 값을 사용합니다.\n",
        "3. 이 기능이 활성화되어 `twirling` 있으면, 로 지정된 `shots_per_randomization` 와 `num_randomizations` 의 곱이 사용됩니다. [`twirling` 옵션](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "4. 가 지정된 `sampler.options.default_shots` 경우, 해당 값을 사용합니다.\n",
        "\n",
        "따라서 모든 가능한 위치에 샷이 지정된 경우, 우선순위가 가장 높은 샷( PUB 에 지정된 샷)이 사용됩니다.\n",
        "\n",
        "<Admonition type=\"note\">\n",
        "  PUB 및 에 `run` 명시된 샷이 우선순위가 더 높지만, 가 활성화되어 있고 와 `shots_per_randomization` 의 `num_randomizations` 곱이 값보다 `shots` 작을 경우 `twirling` 작업이 실패합니다. `num_randomizations`이 시나리오에서는 지정된 대상들 사이에 발사체를 배분할 수 없습니다. `SamplerV2`\n",
        "</Admonition>\n",
        "\n",
        "예:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "id": "e06376f4-fcba-4d03-8cbc-c53ca02d81af",
      "metadata": {},
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<RuntimeJobV2('dab7lf3vpcac73ddek8g', 'sampler')>"
            ]
          },
          "execution_count": 2,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "from qiskit_ibm_runtime import QiskitRuntimeService\n",
        "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
        "from qiskit.circuit.library import random_iqp\n",
        "from qiskit.transpiler import generate_preset_pass_manager\n",
        "\n",
        "service = QiskitRuntimeService()\n",
        "backend = service.least_busy(operational=True, simulator=False)\n",
        "\n",
        "circuit1 = random_iqp(3)\n",
        "circuit1.measure_all()\n",
        "circuit2 = random_iqp(3)\n",
        "circuit2.measure_all()\n",
        "\n",
        "pass_manager = generate_preset_pass_manager(\n",
        "    optimization_level=3, backend=backend\n",
        ")\n",
        "\n",
        "transpiled1 = pass_manager.run(circuit1)\n",
        "transpiled2 = pass_manager.run(circuit2)\n",
        "\n",
        "\n",
        "# Setting shots during primitive initialization\n",
        "sampler = Sampler(mode=backend, options={\"default_shots\": 4096})\n",
        "\n",
        "# Setting options after primitive initialization\n",
        "# This uses auto-complete.\n",
        "sampler.options.default_shots = 2000\n",
        "\n",
        "# This does bulk update.  The value for default_shots is overridden\n",
        "# if you specify shots with run() or in the PUB.\n",
        "sampler.options.update(\n",
        "    default_shots=1024, dynamical_decoupling={\"sequence_type\": \"XpXm\"}\n",
        ")\n",
        "\n",
        "# Sample two circuits at 128 shots each.\n",
        "sampler.run([transpiled1, transpiled2], shots=128)"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "29451d36-d88d-4726-96d2-f3083ac9e4a9",
      "metadata": {},
      "source": [
        "<span id=\"options-table\" />\n",
        "\n",
        "<span id=\"available-options\" />\n",
        "\n",
        "## 사용 가능 옵션\n",
        "\n",
        "다음 표는 최신 버전의 `qiskit-ibm-runtime`.에 포함된 옵션을 정리한 것입니다. 이전 버전의 옵션을 확인하려면 [API 참조 `qiskit-ibm-runtime`](/docs/api/qiskit-ibm-runtime) 문서를 방문하여 이전 버전을 선택하세요.\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"`default_shots`\">\n",
        "    구성당 회로별로 사용할 총 샷 수.\n",
        "\n",
        "    **선택 사항** : 0 이상인 정수\n",
        "\n",
        "    **기본값** : 없음\n",
        "\n",
        "    [`default_shots` API 문서](/docs/api/qiskit-ibm-runtime/options-sampler-options#default_shots)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`dynamical_decoupling`\">\n",
        "    동적 분리 오류 완화 설정을 제어합니다.\n",
        "\n",
        "    [`dynamical_decoupling` API 문서](/docs/api/qiskit-ibm-runtime/options-sampler-options#dynamical_decoupling)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`dynamical_decoupling.enable`\">\n",
        "        **선택 사항** : `True`, `False`\n",
        "\n",
        "        **기본값** : `False`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.extra_slack_distribution`\">\n",
        "        **선택 사항** : `middle`, `edges`\n",
        "\n",
        "        **기본값** : `middle`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.scheduling_method`\">\n",
        "        선택 사항: `asap`, `alap`\n",
        "        기본값: `alap`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.sequence_type`\">\n",
        "        선택 사항: `XX`, `XpXm`, `XY4`\n",
        "        기본값: `XX`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`dynamical_decoupling.skip_reset_qubits`\">\n",
        "        선택 사항: `True`, `False`\n",
        "        기본값: `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`environment`\">\n",
        "    [`environment` API 문서](/docs/api/qiskit-ibm-runtime/options-sampler-options#environment)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`environment.job_tags`\">\n",
        "        태그 목록.\n",
        "\n",
        "        **선택 사항** : 없음\n",
        "\n",
        "        **기본값** : 없음\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.log_level`\">\n",
        "        **선택 항목** : DEBUG, INFO, WARNING, ERROR, CRITICAL\n",
        "\n",
        "        **기본값** : 경고\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`environment.private`\">\n",
        "        **선택 사항** : `True`, `False`\n",
        "\n",
        "        **기본값** : `False`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`execution`\">\n",
        "    [`execution` API 문서](/docs/api/qiskit-ibm-runtime/options-sampler-options#execution)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`execution.init_qubits`\">\n",
        "        각 실행마다 큐비트를 기저 상태로 초기화할지 여부.\n",
        "\n",
        "        **선택 사항** : `True`, `False`\n",
        "\n",
        "        **기본값** : `True`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.rep_delay`\">\n",
        "        측정과 그 이후의 양자 회로 사이의 시간 간격.\n",
        "\n",
        "        **선택 사항** : 다음 범위 내의 값 `backend.rep_delay_range`\n",
        "\n",
        "        **기본값** : 다음에서 지정됨 `backend.default_rep_delay`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`execution.meas_type`\">\n",
        "        **선택 사항** : `classified`, `kerneled`, `avg_kerneled`\n",
        "\n",
        "        **기본값** : `classified`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`max_execution_time`\">\n",
        "    작업이 실행될 수 있는 최대 시간을 초 단위로 제한합니다. 자세한 내용은 [최대 실행 시간](/docs/guides/max-execution-time) 가이드를 참조하십시오.\n",
        "\n",
        "    **선택 사항** : \\[1] 에서 10800 사이의 초 단위 정수\n",
        "\n",
        "    **기본값** : 10800 (3시간)\n",
        "\n",
        "    [`max_execution_time` API 문서](/docs/api/qiskit-ibm-runtime/options-sampler-options#max_execution_time)\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`simulator`\">\n",
        "    백엔드 시뮬레이션 시 전달할 옵션\n",
        "\n",
        "    [`simulator` API 문서](/docs/api/qiskit-ibm-runtime/options-simulator-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`simulator.basis_gates`\">\n",
        "        **선택 사항** : 언롤할 기본 게이트 이름 목록\n",
        "\n",
        "        **기본값** : [Qiskit Aer 시뮬레이터](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html) 에서 지원하는 모든 기본 게이트 집합\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.coupling_map`\">\n",
        "        **선택 사항** : 방향성 2-큐비트 상호작용 목록\n",
        "\n",
        "        **기본값** : 없음. 이는 연결성 제약 조건이 없음을 의미합니다(완전한 연결성).\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.noise_model`\">\n",
        "        **선택 사항** : [Qiskit Aer NoiseModel](/docs/guides/build-noise-models) 또는 이에 상응하는 모델\n",
        "\n",
        "        **기본값** : 없음\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`simulator.seed_simulator`\">\n",
        "        **선택 항목** : 정수\n",
        "\n",
        "        **기본값** : 없음\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`twirling`\">\n",
        "    회전 옵션\n",
        "\n",
        "    [`twirling` API 문서](/docs/api/qiskit-ibm-runtime/options-twirling-options)\n",
        "\n",
        "    <Accordion>\n",
        "      <AccordionItem title=\"`twirling.enable_gates`\">\n",
        "        **선택지** : 참, 거짓\n",
        "\n",
        "        **기본값** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.enable_measure`\">\n",
        "        **선택지** : 참, 거짓\n",
        "\n",
        "        **기본값** : False\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.num_randomizations`\">\n",
        "        **선택 사항** : `auto`, 정수 >= 1\n",
        "\n",
        "        **기본값** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.shots_per_randomization`\">\n",
        "        **선택 사항** : `auto`, 정수 >= 1\n",
        "\n",
        "        **기본값** : `auto`\n",
        "      </AccordionItem>\n",
        "\n",
        "      <AccordionItem title=\"`twirling.strategy`\">\n",
        "        **선택 사항** : `active`, `active-circuit`, `active-accum`, `all`\n",
        "\n",
        "        **기본값** : `active-accum`\n",
        "      </AccordionItem>\n",
        "    </Accordion>\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"`experimental`\">\n",
        "    가능한 경우 실험적 옵션.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "80737dfd-a1c7-4b5f-b1ea-3391dcfa61b7",
      "metadata": {},
      "source": [
        "<span id=\"options-compatibility-table\" />\n",
        "\n",
        "<span id=\"feature-compatibility\" />\n",
        "\n",
        "## 기능 호환성\n",
        "\n",
        "특정 런타임 기능은 하나의 작업 내에서 함께 사용할 수 없습니다. 선택한 기능과 호환되지 않는 기능 목록을 보려면 해당 탭을 클릭하세요:\n",
        "\n",
        "<Accordion>\n",
        "  <AccordionItem title=\"동적 회로\">\n",
        "    호환되지 않는 항목:\n",
        "\n",
        "    * 동적 분리\n",
        "\n",
        "    기타 참고 사항:\n",
        "\n",
        "    * 게이트 회전 연산은 동적 회로에 적용할 수 있지만, 조건부 블록 내에 있는 게이트에는 적용할 수 없습니다. 측정 회전 기능은 단자 측정에만 적용할 수 있습니다.\n",
        "    * v0.42.0 이상을 `qiskit-ibm-runtime` 사용할 경우 분수 게이트와 호환됩니다.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"동적 분리\">\n",
        "    호환되지 않는 항목:\n",
        "\n",
        "    * 동적 회로\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"분수 게이트\">\n",
        "    호환되지 않는 항목:\n",
        "\n",
        "    * 문 돌리기\n",
        "\n",
        "    v0.42.0 이상을 `qiskit-ibm-runtime` 사용할 경우 동적 회로와 호환됩니다.\n",
        "  </AccordionItem>\n",
        "\n",
        "  <AccordionItem title=\"문 돌리기\">\n",
        "    호환되지 않는 항목:\n",
        "\n",
        "    * 분수 게이트\n",
        "    * 스트레칭\n",
        "\n",
        "    기타 참고 사항:\n",
        "\n",
        "    * 게이트 회전 연산은 동적 회로에 적용할 수 있지만, 조건부 블록 내에 있지 않은 게이트에만 적용할 수 있습니다.\n",
        "    * 측정 회전 기능은 단자 측정에만 적용할 수 있습니다.\n",
        "    * 측정 값을 뒤집는 것은 해당 [`store`](/docs/api/qiskit/circuit#store) 지침과 상충됩니다.\n",
        "    * 클리포드 얽힘이 아닌 얽힘에서는 작동하지 않습니다.\n",
        "  </AccordionItem>\n",
        "</Accordion>\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "id": "b95e9e8e-575c-411e-8504-4ef0a00166d3",
      "metadata": {},
      "source": [
        "<span id=\"next-steps\" />\n",
        "\n",
        "## 다음 단계\n",
        "\n",
        "<Admonition type=\"tip\" title=\"권장사항\">\n",
        "  * [‘옵션](/docs/guides/runtime-options-overview) 개요’ 가이드를 확인해 보세요.\n",
        "  * [Sampler API 참조](/docs/api/qiskit-ibm-runtime/sampler-v2) 문서에서 해당 `SamplerV2` 메서드에 대한 자세한 내용을 확인하세요.\n",
        "  * 작업 [실행 모드를](execution-modes) 결정하십시오.\n",
        "  * [Sampler를 통해 소음 관리](/docs/guides/sampler-noise-management) 에 대해 알아보세요.\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
}