Cuando se trata de mejorar la fidelidad de los cúbits, una pregunta indirecta es si se puede mejorar la fidelidad de las compuertas “moldeando” pulsos que son simplemente más complejos que los pulsos gaussianos simples. Y la respuesta es: “¡echemos un vistazo al pulso _DRAG”!
La verdadera razón del interés en el DRAG Pulse es el comentario de Joseph Bardin en la presentación del video de Google sobre el Cryo Pulse Modulator:
[21:08] Lo que nos dimos cuenta es que, si no intentamos hacer cosas como el arrastre, solo necesitamos una envolvente simétrica. Coseno elevado o gaussiana: ambas son simétricas. Así que lo que hicimos fue construir una matriz de fuentes de corriente programables y luego tener las funciones habilitadoras apropiadas para crear este tipo de forma de onda de corriente con forma de pastel de bodas. Y así podemos programar las amplitudes y demás.
Esta es la arquitectura de Google, y es realmente inteligente:


Pero, ¿qué se necesita para adaptar dicha arquitectura y poder generar un pulso de arrastre? Para comprender esta cuestión, primero hay que entender qué es un pulso de arrastre.
Un pulso DRAG (Eliminación de Derivadas mediante Puerta Adiabática) se compone tomando un pulso gaussiano estándar y añadiendo una derivada escalada de dicho pulso a su componente en cuadratura. Esto crea un pulso de dos componentes: una es la envolvente gaussiana y la otra es una derivada gaussiana, lo que ayuda a reducir las fugas no deseadas hacia estados de mayor energía y a corregir errores de fase en los cúbits superconductores.
Componentes de un pulso DRAG Pulso gaussiano estándar:
La base del pulso es una envolvente gaussiana estándar, que es una curva suave en forma de campana. Este es el componente “en fase” \(i(t)\) del pulso.
Derivada gaussiana: Se añade un segundo componente al pulso, que es la derivada del pulso gaussiano estándar, escalada por un factor llamado \(\beta \). Este es el componente de “cuadratura” \(q(t)\).
Pulso total: El pulso DRAG final es una combinación de estos dos componentes \(v(t)\).
La derivada se expresa mediante la siguiente ecuación:
\[ DRAG(t) = v(t)=i(t)+q(t) = i(t)+ \beta \frac{d(i(t))}{dt} \]
Aquí no hay nada sofisticado, pero debemos prestar atención a que puede haber muchos tipos de DRAG Pulses, y que, incluso si el DRAG Pulse estándar es un DRAG Pulse gaussiano, nada nos impide tener composiciones aún más potentes:
Crédito: APS
Ahora que entendemos cómo se construye un pulso DRAG, podemos examinar su implementación con el Sistema de Control Cuántico. En este caso, analizaré el Qblox Scheduler, que funciona como un compilador de alto nivel, permitiendo a los usuarios definir experimentos en términos de cúbits y pulsos, abstraiendo las complejidades del control de instrumentos de bajo nivel.
El código en cuestión está disponible en gitlab. El código que aparece a continuación es una versión simplificada del código 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
En realidad, es bastante sencillo, y el código original es incluso más potente en cuanto a funcionalidad. Consulta la documentación en línea para obtener más información.
Modelo de controlador de pulsos
Link to heading
El código anterior funciona porque asume que el hardware subyacente funciona como un AWG, es decir, que se puede generar cualquier onda arbitraria a partir de un búfer de muestras. Pero ¿qué pasaría si tuviera que generarse en un “pulsar” (o modulador de pulsos), definido como algún tipo de lógica de control ubicada en la etapa criogénica de 4K?
Modulador de pulsos de Google: Generación 1
Link to heading
Creo que la razón por la que la arquitectura de Google no es adecuada para el pulso DRAG es que el componente de cuadratura tendría que escalarse tanto en amplitud, por el factor \(\beta\), como en duración, por el factor \(\sigma\). Tendré que confirmar si esto es cierto, pero por ahora, podemos suponer que el desafío radica en que el púlsar necesita proporcionar total flexibilidad en la conformación de la forma de onda I/Q.
En otras palabras, la cuestión no es que la arquitectura criogénica de Google no pueda generar pulsos DRAG; de hecho, puede producir pulsos I/Q y lograr el control de los cúbits. Sin embargo, el pulso DRAG estándar, utilizado para las compuertas de un solo cúbit de máxima fidelidad, podría resultar subóptimo con dicha arquitectura, a menos que se realice una calibración o compensación adicional.
Modulador de pulsos calibrado: Gen 2
Link to heading
Dado que el vídeo de Google data de 2019, podemos suponer que ya han evolucionado su sistema con la capacidad de conformación de pulsos DRAG, a la que nos referiremos como crioplásteros de segunda generación. Sin embargo, como no he podido encontrar ninguna información en línea sobre el crioplástero de Google de Bardin, podemos remitirnos a estas dos evoluciones de otros centros de investigación:
SPulseGen, también conocido como Generador de Pulsos Sucintos, de la Universidad de Osaka, Japón.
DLR, también conocido como Reducción de Fugas Retardadas, de la Universidad de Delft, Países Bajos
El generador de SPulseGen está diseñado para ajustar los parámetros del pulso (amplitud, temporización, forma) en lugar de simplemente reproducir una forma fija y aproximada. Esta flexibilidad es importante para implementar un componente DRAG (o una “corrección de derivada”) incluso si la forma de onda está algo simplificada.

En cuanto a DLR, evita el requisito de una conformación IQ “compleja”: en lugar de necesitar un canal de cuadratura de derivada continua, utiliza repeticiones con retardo temporal del pulso de banda base para generar interferencia destructiva de componentes espectrales no deseados (fugas).

Tanto DLR como SPulseGen están diseñados para abordar el mismo desafío de control de cúbits de alta fidelidad y baja fuga, todo dentro de un contexto de hardware de ultrabajo consumo que funciona con restricciones criogénicas, pero con un enfoque de dirección opuesta:
SPulseGen: mantiene DRAG y hace que su generación sea más barata y de menor tamaño.
DLR: elimina la necesidad del hardware de DRAG (modulación I/Q) al inventar una nueva forma de lograr la misma supresión de fugas espectrales a través de interferencia temporal.
¡Listo! Este resumen mental del sábado me ayudó a comprender mejor el pulso DRAG. Desde la perspectiva de la lógica de control en el escenario 4K, no hay que preocuparse por dar forma a estos pulsos.
El reto actual consiste en aprender la calibración y compensación óptimas que produzcan la máxima fidelidad. Enfoques como Reducción de fugas retardadas de la TU Delft sin duda marcarán la diferencia.
Un desafío aún más interesante surge cuando la calibración debe realizarse de forma continua, como en el aprendizaje por refuerzo basado en redes neuronales (RL). Esto plantea la cuestión de si la red neuronal debería/podría/funcionaría en la etapa criogénica de 4K, quizás utilizando métodos de caracterización in situ.
Mientras tanto, existen muchos avances nuevos en ASICs de IA de ultrabajo consumo, como blumind.ai, que marcarán la diferencia. Pero dejemos esta investigación de arquitecturas de circuitos integrados alternativas para un informe futuro.
Son tiempos emocionantes, ¿verdad?
References