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

Вибіркова квантова діагоналізація (SQD)

Цей пакет реалізує вибіркову квантову діагоналізацію (SQD) — техніку знаходження власних значень і власних векторів квантових операторів, таких як Гамільтоніан квантової системи [1–6]. Вона може працювати з Гамільтоніанами, вираженими як лінійні комбінації операторів Паулі або ферміонних операторів другого квантування. Робочі процеси на основі SQD можна запускати на сучасних квантових комп'ютерах, і було показано, що вони масштабуються до розмірів задач, недосяжних для варіаційних методів, і навіть поза межами досяжності точних класичних методів діагоналізації.

Робочі процеси на основі SQD спочатку передбачають підготовку одного або кількох квантових станів на квантовому пристрої та взяття з них вибірок. Потім для обробки цих зашумлених вибірок використовується класичні розподілені обчислення. Ця обробка відбувається ітеративно у два кроки: спочатку крок відновлення конфігурацій виправляє зашумлені вибірки, використовуючи інформацію про вхідну задачу; потім Гамільтоніан проєктується та діагоналізується в підпросторі, натягнутому на ці вибірки. Ці кроки повторюються самоузгоджено до збіжності. Результатом є наближене найменше власне значення (енергія) та власний стан із найнижчою енергією заданого Гамільтоніана. SQD стійкий до вибірок, спотворених квантовим шумом; більше того, поки з квантового комп'ютера можна отримати корисний сигнал, результат SQD буде нечутливим до зашумлених бітових рядків.

qiskit-addon-sqd на практиці можна використовувати для класичної обробки вибірок, отриманих із різноманітних квантових circuit. Наприклад:

  1. Варіаційний ansatz circuit з параметрами, підібраними так, щоб вибірки з circuit давали електронні конфігурації, на яких цільова хвильова функція (наприклад, основний стан) має значну підтримку. Це привабливо для хімічних застосувань, де Гамільтоніани можуть мати мільйони членів взаємодії [1]. Приклад такого підходу в хімії з використанням LUCJ circuit дивись у навчальному посібнику про наближення енергії основного стану молекули N2.
  2. Набір базисних станів Крилова готується на зростаючих часових інтервалах. За умови хорошого початкового стану та розрідженості основного стану доведено, що цей підхід ефективно збігається. Оскільки потрібно готувати circuit тротеризованої часової еволюції на квантовому пристрої, цей підхід найкращий для застосувань до ґраткових моделей [2], а не до складних багаточастинкових Гамільтоніанів, як у квантовій хімії. Приклад такого підходу для ферміонних ґраткових Гамільтоніанів дивись у навчальному посібнику про наближення енергії основного стану спрощеної моделі Андерсона з однією домішкою.
  3. Набір базисних станів Крилова, реалізований за допомогою випадкової компіляції qDRIFT оператора часової еволюції. Цей підхід дає circuit меншої глибини порівняно з декомпозиціями часової еволюції на основі Троттера, а отже може використовуватися для Гамільтоніанів квантової хімії. Цю техніку було застосовано до енергії основного стану поліциклічних ароматичних вуглеводнів [6].

Початок роботи​

Простий посібник, який допоможе тобі швидко почати роботу з цим пакетом, доступний у посібнику зі швидкого старту.

Приклади використання​

Техніку вибіркової квантової діагоналізації можна використовувати для реалізації різноманітних робочих процесів. Деякі приклади, де її було використано:

Технічне обговорення​

Розміри систем і обчислювальні вимоги​

Обчислювальна вартість SQD визначається насамперед викликами розв'язувача власних станів. На кожному кроці ітерації самоузгодженого відновлення конфігурацій виконується n_batches викликів розв'язувача власних станів. Різні виклики є тривіально паралельними. У цьому туторіалі ці виклики розташовані всередині циклу for. Наполегливо рекомендуємо виконувати ці виклики паралельно.

Функція qiskit_addon_sqd.fermion.solve_fermion() є багатопотоковою та здатна працювати із системами з ~25 просторовими орбіталями та ~10 електронами з розмірностями підпростору ~$10^7$, використовуючи ~10-30 ядер.

Вибір розмірності підпростору​

Вибір розмірності підпростору впливає на точність і час роботи розв'язувача власних станів. Чим більший підпростір, тим точніше обчислення, але тим більші час виконання та вимоги до пам'яті. Оптимальний розмір підпростору для заданої системи невідомий; тому можна провести дослідження збіжності за розмірністю підпростору, як описано в цьому посібнику.

Обмеження розмірності підпростору​

Аргумент samples_per_batch функції qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() задає кількість бітових рядків у кожному батчі й тим самим опосередковано керує розмірністю підпростору: у задачах квантової хімії його значення задає верхню межу розмірності підпростору. Розмірність, що виходить насправді, залежить від того, скільки з вибраних бітових рядків різні, і вона зростає в ході ітерацій самоузгодженого відновлення конфігурацій, тому наперед невідома. Докладніше дивись у цьому прикладі.

