Перегляд деталей бекенду
Версії пакетів
Код на цій сторінці розроблено з використанням таких вимог. Рекомендуємо використовувати ці версії або новіші.
qiskit-ibm-runtime~=0.46.1
Ця сторінка пояснює, як знайти інформацію про твої доступні бекенди.
Перелік або фільтрація бекендів
Перелік доступних тобі бекендів
Ти можеш використовувати Qiskit або IBM Quantum Platform для перегляду списку доступних тобі бекендів чи пошуку конкретного бекенду.
QPU, розміщені в IBM Cloud®, мають назви, що починаються з ibm_*. Усім QPU присвоюють назву міста — наприклад, ibm_kingston. Ця назва не вказує на місце фактичного розташування QPU.
- Перегляд бекендів за допомогою Qiskit
- Перегляд бекендів на IBM Quantum Platform
Використовуй метод QiskitRuntimeService.backends(), як показано в наступному блоці коду. Цей метод пов ертає список екземплярів IBMBackend.
Щоб запустити наступний код, переконайся, що ти вже пройшов(ла) автентифікацію в сервісі. Докладніше дивись у розділі Налаштування акаунту IBM Cloud.
Щоб знайти конкретний бекенд, використовуй метод QiskitRuntimeService.backend() (зверни увагу, що тут використовується однина: backend), який приймає назву бекенду як вхідний параметр і повертає екземпляр IBMBackend, що представляє цей конкретний бекенд:
Щоб переглянути доступні тобі бекенди, перейди до списку бекендів на сторінці Обчислювальні ресурси (зверни увагу, що обраний регіон може впливати на перелік QPU). Натисни на значок фільтра та вибери «All my instances» або конкретну назву екземпляра, щоб побачити доступні QPU.
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
# Initialize your account
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
service.backends()
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
service.backend("ibm_fez")
<IBMBackend('ibm_fez')>
# Optionally pass in an instance, region, or both, to
# further filter the backends.
service = QiskitRuntimeService()
service.backends(simulator=False, operational=True, min_num_qubits=100)
[<IBMBackend('ibm_boston')>,
<IBMBackend('ibm_pittsburgh')>,
<IBMBackend('ibm_fez')>,
<IBMBackend('ibm_marrakesh')>,
<IBMBackend('ibm_kingston')>,
<IBMBackend('ibm_miami')>]
Якщо ти увійшов(ла) до конкретного екземпляра або регіону, або якщо ти ініціалізував(ла) сервіс із конкретним екземпляром або регіоном за допомогою QiskitRuntimeService(), повертаються лише бекенди, доступні тобі в цьому екземплярі або регіоні.
Фільтрація бекендів
- Фільтрація за властивостями за допомогою Qiskit
- Фільтрація за властивостями на IBM Quantum Platform
Ти можеш фільтрувати доступні бекенди за їхньою конфігурацією або статусом. Для більш загальних фільтрів встанови аргумент filters у функцію, яка приймає об'єкт бекенду та повертає True, якщо він відповідає твоїм критеріям. Докладніше дивись у документації API.
Наступний код повертає лише бекенди, які відповідають таким критеріям і доступні тобі на твоєму поточно вибраному екземплярі:
- Є реальними квантовими пристроями (
simulator=False) - Наразі працюють (
operational=True) - Мають щонайменше сто кубітів (
min_num_qubits=100)
Схожий метод — QiskitRuntimeService.least_busy(), який приймає ті самі фільтри, що й backends(), але повертає бекенд, що відповідає фільтрам і має найменшу кількість завдань у черзі:
Щоб переглянути доступні тобі бекенди, перегляни таблицю на сторінці Обчислювальні ресурси. Натисни на значок фільтра, щоб побачити параметри фільтрації. Ти можеш фільтрувати за типом процесора та статусом. Також зверни увагу, що таблицю можна сортувати за будь-яким стовпцем, навівши курсор на заголовок стовпця та натиснувши на стрілки, що з'являться.
service.least_busy(operational=True, min_num_qubits=100)
<IBMBackend('ibm_fez')>
Статична інформація про бекенд
Деяка інформація про бекенд не змінюється регулярно, наприклад його назва, версія, кількість кубітів, тип процесора (назва сімейства птахів, що вказує на топологію та приблизну кількість кубітів), а також типи підтримуваних функцій. Ця інформація доступна як атрибути об'єкта backend. Повний список атрибутів дивись у документації API IBMBackend. Детальнішу інформацію про версіонування дивись у розділі Версіонування QPU нижче.
Регіон бекенду (місцезнаходження дата-центру, де зберігатимуться та оброблятимуться твої дані й експерименти) зазначено в його детальній інформаційній картці на сторінці Обчислювальні ресурси на IBM Quantum Platform.
- Перегляд інформації про бекенд за допомогою Qiskit
- Перегляд інформації про бекенд на IBM Quantum Platform
Перейди на сторінку Обчислювальні ресурси, щоб переглянути таблицю всіх QPU, а потім натисни на назву будь-якого QPU, щоб відкрити його детальну інформаційну картку. Інформацію про бекенд знайди в розділі «Details» картки.
backend = service.backend("ibm_fez")
print(
f"Name: {backend.name}\n"
f"Version: {backend.backend_version}\n"
f"No. of qubits: {backend.num_qubits}\n"
f"Processor type: {backend.processor_type}\n"
)
Name: ibm_fez
Version: 1.3.37
No. of qubits: 156
Processor type: {'family': 'Heron', 'revision': '2'}
Версіонування QPU
Кожен QPU має номер версії у форматі X.Y.Z (основна.мінорна.ревізія). Схема, скомпільована для певного номера версії, гарантовано виконається на цьому QPU. Якщо змінюється номер ревізії, схема продовжить виконуватися. Якщо змінюється основний або мінорний номер, виконання схеми не гарантується, хоча може й відбутися.
Номер версії ревізії збільшується для виправлень, які не порушують роботу існуючої скомпільованої схеми.
Приклад коду раніше в цьому розділі демонструє, як знайти версію бекенду. На IBM Quantum Platform ти можеш переглянути версію в детальній інформаційній картці QPU (натисни на назву QPU в таблиці Обчислювальні ресурси, щоб відкрити картку).
Умови, за яких може змінюватися номер версії або ревізії, наведені в наступній таблиці.
| Основна версія | Мінорна версія | Версія ревізії |
|---|---|---|
| Зміни зр азка | Цикли прогрівання/охолодження | Оновлення програмного забезпечення QPU |
| Суттєві зміни керуючої електроніки | Заміна частини електроніки, якщо заміна помітно впливає на роботу | Ручні калібрування для підвищення точності |
| Переміщення QPU на нове місце, якщо це призводить до значних змін у поведінці | Тимчасове відключення вентиля через проблеми з калібруванням, якщо виправлення не можна легко зробити програмно | Незначні зміни електроніки, які не впливають на роботу |
| Зміна напрямку вентиля CNOT |
Підтримувані інструкції
Кожне сімейство процесорів нативно підтримує обмежений набір інструкцій. Цей набір включає однокубітні та двокубітні вентилі, а також невітарні операції, такі як measure і reset. Кожен вентиль у схемі має бути транспільований (транспілятором) до елементів підтримуваного набору інструкцій QPU, п ерш ніж він зможе виконатися на QPU.
Ти можеш переглянути підтримувані набори інструкцій для QPU за допомогою Qiskit. Сторінка Обчислювальні ресурси IBM Quantum Platform перелічує лише підтримувані унітарні вентилі (базові вентилі) для QPU.
- Пошук підтримуваних інструкцій за допомогою Qiskit
- Пошук базових вентилів на IBM Quantum Platform
Перейди на сторінку Обчислювальні ресурси, щоб переглянути таблицю всіх QPU, а потім натисни на назву будь-якого QPU, щоб відкрити його детальну інформаційну картку. Базові вентилі для цього QPU наведені в розділі «Details».
Таблиця підтримуваних інструкцій
| Категорія операції | Назва |
|---|---|
| Однокубітні вентилі | RZ, SX, X, ID, delay |
| Двокубітні вентилі | CZ, ECR |
| Дробові вентилі | RX (однокубітний), RZZ (двокубітний) |
| Невітарні інструкції | measure, reset, measure_*, delay |
| Керуючий потік | if_else (класичний зворотний зв'язок) |
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("ibm_kingston")
print(f"Backend: {backend.name}")
print(f" Processor type: {backend.processor_type}")
print(f" Supported instructions: {backend.supported_instructions}")
Backend: ibm_kingston
Processor type: {'family': 'Heron', 'revision': '2'}
Supported instructions: ['cz', 'id', 'delay', 'measure', 'measure_2', 'reset', 'rz', 'sx', 'x', 'if_else', 'store']
Динамічна інформація про бекенд
Бекенди також мають властивості, які змінюються щоразу, коли бекенд калібрується, наприклад час когерентності кубітів і коефіцієнти похибок операцій. Властивості бекенду оновлюються після завершення послідовності калібрування. Ці властивості можна використовувати при оптимізації квантових схем або для побудови моделей шуму для класичного симулятора. Дивись посібник Завдання калібрування для отримання додаткової інформації.
На IBM Quantum Platform ти можеш завантажити дані калібрування у файлі CSV. Натисни на QPU на сторінці Обчислювальні ресурси, щоб переглянути його детальну інформаційну картку, а потім натисни на значок завантаження у верхньому правому куті розділу «Calibration data».
Ти можеш отримати історичні дані властивостей бекенду в Qiskit за допомогою наступного коду:
backend.properties(datetime=<datetime>)
Властивості кубітів
Перейти до списку властивостей кубітів
backend.properties().qubit_property() поверт ає інформацію про фізичні атрибути кубітів. Він містить словник різних властивостей кубіта, кожна з яких поєднана зі своїм значенням і часовою міткою останнього калібрування.
Наступні приклади коду демонструють, як перелічити всі властивості або отримати конкретні властивості певного кубіта.
Перегляд властивостей кубітів
T1 (Час релаксації)
Час представляє середню тривалість перебування кубіта у збудженому стані до розпаду в основний стан внаслідок енергетичної релаксації. Цей параметр використовується для характеристики поведінки енергетичної релаксації кубіта та виражається в секундах (с).
| Перегляд за допомогою Qiskit | backend.properties().t1(<qubit>) |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit»; знайди медіанне значення в розділі «Details» |
T2 (Час дефазування)
Час позначає часовий масштаб, протягом якого кубіт зберігає фазову когерентність суперпозиції між станами та . Він враховує як енергетичну релаксацію, так і процеси чистого дефазування, надаючи уявлення про когерентні властивості кубіта. вимірюється з послідовності ехо Хана.
| Перегляд за допомогою Qiskit | backend.properties().t2(<qubit>) |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit»; знайди медіанне значення в розділі «Details» |
# fundamental physical properties of qubit 1
backend = service.backend("ibm_fez")
backend.qubit_properties(1)
QubitProperties(t1=0.00018243651954462543, t2=0.00020405172321184844, frequency=None)
# Retrieve qubit properties
qubit_index = 126 # Replace with your qubit index
qubit_props = backend.properties().qubit_property(qubit_index)
# Access specific properties
t1 = qubit_props.get("T1", (None,))[0]
t2 = qubit_props.get("T2", (None,))[0]
readout_error = qubit_props.get("readout_error", (None,))[0]
prob_meas0_prep1 = qubit_props.get("prob_meas0_prep1", (None,))[0]
prob_meas1_prep0 = qubit_props.get("prob_meas1_prep0", (None,))[0]
readout_length = qubit_props.get("readout_length", (None,))[0]
print(f"Qubit {qubit_index} Properties:")
print(f" T1: {t1} seconds")
print(f" T2: {t2} seconds")
print(f" Readout Error: {readout_error}")
print(f" P(0 | 1): {prob_meas0_prep1}")
print(f" P(1 | 0): {prob_meas1_prep0}")
print(f" Readout Length: {readout_length} seconds")
Qubit 126 Properties:
T1: 0.0001248478211384773 seconds
T2: 7.96150033446492e-05 seconds
Readout Error: 0.0244140625
P(0 | 1): 0.029052734375
P(1 | 0): 0.019775390625
Readout Length: 1.56e-06 seconds
Властивості інструкцій
Перейти до списку властивостей інструкцій
Атрибут backend.target — це об'єкт qiskit.transpiler.Target: об'єкт, що містить всю інформацію, необхідну для транспіляції схеми для цього бекенду. Це включає похибки та тривалості інструкцій. Наприклад, наступна комірка отримує властивості вентиля cz, що діє між кубітами 1 і 0.
Наступна комірка показує властивості операції вимірювання (включно з похибкою зчитування) на кубіті 0.
Перегляд властивостей інструкцій
prob-meas0-prep1
Цей параметр вказує на ймовірність вимірювання кубіта у стані 0, коли він призначений для підготовки у стані , що позначається як . Він відображає похибки в підготовці стану та вимірюванні (SPAM), зокрема похибки вимірювання у надпровідних кубітах.
| Перегляд за допомогою Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep1') |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit» |
prob-meas1-prep0
Аналогічно, цей параметр представляє ймовірність вимірювання кубіта у стані 1, коли він призначений для підготовки у стані , що позначається як . Як і prob_meas0_prep1, він відображає похибки SPAM, причому похибки вимірювання є основним джерелом у надпровідних кубітах.
| Перегляд за допомогою Qiskit | backend.properties().qubit_property(<qubit>, 'prob_meas0_prep0') |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit» |
Похибка 2Q (Heron та Nighthawk: CZ, Eagle: ECR)
Похибка 2Q на ребро з тієї самої серії вимірювань, що використовується для обчислення медіанної похибки 2Q. Найкраща похибка 2Q — це найменша похибка двокубітного вентиля на будь-якому ребрі пристрою, також з цієї серії вимірювань.
| Перегляд за допомогою Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2>] |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: наведи курсор на з'єднання кубітів у вигляді мапи або знайди значення в табличному поданні у стовпці похибки CZ (Heron та Nighthawk) або ECR (Eagle); знайди значення найкращої похибки 2Q в розділі «Details» |
Медіанна похибка 2Q (Heron: CZ, Eagle: ECR)
Середня точність вентиля двокубітної операції з рандомізованого бенчмаркінгу. Вимірюється «в ізоляції»: серії з мінімальним розділенням двох кубітів між ребрами. Цей рандомізований бенчмаркінг використовує чергові шари однокубітних операторів Кліффорда і двокубітних вентилів, тому остаточне значення похибки 2Q включає похибку шару однокубітних операторів Кліффорда.
| Обчислення за допомогою Qiskit | Слідуй прикладу в цьому ноутбуці GitHub спільноти Qiskit |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Details»; дані по кожному ребру також знайди в розділі «Calibration data» |
Похибка 2Q (пошарова)
Середня похибка на шаровий вентиль (EPLG) у ланцюжку з 100 кубітів. Середній EPLG вимірює середню похибку вентиля в шаровому ланцюжку з кубітів (=100 тут). Він отриманий з подібної величини, відомої як пошарова точність (LF), де EPLG = 4/5(1-LF), а пошарова точність — це процесна точність шарового ланцюжка з кубітів. Докладніше дивись у статті Benchmarking quantum processor performance at scale. Зауваж, що у статті EPLG визначено для похибки процесу, але для узгодженості з індивідуально зазначеними похибками вентилів тут воно наведено для середньої похибки вентиля, звідси множник 4/5.
На IBM Quantum Platform детальна інформаційна картка кожного QPU має розділ «Two-qubit gate error (layered)», що надає розширений вигляд найменшої похибки двокубітного вентиля (пошарової), виміряної як функція кількості кубітів у ланцюжку. Остаточне значення при довжині ланцюжка 100 — це значення, наведене в розділі «Details». На практиці вимірюють шість ланцюжків по 100 кубітів (попередньо відібраних на основі очікуваної оптимальної продуктивності), а значення, що зазначається для числа кубітів N, — це найменша похибка, знайдена в підланцюжку довжиною N, шляхом перебору шести ланцюжків по 100 кубітів.
| Обчислення за допомогою Qiskit | Слідуй прикладу в цьому ноутбуці GitHub спільноти Qiskit |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Details» та розширений вигляд у розділі «Two-qubit gate error (layered)» |
Похибка RZZ (Heron)
Похибка вентиля RZZ, усереднена по кутах RZZ з використанням варіанта рандомізованого бенчмаркінгу для довільних унітарних операцій.
| Перегляд за допомогою Qiskit | Важливо: переконайся, що ти встановив(ла) use_fractional_gates=True при завантаженні бекенду, тоді можна використовувати backend.target['rzz'][<qubit 1>, <qubit 2>] |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: вибери RZZ у спадному меню «Connection» та наведи курсор на з'єднання кубітів у вигляді мапи. Також можна вибрати похибку RZZ у спадному меню виводу графа або знайти значення в табличному поданні у стовпці «RZZ error» |
Похибка ID / √x (sx) / Pauli-X / RX
Похибка в дискретних однокубітних вентилях кінцевої тривалості, виміряна за допомогою рандомізованого бенчмаркінгу. Послідовність рандомізованого бенчмаркінгу включає вентилі SX, ID та X, і передбачається, що їх похибки однакові. Вентиль ID є затримкою тривалістю, рівною тривалості вентилів √X та X. Вентиль RX має таку саму тривалість, що й вентилі √X та X, з змінною амплітудою, тому зазначено, що він має ту саму похибку, що й ці вентилі.
| Перегляд за допомогою Qiskit | backend.target['<instruction>'][<qubit 1>, ] |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: спадне меню «Qubit» |
Похибка SX (медіанна)
Середня точність вентиля вентиля √X (SX) з рандомізованого бенчмаркінгу, вимірюється одночасно на всіх кубітах. Послідовність рандомізованого бенчмаркінгу включає вентилі SX, ID та X, і передбачається, що їх похибки однакові.
| Перегляд на IBM Quantum Platform | Розділ «Details» |
|---|
Похибка обертання навколо осі Z (RZ)
Похибка віртуального вентиля RZ. Зазначається як 0, оскільки ці операції виконуються програмно.
| Перегляд за допомогою Qiskit | backend.target['<instruction>'][<qubit 1>, ] |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: спадне меню «Connection» |
Похибка зчитування
Похибка зчитування кількісно визначає середню ймовірність неправильного вимірювання стану кубіта. Зазвичай вона обчислюється як середнє значення prob_meas0_prep1 та prob_meas1_prep0, надаючи єдину метрику точності вимірювання.
| Перегляд за допомогою Qiskit | backend.properties().readout_error(<qubit>) |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit» |
Похибка зчитування (медіанна)
Точність операції зчитування. Похибка зчитування вимірюється шляхом підготовки кубіта у стані 0 (1) і вимірювання ймовірності виходу у стані 1 (0). Зазначене значення є середнім цих двох похибок. Медіана береться по всіх кубітах.
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», розділ «Details» |
|---|
Тривалість однокубітного вентиля
Тривалість однокубітної операції вентиля. Зверни увагу, що значення, показані на IBM Quantum Platform, наведені в наносекундах. Значення, що повертаються в Qiskit, наведені в секундах.
| Перегляд за допомогою Qiskit | backend.target['<instruction>'][<qubit 1>, ].duration |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: спадне меню «Qubit» |
Тривалість вентиля (2Q вентилі)
Тривалість двокубітної операції вентиля. Зверни увагу, що значення, показані на IBM Quantum Platform, наведені в наносекундах. Значення, що повертаються в Qiskit, наведені в секундах.
| Перегляд за допомогою Qiskit | backend.target['<instruction>'][<qubit 1>, <qubit 2> ].duration |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration»: спадне меню «Qubit» |
Тривалість зчитування
Параметр тривалості зчитування визначає тривалість операції зчитування для кубіта. Він вимірює час від початку імпульсу вимірювання до завершення оцифровки сигналу, після чого система готова до наступної операції. Розуміння цього параметра важливе для оптимізації виконання схеми, особливо при включенні вимірювань посеред схеми.
| Перегляд за допомогою Qiskit |
|
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data», спадне меню «Qubit» |
backend.target["cz"][(1, 0)]
InstructionProperties(duration=6.8e-08, error=0.010202155482934266)
backend.target["measure"][(0,)]
InstructionProperties(duration=1.56e-06, error=0.025634765625)
Додаткові властивості
CLOPS (або CLOPS_h)
Операцій шарів схем на секунду (CLOPS) — це міра того, скільки шарів схеми 100×100 (апаратно-орієнтованої схеми) QPU може виконати за одиницю часу.
| Обчислення за допомогою Qiskit | Знайди код CLOPS на GitHub спільноти Qiskit |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Details» |
Статус
За допомогою BackendStatus ти можеш дізнатися статус QPU (наприклад, Active, Paused, Offline), а також кількість завдань у черзі.
| Перегляд за допомогою Qiskit | print(backend.status().status_msg), print(backend.status().pending_jobs) |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Details» |
Топологічна діаграма або карта зв'язності
Діаграма, що вказує на пари кубітів, між якими підтримуються двокубітні операції вентилів. Також називається картою зв'язності або зв'язністю. Кубіти представлені у вигляді кіл, а підтримувані двокубітні операції вентилів — у вигляді ліній, що з'єднують кубіти.
| Перегляд за допомогою Qiskit | from qiskit.visualization import plot_gate_map потім plot_gate_map(backend) |
|---|---|
| Перегляд на IBM Quantum Platform | Розділ «Calibration data»; натисни «Expand» для збільшеного вигляду |
Якщо бенчмаркінг кубіта або ребра не вдається протягом кількох днів — через низьку якість даних або інші внутрішні фактори — зазначене значення похибки вважається застарілим і відображатиметься як 1. Це не означає, що кубіт або ребро обов'язково непрацюючі або що похибка дорівнює 1; швидше, похибка вважається невизначеною, і слід бути обережним під час роботи з цим кубітом або вентилем.
Наступні кроки
- Дізнайся, як побудувати моделі шуму для класичної симуляції з шумом.
- Ознайомся з темою Етапи транспілятора, щоб дізнатися, як транспілятор використовує властивості бекенду для оптимізації схеми.
- Ознайомся з довідником API бекенду QiskitRuntime.