Вибір правильного режиму виконання
Робочі навантаження утилітарного масштабу можуть виконуватися впродовж багатьох годин, тому важливо ефективно планувати як класичні, так і квантові ресурси для оптимізації виконання. Режими виконання дають змогу гнучко балансувати між вартістю та часом, щоб оптимально використовувати ресурси для твоїх робочих навантажень. Під час вибору режиму виконання слід враховувати кілька аспектів: загальний час виконання (максимальний час існування, або TTL) і час між завданнями (інтерактивний TTL).
Переваги кожного режиму наведено нижче:
-
Пакетний (Batch)
-
Увесь пакет завдань планується разом, і кожне з них не потребує додаткового часу в черзі.
-
Класичні обчислення завдань, наприклад компіляція, виконуються паралельно. Тому запуск кількох завдань у пакетному режимі значно швидший, ніж послідовний.
-
Зазвичай затримка між завданнями мінімальна, що допомагає уникнути дрейфу.
-
Якщо ти розбиваєш робоче навантаження на кілька завдань і запускаєш їх у batch mode, то можеш отримувати результати від окремих завдань — це забезпечує більшу гнучкість у роботі. Наприклад, якщо результати якогось завдання не відповідають очікуванням, можна скасувати решту завдань. А якщо одне завдання зазнає невдачі — достатньо повторно надіслати лише його, а не перезапускати весь обсяг роботи.
-
Загалом дешевший за сесії.
-
-
Сесія (Session)
-
Уся функціональність batch mode (але з підвищеним використанням; докладніше про розрахунок використання — у розділі Використання робочого навантаження).
-
Виділений і ексклюзивний доступ до QPU протягом активного вікна сесії.
-
Корисний для робочих навантажень, у яких не всі вхідні дані готові з самого початку, для ітеративних робочих навантажень, що потребують класичної постобробки перед наступним запуском, а також для експериментів, які мають виконуватися якомога щільніше один за одним.
-
-
Завдання (Job)
-
Найпростіший варіант для запуску невеликого експерименту.
-
Може розпочатися швидше, ніж у batch mode.
-
Рекомендації та найкращі практики
Загалом використовуй batch mode, якщо тільки у твоїх робочих навантаженнях не всі вхідні дані готові з самого початку.
-
Використовуй пакетний режим для одночасного надсилання кількох примітивних завдань, щоб скоротити час обробки.
-
Використовуй сесійний режим для ітеративних робочих навантажень або якщо потрібен виділений доступ до QPU.
-
Завжди використовуй режим завдання для надсилання одного примітивного запиту.
-
Оскільки сесії загалом дорожчі, рекомендується використовувати пакетний режим щоразу, коли додаткові переваги сесій не потрібні.
-
Користувачі тарифного плану Open не можуть надсилати сесійні завдання.
Для забезпечення найефективнішого використання режимів виконання рекомендуються такі практики:
-
З кожним запуском завдання пов'язані фіксовані накладні витрати. Загалом, якщо кожне твоє завдання використовує менше однієї хвилини часу QPU, розглянь можливість об'єднання кількох завдань в одне більше (це стосується всіх режимів виконання). «Час QPU» — це час, який комплекс QPU витрачає на обробку твого завдання.
-
Якщо кожне з твоїх завдань споживає більше однієї хвилини часу QPU або об'єднання завдань практично неможливе, ти все одно можеш запускати кілька завдань паралельно. Кожне завдання проходить як класичну, так і квантову обробку. Хоча QPU може обробляти лише одне завдання за раз, до п'яти класичних завдань можуть оброблятися паралельно. Ти можеш скористатися цим, надсилаючи кілька завдань у пакетному або сесійному режимі виконання.
Наведене вище — загальні рекомендації, тому варто налаштувати своє робоче навантаження, щоб знайти оптимальне співвідношення, особливо під час використання сесій. Наприклад, якщо ти використовуєш сесію для отримання ексклюзивного доступу до бекенду, розглянь можливість розбиття великих завдань на менші та їх паралельного виконання. Це може виявитися економнішим, бо скорочує реальний час виконання.
Приклади
Запуск квантового варіаційного алгоритму
Запуск квантового варіаційного алгоритму зазвичай передбачає такий процес:
-
Підготувати анзац.
-
Обчислити функцію вартості на QPU.
-
Взяти результат попереднього кроку і пропустити його через класичний оптимізатор.
-
Скоригувати параметри відповідно до результату кроку (3), потім повернутися до кроку (2).
У цьому випадку, якщо ти використовуєш job mode або batch mode, кожне завдання, згенероване на кроці (2), має знову пройти чергу. Це суттєво збільшує тривалість експерименту (реальний час виконання) через час очікування в черзі. Також може знадобитися більше часу для збіжності через дрейф пристрою. Тобто кожна ітерація мала б давати кращий результат, але дрейф пристрою може погіршувати наступні результати.
Крім того, якщо ти використовуєш PEA або PEC, ти можеш вивчити модель шуму один раз і застосовувати її до наступних завдань під час роботи у виділеній сесії. Зазвичай це не працює з batch mode або job mode, оскільки модель шуму може застаріти до того, як наступне завдання вийде з черги.
Порівняння налаштувань пом'якшення помилок
Щоб порівняти ефекти доступних методів пом'якшення помилок, можна дотримуватися такого процесу:
-
Побудувати Circuit та спостережувану величину.
-
Надіслати примітивні завдання з різними комбінаціями налаштувань пом'якшення помилок.
-
Побудувати графіки результатів, щоб спостерігати ефекти різних налаштувань.
У цьому випадку всі завдання (пов'язані між собою, але незалежні) доступні з самого початку. Під час використання batch mode вони плануються колективно, тому чекати в черзі потрібно лише один раз. Крім того, оскільки метою є порівняння ефектів різних методів пом'якшення помилок, вигідно, щоб вони виконувалися якомога ближче один до одного. Отже, batch mode буде хорошим вибором. Ці завдання можна виконувати й у сесії, але оскільки сесії загалом дорожчі, рекомендується використовувати batch mode щоразу, коли додаткова функціональність сесій не потрібна.