Sari la conținutul principal
Acest proiect este în versiune beta. Ai găsit o eroare? Deschide un issue pe GitHub. Ai o întrebare sau o idee? Întreabă în Discussions — ne-ar plăcea să aflăm părerea ta!
Cum este calitatea traducerii pe această pagină?

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_id câ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țiuneDescriereCaz de utilizare tipicUtilizare în QiskitFamilie de procesoare
measure_2Puls de măsurare mai scurtMăsurători la mijlocul circuituluiMidCircuitMeasure (v0.43.0 sau ulterioară)Heron, Nighthawk r2
reset_2Puls de resetare condiționată mai scurt, care folosește measure_2Resetarea qubitului la mijlocul circuituluiMidCircuitReset (v0.49.0 sau ulterioară)Heron
measure_resetMăsurătoare ca measure, care resetează și qubitul*Măsurarea și resetarea unui qubitMeasureReset (v0.50.0 sau ulterioară)Heron, Nighthawk r2
measure_reset_2Măsurătoare mai scurtă ca measure_2, care resetează și qubitul*Măsurarea și resetarea unui qubit la mijlocul circuituluiInițializează MeasureReset cu name="measure_reset_2" (v0.50.0 sau ulterioară)Heron, Nighthawk r2
xslowGate 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țieToate

. | 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)
notă

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 calibrareFamilie de procesoarePolarizare TLSRecomandat pentru
Niciunul (calibrare implicită)ToateDC (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_dcHeronDCFluxuri 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_acHeronACFluxuri 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_gatesNighthawkNu 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")
sfat

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​

Recomandări