Спеціально відкалібровані інструкції
За замовчуванням квантові вентилі та операції зчитування на квантових комп'ютерах IBM® калібруються для оптимальної продуктивності в типових випадках використання. Однак деякі робочі навантаження виграють від інструкцій, параметри яких налаштовані інакше. Наприклад, MidCircuitMeasure (measure_2) — це операція зчитування, призначена для вимірювань посеред схеми, а повільніші вентилі cz можуть покращити результати деяких робочих процесів пом'якшення помилок.
Спеціально відкалібровані інструкції бувають двох видів, і доступ до них різний:
-
Інструкції з іншими сигнатурами калібруються разом зі стандартними інструкціями в калібруванні за замовчуванням, тому ти додаєш їх до своїх схем як будь-яку іншу інструкцію. Зазвичай їх позначає суфікс, наприклад
measure_2. -
Альтернативні калібрування замінюють частини калібрування за замовчуванням інакше налаштованими параметрами. Ти вибираєш одне з них, передаючи
calibration_idпід час отримання бекенда.
Щоб дізнатися, як здійснюється моніторинг, калібрування та бенчмаркінг квантових комп'ютерів IBM, дивись Моніторинг, калібрування та бенчмаркінг.
Інструкції з іншими сигнатурами
Ці інструкції калібруються разом зі стандартним набором інструкцій, тому для отримання бекенда, який їх підтримує, не потрібно робити нічого особливого. Щоб використати одну з них, додай відповідну інструкцію qiskit-ibm-runtime до своєї схеми.
| Інструкція | Опис | Типовий випадок використання | Використання в Qiskit | Сімейство процесорів |
|---|---|---|---|---|
measure_2 | Коротший імпульс вимірювання | Вимірювання посеред схеми | MidCircuitMeasure (v0.43.0 або новіша) | Heron, Nighthawk r2 |
reset_2 | Коротший умовний імпульс скидання, що використовує measure_2 | Скидання кубіта посеред схеми | MidCircuitReset (v0.49.0 або новіша) | Heron |
measure_reset | Вимірювання, як measure, що також скидає кубіт* | Вимірювання та скидання кубіта | MeasureReset (v0.50.0 або новіша) | Heron, Nighthawk r2 |
measure_reset_2 | Коротше вимірювання, як measure_2, що також скидає кубіт* | Вимірювання та скидання кубіта посеред схеми | Ініціалізуй MeasureReset з name="measure_reset_2" (v0.50.0 або новіша) | Heron, Nighthawk r2 |
xslow | Вентиль перевороту біта (X) із подовженою тривалістю | Постселекція і пом'якшення помилок. Це значення за замовчуванням параметра x_pulse_type у проходах постселекції | Усі |
. | XSlowGate (v0.50.0 або новіша) | Усі |
* На процесорах Heron скидання залежить від результату вимірювання. На процесорах Nighthawk r2 скидання безумовне.
Оскільки ці інструкції підтримуються не на кожному бекенді, перевір підтримувані інструкції бекенда, перш ніж їх використовувати:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Щоб знайти всі бекенди, які підтримують інструкцію, використовуй:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Використовуй instruction_signatures, щоб побачити сигнатури цих спеціально відкаліброваних інструкцій:
print(backend.configuration().instruction_signatures)
Альтернативні калібрування
Альтернативні калібрування замінюють частини калібрування за замовчуванням інакше налаштованими параметрами. Кожне альтернативне калібрування має ідентифікатор калібрування, а його доступність залежить від QPU.
Щоб використати альтернативне калібрування, передай його calibration_id під час отримання бекенда. Ціль (target) бекенда, а отже й транспілятор, використовує властивості інструкцій із цього калібрування, а завдання примітивів, які ти запускаєш на бекенді, виконуються з ним.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Альтернативні калібрування доступні не на всіх QPU.
Калібрування повільних вентилів
Калібрування повільних вентилів налаштовують вентиль cz так, щоб він був повільнішим, ніж у калібруванні за замовчуванням. Повільніші вентилі cz можуть покращити продуктивність для великомасштабних робочих процесів оцінювання спостережуваних із пом'якшенням помилок, але також збільшують загальну тривалість твоєї схеми, що спричиняє додаткову декогеренцію.
На процесорах Heron калібрування повільних вентилів також доступні з двома режимами керування зміщенням двохрівневої системи (TLS):
-
DC-зміщення TLS оптимізоване для найкращої миттєвої продуктивності. Калібрування за замовчуванням використовує DC-зміщення TLS.
-
AC-зміщення TLS модулює зміщення TLS, щоб стабілізувати помилки пристрою в часі, що зберігає стабільність моделі шуму пристрою під час тривалих робочих процесів. Докладніше дивись «Noise stabilization» у Observable Estimation in the Absence of Classical Verification.
Процесори Nighthawk не використовують зміщення TLS, тому мають єдине калібрування повільних вентилів.
| Ідентифікатор калібрування | Сімейство процесорів | Зміщення TLS | Рекомендовано для |
|---|---|---|---|
| Немає (калібрування за замовчуванням) | Усі | DC (Heron) | Загальне використання. Особливо рекомендовано для робочих навантажень, бітові рядки яких можна класично дистилювати, як-от піковані схеми та робочі процеси SQD або SKQD, а також для робочих навантажень із виявленням помилок. |
slow_gates_dc | Heron | DC | Великомасштабні робочі процеси оцінювання спостережуваних, особливо ті, що використовують евристичне пом'якшення помилок, як-от екстраполяція до нульового шуму (ZNE). |
slow_gates_ac | Heron | AC | Робочі процеси, що потребують стабільних рівнів помилок протягом довгих сесій. Наполегливо рекомендовано для робочих процесів із навчанням шуму, як-от імовірнісне підсилення помилок (PEA) та імовірнісне скасування помилок (PEC). |
slow_gates | Nighthawk | Не застосовується | Робочі процеси оцінювання спостережуваних, що використовують пом'якшення помилок, як-от ZNE, PEA та PEC. |
Наприклад:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Коли використовуєш slow_gates_ac, надсилай усі завдання робочого процесу в одну сесію, щоб вони виконувалися, поки шум пристрою залишається стабільним.
Перевірка тривалості вентилів
Оскільки калібрування повільних вентилів збільшують тривалість вентилів cz, порівняй тривалості з калібруванням за замовчуванням, щоб зрозуміти вплив на твою схему. Використай ціль (target) бекенда, щоб дізнатися тривалість вентиля cz у секундах для конкретної пари кубітів:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Оскільки ціль (target) відображає вибране калібрування, транспілюй свої схеми для бекенда, який використовує той самий calibration_id, на якому плануєш запускати.
Наступні кроки
- Дізнайся, як виконувати динамічні схеми з вимірюваннями посеред схеми.
- Використовуй постселекцію, щоб відфільтрувати результати, на які вплинув корельований шум.
- Прочитай про те, як здійснюється моніторинг, калібрування та бенчмаркінг квантових комп'ютерів IBM.