Sari la conținutul principal

Simularea naturii

Urmărește acest videoclip de la Olivia Lanes despre simularea naturii cu calculatoare cuantice, sau deschide videoclipul într-o fereastră separată pe YouTube.

Această lecție folosește conținut din acest tutorial:

Tutorial privind atenuarea erorilor la scară de utilitate cu amplificarea probabilistică a erorilor

Introducere

Una dintre cele mai atrăgătoare aplicații ale calculatoarelor cuantice este capacitatea lor de a simula fenomene naturale. În această lecție, vom explora modul în care calculatoarele cuantice sunt utilizate pentru a rezolva probleme de dinamică cuantică — mai precis, cum ne ajută să înțelegem evoluția în timp a unui sistem cuantic.

Mai întâi, vom arunca o privire generală asupra etapelor implicate în realizarea acestor simulări. Apoi, vom examina un exemplu concret: experimentul prezentat de IBM în 2023, care a demonstrat conceptul de utilitate cuantică. Acest experiment reprezintă un studiu de caz excelent pentru înțelegerea pașilor practici și a implicațiilor simulării dinamicii cuantice cu hardware cuantic real. La final, vei avea o imagine mai clară despre modul în care cercetătorii abordează aceste provocări și de ce simularea cuantică promite atât de mult pentru avansarea înțelegerii noastre despre lumea naturală.

Richard Feynman a susținut o conferință extrem de influentă la Caltech în 1959. Aceasta a fost intitulată celebru „There's Plenty of Room at the Bottom" (Există mult spațiu la bază), o aluzie jucăușă la vastele posibilități neexplorate la scara microscopică. Feynman a argumentat că o mare parte din fizica la niveluri atomice și subatomice rămânea încă de descoperit.

Semnificația conferinței a crescut în anii 1980, pe măsură ce tehnologia a progresat. În această perioadă, Feynman a reluat aceste idei într-o altă conferință importantă la Caltech, prezentând o lucrare intitulată „Simulating Nature with Computers" (Simularea naturii cu calculatoare). Acolo, el a pus o întrebare îndrăzneață: ar putea calculatoarele să realizeze simulări exacte care să reproducă comportamentul naturii la nivel cuantic? Feynman a sugerat că, în loc să ne bazăm pe aproximări grosiere pentru a modela procesele atomice, am putea folosi calculatoare care să valorifice înseși legile mecanicii cuantice — nu doar pentru a modela natura, ci pentru a o emula.

Tocmai acest tip de simulare fizică vom examina în această lecție.

Reamintește-ți această reprezentare grafică a cronologiei introdusă într-un episod anterior. La un capăt al spectrului, vedem probleme care sunt ușor de rezolvat și nu necesită viteza sporită pe care ar putea-o aduce calculul cuantic.

O diagramă care arată spectrul problemelor posibile, de la ușoare la dificile, de la cele care nu necesită calculator cuantic la cele care necesită unul tolerant la defecte, indicând că ne concentrăm pe problemele din mijloc.

La celălalt capăt se află probleme extrem de dificile care necesită mașini cuantice complet tolerante la defecte — tehnologie care nu este încă disponibilă. Din fericire, se crede că multe probleme de simulare se situează undeva în mijlocul acestei cronologii, în intervalul unde calculatoarele cuantice de astăzi pot fi deja aplicate eficient. Există multe motive să fim entuziasmați și intrigați de această perspectivă, deoarece simularea naturii formează fundamentul pentru o gamă largă de aplicații promițătoare.

Informațiile de mai jos acoperă fluxul general de lucru în simulările naturii și apoi o instanță specifică a fluxului de lucru pentru a reproduce rezultate dintr-un studiu bine cunoscut.

Fluxul general de lucru

Înainte ca cineva să poată aplica calculul cuantic în aceste domenii interesante, este important să înțelegi mai întâi pașii de bază dintr-un flux tipic de simulare:

  1. Identificarea Hamiltonianului sistemului
  2. Codificarea Hamiltonianului
  3. Pregătirea stării
  4. Evoluția în timp a stării
  5. Optimizarea Circuit-ului
  6. Execuția Circuit-ului
  7. Post-procesare

Procesul începe prin identificarea unui sistem cuantic de interes. Aceasta ajută la determinarea Hamiltonianului care guvernează evoluția sa în timp, precum și o descriere semnificativă a proprietăților sale inițiale, adică starea sa. Apoi, trebuie să selectezi o metodă adecvată pentru a implementa evoluția în timp a acestei stări. Observă că primii patru pași din acest flux de lucru fac parte din etapa de Mapare a cadrului de tipare Qiskit.

