Перейти до основного вмісту

Вказівка параметрів Sampler

Версії пакетів

Код на цій сторінці розроблено з такими вимогами. Рекомендуємо використовувати ці версії або новіші.

qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1

Ти можеш використовувати параметри для налаштування примітиву Sampler. Цей розділ зосереджується на тому, як вказувати параметри примітивів Qiskit Runtime. Хоча інтерфейс методу run() примітивів є спільним для всіх реалізацій, їхні параметри відрізняються. Ознайомся з відповідними довідниками API для отримання інформації про параметри qiskit.primitives.BackendSamplerV2 та qiskit_aer.primitives.SamplerV2.

Налаштування параметрів Sampler

Ти можеш встановлювати параметри під час ініціалізації Sampler, після ініціалізації Sampler або оновлювати їх після ініціалізації. Для інструкцій щодо використання цих технік дивись тему Вступ до параметрів.

Крім того, ти можеш встановлювати значення shots у методі run(), як описано в наступному розділі.

Метод Run()

Єдині значення, які можна передати до run(), це ті, що визначені в інтерфейсі, тобто shots. Це перезаписує будь-яке значення, встановлене для default_shots для поточного запуску.

# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()

pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)

transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)

sampler = Sampler(mode=backend)
# Default shots to use if not specified in run()
sampler.options.default_shots = 500
# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d8286680bvlc73d1vmu0', 'sampler')>

Особливі випадки

Shots

Метод SamplerV2.run приймає два аргументи: список PUB-ів, кожен з яких може вказувати специфічне для PUB значення shots, та аргумент-ключове слово shots. Ці значення shots є частиною інтерфейсу виконання Sampler і не залежать від параметрів Sampler Runtime. Вони мають пріоритет над будь-якими значеннями, вказаними як параметри, щоб відповідати абстракції Sampler.

Однак, якщо shots не вказано жодним PUB або в аргументі-ключовому слові run (або якщо всі вони мають значення None), використовується значення shots з параметрів, зокрема default_shots.

Підсумовуючи, ось порядок пріоритету для вказівки shots у Sampler для будь-якого конкретного PUB:

  1. Якщо PUB вказує shots, використовуй це значення.
  2. Якщо аргумент-ключове слово shots вказано у run, використовуй це значення.
  3. Якщо twirling увімкнено (за замовчуванням True), використовується добуток num_randomizations та shots_per_randomization, вказаний як параметри twirling.
  4. Якщо вказано sampler.options.default_shots, використовуй це значення.

Таким чином, якщо shots вказані у всіх можливих місцях, використовується те, що має найвищий пріоритет (shots, вказані у PUB).

примітка

Хоча shots, вказані у PUB та в run, мають вищий пріоритет, завдання завершується помилкою, якщо twirling увімкнено і добуток num_randomizations та shots_per_randomization менший за значення shots. У цьому сценарії SamplerV2 не може розподілити shots між вказаними num_randomizations.

Приклад:

from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2 as Sampler
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager

service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()

pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)

transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)

# Setting shots during primitive initialization
sampler = Sampler(mode=backend, options={"default_shots": 4096})

# Setting options after primitive initialization
# This uses auto-complete.
sampler.options.default_shots = 2000

# This does bulk update. The value for default_shots is overridden
# if you specify shots with run() or in the PUB.
sampler.options.update(
default_shots=1024, dynamical_decoupling={"sequence_type": "XpXm"}
)

# Sample two circuits at 128 shots each.
sampler.run([transpiled1, transpiled2], shots=128)
<RuntimeJobV2('d82868ugbeec73alfa80', 'sampler')>

Доступні параметри

Наступна таблиця документує параметри з останньої версії qiskit-ibm-runtime. Щоб переглянути старіші версії параметрів, відвідай довідник API qiskit-ibm-runtime та вибери попередню версію.

default_shots

Загальна кількість shots для використання на схему на конфігурацію.

Варіанти: Ціле число >= 0

За замовчуванням: None

Документація API default_shots

dynamical_decoupling

