Qiskit Fermions
qiskit-fermions rozšiřuje Qiskit SDK o nástroje pro práci s fermionovými systémy. Ve svém rozsahu poskytuje následující:
-
Efektivní datové struktury pro reprezentaci a manipulaci s fermionovými operátory v různých podobách
-
Framework pro implementaci metod převodu operátorů (včetně kódování fermionů na qubity)
-
Knihovnu efektivních implementací běžných metod převodu
-
Framework a knihovnu hradel pro vyjádření fermionových obvodů
-
Transpilační pipeline integrovanou s transpilačním procesem Qiskit pro syntézu fermionových obvodů na obvody založené na qubitech
Kromě toho se qiskit-fermions integruje s dalšími nástroji ekosystému, například:
- ffsim pro vysokoúrovňové operátory ansatzu a efektivní simulaci fermionových obvodů (viz Vztah k ffsim)
Začínáme
Schematický popis na obrázku výše ukazuje šíři funkcí a obecný pracovní postup, který tento balíček nabízí. Ve fermionovém režimu můžeš pracovat s operátorovou i obvodovou reprezentací, než definuješ kódování fermion-na-qubit, které se zapojí do víceúrovňového transpilačního pipeline Qiskitu.
Všechny tyto funkce jsou vysvětleny v několika průvodcích, které ti pomohou začít. Přehled, který prochází přesně pipeline zobrazený výše, najdeš v průvodci 1D Fermi-Hubbardovým modelem.
Příklady použití
Součásti tohoto balíčku byly použity ve výzkumu souvisejícím s následujícími články:
Technická diskuse
Záměry návrhu
Tento balíček je záměrně navržen tak, aby byl v souladu s Qiskitem: staví na jádru implementovaném v Rustu a poskytuje oficiální vazby pro Python a C. Jeho API se snaží držet paralelu s Qiskitem, aby se bezproblémově začlenilo do pracovních postupů uživatelů, kteří mají zkušenosti s programováním v Qiskitu.
Základním principem návrhu qiskit-fermions bylo oddělení fermionové reprezentace obvodu od jeho qubitizované podoby. Přesněji: fermionové obvody mají smysl samy o sobě a k jejich interpretaci není potřeba mapování do qubitového prostoru. Fermionová reprezentace obvodu navíc nemůže činit žádné předpoklady o kódování fermion-na-qubit, které se použije později. V důsledku toho, ačkoli si Jordan-Wigner udržuje dominantní postavení a roli, nepředpokládá se, že je _výchozím_ kódováním fermion-na-qubit.
Vztah k ffsim
ffsim a qiskit-fermions si práci spíše dělí, než aby se překrývaly. ffsim má na starosti vysokoúrovňové operátory ansatzu a jejich rychlou simulaci: sestaví operátor UCJ nebo UCCSD z amplitud coupled-cluster nebo z vektoru parametrů a simuluje fermionové stavy v kompaktním prostoru s pevným počtem částic. qiskit-fermions má na starosti stranu obvodu: vyjádří tento operátor jako FermionicCircuit na fermionových módech a transpiluje jej do qubitového obvodu pomocí libovolného kódování fermion-na-qubit.
Právě tento poslední bod je důvod, proč sem přinést operátor z ffsim. Vlastní hradla Qiskitu v ffsim jsou specifická pro Jordan-Wignerovu transformaci, takže převod ansatzu přes jiné kódování (například lokální kódování, které vyměňuje qubity za mělčí obvody) je to, co tento balíček přidává. Naopak tento balíček znovu neimplementuje matematiku ansatzu, takže UCJ a UCC přijímají jako vstup přímo operátor z ffsim.
Na straně simulace je ffsim backendem. Hradla a operátory tohoto balíčku implementují protokolové metody, které simulační funkce ffsim využívají (_apply_unitary_, _linear_operator_ a _trace_; viz qiskit_fermions.protocols), takže nástroje ffsim s nimi fungují nativně, bez převodního kroku. Sestavování operátorů, jejich mapování a transpilace výsledných obvodů ffsim vůbec nepotřebují.
Úplný obraz najdeš v průvodci vztahem k ffsim.
Známé problémy
Dokud C API Qiskitu nedosáhne funkční parity se svým Python API, zůstanou některé součásti tohoto balíčku výhradně v jeho Python API. Patří sem celá knihovna obvodů (qiskit_fermions.circuit) i průchody transpilátoru (qiskit_fermions.transpiler).
Budoucí práce
-
Přesunout knihovnu obvodů a průchody transpilátoru do jádra v Rustu (a poskytnout C API pro práci s nimi)
-
Rozšířit knihovnu efektivních implementací konverzí operátorů
-
Rozšířit knihovnu efektivních datových struktur operátorů
Přispívání
Zdrojový kód je dostupný na GitHubu.
Příručka pro vývojáře se nachází v CONTRIBUTING.md v kořeni repozitáře tohoto projektu. Účastí se zavazuješ dodržovat etický kodex Qiskitu.
Citování tohoto balíčku
Pokud tento balíček používáš ve svém výzkumu, použij soubor CITATION.bib v repozitáři tohoto projektu a cituj příslušné reference.
Licence
Zásady zastarávání
Tento balíček se řídí sémantickým verzováním. Zásadní změny se dělají jen občas, aby se zlepšila uživatelská zkušenost. Pokud je to možné, staré rozhraní se zachovává a označuje jako zastaralé, dokud může koexistovat s novým. Každé podstatné vylepšení, zásadní změna nebo zastarání je zdokumentováno v poznámkách k vydání.
Reference
[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].