După configurarea Circuit-ului de evoluție temporală, etapele următoare implică realizarea experimentului propriu-zis. Aceasta include, de obicei, optimizarea Circuit-ului cuantic care implementează algoritmul de evoluție temporală, rularea Circuit-ului pe hardware cuantic și post-procesarea rezultatelor. Aceștia sunt aceiași pași ca ultimii trei din cadrul de tipare Qiskit.

În continuare, vom discuta ce înseamnă acești pași înainte de a trece la codare.

1. Identificarea Hamiltonianului sistemului

Primul pas esențial în realizarea unui experiment de simulare este identificarea Hamiltonianului care descrie sistemul. În multe cazuri, Hamiltonianul este bine stabilit. Cu toate acestea, îl construim adesea prin sumarea contribuțiilor de energie din părți mai mici ale sistemului. Aceasta este exprimată de obicei ca o sumă de termeni:

H=iNHiH=\sum_i^N {H_i}

unde fiecare termen HiH_i acționează asupra unuia dintre cele NN subsisteme locale (precum o singură particulă sau un grup mic de particule) ale Hamiltonianului total HH. În cazul particulelor elementare indistinguibile, este important să se determine dacă sistemul implică fermioni sau bosoni, unde fermionii respectă Principiul de Excludere Pauli, ceea ce înseamnă că niciun doi fermioni identici nu pot ocupa aceleași stări cuantice, precum electronii. Spre deosebire de fermioni, mai mulți bosoni pot exista în aceeași stare cuantică, iar această diferență afectează statistica sistemului și modul în care acesta trebuie modelat.

În practică, oamenii sunt adesea interesați de sisteme fizice în care elementele sunt presupuse a fi bine separate sau etichetate și, prin urmare, distinguibile, cum ar fi spinii pe o rețea.

O rețea cu spinuri și o moleculă legată prin electroni care sunt fermioni.

Acest sistem constă din spinuri dipol magnetic aranjate pe o rețea, tratate ca particule distinguibile prin numărarea adresei lor. Sistemul este descris de Modelul Ising cu Câmp Transversal, iar Hamiltonianul său este construit din suma a două părți:

H=iNHi=J<i,j>ZiZj+hi=0NXiH = \sum_i^N {H_i} = J \sum_{<i,j>}Z_iZ_j + h\sum_{i=0}^N X_i

Unde primul termen reprezintă energia de interacțiune dintre spinuri vecine. Aici <i,j><i,j> indică faptul că sumăm peste toate perechile de spinuri care sunt direct conectate pe rețea, ZiZ_i și ZjZ_j sunt matricele Pauli-Z, care reprezintă starea spinurilor la siturile ii și jj, iar JJ este constanta de cuplare, care definește intensitatea acestei interacțiuni. Al doilea termen reprezintă influența unui câmp magnetic extern aplicat întregului sistem. Aici XiX_i este matricea Pauli-X care acționează asupra spinului individual la situl ii, iar hh indică intensitatea acestui câmp extern.

2. Codificarea Hamiltonianului

Pasul următor este de a traduce Hamiltonianul într-o formă pe care un calculator cuantic o poate procesa, ceea ce numim codificare. Acest proces de codificare depinde în mod critic de tipul de particule din sisteme: distinguibile sau indistinguibile, și fermioni sau bosoni, dacă particulele sunt indistinguibile.

O diagramă de flux care arată diferite tipuri potențiale de mapări pentru diferite tipuri de sisteme, inclusiv bosoni, fermioni și particule distinguibile precum spinuri pe o rețea.

Dacă ai un sistem cu particule distinguibile, cum ar fi spinuri 1/21/2 fixate pe o rețea, pe care le-am examinat simplu mai sus, Hamiltonianul este adesea deja scris într-un limbaj compatibil cu qubiți. Operatorul Pauli-Z, de exemplu, descrie în mod natural un spin sus sau jos, și nu este necesară nicio codificare specială.

Când simulezi particule indistinguibile de fermioni sau bosoni, este necesar să aplici o transformare de codificare. Aceste particule sunt descrise în cadrul unui cadru matematic special numit a doua cuantificare, care urmărește numărul de ocupanță al fiecărei stări cuantice prin introducerea operatorilor de creație și anihilare, unde operatorul de creație a^i\hat{a}_i^\dagger adaugă o particulă la starea ii, iar operatorul de anihilare a^i\hat{a}_i elimină o particulă din starea ii. Pe baza acestui cadru de a doua cuantificare, fermionul poate fi transformat prin Bravyi-Kitaev și Jordan-Wigner. Transformarea Jordan-Wigner definește operatorul fermionic de creație f^j=(k<j(Zk))(Xj+iYj2)\hat{f}_j^\dagger = \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j + i Y_j}{2} \Bigr) care umple starea cuantică jj cu un fermion și operatorul fermionic de anihilare f^j=(k<j(Zk))(XjiYj2)\hat{f}_j= \Bigl( \prod\limits_{k \lt j}{(-Z_k)} \Bigr)\Bigl( \frac{X_j - i Y_j}{2} \Bigr) care golește un fermion din starea jj. Poți găsi mai multe detalii ale acestei transformări Jordan-Wigner la Quantum Computing in Practice, episodul 5 - Mapare. Similar, bosonii necesită, de asemenea, propriile metode de codificare, cum ar fi transformarea Holstein-Primakoff, pentru a fi reprezentați prin qubiți.