Керування налаштуваннями пом'якшення помилок динамічного роз'єднання.

Документація API dynamical_decoupling

dynamical_decoupling.enable

Варіанти: True, False

За замовчуванням: False

dynamical_decoupling.extra_slack_distribution

Варіанти: middle, edges

За замовчуванням: middle

dynamical_decoupling.scheduling_method

Choices: asap, alap Default: alap

dynamical_decoupling.sequence_type

Choices: XX, XpXm, XY4 Default: XX

dynamical_decoupling.skip_reset_qubits

Choices: True, False Default: False

environment

Документація API environment

environment.job_tags

Список тегів.

Варіанти: None

За замовчуванням: None

environment.log_level

Варіанти: DEBUG, INFO, WARNING, ERROR, CRITICAL

За замовчуванням: WARNING

environment.private

Варіанти: True, False

За замовчуванням: False

execution

Документація API execution

execution.init_qubits

Чи скидати кубіти до основного стану для кожного shot.

Варіанти: True, False

За замовчуванням: True

execution.rep_delay

Затримка між вимірюванням та наступним квантовим колом.

Варіанти: Значення в діапазоні, наданому backend.rep_delay_range

За замовчуванням: Визначається backend.default_rep_delay

execution.meas_type

Варіанти: classified, kerneled, avg_kerneled

За замовчуванням: classified

max_execution_time

Обмежує час роботи завдання в секундах. Подробиці дивись у посібнику максимальний час виконання.

Варіанти: Ціле число секунд у діапазоні [1, 10800]

За замовчуванням: 10800 (3 години)

Документація API max_execution_time

simulator

Параметри для передачі при симуляції бекенду

Документація API simulator

simulator.basis_gates

Варіанти: Список назв базових вентилів для розгортання

За замовчуванням: Набір усіх базових вентилів, підтримуваних симулятором Qiskit Aer

simulator.coupling_map

Варіанти: Список орієнтованих двокубітних взаємодій

За замовчуванням: None, що означає відсутність обмежень зв'язності (повна зв'язність).

simulator.noise_model

Варіанти: Модель шуму Qiskit Aer NoiseModel або її представлення

За замовчуванням: None

simulator.seed_simulator

Варіанти: Ціле число

За замовчуванням: None

twirling

Параметри twirling

Документація API twirling

twirling.enable_gates

Варіанти: True, False

За замовчуванням: False

twirling.enable_measure

Варіанти: True, False

За замовчуванням: False

twirling.num_randomizations

Варіанти: auto, Ціле число >= 1

За замовчуванням: auto

twirling.shots_per_randomization

Варіанти: auto, Ціле число >= 1

За замовчуванням: auto

twirling.strategy

Варіанти: active, active-circuit, active-accum, all

За замовчуванням: active-accum

experimental

Експериментальні параметри, якщо доступні.

Сумісність функцій

Певні функції runtime не можна використовувати разом в одному завданні. Клацни відповідну вкладку, щоб переглянути список функцій, несумісних з вибраною функцією:

Dynamic circuits

Несумісне з:

  • Динамічним роз'єднанням

Інші примітки:

  • Twirling вентилів можна застосовувати до динамічних кіл, але лише до вентилів поза умовними блоками. Twirling вимірювань можна застосовувати лише до термінальних вимірювань.
  • Сумісне з дробовими вентилями при використанні qiskit-ibm-runtime v0.42.0 або новіших.
Dynamical decoupling

Несумісне з:

  • Dynamic circuits
Fractional gates

Несумісне з:

  • Twirling вентилів

Сумісне з динамічними колами при використанні qiskit-ibm-runtime v0.42.0 або новіших.

Gate twirling

Несумісне з:

  • Дробовими вентилями
  • Stretch

Інші примітки:

  • Twirling вентилів можна застосовувати до динамічних кіл, але лише до вентилів поза умовними блоками.
  • Twirling вимірювань можна застосовувати лише до термінальних вимірювань.
  • Twirling вимірювань несумісне з інструкцією store.
  • Не працює з не-Кліффордовими заплутувачами.

Наступні кроки

Рекомендації