Atenuarea erorilor prin rețele tensoriale (TEM): O Funcție Qiskit de la Algorithmiq
Vezi referința API
Funcțiile Qiskit sunt o funcționalitate experimentală disponibilă doar utilizatorilor din planul IBM Quantum® Premium, Flex și On-Prem (prin API-ul IBM Quantum Platform). Acestea se află în stadiu de previzualizare și pot suferi modificări.
Versiuni pachete
Codul de pe această pagină a fost dezvoltat folosind cerințele de mai jos. Recomandăm folosirea acestor versiuni sau a unora mai noi.
qiskit[all]~=2.4.0
Prezentare generală
Metoda TEM (Tensor-network Error Mitigation) de la Algorithmiq este un algoritm hibrid cuantic-clasic conceput pentru atenuarea zgomotului exclusiv în etapa de post-procesare clasică. Cu TEM, poți calcula valorile de așteptare ale observabililor, atenuând erorile inevitabile induse de zgomot ce apar pe hardware-ul cuantic, cu precizie sporită și eficiență a costurilor, ceea ce îl face o opțiune extrem de atractivă atât pentru cercetătorii în domeniul cuantic, cât și pentru practicienii din industrie.
Metoda constă în construirea unei rețele tensoriale care reprezintă inversul canalului de zgomot global ce afectează starea procesorului cuantic și apoi în aplicarea transformării asupra rezultatelor măsurătorilor complet informaționale obținute din starea zgomotoasă, pentru a obține estimatori nebiasați ai observabililor.
Ca avantaj, TEM valorifică măsurătorile complet informaționale pentru a oferi acces la un set vast de valori de așteptare atenuate ale observabililor și are un overhead de eșantionare optim pe hardware-ul cuantic, conform descrierii din Filippov et al. (2023), arXiv:2307.11740, și Filippov et al. (2024), arXiv:2403.13542. Overhead-ul de măsurare se referă la numărul de măsurători suplimentare necesare pentru atenuarea eficientă a erorilor, un factor critic în fezabilitatea calculelor cuantice. Prin urmare, TEM are potențialul de a permite avantajul cuantic în scenarii complexe, cum ar fi aplicații în domeniile haosului cuantic, fizicii multi-corpuri, dinamicii Hubbard și simulărilor de chimie a moleculelor mici.
Principalele caracteristici și beneficii ale TEM pot fi rezumate astfel:
- Overhead de măsurare optim: TEM este optim față de limitele teoretice, ceea ce înseamnă că nicio metodă nu poate obține un overhead de măsurare mai mic. Cu alte cuvinte, TEM necesită numărul minim de măsurători suplimentare pentru atenuarea erorilor. Aceasta implică, la rândul său, că TEM utilizează un timp de execuție cuantic minim.
- Eficiență a costurilor: Deoarece TEM gestionează atenuarea zgomotului exclusiv în etapa de post-procesare, nu este nevoie să se adauge circuite suplimentare calculatorului cuantic, ceea ce nu doar că face calculul mai ieftin, ci și diminuează riscul introducerii unor erori suplimentare din cauza imperfecțiunilor dispozitivelor cuantice.
- Estimarea mai multor observabili: Datorită măsurătorilor complet informaționale, TEM estimează eficient mai mulți observabili cu aceleași date de măsurare de la calculatorul cuantic.
- Atenuarea erorilor de măsurare: Funcția TEM Qiskit include și o metodă proprietară de atenuare a erorilor de citire capabilă să reducă semnificativ erorile de readout după o scurtă rulare de calibrare.
- Precizie: TEM îmbunătățește semnificativ precizia și fiabilitatea simulărilor cuantice digitale, făcând algoritmii cuantici mai exacți și mai de încredere.
Descriere
Funcția TEM îți permite să obții valori de așteptare atenuate ale erorilor pentru mai mulți observabili pe un Circuit cuantic cu un overhead de eșantionare minim. Circuitul este măsurat cu o măsură de operator cu valoare pozitivă complet informațională (IC-POVM), iar rezultatele măsurătorilor colectate sunt procesate pe un calculator clasic. Această măsurătoare este folosită pentru a aplica metodele de rețele tensoriale și a construi o hartă de inversare a zgomotului. Funcția aplică o transformare care inversează complet întregul circuit zgomotos folosind rețele tensoriale pentru a reprezenta straturile zgomotoase.
Odată ce circuitele sunt trimise funcției, acestea sunt transpilate și optimizate pentru a minimiza numărul de straturi cu porți cu doi Qubiți (porțile mai zgomotoase pe dispozitivele cuantice). Zgomotul care afectează straturile este învățat prin Qiskit Runtime folosind un model de zgomot sparse Pauli-Lindblad conform descrierii din E. van den Berg, Z. Minev, A. Kandala, K. Temme, Nat. Phys. (2023). arXiv:2201.09866.
Modelul de zgomot este o descriere precisă a zgomotului de pe dispozitiv, capabilă să capteze caracteristici subtile, inclusiv interferențele între Qubiți. Totuși, zgomotul de pe dispozitive poate fluctua și deriva, iar zgomotul învățat s-ar putea să nu fie precis la momentul la care se face estimarea. Acest lucru poate duce la rezultate inexacte.
Primii pași
Autentifică-te folosind cheia API IBM Quantum Platform și selectează funcția TEM după cum urmează. (Acest fragment presupune că ți-ai salvat deja contul în mediul local.)
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit qiskit-ibm-catalog
from qiskit_ibm_catalog import QiskitFunctionsCatalog
tem_function_name = "algorithmiq/tem"
catalog = QiskitFunctionsCatalog(channel="ibm_quantum_platform")
# Load your function
tem = catalog.load(tem_function_name)
Exemplu
Fragmentul următor arată un exemplu în care TEM este utilizat pentru a calcula valorile de așteptare ale unui observabil dat un Circuit cuantic simplu.
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
# Create a quantum circuit
qc = QuantumCircuit(3)
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
for _ in range(2):
qc.barrier()
qc.cx(0, 1)
qc.cx(2, 1)
qc.barrier()
qc.u(0.4, 0.9, -0.3, 0)
qc.u(-0.4, 0.2, 1.3, 1)
qc.u(-1.2, -1.2, 0.3, 2)
# Define the observables
observable = SparsePauliOp("IYX", 1.0)
# Define the execution options
pub = (qc, [observable])
options = {"default_precision": 0.02}
# Define backend to use. TEM will choose the least-busy device
# reported by IBM if not specified
backend_name = "ibm_marrakesh"
# Run the TEM function (uses around three minutes of QPU time)
job = tem.run(pubs=[pub], backend_name=backend_name, options=options)
Folosește API-urile Qiskit Serverless pentru a verifica statusul sarcinii tale Qiskit Function:
print(job.status())
QUEUED
Poți obține rezultatele astfel:
result = job.result()
evs = result[0].data.evs
print(evs[0])
0.02165380888171687
Valoarea așteptată pentru circuitul fără zgomot pentru operatorul dat ar trebui să fie în jurul valorii 0.18409094298943401.
Obține suport
Contactează qiskit_ibm@algorithmiq.fi
Asigură-te că incluzi următoarele informații:
- ID-ul sarcinii Qiskit Function (
qiskit-ibm-catalog),job.job_id - O descriere detaliată a problemei
- Orice mesaje sau coduri de eroare relevante
- Pașii pentru reproducerea problemei
Pași următori
- Solicită acces la Algorithmiq Tensor-network error mitigation.
- Vizitează referința API pentru această Funcție Qiskit.