În ultimă instanță, fie că drumul este direct sau necesită o traducere, scopul este același: de a exprima Hamiltonianul sistemului în forma operatorilor de spin Pauli pe care un calculator cuantic îl poate înțelege și executa.

3. Pregătirea stării

După codificarea Hamiltonianului dorit în setul de Gate-uri al calculatorului cuantic, pasul următor important este să selectezi o stare cuantică inițială adecvată pentru a începe simularea. Alegerea stării inițiale influențează nu numai convergența algoritmilor variaționali, cum ar fi Variational Quantum Eigensolver (VQE), ci afectează și acuratețea și eficiența evoluției temporale și a eșantionării. În esență, starea inițială servește ca punct de plecare pentru calcul, punând bazele pentru extragerea de observabile utile din sistemul cuantic modelat. Ideal, această stare ar trebui să reprezinte o configurație fizic semnificativă a sistemului studiat.

Pentru multe simulări de chimie cuantică, starea Hartree-Fock poate fi un bun punct de plecare. În limbajul celei de-a doua cuantificări, starea Hartree-Fock (ϕHF|\phi\rangle_{HF}) este creată prin aplicarea operatorilor de creație (a^i\hat{a}_i^\dagger) pentru fiecare dintre orbitalele cu cea mai mică energie la starea de vid (vac=01...0k...0N=0N|vac\rangle = |0_1 ... 0_k ... 0_N\rangle = |0\rangle ^{\otimes N}), o stare fără electroni.

ϕHF=i=1ka^i0N=a^1...a^k01...0k...0N|\phi\rangle_{HF} = \prod\limits_{i=1}^k \hat{a}_i^\dagger |0\rangle ^{\otimes N} = \hat{a}_1^\dagger ... \hat{a}_k^\dagger |0_1 ... 0_k ... 0_N\rangle

În plus, un ansatz ușor de pregătit cu o suprapunere semnificativă cu starea de bază reală poate servi ca o stare inițială bună pentru probleme de chimie, cum ar fi găsirea energiei stării de bază.

Mai general, putem scrie o stare arbitrară de nn qubiți ca o superpoziție de stări de bază computaționale ci∣c_i\rangle cu coeficienții aia_i, satisfăcând condițiile de normalizare. Pregătirea unei astfel de stări poate fi abordată în general prin aplicarea unui operator specific O^\hat{O} la starea inițială, care prin convenție este de obicei starea standard de bază cu toți zero.

ψ=i=02n1aici=O^0nwithi=02n1ai2=1|\psi\rangle = \sum_{i=0}^{2^n-1}{a_i |c_i\rangle}=\hat{O}|0\rangle^{\otimes n}\\ \text{with} \qquad \sum_{i=0}^{2^n-1}{|a_i^2|}=1

Cu toate acestea, acest proces necesită adesea un număr exponențial de Gate-uri CNOT, ceea ce îl face în general consumator de resurse. Ne concentrăm adesea pe pregătirea stărilor inițiale pentru care cerințele de implementare a resurselor sunt mai modeste. Din acest motiv, ne concentrăm adesea pe pregătirea stărilor inițiale mai puțin complexe. O alegere comună și practică este o stare produs, unde qubiții nu sunt entanglați, și care poate fi pregătită folosind doar operații cu un singur qubit, reducând semnificativ cerințele de resurse ale pregătirii stării și complexitatea. 4. Evoluția în timp a stării

Acum că starea inițială este stabilită, putem în sfârșit începe simularea propriu-zisă — să examinăm cum s-a schimbat starea sistemului ϕ(t=0)|\phi(t=0)\rangle în ϕ(t)|\phi(t)\rangle după un anumit timp tt. În mecanica cuantică, această evoluție este descrisă de o singură operație matematică numită operatorul de evoluție temporală:

U(t)=eiHtU(t) = e^{-iHt}

unde am setat =1\hbar=1 prin convenție. Aplicând acest operator la starea noastră inițială obținem starea finală: ϕ(t)=eiHtϕ(t=0)|\phi(t)\rangle = e^{-iHt}|\phi(t=0)\rangle

