Sari la conținutul principal

Fluxul de dezvoltare

Termenul pattern Qiskit descrie fluxul de dezvoltare pentru descompunerea problemelor specifice unui domeniu și contextualizarea capacităților necesare în etape. Aceasta permite compozabilitatea fără cusur a noilor capacități dezvoltate de cercetătorii IBM Quantum® (și de alții) și deschide calea către un viitor în care sarcinile de calcul cuantic sunt îndeplinite de infrastructuri de calcul eterogene și puternice (CPU/GPU/QPU). Blocurile sau grupurile de blocuri realizează pașii unui pattern, SDK-ul Qiskit oferind un nivel fundațional important, susținut de alte instrumente sau servicii dezvoltate de IBM Quantum sau de comunitatea open-source din domeniul cuantic. Patternurile Qiskit le permit experților dintr-un domeniu să specifice o problemă și să compună instrumentele (blocurile) care realizează un pattern Qiskit. Acel pattern poate fi apoi executat local, prin servicii cloud sau implementat cu Qiskit Serverless.

Cei patru pași ai unui pattern Qiskit sunt:

  • Mapare a problemei pe circuite cuantice și operatori
  • Optimizare pentru hardware-ul țintă
  • Execuție pe hardware-ul țintă
  • Post-procesare a rezultatelor

Fiecare pas este detaliat în secțiunile de mai jos.

Maparea problemei pe circuite cuantice și operatori

Acest pas descrie modul în care un utilizator pornește de la o problemă clasică și determină cum să o mapeze pe un calculator cuantic. De exemplu, în aplicații precum chimia și simularea cuantică, acest pas implică în general construirea unui Circuit cuantic care reprezintă Hamiltonianul pe care încerci să îl rezolvi. În cadrul acestui pas, pentru anumite probleme, poate fi de asemenea dezirabil să specifici maparea problemei pe qubiți în rețeaua hex-grea (sau grosieră) a hardware-ului IBM® încă de la început, dacă structura problemei se pretează la optimizarea timpurie. Merită, de asemenea, să iei în considerare în această etapă care va fi rezultatul algoritmului respectiv, în pregătirea pentru pasul de execuție ulterior — de exemplu, dacă rezultatul dorit implică inferarea funcțiilor de corelație folosind testele Hadamard, s-ar putea să te pregătești să folosești Sampler, în timp ce specificarea observabilelor ar folosi Estimator și ar putea oferi numeroase opțiuni de diminuare a erorilor.

Rezultatul acestui pas este de obicei o colecție de circuite sau operatori cuantici care pot fi optimizați pentru hardware în pasul următor.

Optimizarea pentru hardware-ul țintă

În acest pas iei circuitele abstracte (sau operatorii) produse în pasul de mapare și efectuezi o serie de optimizări asupra lor. Aceasta poate include maparea rutei și a layout-ului circuitului pe hardware-ul fizic cu Qubit-uri, conversia la porțile de bază ale hardware-ului și reducerea numărului de operații, toate concepute pentru a optimiza probabilitatea de succes în pasul de execuție ulterior. În acest moment, s-ar putea să dorești și să testezi circuitele cu un simulator înainte de a le executa pe hardware real în pasul următor.

În cadrul acestui pas, circuitele abstracte trebuie transpilate în circuite de tip Instruction Set Architecture (ISA). Un circuit ISA este unul care constă doar din Gate-uri înțelese de hardware-ul țintă (porți de bază) și orice Gate-uri multi-Qubit necesare pentru a respecta constrângerile de conectivitate (harta de cuplare). Doar circuitele ISA pot fi rulate pe hardware-ul IBM folosind IBM Qiskit Runtime.

Execuția pe hardware-ul țintă

Acest pas implică rularea circuitelor pe hardware și produce rezultatele calculului cuantic. Circuitele ISA produse în pasul anterior pot fi executate folosind fie primitivul Sampler, fie Estimator din Qiskit Runtime, inițializate local pe calculatorul tău sau dintr-un cluster sau alt mediu de calcul eterogen. Acestea pot fi executate într-un Batch, care permite transpilarea paralelă pentru eficiență computațională clasică — sau o Session, care permite implementarea eficientă a sarcinilor iterative fără întârzieri de coadă. În cadrul acestui pas, există și opțiunea de a configura anumite tehnici de suprimare și diminuare a erorilor oferite de Qiskit Runtime.

În funcție de utilizarea primitivului Sampler sau Estimator, rezultatul acestui pas va fi diferit. Dacă folosești Sampler, rezultatul va fi măsurători per-shot sub formă de șiruri de biți. Dacă folosești Estimator, rezultatul va fi valorile de așteptare ale observabilelor corespunzătoare cantităților fizice sau funcțiilor de cost.

Post-procesarea rezultatelor

Acest pas final implică îmbinarea rezultatelor din pasul anterior pentru a obține rezultatul dorit. Aceasta poate implica o gamă de pași clasici de procesare a datelor, cum ar fi vizualizarea rezultatelor, tehnici de diminuare a erorilor de citire, marginalizarea distribuțiilor de cvasi-probabilitate pentru a determina rezultate pe seturi mai mici de Qubit-uri, sau post-selecția pe proprietăți inerente ale problemei, cum ar fi spinul total, paritatea sau conservarea particulelor prin eliminarea observabilelor nefizice.

Pe măsură ce domeniul trece de la construcția bespoke a circuitelor la fluxuri de lucru la scară de utilitate, flexibilitatea și ușurința cu care patternurile Qiskit le permit utilizatorilor să compună diferiți pași ai patternului deschid calculul cuantic către o gamă largă de aplicații și tehnici, ușor de utilizat de către oamenii de știință din domeniul calculului cuantic.