Utilizarea volumului de lucru
Utilizarea este o măsură a timpului în care QPU este blocat pentru volumul tău de lucru și se calculează diferit, în funcție de modul de execuție pe care îl folosești.
- Utilizarea Session este timpul de ceas al peretelui cât sesiunea este activă. Consultă Lungimea sesiunii pentru mai multe informații despre tranziția stării sesiunii.
- Utilizarea Batch este suma timpului cuantic (timpul petrecut de complexul QPU pentru procesarea jobului tău) al tuturor joburilor din lot.
- Utilizarea unui job individual este timpul cuantic pe care jobul îl folosește în procesare.
Reține că joburile eșuate sau anulate contează în utilizarea ta în anumite circumstanțe - consultă secțiunea Joburi eșuate și anulate pentru detalii.
Pentru utilizatorii cu plan plătit, utilizarea determină cât costă volumul de lucru. Consultă Gestionarea costurilor pentru detalii.
Utilizarea pentru joburi eșuate și anulate
Când un job eșuează sau este anulat, utilizarea raportată este după cum urmează:
-
Modul job sau batch: Utilizarea raportată este timpul cât QPU a fost blocat pentru executarea volumului tău de lucru până în momentul în care a eșuat sau a fost anulat. Prin urmare, dacă eșecul sau anularea a avut loc înainte de blocare, utilizarea raportată este zero. În caz contrar, utilizarea raportată a volumului de lucru este cantitatea de utilizare înainte ca volumul de lucru să eșueze sau să fie anulat. Astfel, unele joburi eșuate nu apar în utilizarea raportată, iar altele da.
-
Modul Session: Utilizarea raportată este timpul de ceas al peretelui cât sesiunea este activă, indiferent de numărul de joburi care eșuează sau sunt anulate.
Interogarea utilizării reale a unui volum de lucru
După ce un volum de lucru s-a finalizat, există mai multe modalități de a vizualiza utilizarea reală:
- Rulează
batch.usage()sausession.usage()înqiskit-ibm-runtime0.30 sau ulterior. Dacă folosești o versiune mai veche deqiskit-ibm-runtime(>= 0.23 și < 0.30), utilizarea poate fi găsită în continuare însession.details()["usage_time"]șibatch.details()["usage_time"]. - Folosește
GET /sessions/{id}pentru a vedea utilizarea pentru un anumit lot sau sesiune. - Folosește
GET /jobs/{id}pentru a vedea utilizarea pentru un job individual.
Vizualizarea utilizării instanței
Poți vizualiza utilizarea unei instanțe pe pagina Instanțe sau, pentru cei cu autoritatea corespunzătoare, pe pagina Analiză. Reține că paginile pot afișa numere de utilizare diferite deoarece calculează utilizarea în mod diferit.
Pagina Instanțe afișează utilizarea în timp real pentru ultimele 28 de zile (rulant), până la ora curentă din ziua curentă. Utilizarea de pe pagina Analiză este recalculată din oră în oră și include ultimele 28 de zile complete; adică, afișează utilizarea de la 00:00 acum 28 de zile până astăzi, la ora rotundă.
Estimarea utilizării înainte de a trimite un job
Deși obținerea unei estimări locale precise este complicată de operațiunile suplimentare efectuate pentru suprimarea și atenuarea erorilor, poți folosi această formulă de bază pentru a obține o aproximare a utilizării estimate:
<per sub-job overhead> + (rep_delay + <circuit length>) * <num executions>
<per sub-job overhead>este un overhead de aproximativ 2s per sub-job. Aceasta include operațiuni precum încărcarea datelor utile în electronica de control. Jobul tău primitiv poate fi împărțit în mai multe sub-joburi dacă este prea mare pentru ca motorul de execuție să îl proceseze dintr-o dată.rep_delayeste o opțiune personalizabilă de utilizator, iar valoarea implicită este dată debackend.default_rep_delay, care este de 250 de microsecunde pe majoritatea Backend-urilor IBM Quantum. Reține că reducerearep_delayscade timpul total de execuție al QPU, dar cu costul unei rate crescute de erori la pregătirea stării; consultă ghidul Execuție cu rată de repetiție dinamică pentru mai multe informații.<circuit length>este lungimea totală a instrucțiunilor. Fiecare instrucțiune durează un timp diferit pe QPU, deci lungimea totală variază de la Circuit la Circuit. O măsurătoare, de exemplu, poate dura de 56 de ori mai mult decât o poartăx.backend.target[<instruction>][<qubit>].durationpoate fi folosit pentru a găsi durata exactă pentru fiecare instrucțiune. O lungime tipică a unui Circuit este probabil între 50-100 de microsecunde. Dacă folosești tehnici de suprimare sau atenuare a erorilor cu primitivele, instrucțiuni suplimentare ar putea fi inserate în Circuit-ul tău, ceea ce ar crește lungimea totală a Circuit-ului.notăOpțiunea experimentală
scheduler_timingreturnează timpul total al Circuit-ului, dar acesta NU este timpul folosit pentru facturare.<num executions>este numărul total de circuite înmulțit cu numărul de împușcături, unde circuitele sunt cele generate după ce elementele PUB sunt difuzate.- Dacă folosești tehnici de atenuare a erorilor cu primitivele, circuite suplimentare ar putea fi rulate ca parte a procesului de atenuare, ceea ce ar crește numărul total de execuții. În plus, tehnicile avansate de atenuare a erorilor, cum ar fi PEA și PEC, vin cu un overhead mult mai mare deoarece necesită rularea circuitelor pentru învățarea zgomotului.
- Estimator grupează observabilele care comutează bit cu bit, ceea ce reduce numărul de execuții.
Dacă nu folosești tehnici avansate de atenuare a erorilor sau rep_delay personalizat, poți folosi 2+0.00035*<num executions> ca formulă rapidă.
Pași următori
- Revizuiește aceste sfaturi: Minimizează timpul de rulare al jobului.
- Setează Timpul maxim de execuție.
- Învață cum să transpui local în secțiunea Transpiler.
- Încearcă ghidul Compararea setărilor Transpiler-ului.