Ініціалізація твого акаунта IBM Quantum Compute Service
Перед використанням IBM Quantum® Compute Service потрібно ініціалізувати (створити екземпляр) свого облікового запису, надавши (завантаживши) облікові дані. Ці дані можна вводити вручну щоразу при ініціалізації IBM Quantum Compute Service або зберегти для повторного використання.
- Якщо ти використовуєш публічний комп'ютер або інше ненадійне середовище, скористайся інструкціями зі сторінки Ініціалізація сервісу в ненадійному середовищі.
- Перейди до цих інструкцій, якщо хочеш підключитися через REST API замість Qiskit.
- За потреби скористайся цією інформацією, щоб налаштувати брандмауер для доступу до API-ендпоінтів IBM Quantum.
Перш ніж почати
Переконайся, що виконав такі кроки:
-
Переконайся, що є членом облікового запису IBM Cloud. Інструкції дивись у розділі Налаштування облікового запису IBM Cloud.
-
Створи (або отримай доступ до) хоча б один екземпляр. Виконай такі кроки для перевірки:
-
Увійди на IBM Quantum Platform.
-
Переконайся, що в перемикачі акаунтів у заголовку обрано правильний акаунт і регіон.
-
Якщо в тебе відображається один або більше екземплярів — цей крок виконано. Інакше створи екземпляр.
-
-
Переконайся, що працюєш у активному Python-середовищі зі встановленими Qiskit SDK і
qiskit-ibm-runtime. -
Активуй віртуальне середовище Python і запусти Python у ньому.
Знайди свої облікові дані
-
Знайди свій API-ключ (також відомий як API token). На панелі керування створи API-ключ, а потім скопіюй його в надійне місце для подальшої автентифікації. Токен більше не буде видно. Зверни увагу, що один API-ключ можна використовувати для підключення до будь-якого регіону.
-
Необов'язково: знайди потрібний екземпляр на сторінці Instances. Наведи курсор на його CRN, клацни іконку копіювання, а потім збережи в надійному місці для ідентифікації екземпляра.
Підключи Qiskit до екземпляра IBM Quantum Compute Service
Ці інструкції розраховані на qiskit_ibm_runtime v0.42 або новіший. Деякі функції недоступні в старіших версіях qiskit_ibm_runtime. У таких випадках завжди вказуй значення для channel, token і instance — явно або через збережений акаунт.
Нижче наведено базовий код для підключення Qiskit до екземпляра Quantum Compute. Проте є кілька способів налаштувати параметри QiskitRuntimeService відповідно до твоїх потреб — вони описані в наступних розділах.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService(channel=<channel>,
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
token=<your-API_KEY>,
instance=<instance_CRN>)
Канал за замовчуванням — ibm_quantum_platform. Оскільки це майже завжди правильний вибір, у прикладах його не вказано.
Швидкий старт: явне зазначення облікових даних
Найшвидший спосіб запустити екземпляр QiskitRuntimeService — метод прямої ініціалізації: явно вказувати API-токен (ключ) і CRN (ідентифікатор екземпляра) щоразу при ініціалізації IBM Quantum Compute Service. За потреби дивись розділ Знайди свої облікові дані.
from qiskit_ibm_runtime import QiskitRuntimeService
# For `token`, use the 44-character API_KEY you created
# and saved from the IBM Quantum Platform dashboard
service = QiskitRuntimeService(token=<cloud_api_key>,
instance=<instance_CRN>)
Цей підхід надійний, але може бути незручним, якщо потрібно щоразу вводити одні й ті самі дані. Щоб уникнути повторного введення облікових даних, у довіреному Python-середовищі (наприклад, на особистому ноутбуці або робочій станції) можна використовувати збережені облікові дані — це описано в наступному розділі.
Хоча параметр instance є необов'язковим, рекомендується завжди його вказувати, якщо тільки ти не хочеш використовувати один сервіс для роботи з кількома екземплярами. У такому випадку дивись розділ автоматичний вибір екземпляра.
Швидкий старт: використання збережених облікових даних
Якщо ти вже зберіг облікові дані, використовуй наведений нижче код для застосування облікових даних за замовчуванням. Інструкції зі збереження облікових даних дивись у розділі Збережи свої облікові дані.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService()
...
Якщо ти зберіг кілька наборів облікових даних із власними назвами — наприклад, для відкритого і преміум-доступу — використовуй такий код для завантаження конкретного набору.
from qiskit_ibm_runtime import QiskitRuntimeService
# run every time you need the service
service = QiskitRuntimeService(name="<name_of_saved_credentials>")
...
Особливості завантаження збережених облікових даних
-
Якщо ти ініціалізуєш сервіс із
tokenіnameодночасно,tokenігнорується і завантажуються дані з акаунтаname.У наведеному нижче прикладі сервіс завантажує дані з
account_Aі не використовуєtoken_B:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(token="token_B", name="account_A") -
Якщо при ініціалізації сервісу вказати
nameіinstance, сервіс намагається завантажити акаунтnameта підключитися до вказаногоinstance. При будь-якому конфлікті виводиться попередження.У наведеному нижче прикладі сервіс намагається завантажити облікові дані для
account_Aі використовувати екземплярCRN_B— навіть якщо вaccount_Aвказано інший екземпляр:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(instance="CRN_B", name="account_A") -
Сервіс намагається завантажити збережений акаунт за замовчуванням лише тоді, коли при ініціалізації не вказано ні
token, ніname. Однак якщо явно вказаноinstance, сервіс намагається підключитися до цього екземпляра з використанням облікових даних за замовчуванням. При будь-якому конфлікті виводиться попередження.У наведеному нижче прикладі сервіс намагається завантажити облікові дані за замовчуванням і використовувати екземпляр
CRN_B— навіть якщо в акаунті за замовчуванням вказано інший екземпляр:from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService(instance="CRN_B") -
Якщо збережено кілька наборів облікових даних, але при ініціалізації сервісу не вказано жодного і акаунт за замовчуванням відсутній — використовується той, чия назва стоїть останньою в алфавітному порядку.
У наведеному нижче прикладі користувач зберіг акаунти з назвами "my_premium" і "my_open", але не позначив жоден як типовий. Потім сервіс було ініціалізовано таким кодом. У цьому випадку використовуються облікові дані "my_premium":
from qiskit_ibm_runtime import QiskitRuntimeServiceservice = QiskitRuntimeService() -
Якщо постійно з'являється помилка «401 Unauthorized», можливо, ти намагаєшся використати bearer token замість API-ключа.
Автоматичний вибір екземпляра
Якщо при ініціалізації сервісу вказати токен, але не вказати CRN екземпляра, QiskitRuntimeService автентифікується в акаунті, ідентифікованому токеном, і автоматично обирає найбільш відповідний екземпляр для запитуваного завдання. Якщо в твоєму акаунті є кілька екземплярів, сервіс автоматично вибирає серед доступних, залежно від запитуваного ресурсу та таких параметрів QiskitRuntimeService (якщо встановлені): plans_preference, region, tags.
-
plans_preference: типи планів екземплярів, яким надається пріоритет. Наприклад, якщо передати [open], доступні лише екземпляри Open Plan. Допустимі значення:open,premium,pay-as-you-go,flexіon-prem. Якщоplans_preferenceне вказано, безплатні плани мають пріоритет над платними. -
region: регіон екземпляра. Допустимі значення:us-eastіeu-de. -
tags: теги екземпляра. Приймає список рядків із назвами тегів.
Можна налаштувати збережені облікові дані для автоматичного вибору екземпляра.
Екземпляр вибирається в такому порядку:
-
Якщо твій акаунт має доступ лише до одного екземпляра — він обирається за замовчуванням.
-
Якщо використовуються збережені облікові дані і в них вказано екземпляр — використовується він. Дивись Особливості завантаження збережених облікових даних.
-
Якщо в акаунті є кілька екземплярів із доступом до запитуваного QPU, система використовує вказані уподобання плану для вибору плану й екземпляра. Для
qiskit-ibm-runtimev0.42 і новіших безплатні плани мають пріоритет за замовчуванням. -
Якщо в акаунті є доступ до кількох екземплярів, але лише один має доступ до запитуваного QPU — обирається саме він. Якщо цей екземпляр не пов'язаний із безплатним планом, за його використання стягуватиметься плата.
Приклади
У цьому прикладі сервіс шукає серед усіх екземплярів, доступних акаунту, ті, що мають доступ до вказаного Backend:
service = QiskitRuntimeService(token=<your-API_KEY>)
У цьому прикладі сервіс шукає серед усіх екземплярів акаунта в регіоні ЄС ті, що мають доступ до вказаного Backend:
service = QiskitRuntimeService(token=<your-API_KEY>, region="eu-de")
У цьому прикладі сервіс шукає серед усіх екземплярів акаунта з тегом services ті, що мають доступ до вказаного Backend:
service = QiskitRuntimeService(token=<your-API_KEY>, tags=['services'])
У цьому прикладі сервіс шукає серед усіх преміум і відкритих екземплярів акаунта ті, що мають доступ до вказаного Backend. Якщо Backend доступний і в Premium Plan, і в Open Plan, пріоритет надається Premium Plan, оскільки premium вказано першим у plans_preference.
service = QiskitRuntimeService(token=<your-API_KEY>,
plans_preference=['premium', 'open'])
Визначення обраного екземпляра
Обраний екземпляр повертається як попередження. Крім того, можна запустити service.active_instance(), щоб дізнатися активний екземпляр.
Локальне тестування з qiskit-ibm-runtime
Клас QiskitRuntimeService можна ініціалізувати з channel=local для локальної симуляції. У цьому випадку автентифікація не потрібна і не потрібно вказувати значення для token або instance. Тому не рекомендується зберігати локальний акаунт — натомість можна використовувати пряму ініціалізацію:
from qiskit_ibm_runtime import QiskitRuntimeService
# Initialize for local testing
service = QiskitRuntimeService(channel="local")
Наступні кроки
- Створюй екземпляри та керуй ними.
- Ініціалізуй сервіс у ненадійному середовищі.
- Налаштуй використання IBM Quantum Platform через REST API.
- Виконай кроки з посібника Run your first circuit on hardware, щоб написати й запустити квантову програму.