Wenn es um die Verbesserung der Qubit-Fidelity geht, stellt sich indirekt die Frage, ob sich die Gate-Fidelity durch die „Formung“ von Pulsen verbessern lässt, die komplexer sind als einfache gaußförmig aussehende Pulse. Die Antwort lautet: „Betrachten wir den _DRAG-Puls!“
Der eigentliche Grund für das Interesse am DRAG Pulse ist der Kommentar von Joseph Bardin in der Video-Präsentation über Googles Cryo Pulse Modulator:
[21:08] Uns wurde klar, dass wir, wenn wir auf Effekte wie Widerstand verzichten, lediglich eine symmetrische Hüllkurve benötigen. Eine erhöhte Kosinus- oder Gauß-Hüllkurve ist beispielsweise symmetrisch. Daher haben wir ein Array programmierbarer Stromquellen entwickelt und die entsprechenden Aktivierungsfunktionen implementiert, um diese Art von kurvenförmiger Stromwellenform zu erzeugen. So können wir die Amplituden und weitere Parameter programmieren.
Das ist Googles Architektur – und sie ist wirklich clever:


Doch was ist nötig, um eine solche Architektur so anzupassen, dass sie einen Bremsimpuls erzeugen kann? Um diese Frage zu verstehen, muss man zunächst verstehen, was ein Bremsimpuls ist.
Ein DRAG-Impuls (Derivative Removal by Adiabatic Gate) entsteht durch Addition einer skalierten Ableitung eines Standard-Gauß-Impulses zu seiner Quadraturkomponente. Dadurch entsteht ein zweikomponentiger Impuls, dessen eine Komponente die Gaußsche Einhüllende und die andere die Gaußsche Ableitung ist. Dies trägt dazu bei, unerwünschte Leckagen in höhere Energiezustände zu reduzieren und Phasenfehler in supraleitenden Qubits zu korrigieren.
Komponenten eines DRAG-Impulses: Standard-Gauß-Impuls:
Die Basis des Impulses ist eine Standard-Gaußsche Hüllkurve, eine glatte, glockenförmige Kurve. Dies ist die „In-Phase“-Komponente \(i(t)\) des Impulses.
Gaußsche Ableitung: Dem Impuls wird eine zweite Komponente hinzugefügt, die die Ableitung des Standard-Gauß-Impulses, skaliert mit einem Faktor namens \(\beta \), darstellt. Dies ist die „Quadratur“-Komponente \(q(t)\).
Gesamtimpuls: Der endgültige DRAG-Impuls ist eine Kombination dieser beiden Komponenten \(v(t)\).
Die Ableitung wird durch die folgende Gleichung ausgedrückt:
\[ DRAG(t) = v(t)=i(t)+q(t) = i(t)+ \beta \frac{d(i(t))}{dt} \]
Hier gibt es nichts Besonderes, aber wir müssen beachten, dass es viele Arten von DRAG-Impulsen geben kann und dass, selbst wenn der Standard-DRAG-Impuls ein Gaußscher DRAG-Impuls ist, nichts uns daran hindert, noch leistungsfähigere Zusammensetzungen zu erhalten:
Quelle: APS
Nachdem wir nun verstanden haben, wie ein DRAG-Puls erzeugt wird, können wir seine Implementierung mit dem Quantenkontrollsystem untersuchen. In diesem Fall werde ich den Qblox Scheduler betrachten, der als High-Level-Compiler dient und es Benutzern ermöglicht, Experimente anhand von Qubits und Pulsen zu definieren, während gleichzeitig die Komplexität der Steuerung der Instrumente auf niedrigerer Ebene abstrahiert wird.
Der betreffende Code ist auf gitlab verfügbar. Der folgende Code ist eine vereinfachte Version des Originalcodes:
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
Das ist eigentlich ganz einfach, und der Originalcode bietet sogar noch mehr Funktionen. Weitere Informationen finden Sie in der Online-Dokumentation unter [https://docs.qblox.com/en/main/autoapi/qblox_scheduler/waveforms/index.html#qblox_scheduler.waveforms.drag].
Der obige Code funktioniert, weil er davon ausgeht, dass die zugrundeliegende Hardware als AWG arbeitet, d. h., dass jede beliebige Welle auf Basis eines Abtastpuffers erzeugt werden kann. Was aber, wenn die Erzeugung auf einem „Pulsar“ (oder Pulsmodulator) erfolgen müsste, der als eine Art Steuerlogik in der 4K-Kryostufe definiert ist?
Ich glaube, der Grund, warum Googles Architektur für DRAG-Pulse ungeeignet ist, liegt darin, dass die Quadraturkomponente sowohl hinsichtlich der Amplitude (Faktor β) als auch hinsichtlich der Dauer (Faktor σ) skaliert werden müsste. Ich muss dies noch überprüfen, aber vorerst können wir davon ausgehen, dass die Herausforderung darin besteht, dass der Pulsar maximale Flexibilität bei der Formung der I/Q-Wellenform bieten muss.
Anders ausgedrückt: Es geht nicht darum, dass die Kryoarchitektur von Google keine DRAG-Pulse erzeugen kann; sie kann durchaus I/Q-Pulse erzeugen und Qubits steuern. Allerdings ist der „Standard-DRAG“-Puls, wie er für hochpräzise Einzel-Qubit-Gatter verwendet wird, bei dieser Architektur möglicherweise suboptimal, sofern keine zusätzliche Kalibrierung/Kompensation erfolgt.
Da das Video von Google aus dem Jahr 2019 stammt, können wir davon ausgehen, dass sie ihr System bereits um die DRAG-Pulsformung erweitert haben; wir bezeichnen diese als Kryo-Pulsare der zweiten Generation. Da ich jedoch online keine Informationen zu Bardins Google-Kryo-System finden konnte, können wir uns auf diese beiden Weiterentwicklungen anderer Forschungszentren beziehen:
SPulseGen, auch bekannt als Succinct Pulse Generator, von der Universität Osaka, Japan
DLR, auch bekannt als Delayed Leakage Reduction, von der Technischen Universität Delft, Niederlande
Der Generator von SPulseGen ist darauf ausgelegt, Pulsparameter (Amplitude, Timing, Form) anzupassen, anstatt lediglich eine feste, grobe Form wiederzugeben. Diese Flexibilität ist wichtig für die Implementierung einer DRAG-Komponente (oder einer „Ableitungskorrektur“), selbst wenn die Wellenform vereinfacht ist.

DLR umgeht die Notwendigkeit einer “komplexen” IQ-Formung: Anstatt einen kontinuierlichen Ableitungsquadraturkanal zu benötigen, verwendet es zeitverzögerte Wiederholungen des Basisbandimpulses, um destruktive Interferenz unerwünschter (Leckage-)Spektralkomponenten zu erzeugen.

Sowohl DLR als auch SPulseGen sind darauf ausgelegt, die gleiche Herausforderung der hochpräzisen und verlustarmen Steuerung von Qubits zu bewältigen, und zwar im Kontext von Hardware mit extrem niedrigem Stromverbrauch, die unter Kryo-Beschränkungen arbeitet, jedoch mit einem entgegengesetzten Ansatz:
SPulseGen: Behält den DRAG bei und macht ihn billiger und kleiner zu erzeugen.
DLR: verzichtet auf die Hardware von DRAG (I/Q-Modulation), indem es eine neue Methode zur Erreichung der gleichen spektralen Leckageunterdrückung durch zeitliche Interferenz erfindet.
Voilà, diese Mindmapping-Notiz vom Samstag hat mir geholfen, den DRAG-Impuls besser zu verstehen. Aus Sicht der Steuerungslogik auf der 4K-Stufe ist die Formung dieser Impulse kein Grund zur Sorge.
Die Herausforderung besteht heutzutage darin, die optimale Kalibrierung und Kompensation zu finden, die die höchste Wiedergabetreue erzielt. Ansätze wie die Delayed Leakage Reduction der TU Delft werden hier sicherlich einen Unterschied machen.
Eine noch interessantere Herausforderung ergibt sich, wenn eine kontinuierliche Kalibrierung erforderlich ist, beispielsweise beim neuronalen Netzwerk-basierten Reinforcement Learning (RL). Dies wirft die Frage auf, ob das neuronale Netzwerk in der 4K-Kryophase laufen sollte/könnte/würde, möglicherweise unter Verwendung von In-situ-Charakterisierungsmethoden.
Inzwischen gibt es viele neue Entwicklungen im Bereich extrem stromsparender KI-ASICs, wie beispielsweise blumind.ai, die einen Unterschied machen werden. Die Untersuchung alternativer IC-Architekturen heben wir uns jedoch für ein späteres Memo auf.
Spannende Zeiten, nicht wahr?
References