Вступ до примітивів
Package versions
The code on this page was developed using the following requirements. We recommend using these versions or newer.
qiskit[all]~=2.3.0
qiskit-ibm-runtime~=0.43.1
Бета-версія нової моделі виконання вже доступна. Направлена модель виконання забезпечує більшу гнучкість при налаштуванні робочого процесу пом'якшення помилок. Дивись посібник Directed execution model для отримання додаткової інформації.
Чому Qiskit запровадив примітиви?
Подібно до перших днів класичних комп'ютерів, коли розробникам доводилося безпосередньо маніпулювати регістрами CPU, ранній інтерфейс до QPU просто повертав необроблені дані з керуючої електроніки.
Це не було великою проблемою, поки QPU знаходилися в лабораторіях і дозволяли прямий доступ лише дослідникам.
Усвідомлюючи, що більшість розробників не зобов'язана і не повинна розбиратися в перетворенні таких сирих даних на нулі та одиниці, Qiskit запровадив backend.run — першу абстракцію для доступу до QPU в хмарі. Це дозволило розробникам
працювати зі звичним форматом даних і зосередитися на загальній картині.
Коли доступ до QPU став більш поширеним і розроблялося дедалі більше квантових алгоритмів,
знову виникла потреба в абстракції вищого рівня. У відповідь Qiskit запровадив
інтерфейс примітивів, оптимізований для двох основних завдань у розробці квантових алгоритмів:
оцінки очікуваних значень (Estimator) і вибірки схем (Sampler). Мета знову полягає в тому,
щоб допомогти розробникам більше зосереджуватися на інноваціях і менше на перетворенні даних. Інтерфейс примітивів замінює інтерфейс backend.run, оскільки Sampler забезпечує той самий прямий доступ до апаратного забезпечення, який пропонував backend.run.
Що таке примітив?
Обчислювальні системи побудовані на кількох рівнях абстракції. Абстракції дозволяють тобі зосередитися на певному рівні деталей, необхідному для виконання поточного завдання. Чим ближче до апаратного забезпечення, тим нижчий рівень абстракції потрібен (наприклад, може знадобитися переміщувати або маніпулювати даними на рівні інструкцій CPU). Чим складніше з авдання, яке ти хочеш виконати, тим вищим буде рівень абстракцій (наприклад, ти можеш використовувати програмну бібліотеку для виконання алгебраїчних обчислень).
У цьому контексті примітив — це найменша інструкція обробки, найпростіший будівельний блок, з якого можна створити щось корисне для певного рівня абстракції.
Останній прогрес у квантових обчисленнях збільшив потребу в роботі на вищих рівнях абстракції. Оскільки галузь рухається до більших квантових процесорних блоків (QPU) і складніших робочих процесів, акцент зміщується від взаємодії з окремими сигналами кубітів до розгляду квантових пристроїв як систем, що виконують необхідні завдання.
Два найпоширеніші завдання для квантових комп'ютерів — це вибірка квантових станів і обчислення очікуваних значень. Ці завдання мотивували розробку примітивів Qiskit: Estimator та Sampler.
- Estimator обчислює очікувані значення спостережуваних величин відносно станів, підготовлених квантовими схемами.
- Sampler виконує вибірку вихідного регістру з виконання квантової схеми.
Коротко кажучи, обчислювальна модель, запроваджена примітивами Qiskit, наближає квантове програмування на один крок до того, де сьогодні знаходиться класичне програмування, де акцент менше на деталях апаратного забезпечення і більше на результатах, яких ти намагаєшся досягти.
Визначення та реалізації примітивів
Існує два типи примітивів Qiskit: базові класи та їхні реалізації. Примітиви Qiskit визначені відкритими базовими класами примітивів, що знаходяться в Qiskit SDK (у модулі qiskit.primitives). Провайдери (наприклад, Qiskit Runtime) можуть використовувати ці базові класи для створення власних реалізацій Sampler і Estimator. Більшість користувачів взаємодіятимуть із реалізаціями провайдерів, а не з базовими примітивами.