Przejdź do głównej treści
Ten projekt jest w wersji beta. Znalazłeś błąd? Otwórz zgłoszenie na GitHub. Masz pytanie lub pomysł? Zapytaj w Discussions — chętnie poznamy Twoją opinię!
Jak oceniasz jakość tłumaczenia tej strony?

Qiskit Fermions

qiskit-fermions rozszerza Qiskit SDK o narzędzia do pracy z układami fermionowymi. W swoim zakresie zapewnia następujące elementy:

  • Wydajne struktury danych do reprezentowania i przetwarzania operatorów fermionowych w różnych postaciach

  • Framework do implementowania metod konwersji operatorów (w tym kodowań fermion–kubit)

  • Bibliotekę wydajnych implementacji popularnych metod konwersji

  • Framework i bibliotekę bramek do wyrażania obwodów fermionowych

  • Potok transpilacji zintegrowany z procesem transpilera Qiskit, służący do syntezy obwodów fermionowych w obwody oparte na kubitach

Dodatkowo qiskit-fermions integruje się z innymi narzędziami ekosystemu, takimi jak:

  • ffsim do wysokopoziomowych operatorów ansatzu i wydajnej symulacji obwodów fermionowych (zobacz Relacja z ffsim)

Rozpocznij​

Schematic description of Qiskit Fermions

Schematyczny opis na powyższym obrazie daje wgląd w zakres funkcji i ogólny przepływ pracy, które oferuje ten pakiet. Możesz pracować w reżimie fermionowym zarówno z reprezentacją operatorową, jak i obwodową, zanim zdefiniujesz kodowanie fermion–kubit, które trafia do wielo-reprezentacyjnego potoku transpilatora Qiskit.

Wszystkie te funkcje są wyjaśnione w kilku przewodnikach, które pomogą Ci zacząć. Aby zobaczyć omówienie przechodzące dokładnie przez potok pokazany powyżej, zacznij od przewodnika po jednowymiarowym modelu Fermiego-Hubbarda.

Przykłady zastosowań​

Komponenty tego pakietu zostały użyte w badaniach opisanych w następujących artykułach:

  • Losowa kompilacja obwodów qDRIFT w [1].

  • Synteza fermion–kubit podczas procesu transpilacji w [2].

Omówienie techniczne​

Założenia projektowe​

Ten pakiet został celowo zaprojektowany tak, aby był spójny z Qiskit: opiera się na rdzeniu zaimplementowanym w Rust i udostępnia oficjalne powiązania językowe dla Pythona i C. Jego API ma się upodabniać do Qiskit, aby bezproblemowo wpasować się w przepływy pracy użytkowników z doświadczeniem w programowaniu w Qiskit.

Podstawową zasadą projektu qiskit-fermions było oddzielenie reprezentacji obwodu fermionowego od jego postaci kubitowej. Dokładniej: obwody fermionowe mają sens same w sobie i nie wymagają odwzorowania na przestrzeń kubitów, aby można je było interpretować. Ponadto reprezentacja obwodu fermionowego nie może czynić żadnych założeń co do kodowania fermion–kubit stosowanego później. W konsekwencji, choć Jordan-Wigner zachowuje dominującą pozycję i rolę, nie jest zakładany jako _domyślne_ kodowanie fermion–kubit.

Relacja z ffsim​

ffsim i qiskit-fermions dzielą się pracą, a nie na siebie zachodzą. ffsim odpowiada za wysokopoziomowe operatory ansatzu i ich szybką symulację: konstruuje operator UCJ lub UCCSD z amplitud coupled-cluster lub wektora parametrów i symuluje stany fermionowe w zwartej przestrzeni o stałej liczbie cząstek. qiskit-fermions odpowiada za stronę obwodową: wyraża ten operator jako FermionicCircuit na modach fermionowych i transpiluje go do obwodu kubitowego przez dowolne kodowanie fermion–kubit.

Ten ostatni punkt jest powodem, dla którego warto przenieść operator ffsim tutaj. Własne bramki Qiskit z ffsim są specyficzne dla transformacji Jordana-Wignera, więc sprowadzenie ansatzu przez inne kodowanie (na przykład lokalne kodowanie wymieniające kubity na płytsze obwody) to właśnie to, co dodaje ten pakiet. Z kolei ten pakiet nie implementuje ponownie matematyki ansatzu, więc UCJ i UCC przyjmują operator ffsim bezpośrednio jako dane wejściowe.

Po stronie symulacji ffsim jest backendem. Bramki i operatory tego pakietu implementują metody protokołu, z których korzystają funkcje symulacji ffsim (_apply_unitary_, _linear_operator_ i _trace_; zobacz qiskit_fermions.protocols), więc narzędzia ffsim działają na nich natywnie, bez kroku konwersji. Budowanie operatorów, ich odwzorowywanie i transpilacja powstałych obwodów w ogóle nie wymagają ffsim.

Pełny obraz znajdziesz w przewodniku o relacji z ffsim.

Znane problemy​

Dopóki C API Qiskit nie osiągnie parytetu funkcji z jego API Pythona, niektóre komponenty tego pakietu pozostają dostępne wyłącznie w API Pythona. Dotyczy to całej biblioteki obwodów (qiskit_fermions.circuit) oraz przebiegów transpilatora (qiskit_fermions.transpiler).

Plany na przyszłość​

  • Przeniesienie biblioteki obwodów i przebiegów transpilatora do rdzenia w Rust (wraz z udostępnieniem C API do współpracy z nimi)

  • Rozszerzenie biblioteki wydajnych implementacji konwersji operatorów

  • Rozszerzenie biblioteki wydajnych struktur danych operatorów

Współtworzenie​

Kod źródłowy jest dostępny na GitHubie.

Przewodnik dla deweloperów znajduje się w pliku CONTRIBUTING.md w katalogu głównym repozytorium tego projektu. Uczestnicząc, zobowiązujesz się przestrzegać kodeksu postępowania Qiskit.

Cytowanie tego pakietu​

Jeśli używasz tego pakietu w swoich badaniach, skorzystaj z pliku CITATION.bib w repozytorium tego projektu, aby zacytować odpowiednie źródła.

Licencja​

Apache License 2.0

Polityka wycofywania​

Ten pakiet stosuje wersjonowanie semantyczne. Zmiany łamiące zgodność wprowadzane są tylko okazjonalnie, aby poprawić doświadczenie użytkownika. Gdy to możliwe, stare interfejsy są zachowywane i oznaczane jako przestarzałe, dopóki mogą współistnieć z nowymi. Każde istotne ulepszenie, zmiana łamiąca zgodność lub wycofanie jest udokumentowane w informacjach o wydaniu.

Bibliografia​

[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].