Вказівка параметрів 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:
- Якщо PUB вказує shots, використовуй це значення.
- Якщо аргумент-ключове слово
shotsвказано уrun, використовуй це значення. - Якщо
twirlingувімкнено (за замовчуванням True), використовується добутокnum_randomizationsтаshots_per_randomization, вказаний як параметриtwirling. - Якщо вказано
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
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
environment.job_tags
Список тегів.
Варіанти: None
За замовчуванням: None
environment.log_level
Варіанти: DEBUG, INFO, WARNING, ERROR, CRITICAL
За замовчуванням: WARNING
environment.private
Варіанти: True, False
За замовчуванням: False
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 години)
simulator
Параметри для передачі при симуляції бекенду
simulator.basis_gates
Варіанти: Список назв базових вентилів для розгортання
За замовчуванням: Набір усіх базових вентилів, підтримуваних симулятором Qiskit Aer
simulator.coupling_map
Варіанти: Список орієнтованих двокубітних взаємодій
За замовчуванням: None, що означає відсутність обмежень зв'язності (повна зв'язність).
simulator.noise_model
Варіанти: Модель шуму Qiskit Aer NoiseModel або її представлення
За замовчуванням: None
simulator.seed_simulator
Варіанти: Ціле число
За замовчуванням: None
twirling
Параметри 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-runtimev0.42.0 або новіших.
Dynamical decoupling
Несумісне з:
- Dynamic circuits
Fractional gates
Несумісне з:
- Twirling вентилів
Сумісне з динамічними колами при використанні qiskit-ibm-runtime v0.42.0 або новіших.
Gate twirling
Несумісне з:
- Дробовими вентилями
- Stretch
Інші примітки:
- Twirling вентилів можна застосовувати до динамічних кіл, але лише до вентилів поза умовними блоками.
- Twirling вимірювань можна застосовувати лише до термінальних вимірювань.
- Twirling вимірювань несумісне з інструкцією
store. - Не працює з не-Кліффордовими заплутувачами.
Наступні кроки
- Переглянь посібник Вступ до параметрів.
- Знайди більше деталей про методи
SamplerV2у довіднику API Sampler. - Вирішуй, в якому режимі виконання запускати своє завдання.
- Дізнайся про управління шумом із Sampler.