Cu toate acestea, construirea unui Circuit cuantic care implementează direct operatorul complet eiHte^{-iHt} este în general imposibilă atunci când Hamiltonianul nostru este o sumă de părți diferite. Prin urmare, avem nevoie de Trotterizare.

Pe scurt, Trotterizarea este o tehnică pentru aproximarea exponențierii unei matrice (aici Hamiltonianul, HH), în special atunci când exponentul conține operatori care nu comutează ([HA,HB]0[H_A, H_B] \neq 0). Adesea Hamiltonianul HH constă din mai mulți operatori care nu comutează. În acest caz, nu poți separa exponențialele lor:

ei(HA+HB)teiHAteiHBte^{-i(H_A + H_B)t} \neq e^{-iH_A t}e^{-iH_B t}

O abordare utilă este să aplici alternativ exponențialele lor de evoluție temporală pe durate mici, t/nt/n, un total de nn ori. În cazul acestor două contribuții care nu comutează, am scrie

eiHt(eiHAt/neiHBt/n)ne^{−i H t}\approx \left(e^{−i H_A t/n}e^{−i H_B t/n}\right)^n

Un Circuit cuantic care arată operatorii de evoluție temporală Trotterizați: operatorii împărțiți în bucăți mici.

Eroarea introdusă de această aproximare se numește eroarea Trotter. Putem reduce această eroare prin creșterea lui nn, dar aceasta vine cu un cost. Există, de asemenea, formule mai avansate de ordin superior (formula de ordinul doi și alte variante). De exemplu, formula de ordinul doi oferă o precizie mai bună prin aplicarea pașilor într-un tipar simetric.

First order:eiHt(jeiHit/n)nSecond order:eiHt(j=1NeiHjt/2n)n(k=N1eiHkt/2n)n\begin{aligned} \text{First order:} & \qquad e^{-iHt}\approx \left(\prod_j{e^{-iH_i t/n}}\right)^n\\ \text{Second order:} & \qquad e^{-iHt}\approx \left(\prod_{j=1}^N{e^{-iH_j t/2n}}\right)^n\left(\prod_{k=N}^1{e^{-iH_k t/2n}}\right)^n \end{aligned}

Aici, NN este numărul de termeni care nu comutează, HjH_j, din Hamiltonian de împărțit în acest mod, iar nn este numărul de pași de timp mici în care această evoluție este fragmentată. Observă ordinea inversă a operatorilor în al doilea produs din tratamentul de ordinul doi.

Consultă secțiunea de Trotterizare din cursul Quantum Diagonalization Algorithms pentru mai multe detalii. 5. Optimizarea Circuit-ului

După generarea Circuit-ului Trotterizat, etapa de mapare este completă și putem trece la optimizarea Circuit-ului. Acest proces implică mai multe sarcini cheie:

  • Stabilirea unui layout de qubiți care mapează qubiții abstracți ai Circuit-ului la qubiții fizici de pe hardware. Acest pas este necesar deoarece arhitectura hardware-ului are adesea constrângeri specifice de conectivitate, în timp ce proiectele de Circuit cuantic presupun de obicei că orice qubit poate interacționa cu oricare altul.
  • Inserarea gate-urilor swap după cum este necesar pentru a permite interacțiunile dintre qubiții care nu sunt conectați direct pe dispozitiv.
  • Traducerea Gate-urilor Circuit-ului în instrucțiuni ISA (Instruction Set Architecture) pe care hardware-ul le poate executa direct.
  • Efectuarea optimizărilor Circuit-ului pentru a reduce adâncimea Circuit-ului și numărul de Gate-uri. Această optimizare poate fi aplicată și mai devreme, pe Circuit-ul virtual înainte ca qubiții să fie atribuiți conexiunilor specifice de hardware.

Este important de reținut că o mare parte din acest proces de optimizare este gestionat automat de instrumentele din Qiskit. Vom explora exact cum funcționează aceasta mai târziu în această lecție.

6. Execuția Circuit-ului

După finalizarea etapei de optimizare, suntem pregătiți să executăm Circuit-ul folosind un primitiv. Avem în vedere un experiment de simulare în care scopul este să înțelegem cum se schimbă anumite proprietăți ale sistemului în timp. În acest scop, primitivul Estimator este alegerea cea mai potrivită, deoarece îți permite să măsori valorile de așteptare ale observabilelor care corespund acestor proprietăți.

Apoi, folosim opțiuni care includ tehnici de suprimare și atenuare a erorilor, pentru a îmbunătăți acuratețea Estimator-ului. În final, rulăm experimentul pentru a colecta rezultatele.

7. Post-procesare

