Перейти до основного вмісту
Цей проєкт у бета-версії. Знайшов(-ла) помилку? Відкрити issue на GitHub. Є запитання чи ідея? Запитати в Discussions — будемо раді твоєму відгуку!
Яка якість перекладу на цій сторінці?

Спеціально відкалібровані інструкції

За замовчуванням квантові вентилі та операції зчитування на квантових комп'ютерах 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_dcHeronDCВеликомасштабні робочі процеси оцінювання спостережуваних, особливо ті, що використовують евристичне пом'якшення помилок, як-от екстраполяція до нульового шуму (ZNE).
slow_gates_acHeronACРобочі процеси, що потребують стабільних рівнів помилок протягом довгих сесій. Наполегливо рекомендовано для робочих процесів із навчанням шуму, як-от імовірнісне підсилення помилок (PEA) та імовірнісне скасування помилок (PEC).
slow_gatesNighthawkНе застосовуєтьсяРобочі процеси оцінювання спостережуваних, що використовують пом'якшення помилок, як-от 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, на якому плануєш запускати.

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

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