Sari la conținutul principal
Acest proiect este în versiune beta. Ai găsit o eroare? Deschide un issue pe GitHub. Ai o întrebare sau o idee? Întreabă în Discussions — ne-ar plăcea să aflăm părerea ta!
Cum este calitatea traducerii pe această pagină?

Diagonalizare cuantică bazată pe eșantioane (SQD)

Acest pachet implementează diagonalizarea cuantică bazată pe eșantioane (SQD) — o tehnică pentru găsirea valorilor proprii și a vectorilor proprii ai operatorilor cuantici, cum ar fi hamiltonianul unui sistem cuantic [1–6]. Poate viza hamiltonieni exprimați ca combinații liniare de operatori Pauli sau de operatori fermionici în a doua cuantificare. Fluxurile de lucru bazate pe SQD pot rula pe computerele cuantice actuale și s-a demonstrat că scalează la dimensiuni de probleme dincolo de ce era posibil cu metodele variaționale — și chiar dincolo de limitele metodelor clasice exacte de diagonalizare.

Fluxurile de lucru bazate pe SQD implică mai întâi pregătirea uneia sau mai multor stări cuantice pe un dispozitiv cuantic și eșantionarea lor. Apoi, calculul distribuit clasic este folosit pentru a procesa acele eșantioane zgomotoase. Această procesare are loc iterativ în doi pași: mai întâi, un pas de recuperare a configurațiilor corectează eșantioanele zgomotoase folosind informații despre problema de intrare; apoi, hamiltonianul este proiectat și diagonalizat în subspațiul generat de acele eșantioane. Acești pași se repetă auto-consistent până la convergență. Rezultatul este o valoare proprie minimă aproximată (energia) și starea proprie de energie minimă a unui hamiltonian dat. SQD este robust la eșantioane corupte de zgomot cuantic; de fapt, atâta timp cât se poate extrage un semnal util din computerul cuantic, rezultatul SQD va fi insensibil la șirurile de biți zgomotoase.

qiskit-addon-sqd poate fi folosit în practică pentru a procesa clasic eșantioane extrase dintr-o varietate de circuite cuantice. De exemplu:

  1. Un ansatz de circuit variațional cu parametri aleși astfel încât eșantionarea circuitului să producă configurații electronice pe care funcția de undă țintă (de exemplu, starea fundamentală) are suport semnificativ. Acest lucru este atractiv pentru aplicațiile din chimie, unde hamiltonienii pot avea milioane de termeni de interacțiune [1]. Pentru un exemplu al acestei abordări aplicate în chimie folosind un circuit LUCJ, consultă tutorialul pentru aproximarea energiei stării fundamentale a moleculei N2.
  2. Un set de stări de bază Krylov sunt pregătite pe intervale de timp crescătoare. Presupunând o stare inițială bună și raritatea stării fundamentale, s-a demonstrat că această abordare converge eficient. Deoarece trebuie pregătite circuite de evoluție în timp Trotterizate pe un dispozitiv cuantic, această abordare este cea mai potrivită pentru aplicații la modele de rețea [2], nu pentru hamiltonieni complecși cu mulți corpi precum cei din chimia cuantică. Pentru un exemplu al acestei abordări aplicate hamiltonienilor de rețea fermionici, consultă tutorialul pentru aproximarea energiei stării fundamentale a unui model Anderson simplificat cu o singură impuritate.
  3. Un set de stări de bază Krylov implementate cu compilare aleatorie qDRIFT a operatorului de evoluție în timp. Această abordare produce circuite cu adâncime mai mică în comparație cu descompunerile bazate pe Trotter ale evoluției în timp și poate fi astfel folosită pentru hamiltonieni de chimie cuantică. Această tehnică a fost aplicată la energia stării fundamentale a hidrocarburilor aromatice policiclice [6].

Primii pași​

Un ghid simplu care te ajută să începi rapid cu acest pachet este disponibil în ghidul de pornire rapidă.

Exemple de utilizare​

Tehnica de diagonalizare cuantică bazată pe eșantioane poate fi folosită pentru a implementa un set divers de fluxuri de lucru. Câteva exemple de utilizări includ:

Discuție tehnică​

Dimensiunile sistemelor și cerințele de calcul​

Costul de calcul al SQD este dominat de apelurile către solverul de stări proprii. La fiecare pas al iterației autoconsistente de recuperare a configurațiilor se efectuează n_batches apeluri către solverul de stări proprii. Apelurile diferite sunt trivial paralelizabile. În acest tutorial, apelurile se află într-o buclă for. Este foarte recomandat să efectuezi aceste apeluri în paralel.

Funcția qiskit_addon_sqd.fermion.solve_fermion() este multithreaded și poate gestiona sisteme cu ~25 de orbitali spațiali și ~10 electroni, cu dimensiuni ale subspațiului de ~$10^7$, folosind ~10-30 de nuclee.

