Qiskit Fermions
qiskit-fermions розширює Qiskit SDK інструментами для роботи з ферміонними системами. У межах своєї області він надає таке:
-
Ефективні структури даних для подання та маніпулювання ферміонними операторами в різних формах
-
Фреймворк для реалізації методів перетворення операторів (зокрема кодувань ферміонів у кубіти)
-
Бібліотеку ефективних реалізацій поширених методів перетворення
-
Фреймворк і бібліотеку вентилів для вираження ферміонних схем
-
Конвеєр транспіляції, інтегрований із процесом транспілятора Qiskit, для синтезу ферміонних схем у схеми на основі кубітів
Крім того, qiskit-fermions інтегрується з іншими інструментами екосистеми, зокрема:
- ffsim для високорівневих операторів ansatz та ефективної симуляції ферміонних схем (див. Зв'язок з ffsim)
Початок роботи
Схематичний опис на зображенні вище дає уявлення про широкий спектр можливостей і загальний робочий процес, які надає цей пакет. Ти можеш працювати у ферміонному режимі як з операторним, так і зі схемним представленням, перш ніж визначити відображення ферміонів на кубіти, яке підключається до багатопредставленнєвого конвеєра транспайлера 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 у репозиторії цього проєкту, щоб процитувати відповідні джерела.
Ліцензія
Політика застарівання
Цей пакет дотримується семантичного версіювання. Несумісні зміни вносяться лише зрідка, щоб покращити досвід користувача. Коли це можливо, старі інтерфейси зберігаються та позначаються як застарілі доти, доки вони можуть співіснувати з новими. Кожне суттєве покращення, несумісна зміна чи застарівання задокументовані в примітках до випуску.
Посилання
[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].