Pasul final este post-procesarea datelor colectate. Aceasta implică extragerea valorilor de așteptare măsurate sau, dacă a fost folosit primitivul Sampler, distribuția de probabilitate eșantionată în baza computațională. Atunci când sunt necesare doar valorile de așteptare ale observabilelor relevante, acestea pot fi obținute direct din primitivul Estimator, disponibile atât ca rezultate brute, cât și cu atenuarea erorilor aplicată. Adesea, aceste valori de așteptare măsurate servesc ca punct de plecare pentru calcule suplimentare care implică alte cantități de interes. Astfel de calcule suplimentare nu necesită în mod obișnuit calcul cuantic și pot fi efectuate eficient pe un calculator clasic.

Replicarea lucrării „Utility"

notă

Această parte este o parcurgere de nivel înalt a tutorialului Utility-scale error mitigation with probabilistic error amplification, care reproduce rezultatul lucrării Evidence for the Utility of Quantum Computing Before Fault Tolerance. Îți recomandăm cu tărie să deschizi tutorialul menționat împreună cu această sesiune.

Vom examina acum un exemplu concret dintr-o lucrare extrem de influentă publicată de IBM în 2023, intitulată Evidence for the Utility of Quantum Computing Before Fault Tolerance, adesea numită „lucrarea Utility".

Imaginea de copertă a articolului pe care îl numim lucrarea utility, publicat în revista Nature.

La lansarea sa, această lucrare a devenit rapid un studiu de referință în comunitatea calculului cuantic. Teza sa centrală este că un calculator cuantic zgomotos, utilizând 127 de qubiți și 2.880 de Gate-uri, poate produce valori de așteptare precise pentru circuite cuantice care depășesc capacitățile metodelor clasice de simulare prin forță brută, care încearcă simularea exactă a acelorași circuite.

Acest studiu a fost deosebit de semnificativ deoarece a demonstrat că calculatoarele cuantice pot fi folosite pentru a verifica sau compara rezultate cu metode clasice de simulare aproximativă, cum ar fi algoritmii de rețea tensorială — în special în scenarii în care soluția exactă nu este cunoscut dinainte.

Un alt aspect remarcabil al acestei lucrări este că a fost larg reprodusă: cercetătorii și utilizatorii au acum posibilitatea de a replica și verifica experimentul folosind sistemele cuantice accesibile prin cloud ale IBM și cadrul software Qiskit. În cele ce urmează, te vom ghida prin pașii necesari pentru a realiza tu însuți această replicare, parcurgând tutorialul IBM pas cu pas.

În această lecție, discutăm pașii specifici necesari pentru a traduce problema în inputuri pe care un dispozitiv cuantic le poate procesa. Ne concentrăm pe simularea dinamicii magnetizării totale într-un sistem de spinuri dipol magnetic aranjate pe o rețea, supuse unui câmp magnetic extern. Acest sistem poate fi descris printr-un model Ising cu câmp magnetic transversal. Îl reprezentăm folosind un Circuit cuantic parametrizat, unde parametrii corespund valorilor reglabile ale interacțiunilor spin-spin (ZZZZ) și intensității câmpului magnetic extern, transversal (BxB_x, parametrizat folosind XX).

Spinuri pe o rețea care indică fie în sus, fie în jos.

Deoarece această serie se intitulează Quantum Computing in Practice, vom acoperi detalii suplimentare ale tehnicilor experimentale folosite pentru a îmbunătăți calitatea rezultatelor. O procedură importantă implică identificarea și eliminarea qubiților „răi" — cei cu fidelități scăzute ale Gate-ului sau timpi scurți de decoerență — care ar putea afecta semnificativ rezultatul experimentului. Astfel de qubiți problematici pot apărea din cauza calibrării slabe sau a interacțiunilor cu sisteme cu două niveluri (TLS). Eliminarea acestor qubiți modifică topologia nativă a hardware-ului, schimbând efectiv rețeaua pe care este simulat sistemul.

În plus, vom discuta cum să construim Circuit-ul cuantic parametrizat care implementează evoluția temporală a sistemului folosind Trotterizarea. O parte cheie a acestui proces este identificarea straturilor de entanglement din Circuit, care joacă un rol crucial în tehnica principală de atenuare a erorilor.

Pasul 1 Qiskit patterns: Mapare

Tutorialul realizează etapa de mapare similar cu abordarea generală descrisă mai sus. Specific acestei probleme, tutorialul face următoarele:

  • Creează un Circuit al modelului Ising parametrizat
  • Creează straturi de entanglement și elimină qubiții răi
  • Generează o versiune Trotterizată a Circuit-ului

