Налаштування управління шумом з Estimator
Версії пакетів
Код на цій сторінці було розроблено з використанням таких вимог. Рекомендуємо використовувати ці або новіші версії.
qiskit-ibm-runtime~=0.47.0
Існує кілька способів управління шумом, зазвичай шляхом використання різних технік пом'якшення помилок та придушення помилок, щоб уникнути помилок до того, як вони виникнуть. Ці техніки зазвичай викликають накладні витрати на попередню обробку. Тому важливо досягти балансу між вдосконаленням результатів та забезпеченням завершення завдання в розумний час.
Estimator підтримує такі техніки управління шумом. Дивись Техніки пом'якшення та придушення помилок для пояснення кожної. Дивись розділ Налаштування управління шумом вручну для прикладу увімкнення цих технік.
Динамічне розв'язування
Як ввімкнути: options.dynamical_decoupling.enable = True
Довідник API: DynamicalDecouplingOptions
Помітні параметри: sequence_type
Твірлінг Паулі
Як ввімкнути: options.twirling.enable_gates = True
Довідник API: TwirlingOptions
Помітні параметри: num_randomizations, shots_per_randomization
TREX
Як ввімкнути: options.resilience.measure_mitigation = True
Довідник API: MeasureNoiseLearningOptions
Помітні параметри:
ZNE
Як ввімкнути: options.resilience.zne_mitigation = True
Довідник API: ZneOptions
Помітні параметри: noise_factors, extrapolator
PEA
Як ввімкнути: (потрібно також увімкнути ZNE) options.resilience.zne_mitigation = True і options.resilience.zne.amplifier = "pea"
Довідник API: ZneOptions
Помітні параметри: noise_factors, extrapolator
PEC
Як ввімкнути: options.resilience.pec_mitigation = True
Довідник API: PecOptions
Помітні параметри: max_overhead
Рівень стійкості
resilience_level визначає, наскільки стійкою до помилок має бути система. Вищі рівні генерують більш точні результати ціною тривалішого часу обробки. Рівні стійкості можна використовувати для налаштування компромісу між вартістю та точністю при застосуванні управління шумом до запиту до примітива. Управління шумом зменшує помилки (зміщення) в результатах шляхом обробки виходів від колекції або ансамблю пов'язаних схем. Ступінь зменшення помилок залежить від застосованого методу. Рівень стійкості абстрагує детальний вибір методу управління шумом, щоб дозволити користувачам міркувати про компроміс вартість/точність, що підходить їхньому застосунку.
З огляду на це, кожен рівень відповідає методу або методам із зростаючим рівнем накладних витрат квантової вибірки, щоб дозволити тобі експериментувати з різними компромісами між часом та точністю. У наступній таблиці показано, які рівні та відповідні методи доступні для кожного з примітивів.
| Рівень стійкості | Опис | Техніка |
|---|---|---|
| 0 | Без пом'якшення | Відсутня |
| 1 [За замовчуванням] | Мінімальні витрати на пом'якшення: пом'якшення помилок зчитування | Вимірювальне twirling Twirled Readout Error eXtinction (TREX) |
| 2 | Середні витрати на пом'якшення. Зазвичай зменшує зміщення оцінок, але повної відсутності зміщення не гарантує. | Рівень 1 + Zero Noise Extrapolation (ZNE) та gate twirling |
Рівні стійкості наразі перебувають у бета-версії, тому накладні витрати вибірки та якість рішення варіюватимуться від схеми до схеми. Нові функції, розширені опції та інструменти управління будуть випускатися поступово. Не гарантується, що конкретні методи управління шумом застосовуватимуться на кожному рівні стійкості.
Налаштування Estimator з рівнями стійкості
Можна використовувати рівні стійкості для вказання технік управління шумом або налаштовувати окремі техніки вручну, як описано в Власних налаштуваннях управління шумом.
Будь-які опції, які ти встановлюєш вручну на додаток до рівня стійкості, застосовуються поверх базового набору опцій, визначених рівнем стійкості. Тому, в принципі, можна встановити рівень стійкості 1, але потім вимкнути пом'якшення вимірювань, хоча це не рекомендується.
Наприклад, встановлення рівня стійкості 0 вимикає zne_mitigation, але estimator.options.resilience.zne_mitigation = True перевизначає це значення.
Приклад
Наступний код вмикає ZNE, TREX та gate twirling, встановлюючи resilience_level 2.
# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util
_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
# Setting options during primitive initialization
estimator = Estimator(backend, options={"resilience_level": 2})
Налаштування управління шумом вручну
Можна вмикати та вимикати окремі методи управління шумом, використовуючи опції Estimator.
- Не всі параметри працюють разом на всіх типах схем. Докладніше дивись таблицю сумісності можливостей.
- Якщо ти використовуєш новий клієнтський Estimator, запроваджений у
qiskit-ibm-runtimev0.50.0, для використання PEA і PEC потрібне окреме завдання навчання шуму. Докладніше дивись Перехід із серверних на клієнтські Sampler і Estimator.
Повний приклад із кількома параметрами
from qiskit_ibm_runtime import QiskitRuntimeService
# Legacy server-side primitive before qiskit-ibm-runtime 0.50.0
# from qiskit_ibm_runtime import Estimator
# Client-side primitive introduced in qiskit-ibm-runtime 0.50.0
from qiskit_ibm_runtime.executor_estimator import Estimator
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)
estimator = Estimator(backend)
options = estimator.options
# Turn on gate twirling.
options.twirling.enable_gates = True
# Turn on measurement error mitigation.
options.resilience.measure_mitigation = True
print(
f">>> gate twirling is turned on: {estimator.options.twirling.enable_gates}"
)
print(
f">>> measurement error mitigation is turned on: "
f"{estimator.options.twirling.enable_gates}"
)
>>> gate twirling is turned on: True
>>> measurement error mitigation is turned on: True
Вимкнення всього пом'якшення помилок
Інструкції щодо вимкнення всього пом'якшення помилок дивись у розділі Вимкнення всього придушення та пом'якшення помилок в посібнику з опцій Estimator.
Наступні кроки
- Пройди приклад, що використовує пом'якшення помилок, у уроці про функцію витрат у IBM Quantum Learning.
- Дізнайся більше про техніки пом'якшення та придушення помилок.
- Вивчи опції Estimator.
- Визнач, у якому режимі виконання запускати своє завдання.