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

Qiskit Fermions

qiskit-fermions розширює Qiskit SDK інструментами для роботи з ферміонними системами. У межах своєї області він надає таке:

  • Ефективні структури даних для подання та маніпулювання ферміонними операторами в різних формах

  • Фреймворк для реалізації методів перетворення операторів (зокрема кодувань ферміонів у кубіти)

  • Бібліотеку ефективних реалізацій поширених методів перетворення

  • Фреймворк і бібліотеку вентилів для вираження ферміонних схем

  • Конвеєр транспіляції, інтегрований із процесом транспілятора Qiskit, для синтезу ферміонних схем у схеми на основі кубітів

Крім того, qiskit-fermions інтегрується з іншими інструментами екосистеми, зокрема:

  • ffsim для високорівневих операторів ansatz та ефективної симуляції ферміонних схем (див. Зв'язок з ffsim)

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

Schematic description of Qiskit Fermions

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

Усі ці можливості пояснені в кількох посібниках, які допоможуть тобі почати. Для огляду, що проходить саме через конвеєр, показаний вище, почни з посібника з одновимірної моделі Фермі-Габбарда.

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

Компоненти цього пакета використовувалися в дослідженнях, пов'язаних з такими статтями:

  • Рандомізована компіляція схем qDRIFT у [1].

  • Синтез відображення ферміонів на кубіти під час транспіляції у [2].

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

Задуми дизайну​

Цей пакет навмисно спроєктований у відповідності до Qiskit: він побудований на ядрі, реалізованому на Rust, і надає офіційні прив'язки до Python та C. Його API прагне бути схожим на Qiskit, щоб безшовно вписатися в робочі процеси користувачів, які мають досвід програмування в Qiskit.

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

Зв'язок з ffsim​

ffsim і qiskit-fermions розподіляють роботу, а не дублюють її. ffsim відповідає за високорівневі оператори ansatz та їх швидку симуляцію: він будує оператор UCJ або UCCSD з амплітуд coupled-cluster чи вектора параметрів і симулює ферміонні стани в компактному просторі з фіксованим числом частинок. qiskit-fermions відповідає за схемну частину: він виражає цей оператор як FermionicCircuit на ферміонних модах і транспілює його в кубітну схему через будь-яке відображення ферміонів на кубіти.

Саме остання обставина є причиною використовувати оператор ffsim тут. Власні вентилі Qiskit у ffsim специфічні для перетворення Йордана-Вігнера, тож приведення ansatz через інше відображення (наприклад, локальне, що обмінює кубіти на неглибші схеми) — це те, що додає цей пакет. І навпаки, цей пакет не реалізує повторно математику ansatz, тому UCJ і UCC приймають оператор ffsim безпосередньо як вхідні дані.

Що стосується симуляції, ffsim є бекендом. Вентилі та оператори цього пакета реалізують методи протоколу, які споживають симуляційні функції ffsim (_apply_unitary_, _linear_operator_ і _trace_; див. qiskit_fermions.protocols), тож інструменти ffsim працюють з ними нативно, без кроку перетворення. Побудова операторів, їх відображення та транспіляція отриманих схем взагалі не потребують ffsim.

Повну картину дивись у посібнику про зв'язок з ffsim.

Відомі проблеми​

Доки C API Qiskit не досягне паритету функцій з Python API, деякі компоненти цього пакета залишаються доступними лише в його Python API. Це стосується всієї бібліотеки схем (qiskit_fermions.circuit), а також проходів транспайлера (qiskit_fermions.transpiler).

Майбутня робота​

  • Перенести бібліотеку схем і проходи транспайлера в ядро на Rust (і надати C API для взаємодії з ними)

  • Розширити бібліотеку ефективних реалізацій перетворення операторів

  • Розширити бібліотеку ефективних структур даних операторів

Внесок​

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

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

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

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

Ліцензія​

Apache License 2.0

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

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

Посилання​

[1]

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

[2]

Anthony Gandon, et al., Stabilizer-based quantum simulation of fermion dynamics with local qubit encodings, arXiv:2512.11418 [quant-ph].