Alegerea dimensiunilor subspațiului​

Alegerea dimensiunii subspațiului influențează acuratețea și timpul de execuție al solverului de stări proprii. Cu cât subspațiul este mai mare, cu atât calculul este mai precis, în schimbul creșterii timpului de execuție și a cerințelor de memorie. Dimensiunea optimă a subspațiului pentru un sistem dat nu este cunoscută; de aceea se poate efectua un studiu de convergență în funcție de dimensiunea subspațiului, așa cum este descris în acest ghid.

Limitarea dimensiunii subspațiului​

Argumentul samples_per_batch al funcției qiskit_addon_sqd.fermion.diagonalize_fermionic_hamiltonian() stabilește numărul de șiruri de biți conținute în fiecare batch și controlează astfel indirect dimensiunea subspațiului: în cazul aplicațiilor de chimie cuantică, valoarea sa stabilește o limită superioară pentru dimensiunea subspațiului. Dimensiunea care rezultă efectiv depinde de câte dintre șirurile de biți eșantionate sunt distincte și crește pe parcursul iterațiilor autoconsistente de recuperare a configurațiilor, deci nu este cunoscută dinainte. Vezi acest exemplu pentru mai multe detalii.

Argumentul max_dim al aceleiași funcții limitează direct dimensiunea, restrângând numărul de șiruri CI păstrate în fiecare sector de spin. Deoarece subspațiul este generat de produsul cartezian al celor două sectoare de spin, max_dim=d limitează dimensiunea subspațiului la d**2, în timp ce un tuplu max_dim=(d_a, d_b) limitează separat sectoarele spin-alpha și spin-beta, plafonând dimensiunea subspațiului la d_a * d_b (cu symmetrize_spin=True, cele două limite trebuie să fie egale). Când un batch produce mai multe șiruri CI decât permite limita, șirurile solicitate prin include_configurations și cele preluate din iterația anterioară sunt păstrate cu prioritate, iar locurile rămase sunt completate cu cele mai frecvent eșantionate șiruri. Deoarece limitează dimensiunea celei mai mari diagonalizări pe care solverul de stări proprii va trebui să o efectueze, max_dim este o modalitate convenabilă de a menține solverul într-un buget de timp de execuție și de memorie. Vezi acest ghid pentru mai multe detalii.

Solvere​

Pașii de proiecție și diagonalizare sunt efectuați de un solver clasic. Oferim aici două solvere generice, unul pentru sisteme fermionice și altul pentru sisteme de qubiți. Alte solvere, care ar putea fi mai eficiente pentru anumite sisteme, pot fi interfațate de utilizatori.

Trim SQD​

SQD standard diagonalizează independent fiecare batch subeșantionat și păstrează cel mai bun rezultat, astfel încât numărul de configurații pe care le poate lua în considerare este limitat la ceea ce poate conține un singur subspațiu accesibil. Trim SQD împarte în schimb șirurile de biți în batch-uri, efectuează o diagonalizare intermediară a fiecărui batch, apoi efectuează o diagonalizare mai mare folosind determinanții cu cea mai mare pondere din fiecare partiție. Această metodă se bazează pe o cercetare comună a Cleveland Clinic Foundation, RIKEN și IBM [7] și poate fi activată transmițând un obiect TrimPolicy funcției diagonalize_fermionic_hamiltonian().

Contribuie​

Codul sursă este disponibil pe GitHub.

Ghidul pentru dezvoltatori se află în CONTRIBUTING.md, în rădăcina depozitului acestui proiect. Prin participare, ești așteptat să respecți codul de conduită Qiskit.

Folosim GitHub issues pentru a urmări solicitările și erorile.

Citarea acestui pachet​

Dacă folosești acest pachet în cercetarea ta, folosește fișierul CITATION.bib din depozitul acestui proiect pentru a cita referințele potrivite.

Mulțumiri​

Acest pachet include o strategie opțională de eșantionare în cadrul buclei autoconsistente de recuperare a configurațiilor, care elimină determinanți pe baza rezultatelor diagonalizărilor intermediare. Implementarea se bazează pe o cercetare comună a Cleveland Clinic Foundation, RIKEN și IBM. Dacă folosești această funcționalitate în cercetarea ta, te rugăm să folosești și citarea lucrării, care se găsește în fișierul CITATION.bib cu cheia de citare merz2026crossing. O implementare a fluxului de lucru complet din acea lucrare ar urma să fie disponibilă în curând pe GitHub.

Licență​

Apache License 2.0

Politica de depreciere​

Respectăm versionarea semantică. Ocazional putem face modificări incompatibile pentru a îmbunătăți experiența utilizatorului. Când este posibil, vom păstra vechile interfețe și le vom marca drept depreciate, atât timp cât pot coexista cu cele noi. Fiecare îmbunătățire substanțială, modificare incompatibilă sau depreciere va fi documentată în notele de lansare.

Referințe​

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