În tutorial, începem prin crearea unui set de funcții auxiliare la începutul notebook-ului. Aceste funcții sunt concepute pentru a simplifica procesul pe măsură ce avansăm. Acestea nu sunt o parte obligatorie a procedurii, dar aceasta este o bună practică comună atunci când lucrezi la experimente similare: împarte problema în componente gestionabile. Funcțiile includ

  • Eliminarea cuplajelor de qubiți
  • Definirea cuplajelor de qubiți
  • Construirea cuplajelor de straturi
  • Construirea stratului de entanglement
  • Definirea Circuit-ului Trotterizat

Să explorăm subiecte legate de aceste funcții puțin mai detaliat. Cuplaje de straturi

Cuplajele de straturi definesc modul în care qubiții interacționează cu vecinii lor în timpul simulării. Dispozitivele noastre cuantice utilizează un layout hexagonal greu, un tipar distinctiv pentru conectarea qubiților. În cadrul acestui layout, conexiunile dintre qubiți — cunoscute sub denumirea de „muchii" — pot fi împărțite în trei seturi distincte. Important, nicio două conexiuni din același set nu partajează un qubit. Această organizare abordează o constrângere cheie de hardware: pe un calculator cuantic real, un qubit poate participa la un singur gate cu doi qubiți la un moment dat.

O hartă codificată cu culori care arată straturile de cuplaje. Se subliniază că gate-urile cu doi qubiți pot fi executate pe întregul calculator cuantic, chiar dacă un singur gate cu doi qubiți poate fi executat simultan pe un qubit dat.

Prin structurarea tuturor conexiunilor în trei straturi separate, gate-urile cu doi qubiți pot fi aplicate pe întregul dispozitiv în trei runde succesive. Aceasta asigură că niciun qubit nu este implicat în mai mult de un gate pe strat. Aceste gate-uri implementează interacțiunea ZZ în modelul Ising și sunt repetate la fiecare pas de timp al simulării (fiecare pas Trotter).

În plus, o tehnică numită twirling este folosită pentru a modifica caracteristicile zgomotului în dispozitiv. Twirling-ul transformă zgomotul astfel încât chiar și modelele simple de zgomot devin reprezentări mai precise ale erorilor fizice. Acest rafinament permite o caracterizare mai precisă a zgomotului, care poate fi apoi valorificată pentru a îmbunătăți strategiile de atenuare a erorilor. Eliminarea qubiților „răi"

Pasul următor implică eliminarea qubiților „răi" din lista de qubiți fizici disponibili pentru experiment. Un qubit poate deveni „rău" din diverse motive. Uneori este pur și simplu o problemă de calibrare slabă, care poate fi remediată prin recalibrare. În alte cazuri, problema este mai complexă și legată de ceea ce se numește un defect de sistem cu două niveluri (TLS). Aceste defecte TLS cauzează fluctuații ale parametrilor qubitului și relaxare. Rezolvarea acestei probleme necesită adesea încălzirea întregului sistem și apoi răcirea sa din nou — un proces care poate dura ceva timp și nu este fezabil atunci când accesezi hardware cuantic de la distanță prin cloud.

Deocamdată, abordarea cea mai simplă este să excluzi acești qubiți problematici din grupul de qubiți fizici care vor fi utilizați în experiment. IBM Quantum Platform® facilitează identificarea qubiților cu performanțe scăzute pe un QPU. Poți fie deschide QPU-ul și vizualiza caracteristicile lor direct pe platformă, fie descărca datele de pe platformă ca fișier CSV. Apoi, creează o listă de qubiți de exclus și elimină-i din setul total de qubiți fizici de pe dispozitiv.

Layout-ul unui calculator cuantic este arătat cu un qubit cu performanță scăzută indicat în roz.

Eliminarea qubiților nesiguri asigură că comportamentul sistemului este mai previzibil, ceea ce îmbunătățește acuratețea experimentului. De asemenea, permite o modelare mai bună a zgomotului, care este esențială pentru implementarea unor strategii eficiente de atenuare a erorilor. Circuit Trotterizat

Este acum momentul să construim Circuit-ul nostru Trotterizat. Așa cum s-a discutat anterior, Trotterizarea descompune evoluția temporală în pași discreți, deci trebuie să alegem câți pași să folosim. Pentru acest exemplu, vom selecta șase pași. În general, abordarea implică echilibrarea erorii Trotter — o eroare de aproximare introdusă de algoritm — cu erorile cauzate de decoerență. Creșterea numărului de pași Trotter reduce eroarea de aproximare, dar necesită circuite cuantice mai adânci, care sunt mai susceptibile la zgomotul de decoerență.

Circuit-ul va fi definit folosind mai mulți parametri: parametrul theta reprezentând intensitatea câmpului magnetic extern, cuplajele dintre straturi, numărul de pași, numărul de qubiți și, desigur, alegerea Backend-ului dispozitivului. Deoarece magnetizarea sistemului depinde de intensitatea câmpului magnetic extern, este valoros să rulezi simularea la diferite valori ale câmpului magnetic. Această variație corespunde diferitelor unghiuri de rotație pentru gate-ul RX din Circuit.

