Laboratorio de simulador cuántico: qubits, puertas y medición en JupyterLab
Este laboratorio da a cada alumno un JupyterLab propio con un pequeño simulador cuántico, qsim.py, escrito en unas 70 líneas de NumPy que se pueden leer de arriba abajo. La carpeta de trabajo tiene además un cuaderno de partida y scripts cortos que crean un qubit, aplican puertas, miden, construyen un estado de Bell y muestran la interferencia.
Es un simulador que funciona en un ordenador normal. No es un ordenador cuántico, y no puede mostrar que un ordenador cuántico sea más rápido: guarda todas las amplitudes en memoria, así que cada qubit más duplica el trabajo. Lo que muestra son las reglas. No es un laboratorio de ataque: cada copia no tiene salida a internet ni a ningún otro alumno.
Qué aprende el alumnado
Que un qubit se describe con amplitudes y que la probabilidad de una respuesta es la amplitud al cuadrado. Que una puerta cambia las amplitudes: X cambia 0 por 1 y H hace una mezcla a partes iguales. Que una medición da una respuesta al azar, así que 1000 disparos de una mezcla igual dan cerca de 500 de cada una y nunca exactamente eso. Que un estado de Bell une dos qubits para que siempre coincidan, y que las amplitudes pueden anularse, lo que es la interferencia. Por último, un paso que dirige cuatro elementos hacia el marcado. Encaja en una primera mirada a la computación cuántica para alumnado que sabe algo de Python; comprueba la redacción exacta en la unidad de tu propio organismo certificador, aquí no se cita ninguna.
Ejecútalo en tu navegador
El laboratorio inicia un solo servicio, jupyter, que escribe el simulador, el cuaderno y los scripts cortos en su carpeta de trabajo. JupyterLab no pide ningún token, porque la puerta de la plataforma ya sabe quién lo abre. El terminal junto al laboratorio no tiene Python propio, así que llega al del laboratorio con docker exec jupyter, seguido de la orden que se ejecuta dentro.
- Abre la página Contenedor. Abre «Crear» en la barra y elige «Ejecutar un contenedor». Cualquiera puede abrir la página, y el laboratorio de Git y el de SQL se inician sin cuenta. Todos los demás laboratorios necesitan una cuenta gratuita: crea una, inicia sesión y pulsa «Iniciar».
- Busca el laboratorio. La tarjeta «Laboratorios de ejemplo» lista todos los ejemplos. Busca JupyterLab: un simulador cuántico.
- Pulsa «Iniciar». «Iniciar» lo ejecuta tal cual, con una sola pulsación. «Editar el archivo primero» abre el archivo compose para que lo cambies antes de iniciarlo.
- Ábrelo. En la página del laboratorio, la barra del laboratorio tiene un enlace llamado JupyterLab: púlsalo para abrir JupyterLab en tu navegador y haz doble clic en start.ipynb. Después pulsa «Abrir terminal» y escribe docker exec jupyter python3 steps/qubit.py para ver un qubit en el estado |0>.
Qué pedir que entreguen
Un cuaderno propio que use qsim.py, por ejemplo un estado de tres qubits hecho con H en cada qubit, o lo que hace otra puerta con |0>, descargado de JupyterLab con File, Download. Después una o dos frases, con sus propias palabras, sobre lo que vieron y sobre lo que un simulador no puede mostrar. Nada se corrige automáticamente: la frase muestra si se entendió. Para un trabajo más sólido, pide que predigan los recuentos antes de ejecutar una celda.
Una lección básica en este laboratorio
Quantum Simulator Basics es una lección pequeña que se practica en este laboratorio. En ella el alumno lista la carpeta de trabajo, crea un qubit, aplica X y H, mide con una semilla fija, construye un estado de Bell, ve cómo se anulan las amplitudes y dirige cuatro elementos hacia el marcado.
Es pequeña a propósito: enseña a un docente qué es una lección practicada en un laboratorio, y el laboratorio hace el resto. Cópiala en un módulo tuyo para modificarla.
El código en GitHub
El archivo compose no tiene Dockerfile: ejecuta una sola imagen pública, scipy-notebook de los Jupyter Docker Stacks, fijada a una etiqueta con fecha, con su propia cuenta sin privilegios y 512 MB de memoria. La imagen tiene licencia BSD-3-Clause y no la distribuimos nosotros. El archivo escribe qsim.py y los scripts al arrancar, no descarga nada, y cada script muestra lo mismo cada vez. Los límites son honestos: es un simulador y no muestra velocidad, guarda todas las amplitudes y solo sirve para pocos qubits, y no se puede instalar nada desde internet. No se conserva nada cuando el laboratorio se detiene, así que el alumno descarga antes su cuaderno.
Asignarlo como trabajo
Indica en la tarea qué hay que entregar.
- Crea el laboratorio. En tu módulo añade una tarea y elige la tarjeta «Laboratorio de contenedores», y después «En un repositorio de GitHub». Indica https://github.com/mitsurutech/lab-quantum-sim con la rama main. El archivo compose es el predeterminado, compose.yaml. Haz un fork del repositorio antes si quieres modificarlo, por ejemplo para añadir una puerta propia.
- Publica y pruébalo. «Publicar» fija el commit que te mostraron, así que un cambio posterior en el repositorio no altera un laboratorio que ya has asignado. Inicia primero tu propia copia.
- Asígnalo. Asígnalo como cualquier tarea, con una fecha de entrega si quieres, e indica en la tarea qué hacer y qué entregar.
- Califica lo entregado. Abre la copia de un alumno y el trabajo que ha entregado, califícalo y devuélvelo con un motivo si necesita más.
Prueba este laboratorio, y lo que cuesta
Con una cuenta personal gratuita puedes seguir las lecciones básicas de este laboratorio, con crédito gratuito suficiente cada mes para seguir la mayoría de las lecciones y sin tarjeta. Para una clase, un centro tiene gratis sus primeros 365 días, hasta 50 alumnos, y después paga por alumno y año, con todos los laboratorios incluidos y el profesorado gratis.
Preguntas frecuentes
- ¿Es un ordenador cuántico de verdad?
- No. Es un simulador: un programa normal que sigue las reglas de los qubits con NumPy. Sirve para aprender las reglas, y no puede mostrar si un ordenador cuántico es más rápido, porque funciona guardando todas las amplitudes.
- ¿Por qué una ejecución muestra los mismos recuentos cada vez?
- La medición recibe una semilla, y la misma semilla da los mismos sorteos. Cambia la semilla y los recuentos cambian un poco, como hace el azar. Los scripts fijan la semilla para que la lección y tu pantalla coincidan.
- ¿Por qué el terminal usa docker exec jupyter?
- El terminal del laboratorio lleva curl, psql y algunos clientes más, y no Python. docker exec jupyter ejecuta una orden dentro del contenedor del laboratorio, que tiene Python y NumPy. JupyterLab tiene también su propio terminal, en File, New, Terminal.