Аргумент max_dim тієї самої функції обмежує розмірність безпосередньо, обмежуючи кількість рядків CI, що зберігаються в кожному спіновому секторі. Оскільки підпростір натягується на декартів добуток двох спінових секторів, max_dim=d обмежує розмірність підпростору значенням d**2, тоді як кортеж max_dim=(d_a, d_b) обмежує спін-альфа та спін-бета сектори окремо, обмежуючи розмірність підпростору значенням d_a * d_b (за symmetrize_spin=True обидві межі мають бути рівними). Коли батч дає більше рядків CI, ніж дозволяє межа, переважно зберігаються рядки, запитані через include_configurations, і ті, що перенесені з попередньої ітерації, а решта місць заповнюється найчастіше вибираними рядками. Оскільки max_dim обмежує розмір найбільшої діагоналізації, яку доведеться виконати розв'язувачу власних станів, це зручний спосіб утримати розв'язувач у межах бюджету часу та пам'яті. Докладніше дивись у цьому посібнику.

Розв'язувачі​

Кроки проєкції та діагоналізації виконуються класичним розв'язувачем. Тут ми надаємо два універсальні розв'язувачі: один для ферміонних систем, інший для кубітних систем. Користувачі можуть підключити інші розв'язувачі, які можуть бути ефективнішими для конкретних систем.

Trim SQD​

Стандартний SQD діагоналізує кожен підвибраний батч незалежно й зберігає найкращий результат, тому кількість конфігурацій, які він може розглянути, обмежена тим, що вміщує один прийнятний за вартістю підпростір. Trim SQD натомість розбиває бітові рядки на батчі, виконує проміжну діагоналізацію кожного батча, а потім виконує більшу діагоналізацію, використовуючи детермінанти з найбільшою вагою з кожного розбиття. Цей метод ґрунтується на спільному дослідженні Cleveland Clinic Foundation, RIKEN та IBM [7], і його можна ввімкнути, передавши об'єкт TrimPolicy у функцію diagonalize_fermionic_hamiltonian().

Участь у розробці​

Вихідний код доступний на GitHub.

Посібник розробника розташований у CONTRIBUTING.md у корені репозиторію цього проєкту. Беручи участь, ти погоджуєшся дотримуватися кодексу поведінки Qiskit.

Для відстеження запитів і помилок ми використовуємо GitHub issues.

Цитування цього пакета​

Якщо ти використовуєш цей пакет у своєму дослідженні, скористайся файлом CITATION.bib у репозиторії цього проєкту, щоб процитувати відповідні джерела.

Подяки​

Цей пакет містить необов'язкову стратегію вибірки в циклі самоузгодженого відновлення конфігурацій, яка відсікає детермінанти на основі результатів проміжної діагоналізації. Реалізація ґрунтується на спільному дослідженні Cleveland Clinic Foundation, RIKEN та IBM. Якщо ти використовуєш цю можливість у своєму дослідженні, будь ласка, також процитуй статтю, цитування якої можна знайти у файлі CITATION.bib з ключем цитування merz2026crossing. Очікується, що реалізація повного робочого процесу з цієї статті незабаром стане доступною на GitHub.

Ліцензія​

Apache License 2.0

Політика застарівання​

Ми дотримуємося семантичного версіювання. Іноді ми можемо вносити несумісні зміни, щоб покращити досвід користувача. Коли це можливо, ми зберігатимемо старі інтерфейси й позначатимемо їх як застарілі, доки вони можуть співіснувати з новими. Кожне суттєве покращення, несумісна зміна або застарівання будуть задокументовані в примітках до випуску.

Посилання​

  1. Javier Robledo-Moreno, et al., Chemistry Beyond Exact Solutions on a Quantum-Centric Supercomputer, arXiv:2405.05068 [quant-ph].

  2. Jeffery Yu, et al., Quantum-Centric Algorithm for Sample-Based Krylov Diagonalization, arXiv:2501.09702 [quant-ph].

  3. Keita Kanno, et al., Quantum-Selected Configuration Interaction: classical diagonalization of Hamiltonians in subspaces selected by quantum computers, arXiv:2302.11320 [quant-ph].

  4. Kenji Sugisaki, et al., Hamiltonian simulation-based quantum-selected configuration interaction for large-scale electronic structure calculations with a quantum computer, arXiv:2412.07218 [quant-ph].

  5. Mathias Mikkelsen, Yuya O. Nakagawa, Quantum-selected configuration interaction with time-evolved state, arXiv:2412.13839 [quant-ph].

  6. Samuele Piccinelli, et al., Quantum chemistry with provable convergence via randomized sample-based Krylov quantum diagonalization, arXiv:2508.02578 [quant-ph].

  7. Kenneth M. Merz Jr., et al., Crossing the 12,000-atom barrier with heterogeneous quantum-classical supercomputing: quantum chemistry of protein-ligand complexes, arXiv:2605.01138 [quant-ph].