from qiskit.circuit import Parameter

num_steps = 6 #Trotter steps
theta = Parameter("theta")
circuit = trotter_circuit(
theta, layer_couplings, num_steps, qubits = good_qubits, backend = backend
)
num_params = 12

# 12 parameter values for Rx between [0,p/2].
#Reshape to outer product broadcast with observables

parameter_values = np.linespace(0,np.pi/2,num_params).reshape((num_params,1))
num_params = parameter_values.size

Pasul 2 Qiskit patterns: Optimizare

Acum că am generat Circuit-ul nostru, pasul următor este să îl optimizăm. Prima parte a acestui proces implică definirea unui manager de treceri. În contextul SDK-ului Qiskit, transpilarea este procesul de transformare a unui Circuit de intrare într-o formă adecvată pentru execuție pe un dispozitiv cuantic. Această transformare are loc printr-o secvență de pași cunoscuți ca treceri de Transpiler. Un manager de treceri este un obiect care conține o listă a acestor treceri de Transpiler și le poate aplica unui Circuit. Pentru a crea unul, inițializezi un PassManager cu lista dorită de treceri de Transpiler. În ultimă instanță, managerul de treceri produce un Circuit ISA — un Circuit exprimat în termenii Arhitecturii Setului de Instrucțiuni (ISA) al Backend-ului. Aceasta înseamnă că Circuit-ul este reprezentat folosind gate-uri native pentru hardware-ul Backend-ului, deși nu include încă informațiile de sincronizare necesare pentru a rula Circuit-ul pe dispozitiv.

Pasul 3 Qiskit patterns: Executare folosind primitive

Acum este momentul să rulăm Circuit-ul nostru. Vom folosi Estimator ca instrument principal pentru acest experiment, deoarece scopul nostru este de a măsura magnetizarea totală a sistemului. Estimator este conceput special pentru a estima valorile de așteptare ale observabilelor, ceea ce îl face alegerea ideală aici. În această etapă, este de asemenea esențial să configurăm setările de atenuare a erorilor. Vom aplica Zero Noise Extrapolation (ZNE) pentru a îmbunătăți acuratețea rezultatelor noastre. În tutorial, vei vedea că specificăm două sau mai multe valori ale factorului de zgomot la care să evaluăm modelele extrapolate și selectăm „Probabilistic Error Amplification" (PEA) ca metodă de amplificare. PEA este preferată pentru acest experiment deoarece se scalează semnificativ mai bine decât alte opțiuni, ceea ce este crucial când lucrezi cu sisteme de 100 sau mai mulți qubiți.

Aceasta este tot ce este necesar pentru a rula experimentul.

Interludiu despre atenuarea erorilor

Înainte de a trece la post-procesare, să luăm un scurt moment pentru a clarifica ce se înțelege prin Zero Noise Extrapolation (ZNE). Am atins acest concept în episoadele anterioare, dar merită o scurtă recapitulare. ZNE este o tehnică de atenuare a erorilor concepută pentru a reduce impactul zgomotului necunoscut care apare în timpul execuției circuitelor cuantice, cu condiția ca acest zgomot să poată fi scalat într-un mod controlat. Metoda se bazează pe presupunerea că valorile de așteptare se scalează cu zgomotul conform unei funcții cunoscute:

A(λ)=A(0)+k=0makλk+R,\langle A(\lambda)\rangle = \langle A(0)\rangle + \sum_{k=0}^m {a_k \lambda^k}+R,

unde λλ reprezintă intensitatea zgomotului, care poate fi amplificată intenționat.

Procesul de implementare a ZNE constă din următorii pași:

  1. Amplificarea zgomotului Circuit-ului pentru diverși factori de zgomot λ1λ_1, λ2λ_2, … .
  2. Executarea fiecărui Circuit cu zgomot amplificat pentru a măsura valorile de așteptare corespunzătoare A(λ1)\langle A(\lambda_1)\rangle, A(λ2)\langle A(\lambda_2)\rangle, ….
  3. Extrapolarea acestor rezultate înapoi la limita de zgomot zero \langle A(λ0)A(\lambda_0)\rangle.

Sunt afișate grafice ale unei valori de așteptare, ale aceleiași valori de așteptare cu zgomot amplificat și apoi valoarea extrapolată înapoi la cazul de zgomot zero.

Această tehnică ne permite să estimăm care ar fi rezultatul dacă nu ar exista zgomot, îmbunătățind acuratețea calculelor cuantice.

