Instrucțiuni calibrate special
Implicit, gate-urile cuantice și operațiile de citire de pe calculatoarele cuantice IBM® sunt calibrate pentru performanță optimă în cazurile generale de utilizare. Unele sarcini de lucru beneficiază totuși de instrucțiuni ai căror parametri sunt reglați diferit. De exemplu, MidCircuitMeasure (measure_2) este o operație de citire adaptată măsurătorilor din mijlocul unui circuit, iar gate-urile cz mai lente pot îmbunătăți rezultatele unor fluxuri de lucru de atenuare a erorilor.
Instrucțiunile calibrate special există în două forme, iar accesul la ele diferă:
-
Instrucțiuni cu semnături diferite sunt calibrate împreună cu instrucțiunile standard în calibrarea implicită, deci le adaugi în circuitele tale ca orice altă instrucțiune. Sunt de obicei identificate printr-un sufix, precum
measure_2. -
Calibrări alternative înlocuiesc părți din calibrarea implicită cu parametri reglați diferit. Selectezi una transmițând un
calibration_idcând obții backend-ul.
Pentru a afla cum sunt calibrate calculatoarele cuantice IBM, consultă Monitorizează, calibrează și fă benchmarking.
Instrucțiuni cu semnături diferite
Aceste instrucțiuni sunt calibrate cu setul standard de instrucțiuni, deci nu trebuie să faci nimic special pentru a obține un backend care le acceptă. Pentru a folosi una, adaugă în circuit instrucțiunea corespunzătoare din qiskit-ibm-runtime.
| Instrucțiune | Descriere | Caz de utilizare tipic | Utilizare în Qiskit | Familie de procesoare |
|---|---|---|---|---|
measure_2 | Puls de măsurare mai scurt | Măsurători la mijlocul circuitului | MidCircuitMeasure (v0.43.0 sau ulterioară) | Heron, Nighthawk r2 |
reset_2 | Puls de resetare condiționată mai scurt, care folosește measure_2 | Resetarea qubitului la mijlocul circuitului | MidCircuitReset (v0.49.0 sau ulterioară) | Heron |
measure_reset | Măsurătoare ca measure, care resetează și qubitul* | Măsurarea și resetarea unui qubit | MeasureReset (v0.50.0 sau ulterioară) | Heron, Nighthawk r2 |
measure_reset_2 | Măsurătoare mai scurtă ca measure_2, care resetează și qubitul* | Măsurarea și resetarea unui qubit la mijlocul circuitului | Inițializează MeasureReset cu name="measure_reset_2" (v0.50.0 sau ulterioară) | Heron, Nighthawk r2 |
xslow | Gate de inversare de bit (X) cu durată extinsă | Postselecție și atenuarea erorilor. Este valoarea implicită a opțiunii x_pulse_type din pașii de postselecție | Toate |
. | XSlowGate (v0.50.0 sau ulterioară) | Toate |
* Pe procesoarele Heron, resetarea depinde de rezultatul măsurătorii. Pe procesoarele Nighthawk r2, resetarea este necondiționată.
Deoarece aceste instrucțiuni nu sunt acceptate pe fiecare backend, verifică instrucțiunile acceptate de backend înainte de a le folosi:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>")
print(backend.supported_instructions)
Pentru a găsi toate backend-urile care acceptă o instrucțiune, folosește:
service = QiskitRuntimeService()
backends = service.backends(filters=lambda b: "<instruction>" in b.supported_instructions)
Folosește instruction_signatures pentru a vedea semnăturile acestor instrucțiuni calibrate special:
print(backend.configuration().instruction_signatures)
Calibrări alternative
Calibrările alternative înlocuiesc părți din calibrarea implicită cu parametri reglați diferit. Fiecare calibrare alternativă are un ID de calibrare, iar disponibilitatea ei depinde de QPU.
Pentru a folosi o calibrare alternativă, transmite calibration_id când obții backend-ul. Target-ul backend-ului, și deci Transpiler-ul, folosește proprietățile instrucțiunilor din acea calibrare, iar job-urile primitive pe care le rulezi pe backend se execută cu ea.
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.backend("<backend_name>", calibration_id="<calibration_id>")
print(backend.calibration_id)
Calibrările alternative nu sunt disponibile pe toate QPU-urile.
Calibrări cu gate-uri lente
Calibrările cu gate-uri lente reglează gate-ul cz să fie mai lent decât în calibrarea implicită. Gate-urile cz mai lente pot îmbunătăți performanța în fluxurile de lucru de estimare a observabilelor la scară mare cu atenuarea erorilor, dar măresc și durata totală a circuitului tău, ceea ce cauzează o decoerență suplimentară.
Pe procesoarele Heron, calibrările cu gate-uri lente sunt disponibile și cu două moduri de control al polarizării sistemului cu două niveluri (TLS):
-
Polarizarea TLS DC este optimizată pentru cea mai bună performanță instantanee. Calibrarea implicită folosește polarizarea TLS DC.
-
Polarizarea TLS AC modulează polarizarea TLS pentru a stabiliza erorile dispozitivului în timp, ceea ce menține stabil modelul de zgomot al dispozitivului pe durata fluxurilor de lucru lungi. Pentru detalii, consultă "Stabilizarea zgomotului" în Observable Estimation in the Absence of Classical Verification.
Procesoarele Nighthawk nu folosesc polarizarea TLS, deci au o singură calibrare cu gate-uri lente.
| ID de calibrare | Familie de procesoare | Polarizare TLS | Recomandat pentru |
|---|---|---|---|
| Niciunul (calibrare implicită) | Toate | DC (Heron) | Utilizare generală. Recomandat mai ales pentru sarcini de lucru ale căror șiruri de biți pot fi distilate clasic, precum circuitele cu vârf și fluxurile de lucru SQD sau SKQD, și pentru sarcini de lucru cu detectarea erorilor. |
slow_gates_dc | Heron | DC | Fluxuri de lucru de estimare a observabilelor la scară mare, mai ales cele care folosesc atenuarea euristică a erorilor, precum extrapolarea la zero zgomot (ZNE). |
slow_gates_ac | Heron | AC | Fluxuri de lucru care necesită rate de eroare stabile pe sesiuni lungi. Recomandat insistent pentru fluxuri de lucru care implică învățarea zgomotului, precum amplificarea probabilistică a erorilor (PEA) și anularea probabilistică a erorilor (PEC). |
slow_gates | Nighthawk | Nu se aplică | Fluxuri de lucru de estimare a observabilelor care folosesc atenuarea erorilor, precum ZNE, PEA și PEC. |
De exemplu:
from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
# On a Heron QPU
backend = service.backend("ibm_kingston", calibration_id="slow_gates_ac")
# backend = service.backend("ibm_kingston", calibration_id="slow_gates_dc")
# On a Nighthawk QPU
backend = service.backend("ibm_phoenix", calibration_id="slow_gates")
Când folosești slow_gates_ac, trimite toate job-urile din fluxul de lucru într-o singură sesiune, astfel încât să ruleze cât timp zgomotul dispozitivului rămâne stabil.
Verifică duratele gate-urilor
Deoarece calibrările cu gate-uri lente măresc duratele gate-ului cz, compară duratele cu calibrarea implicită pentru a înțelege efectul asupra circuitului tău. Folosește target-ul backend-ului pentru a găsi durata, în secunde, a gate-ului cz pe o pereche specifică de qubiți:
default_backend = service.backend("<backend_name>")
slow_backend = service.backend(
"<backend_name>", calibration_id="slow_gates_ac"
) # Or slow_gates_dc, or slow_gates on Nighthawk
qubits = (0, 1) # Replace with a connected qubit pair on the backend
print(default_backend.target["cz"][qubits].duration)
print(slow_backend.target["cz"][qubits].duration)
Deoarece target-ul reflectă calibrarea selectată, transpilează-ți circuitele pentru backend-ul care folosește același calibration_id pe care plănuiești să rulezi.
Pașii următori
- Află cum să execuți circuite dinamice cu măsurători la mijlocul circuitului.
- Folosește postselecția pentru a filtra rezultatele afectate de zgomot corelat.
- Citește despre cum sunt monitorizate, calibrate și evaluate prin benchmarking calculatoarele cuantice IBM.