Când vine vorba de îmbunătățirea fidelității qubitilor, o întrebare indirectă este dacă se poate spori fidelitatea porții prin „modelarea” impulsurilor care sunt pur și simplu mai complexe decât impulsurile simple cu aspect guassian? Iar răspunsul este: „hai să aruncăm o privire la pulsul _DRAG”!
Adevăratul motiv al interesului față de DRAG Pulse este comentariul lui Joseph Bardin din prezentarea video despre Cryo Pulse Modulator de la Google:
[21:08] Ne-am dat seama că, dacă nu încercăm să facem lucruri precum tragere, avem nevoie doar de o anvelopă simetrică. Cosinus ridicat sau gaussian - ambele sunt simetrice. Așa că am construit o matrice de surse de curent programabile și apoi am avut funcțiile de activare corespunzătoare pentru a crea acest tip de formă de undă de curent în formă de tort de nuntă. Și astfel putem programa amplitudinile și așa mai departe.
Aceasta este arhitectura Google - și este cu adevărat inteligentă:


Dar ce este necesar pentru a adapta o astfel de arhitectură pentru a putea genera un impuls de tracțiune (DRAG)? Pentru a înțelege această întrebare, trebuie mai întâi să înțelegem ce este un impuls DRAG.
Un impuls DRAG (Derivative Removal by Adiabatic Gate - Eliminare Derivată prin Poartă Adiabatică) este compus prin luarea unui impuls gaussian standard și adăugarea unei derivate scalate a acelui impuls la componenta sa în cuadratură. Aceasta creează un impuls cu două componente, o componentă fiind anvelopa gaussiană, iar cealaltă fiind o derivată gaussiană, ceea ce ajută la reducerea scurgerilor nedorite în stări de energie mai mare și la corectarea erorilor de fază în qubiții supraconductori.
Componentele unui impuls DRAG Impuls gaussian standard:
Baza impulsului este o anvelopă gaussiană standard, care este o curbă netedă, în formă de clopot. Aceasta este componenta „în fază” ∫(t)∫ a impulsului.
Derivată gaussiană: O a doua componentă este adăugată impulsului, care este derivata impulsului gaussian standard, scalată cu un factor numit β. Aceasta este componenta „în cuadratură” ∫(q(t)).
- Impuls total: Impulsul DRAG final este o combinație a acestor două componente \(v(t)\).
Derivata este exprimată prin următoarea ecuație:
\[ DRAG(t) = v(t) = i(t) + q(t) = i(t) + \beta \frac{d(i(t))}{dt} \]
Nu este nimic extravagant aici, dar trebuie să fim atenți că pot exista multe tipuri de impulsuri DRAG și că, chiar dacă impulsul DRAG standard este un impuls DRAG Guassian, nimic nu ne împiedică să avem compoziții și mai puternice:
Credit: APS
Acum, că înțelegem cum se construiește un impuls DRAG, putem examina implementarea sa cu Sistemul de Control Cuantic. În acest caz, voi examina Programatorul Qblox, care servește ca un compilator de nivel înalt, permițând utilizatorilor să definească experimente în termeni de qubiți și impulsuri, eliminând în același timp complexitățile controlului instrumentelor de nivel inferior.
Codul în cauză este disponibil pe gitlab. Codul de mai jos este o versiune simplificată a codului original:
def drag( t: np.ndarray, G_amp, D_amp, duration: float, nr_sigma: float=4, phase: float=0 )
-> np.ndarray:
mu = t[0] + duration / 2
sigma = duration / (2 * nr_sigma)
# In-phase envelope
gauss_env = G_amp * np.exp(-(0.5 * ((t - mu) ** 2) / sigma**2))
# Quadrature envelope
deriv_gauss_env = -D_amp * (t - mu) / sigma * gauss_env
# generate pulses
drag_wave = gauss_env + 1j * deriv_gauss_env
# Apply phase rotation
rot_drag_wave = rotate_wave(drag_wave, phase=phase)
return rot_drag_wave
De fapt, acest lucru este destul de simplu, iar codul original este și mai puternic din punct de vedere al funcționalității. Consultați [documentația] online (https://docs.qblox.com/en/main/autoapi/qblox_scheduler/waveforms/index.html#qblox_scheduler.waveforms.drag) pentru mai multe informații.
Modelul controlerului de impulsuri
Link to heading
Codul de mai sus funcționează deoarece presupune că hardware-ul subiacent rulează ca un AWG, adică orice undă arbitrară poate fi generată pe baza unui buffer de eșantionare. Dar dacă ar trebui generată pe un „pulsar” (sau modulator de impulsuri), definit ca un fel de logică de control situată pe stadiul criogenic 4K?
Modulatorul de puls de la Google: Generația 1
Link to heading
Cred că motivul pentru care arhitectura Google nu este potrivită pentru impulsul DRAG este că componenta în cuadratură ar trebui scalată atât pentru amplitudine, cu factorul \(\beta\), cât și pentru durată, cu factorul \(\sigma\). Va trebui să confirm dacă acest lucru este adevărat, dar deocamdată putem presupune că provocarea este că pulsarul trebuie să ofere flexibilitate deplină în modelarea formei de undă I/Q.
Cu alte cuvinte, ideea nu este că arhitectura criogenică Google nu poate genera impulsuri DRAG; este posibil să producă impulsuri I/Q și să obțină controlul asupra qubiților. Cu toate acestea, impulsul „DRAG standard”, așa cum este utilizat pentru porțile cu un singur qubit de cea mai înaltă fidelitate, poate fi suboptimal atunci când se utilizează această arhitectură, cu excepția cazului în care se efectuează o calibrare/compensare suplimentară.
Modulator de impulsuri calibrat: Gen 2
Link to heading
Întrucât videoclipul de la Google datează din 2019, ne putem aștepta ca aceștia să fi dezvoltat deja sistemul lor cu capacitatea de modelare a impulsurilor DRAG, la care ne vom referi ca fiind crio-pulsarii de a doua generație. Cu toate acestea, deoarece nu am reușit să găsesc nicio informație online despre crio-pulsarii Google ai lui Bardin, putem face referire la aceste două evoluții de la alte centre de cercetare:
SPulseGen, cunoscut și sub numele de Generator de Pulse Succinct, de la Universitatea din Osaka, Japonia
DLR, cunoscut și sub numele de Reducerea Întârziată a Scurgerilor, de la Universitatea Delft, Olanda
Generatorul SPulseGen este conceput pentru a regla parametrii impulsului (amplitudine, temporizare, formă) în loc să redea doar o formă fixă grosieră. Această flexibilitate este importantă pentru implementarea unei componente DRAG (sau a unei „corecții derivate”) chiar dacă forma de undă este oarecum simplificată.

În ceea ce privește DLR, acesta evită cerința de modelare a IQ-ului „complex”: în loc să necesite un canal de cuadratură derivat continuu, folosește repetări întârziate ale impulsului de bandă de bază pentru a genera interferențe distructive ale componentelor spectrale nedorite (de scurgere).

Atât DLR, cât și SPulseGen sunt concepute pentru a aborda aceeași provocare de control al qubiților de înaltă fidelitate și cu scurgeri reduse, totul într-un context de hardware cu consum ultra-redus de energie care funcționează cu constrângeri Cryo, dar cu o abordare în direcție opusă:
- SPulseGen: păstrează DRAG și îl face mai ieftin și mai mic de generat.
DLR: elimină necesitatea hardware-ului DRAG (modulație I/Q) prin inventarea unei noi metode de a obține aceeași suprimare a scurgerilor spectrale prin interferență temporală.
Voila, această notă de sâmbătă cu hărți mentale m-a ajutat să înțeleg mai multe despre pulsul DRAG. Din perspectiva logicii de control la stadiul 4K, modelarea acestor pulsuri nu este ceva de care să-ți faci griji.
Provocarea actuală este de a învăța calibrarea și compensarea optimă care produce cea mai înaltă fidelitate. Abordări precum Delayed Leakage Reduction de la TU Delft vor face cu siguranță diferența.
O provocare și mai interesantă este atunci când calibrarea trebuie să se întâmple continuu, cum ar fi în cazul învățării prin consolidare bazate pe rețele neuronale (RL). Aceasta ridică întrebarea dacă rețeaua neuronală ar trebui/ar putea/ar funcționa în stadiul criogenic 4K, eventual folosind metode de caracterizare in-situ.
Între timp, există multe dezvoltări noi în domeniul ASIC-urilor AI cu consum ultra-redus de energie, cum ar fi blumind.ai, care vor face diferența. Dar să păstrăm această investigație a arhitecturilor alternative de circuite integrate pentru o notă viitoare.
Vremuri palpitante, nu-i așa?
References