Provocarea principală în implementarea eficientă a ZNE este dezvoltarea unui model de zgomot precis pentru valoarea de așteptare și amplificarea zgomotului într-o manieră controlată și bine înțeleasă. Tehnicile comune pentru amplificarea erorilor în ZNE includ scalarea duratei pulsului prin calibrare, repetarea gate-urilor folosind cicluri de identitate și adăugarea zgomotului prin eșantionarea canalelor Pauli — o metodă cunoscută sub denumirea de Probabilistic Error Amplification (PEA).

Dintre acestea, PEA este adesea alegerea preferată din mai multe motive:

  • Extinderea pulsului implică un cost computațional ridicat.
  • Plierea gate-urilor, care folosește inserțiile de identitate, nu are garanții teoretice solide pentru păstrarea coeficientului de zgomot.
  • PEA este aplicabilă oricărui Circuit executat cu un factor de zgomot nativ, deși necesită învățarea modelului de zgomot în prealabil.

Sunt arătate trei metode de amplificare a zgomotului pentru ZNE: extinderea pulsului, plierea gate-urilor și amplificarea probabilistică a erorilor.

PEA funcționează sub presupunerea unui model de zgomot bazat pe straturi similar cu cel utilizat în anularea probabilistică a erorilor (PEC). Cu toate acestea, spre deosebire de PEC, evită overhead-ul exponențial de eșantionare care crește de obicei cu zgomotul Circuit-ului. Această eficiență face din PEA o abordare practică și robustă pentru amplificarea zgomotului în ZNE, facilitând o atenuare mai fiabilă a erorilor cuantice. Pentru a caracteriza modelul de zgomot, trebuie mai întâi să identificăm straturile distincte de operații cu doi qubiți din Circuit. Pentru fiecare dintre aceste straturi, aplicăm o procedură de twirling Pauli gate-urilor cu doi qubiți, care ajută la asigurarea că zgomotul poate fi descris cu precizie printr-un model de zgomot de amortizare. Apoi, repetăm perechi de straturi de identitate la diferite adâncimi și, în final, potrivim valorile de fidelitate pentru a determina ratele de eroare pentru fiecare canal de zgomot.

Deși este benefic să înțelegi această metodă din punct de vedere conceptual, implementarea ei manuală în Qiskit este mult mai simplă, așa cum este demonstrat în tutorialul însoțitor.

Sunt afișați pași în învățarea unui model de zgomot Pauli-Lindblad rar

Pasul 4 Qiskit patterns: Post-procesare

După finalizarea experimentului, poți vizualiza rezultatul prin post-procesare. Linia gri punctată din datele reprezentate grafic reprezintă rezultatele obținute folosind metode clasice aproximative, cu eroarea de aproximare redusă la un prag scăzut. Punctele de date brute pentru diferiții factori de zgomot, selectați de la bun început, sunt clar decalate față de această linie punctată. În contrast, linia albastră continuă afișează datele după aplicarea procesării noastre ZNE, care aduce vizibil rezultatele mult mai aproape de valorile exacte. Pe scurt, valorile obținute în condiții normale de zgomot (factor de zgomot nf=1.0) prezintă abateri semnificative față de rezultatele exacte. Între timp, valorile atenuate se aliniază strâns cu cele exacte, demonstrând eficacitatea tehnicii de atenuare a zgomotului bazate pe PEA.

Un grafic al soluțiilor exacte, al soluțiilor neatenuate și al soluțiilor atenuate pentru problema rezolvată în lucrarea utility.

Rezumat

Pentru a rezuma rapid ceea ce am învățat:

  • Simularea cuantică este una dintre cele mai promițătoare zone de aplicație pe termen scurt și mediu.
  • Are aplicații variate, de la produse farmaceutice la fizica energiilor înalte, știința materialelor și altele.
  • Lucrarea Utility de la IBM, publicată în 2023, a indicat calea spre posibilitatea de a utiliza calculatoarele cuantice pentru descoperire științifică și am parcurs tutorialul asociat care însoțește acea lucrare.
  • Pașii pentru a rezolva o problemă de simulare de la început până la sfârșit sunt relativ simpli și sperăm că poți folosi acum acest videoclip și tutorial ca ghid pentru și mai multe probleme de simulare.

Sondaj post-curs

Felicitări pentru finalizarea acestui curs! Te rog să aloci un moment pentru a ne ajuta să îmbunătățim cursul nostru, completând următorul sondaj rapid. Feedback-ul tău va fi folosit pentru a îmbunătăți oferta noastră de conținut și experiența utilizatorului. Mulțumim!

Note: This survey is provided by IBM Quantum and relates to the original English content. To give feedback on doQumentation's website, translations, or code execution, please open a GitHub issue.