Sari la conținutul principal

Alege modul de execuție potrivit

Sarcinile de lucru la scară de utilitate pot dura multe ore, deci este important ca atât resursele clasice, cât și cele cuantice să fie programate eficient pentru a eficientiza execuția. Modurile de execuție oferă flexibilitate în echilibrarea compromisului dintre cost și timp, pentru a folosi resursele în mod optim pentru sarcinile tale de lucru. Există mai multe aspecte de luat în considerare atunci când alegi ce mod de execuție să folosești, cum ar fi timpul total de execuție (timpul maxim de viață, sau TTL) și timpul dintre joburi (TTL interactiv).

Beneficiile fiecăruia sunt rezumate mai jos:

  • Batch
    • Întregul batch de joburi este programat împreună și nu există timp suplimentar de așteptare în coadă pentru fiecare.
    • Calculul clasic al joburilor, cum ar fi compilarea, se execută în paralel. Astfel, rularea mai multor joburi într-un batch este semnificativ mai rapidă decât rularea lor în serie.
    • De obicei există o întârziere minimă între joburi, ceea ce poate ajuta la evitarea derivei.
    • Dacă îți partiționezi sarcina de lucru în mai multe joburi și le rulezi în modul batch, poți obține rezultate din joburi individuale, ceea ce le face mai flexibile. De exemplu, dacă rezultatele unui job nu corespund așteptărilor tale, poți anula joburile rămase. De asemenea, dacă un job eșuează, îl poți retrimite în loc să reruezi întreaga sarcină de lucru.
    • Este în general mai puțin costisitor decât sesiunile.
  • Session
    • Toate funcționalitățile din modul batch (dar necesitând utilizare crescută; vezi Utilizarea sarcinii de lucru pentru mai multe detalii despre cum se calculează utilizarea).
    • Acces dedicat și exclusiv la QPU pe durata ferestrei active a sesiunii.
    • Util pentru sarcinile de lucru care nu au toate intrările disponibile de la început, pentru sarcinile de lucru iterative care necesită post-procesare clasică înainte ca următoarea să poată rula, și pentru experimentele care trebuie să ruleze cât mai strâns posibil.
  • Job
    • Cel mai ușor de folosit când rulezi un experiment mic.
    • Poate rula mai devreme decât modul batch.

Recomandări și bune practici

În general, folosește modul batch dacă nu ai sarcini de lucru cărora le lipsesc intrările la început.

  • Folosește modul batch pentru a trimite simultan mai multe joburi primitive și a scurta timpul de procesare.

  • Folosește modul session pentru sarcinile de lucru iterative sau dacă ai nevoie de acces dedicat la QPU.

  • Folosește întotdeauna modul job pentru a trimite o singură cerere primitivă.

  • Deoarece sesiunile sunt în general mai costisitoare, se recomandă să folosești batch ori de câte ori nu ai nevoie de beneficiile suplimentare oferite de sesiuni.

  • Utilizatorii planului Open nu pot trimite joburi de tip session.

Pentru a asigura cea mai eficientă utilizare a modurilor de execuție, se recomandă următoarele practici:

  • Există un cost fix asociat rulării unui job. În general, dacă fiecare dintre joburile tale folosește mai puțin de un minut de timp QPU, ia în considerare combinarea mai multor joburi într-unul mai mare (acest lucru se aplică tuturor modurilor de execuție). „Timp QPU" se referă la timpul petrecut de complexul QPU pentru a procesa jobul tău.

  • Dacă fiecare dintre joburile tale consumă mai mult de un minut de timp QPU, sau dacă combinarea joburilor nu este practică, poți totuși rula mai multe joburi în paralel. Fiecare job trece atât prin procesare clasică, cât și cuantică. În timp ce un QPU poate procesa un singur job la un moment dat, până la cinci joburi clasice pot fi procesate în paralel. Poți profita de acest lucru trimițând mai multe joburi în modul de execuție batch sau session.

Cele de mai sus sunt linii directoare generale și ar trebui să îți ajustezi sarcina de lucru pentru a găsi raportul optim, mai ales când folosești sesiuni. De exemplu, dacă folosești o sesiune pentru a obține acces exclusiv la un Backend, ia în considerare împărțirea joburilor mari în joburi mai mici și rularea lor în paralel. Aceasta ar putea fi mai rentabilă deoarece poate reduce timpul de ceas de perete.

Exemple

Rularea unui algoritm cuantic variațional

Rularea unui algoritm cuantic variațional urmează de obicei acest flux:

  1. Pregătește ansatz-ul.
  2. Evaluează funcția de cost pe un QPU.
  3. Ia rezultatul din pasul anterior și rulează-l printr-un optimizator clasic.
  4. Ajustează parametrii conform rezultatului de la (3), apoi revino la pasul (2).

În acest caz, dacă ai folosi modul job sau batch, fiecare job generat la pasul (2) ar trebui să treacă din nou prin coadă. Aceasta crește dramatic durata experimentului (timpul de ceas de perete) din cauza timpului de așteptare în coadă. De asemenea, ar putea dura mai mult până la convergență din cauza derivei dispozitivului. Adică, fiecare iterație ar trebui să îți ofere un rezultat mai bun, dar deriva dispozitivului ar putea face ca rezultatele ulterioare să fie mai slabe.

În plus, dacă folosești PEA sau PEC, poți învăța modelul de zgomot o singură dată și îl poți aplica joburilor ulterioare când rulezi într-o sesiune dedicată. Acest lucru nu funcționează de obicei cu modul batch sau job deoarece modelul de zgomot ar putea deveni depășit până când următorul job iese din coadă.

Compararea setărilor de atenuare a erorilor

Pentru a compara efectele metodelor disponibile de atenuare a erorilor, ai putea urma acest flux:

  1. Construiește un Circuit și un observabil.
  2. Trimite joburi primitive care folosesc combinații diferite de setări de atenuare a erorilor.
  3. Reprezintă grafic rezultatele pentru a observa efectele diferitelor setări.

În acest caz, toate joburile (care sunt corelate, dar independente) sunt disponibile de la început. Dacă folosești modul batch, acestea sunt programate colectiv, deci trebuie să aștepți să treacă prin coadă o singură dată. În plus, deoarece scopul este de a compara efectele diferitelor metode de atenuare a erorilor, este benefic că rulează cât mai aproape în timp. Astfel, batch ar fi o alegere bună. Ai putea rula aceste joburi într-o sesiune, dar deoarece sesiunile sunt în general mai costisitoare, se recomandă să folosești batch ori de câte ori nu ai nevoie de funcționalitatea suplimentară pe care o oferă sesiunile.

Pași următori