Modelul de execuție direcționată (beta)
Toate componentele din modelul de execuție direcționată se află în prezent în versiune beta și este posibil să nu fie stabile. Ești invitat să le testezi și să oferi feedback prin deschiderea unui issue în repository-urile GitHub Samplomatic sau Qiskit Runtime.
Interfețele primitive Sampler și Estimator oferă o abstractizare de nivel mai înalt pentru dezvoltatorii de algoritmi, astfel încât aceștia să se concentreze mai mult pe inovație și mai puțin pe conversia datelor. Cu toate acestea, ele sunt mai puțin potrivite pentru oamenii de știință din domeniul informației cuantice, care necesită mai mult control și flexibilitate pentru experimentele lor la scară utilitară. Modelul de execuție direcționată, aflat în prezent în versiune beta, răspunde acestei nevoi. Acest model de execuție oferă ingredientele necesare pentru a captura intențiile de design pe partea clientului și mută generarea costisitoare a variantelor de Circuit pe partea serverului, astfel încât să poți ajusta fin reducerea erorilor și alte tehnici fără a sacrifica performanța. Acest model explicit și compozabil facilitează experimentarea cu tehnici noi, reproducerea rezultatelor și partajarea metodelor.
În versiunea sa beta, modelul de execuție direcționată se concentrează pe a-ți oferi control asupra tehnicilor integrate în Sampler și Estimator existente, inclusiv răsucirea Pauli, învățarea și injecția modelului de zgomot și schimbările de bază. Suportul pentru alte capabilități va fi adăugat treptat în timp.
Flux de lucru
Unul dintre principalele obiective ale modelului de execuție direcționată este de a oferi o modalitate modulară de aplicare a metodelor de reducere a erorilor. De exemplu, poți defini care straturi din Circuit să fie atenuate sau poți ajusta ratele de zgomot injectate în Circuit.
Pentru a aplica reducerea erorilor unui Circuit în cadrul acestui framework, fluxul tău de lucru va implica de obicei următorii pași (instrumentele menționate aici sunt descrise mai complet în secțiunea următoare):
-
Grupează instrucțiunile în cutii și aplică-le adnotări. Adnotările captează transformarea intenționată fără a genera efectiv variantele de Circuit.
-
Învață modelele de zgomot ale straturilor unice, dacă este necesar, folosind noul NoiseLearnerV3.
-
Construiește Circuit-ul șablon și samplex-ul din Circuit-ul cu cutii.
-
Rulează Circuit-ul șablon și samplex-ul cu primitiva Executor, care va genera și executa variantele de Circuit conform instrucțiunilor.
-
Post-procesează rezultatele execuției. De exemplu, poți aplica post-selecție sau poți extrapola valorile de așteptare atenuate din rezultatele execuției.
Instrumente pentru modelul de execuție direcționată
Următoarele instrumente pot fi utilizate împreună pentru a implementa o tehnică de reducere a erorilor în modelul de execuție direcționată.
Samplomatic
Samplomatic este o nouă bibliotecă open-source care suportă randomizări de eșantionare personalizate. Folosește construcția box pentru a raționa despre colecții de operații de Circuit care ar trebui tratate ca având un context de zgomot stabil și utilizează adnotări pe cutii pentru a-ți permite să declari și să configurezi intenții. De exemplu, poți stratifica Circuit-ul în cutii, adăuga o adnotare de răsucire la fiecare cutie și specifica grupul de răsucire de utilizat, așa cum se arată în figura următoare:

Un Circuit cu cutii adnotate poate fi apoi folosit pentru a genera un Circuit șablon și un samplex. Circuit-ul șablon de ieșire este un Circuit parametrizat care va fi executat fără modificări ulterioare (în afara atribuirii unor valori diferite ale parametrilor). Samplex-ul, care este tipul de bază al bibliotecii Samplomatic, reprezintă o distribuție de probabilitate parametrică peste parametrii Circuit-ului șablon și alte câmpuri cu valori de tip array. Aceste câmpuri pot fi utilizate pentru a post-procesa datele colectate din executarea Circuit-ului șablon legat. Cu alte cuvinte, perechea Circuit șablon și samplex îi spune primitivei Executor (descrisă mai jos) exact ce parametri să genereze și ce Circuit-uri legate să ruleze. Deoarece aceste două construcții sunt create pe partea clientului, poți face inspecție și eșantionare locală pentru a verifica ieșirile înainte de a le trimite pentru execuție pe hardware.
Pentru a simplifica procesul de generare a cutiilor adnotate, biblioteca Samplomatic oferă, de asemenea, treceri ale Transpiler-ului care grupează automat instrucțiunile Circuit-ului în cutii adnotate, pe baza strategiilor pe care le furnizezi.
Pentru a afla mai multe despre Samplomatic, vizitează documentația ghidurilor și referinței API. Nu ezita să trimiți feedback și să raportezi bug-uri în repository-ul său GitHub.
Primitiva Executor
Executor este o nouă primitivă Qiskit Runtime care primește ca intrare perechea Circuit șablon și samplex, generează și leagă valorile parametrilor conform samplex-ului, execută Circuit-urile legate pe hardware și returnează rezultatele execuției și metadatele. Urmează directivele perechii de intrare și nu ia nicio decizie implicită în locul tău, astfel încât procesul este transparent și totodată performant.
Pentru a accesa Executor, instalează branch-ul executor_preview din qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Intrările și ieșirea primitivei Executor sunt foarte diferite de cele ale Sampler și Estimator. Consultă referința API Executor pentru mai multe informații. În plus, ghidul de pornire rapidă Executor oferă o prezentare generală și exemple de cod.
NoiseLearnerV3
Similar cu NoiseLearner actual, acest program helper Qiskit Runtime returnează modelul de zgomot Pauli-Lindblad sparse utilizat în multe metode de reducere a erorilor, inclusiv PEC, PEA și PNA. În NoiseLearner-ul original, transmiți o listă de Circuit-uri, iar programul stratifică Circuit-urile în straturi și returnează modelul de zgomot pentru fiecare strat unic. NoiseLearnerV3, pe de altă parte, îți oferă control asupra modului de stratificare a Circuit-urilor tale, iar programul primește pur și simplu o listă de instrucțiuni de Circuit cu cutii (de exemplu, straturi unice) ca intrări.
NoiseLearnerV3 suportă, de asemenea, învățarea zgomotului de măsurare. Pentru fiecare set de instrucțiuni din lista de intrare, rulează protocolul de învățare Pauli-Lindblad dacă setul conține porți cu unul și doi Qubiți, și protocolul TREX dacă setul conține măsurători.
Pentru a accesa NoiseLearnerV3, instalează branch-ul executor_preview din qiskit-ibm-runtime:
pip install -U git+https://github.com/Qiskit/qiskit-ibm-runtime.git@executor_preview
Pentru a afla mai multe despre NoiseLearnerV3, consultă documentația referinței API.
Pași următori
- Explorează două addon-uri Qiskit, Shaded lightcones și Propagated noise absorption, care sunt construite pe baza acestui model de execuție.