Вказівка параметрів Estimator
Версії пакетів
Код на цій сторінці розроблено з такими вимогами. Рекомендуємо використовувати ці версії або новіші.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
Ти можеш використовувати параметри для налаштування примітиву Estimator. Хоча інтерфейс методу run() примітивів є спільним для всіх реалізацій, їхні параметри відрізняються. Ознайомся з довідниками API для отримання інформації про параметри qiskit.primitives.BaseEstimatorV2 та qiskit_aer.BaseEstimatorV2.
Notes :
- Ти можеш переглядати доступні параметри та оновлювати їх значення під час або після ініціалізації Estimator.
- Використовуй метод
update()для застосування змін до атрибутуoptions. - Якщо не вказати значення для параметра, йому присвоюється спеціальне значення
Unsetі використовуються серверні значення за замовчуванням. - Атрибут
optionsмає тип Pythondataclass. Можна використовувати вбудований методasdictдля перетворення його на словник.
Налаштування параметрів Estimator
Ти можеш встановлювати параметри під час ініціалізації Estimator, після ініціалізації Estimator або (лише для precision) у методі run().
Ініціалізація примітиву
Ти можеш передати екземпляр класу опцій або словник під час ініціалізації Estimator, який потім робить копію цих опцій. Таким чином, зміна оригінального словника або екземпляра опцій не впливає на опції, що належать примітиву.
Клас опцій
Під час створення екземпляра класу EstimatorV2 ти можеш передати екземпляр класу опцій. Ці опції будуть застосовані при використанні run() для виконання обчислень. Вкажи опції у такому форматі: options.option.sub-option.sub-sub-option = choice. Наприклад: options.dynamical_decoupling.enable = True
Приклад:
# 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 EstimatorV2 as Estimator
from qiskit_ibm_runtime.options import EstimatorOptions
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
options = EstimatorOptions(
resilience_level=2,
resilience={"zne_mitigation": True, "zne": {"noise_factors": [1, 3, 5]}},
)
# or...
options = EstimatorOptions()
options.resilience_level = 2
options.resilience.zne_mitigation = True
options.resilience.zne.noise_factors = [1, 3, 5]
estimator = Estimator(mode=backend, options=options)
Словник
Ти можеш вказати параметри як словник під час ініціалізації Estimator.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during initialization
estimator = Estimator(
backend,
options={
"resilience_level": 2,
"resilience": {
"zne_mitigation": True,
"zne": {"noise_factors": [1, 3, 5]},
},
},
)
Оновлення параметрів після ініціалізації
Ти можеш вказувати параметри у форматі estimator.options.option.sub-option.sub-sub-option = choice, щоб скористатися автодоповненням, або використовувати метод update() для масового оновлення.
Клас опцій EstimatorV2 (EstimatorOptions) не потрібно створювати, якщо ти встановлюєш параметри після ініціалізації примітиву.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(mode=backend)
# Setting options after initialization
# This uses auto-complete.
estimator.options.default_precision = 0.01
# This does bulk update.
estimator.options.update(
default_precision=0.02, resilience={"zne_mitigation": True}
)
Метод Run()
Єдині значення, які можна передати до run(), це ті, що визначені в інтерфейсі. Тобто precision для Estimator. Це перезаписує будь-яке значення, встановлене для default_precision для поточного запуску.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
circuit1 = random_iqp(3)
circuit1.measure_all()
circuit2 = random_iqp(3)
circuit2.measure_all()
observable = SparsePauliOp("Z" * 3)
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
transpiled1 = pass_manager.run(circuit1)
transpiled2 = pass_manager.run(circuit2)
isa_observable1 = observable.apply_layout(transpiled1.layout)
isa_observable2 = observable.apply_layout(transpiled2.layout)
estimator = Estimator(mode=backend)
# Default precision to use if not specified in run()
estimator.options.default_precision = 0.01
# Run two circuits, requiring a precision of .02 for both.
estimator.run(
[(transpiled1, isa_observable1), (transpiled2, isa_observable2)],
precision=0.02,
)
<RuntimeJobV2('d7amh42k86tc73a1sa20', 'estimator')>
Особливий випадок: точність
Метод EstimatorV2.run приймає два аргументи: список PUB-ів, кожен з яких може вказувати специфічне для PUB значення точності, та аргумент-ключове слово precision. Ці значення точності є частиною інтерфейсу виконання Estimator і не залежать від параметрів Runtime Estimator. Вони мають пріоритет над будь-якими значеннями, вказаними як параметри, щоб відповідати абстракції Estimator.
Однак, якщо precision не вказано жодним PUB або в аргументі-ключовому слові run (або якщо всі вони мають значення None), використовується значення точності з параметрів, зокрема default_precision.
Ці параметри точності призначені лише для задання цільової точності, і результати не гарантовано досягнуть вказаної точності.
Зверни увагу, що параметри Estimator містять як default_shots, так і default_precision. Однак, оскільки twirling вентилів увімкнено за замовчуванням, добуток num_randomizations та shots_per_randomization має пріоритет над цими двома параметрами.
Зокрема, для будь-якого PUB Estimator:
- Якщо PUB вказує точність, використовуй це значення.
- Якщо аргумент-ключове слово precision вказано у
run, використовуй це значення. - Якщо
twirlingувімкнено (True за замовчуванням), використовується добутокnum_randomizationsтаshots_per_randomization, вказаний у параметрахtwirling. - Якщо вказано
estimator.options.default_shots, використовуй це значення для контролю кількості даних. - Якщо вказано
estimator.options.default_precision, використовуй це значення.
Наприклад, якщо точність вказана в усіх чотирьох місцях, використовується те, що має найвищий пріоритет (точність, вказана у PUB).
Хоча точність, вказана у PUB та в run, має вищий пріоритет, завдання завершиться з помилкою, якщо twirling увімкнено і добуток num_randomizations та shots_per_randomization менший за кількість вимірювань, необхідних для досягнення вказаної точності. У такому випадку EstimatorV2 не може розподілити вимірювання між вказаними num_randomizations.
Точність масштабується обернено пропорційно до використання. Тобто, що нижча точність — то більше QPU-часу потрібно для виконання.
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from qiskit.circuit.library import random_iqp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit.quantum_info import SparsePauliOp
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
observable = SparsePauliOp("Z" * 3)
circuit = random_iqp(3)
circuit.measure_all()
pass_manager = generate_preset_pass_manager(
optimization_level=3, backend=backend
)
isa_circuit = pass_manager.run(circuit)
isa_observable = observable.apply_layout(isa_circuit.layout)
# Setting precision during primitive initialization
estimator = Estimator(mode=backend, options={"default_precision": 0.05})
# Run with precision=0.02, overwriting the default.
estimator.run(
[(isa_circuit, isa_observable1)],
precision=0.02,
)
<RuntimeJobV2('d8286b00bvlc73d1vn50', 'estimator')>
Вимкнення всього пом'якшення та придушення помилок
Ти можеш вимкнути все пом'якшення та придушення помилок, наприклад, якщо проводиш дослідження власних методів пом'якшення. Для цього встанови resilience_level = 0.
Приклад:
from qiskit_ibm_runtime import EstimatorV2 as Estimator, QiskitRuntimeService
# Define the service. This allows you to access an IBM QPU.
service = QiskitRuntimeService()
# Get a backend
backend = service.least_busy(operational=True, simulator=False)
# Define Estimator
estimator = Estimator(backend)
options = estimator.options
# Turn off all error mitigation and suppression
options.resilience_level = 0
Доступні параметри
Наступна таблиця документує параметри з останньої версії qiskit-ibm-runtime. Щоб переглянути старіші версії параметрів, відвідай довідник API qiskit-ibm-runtime та вибери попередню версію.
default_shots
Загальна кількість shots для використання на схему на конфігурацію.
Варіанти: Ціле число >= 0
За замовчуванням: None
default_precision
Точність за замовчуванням для будь-якого PUB або виклику run(), що не вказує власну.
Варіанти: Float > 0
За замовчуванням: 0.015625 (1 / sqrt(4096))
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.callback
Функція зворотного виклику, яка отримує Job ID та Job result.
Варіанти: None
За замовчуванням: None
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
max_execution_time
Обмежує час роботи завдання в секундах. Подробиці дивись у посібнику максимальний час виконання.
Варіанти: Ціле число секунд у діапазоні [1, 10800]
За замовчуванням: 10800 (3 години)
resilience
Розширені параметри стійкості для тонкого налаштування стратегії стійкості.
resilience.layer_noise_learning
Параметри для навчання шуму шарів.
resilience.layer_noise_learning.layer_pair_depths
Варіанти: list[int] від 2 до 10 значень у діапазоні [0, 200]
За замовчуванням: (0, 1, 2, 4, 16, 32)
resilience.layer_noise_learning.max_layers_to_learn
Варіанти: None, Ціле число >= 1
За замовчуванням: 4
resilience.layer_noise_learning.num_randomizations
Варіанти: Ціле число >= 1
За замовчуванням: 32
resilience.layer_noise_learning.shots_per_randomization
Варіанти: Ціле число >= 1
За замовчуванням: 128
resilience.layer_noise_model
Варіанти: NoiseLearnerResult, Sequence[LayerError]
За замовчуванням: None
resilience.measure_mitigation
Варіанти: True, False
За замовчуванням: True
resilience.measure_noise_learning
Параметри для навчання шуму вимірювань.
resilience.measure_noise_learning.num_randomizations
Варіанти: Ціле число >= 1
За замовчуванням: 32
resilience.measure_noise_learning.shots_per_randomization
Варіанти: Ціле число, auto
За замовчуванням: auto
resilience.pec_mitigation
Варіанти: True, False
За замовчуванням: False
resilience.pec
Параметри пом'якшення імовірнісного скасування помилок.
resilience.pec.max_overhead
Варіанти: None, Ціле число >= 1
За замовчуванням: 100
resilience.pec.noise_gain
Варіанти: auto, float у діапазоні [0, 1]
За замовчуванням: auto
resilience.zne_mitigation
Варіанти: True, False
За замовчуванням: False
resilience.zne
resilience.zne.amplifier
Варіанти: gate_folding, gate_folding_front, gate_folding_back, pea
За замовчуванням: gate_folding
resilience.zne.extrapolated_noise_factors
Варіанти: Список float
За замовчуванням: [0, *noise_factors]
resilience.zne.extrapolator
Варіанти: Один або кілька з: exponential, linear, double_exponential, polynomial_degree_(1 <= k <= 7), fallback
За замовчуванням: (exponential, linear)
resilience.zne.noise_factors
Варіанти: Список float; кожен float >= 1
За замовчуванням: (1, 1.5, 2) для PEA, та (1, 3, 5) в інших випадках
resilience_level
Рівень стійкості до помилок. Вищі рівні дають точніші результати ціною більшого часу обробки. Дивись розділ рівні стійкості у темі «Управління шумом», щоб дізнатися більше.
Варіанти: 0, 1, 2
За замовчуванням: 1
seed_estimator
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
За замовчуванням: True
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 не можна використовувати разом в одному завданні. Клацни відповідний елемент, щоб переглянути список функцій, несумісних з вибраною функцією:
Дробові вентилі
Несумісне з:
- Twirling вентилів
- PEA
- PEC
ZNE зі складанням вентилів
Може не працювати при використанні власних вентилів. Несумісне з:
- PEA
- PEC
Twirling вентилів
Несумісне з:
- Дробовими вентилями
- Stretches
Інші примітки:
- Twirling вимірювань можна застосовувати лише до термінальних вимірювань.
- Не працює з не-Кліффордовими заплутувачами.
PEA
Несумісне з:
- Дробовими вентилями
- ZNE зі складанням вентилів
- PEC
PEC
Несумісне з:
- Дробовими вентилями
- ZNE зі складанням вентилів
- PEA
Наступні кроки
- Знайди більше деталей про методи
EstimatorV2у довіднику API Estimator. - Вирішуй, в якому режимі виконання запускати своє завдання.
- Дізнайся про управління шумом з Estimator.