Lab simulateur quantique : qubits, portes et mesure dans JupyterLab

Ce lab donne à chaque élève un JupyterLab à lui, avec un petit simulateur quantique, qsim.py, écrit en environ 70 lignes de NumPy qu’un élève peut lire de bout en bout. Le dossier de travail contient aussi un notebook de départ et de courts scripts qui créent un qubit, appliquent des portes, mesurent, construisent un état de Bell et montrent l’interférence.

C’est un simulateur qui tourne sur un ordinateur ordinaire. Ce n’est pas un ordinateur quantique, et il ne peut pas montrer qu’un ordinateur quantique est plus rapide : il garde chaque amplitude en mémoire, donc chaque qubit de plus double le travail. Ce qu’il montre, ce sont les règles. Ce n’est pas un lab d’attaque : chaque copie n’a aucun accès à internet ni à aucun autre élève.

Ce que les élèves apprennent

Qu’un qubit se décrit par des amplitudes et que la probabilité d’une réponse est l’amplitude au carré. Qu’une porte change les amplitudes : X fait passer 0 à 1 et H fait un mélange égal. Qu’une mesure donne une réponse au hasard : 1000 tirages d’un mélange égal donnent près de 500 de chaque, et jamais exactement cela. Qu’un état de Bell lie deux qubits pour qu’ils soient toujours d’accord, et que des amplitudes peuvent s’annuler, ce qui est l’interférence. Enfin, une étape qui oriente quatre éléments vers celui qui est marqué. Il convient à une première approche de l’informatique quantique pour des élèves qui connaissent un peu de Python ; vérifiez la formulation exacte dans l’unité de votre propre organisme certificateur, aucune n’est citée ici.

Le lancer dans votre navigateur

Le lab démarre un seul service, jupyter, qui écrit le simulateur, le notebook et les petits scripts dans son dossier de travail. JupyterLab ne demande aucun jeton, car la porte de la plateforme sait déjà qui l’ouvre. Le terminal à côté du lab n’a pas de Python à lui : il atteint celui du lab avec docker exec jupyter, suivi de la commande à lancer à l’intérieur.

  1. Ouvrir la page Conteneur. Ouvrez « Créer » dans la barre et choisissez « Lancer un conteneur ». Tout le monde peut ouvrir la page, et le lab Git et le lab SQL se lancent sans compte. Tous les autres labs demandent un compte gratuit : créez-en un, connectez-vous, puis appuyez sur « Démarrer ».
  2. Trouver le lab. La carte « Laboratoires d’exemple » liste tous les exemples. Trouvez JupyterLab : un simulateur quantique.
  3. Appuyer sur Démarrer. « Démarrer » le lance tel quel, en un clic. « Modifier le fichier d’abord » ouvre le fichier compose pour que vous puissiez le changer avant de démarrer.
  4. L’ouvrir. Sur la page du lab, la barre du lab a un lien nommé JupyterLab : appuyez dessus pour ouvrir JupyterLab dans votre navigateur, puis double-cliquez sur start.ipynb. Appuyez ensuite sur « Ouvrir le terminal » et tapez docker exec jupyter python3 steps/qubit.py pour voir un qubit dans l’état |0>.

Que demander aux élèves de rendre

Un notebook à eux qui utilise qsim.py, par exemple un état de trois qubits obtenu avec H sur chaque qubit, ou ce qu’une autre porte fait à |0>, téléchargé depuis JupyterLab avec File, Download. Puis une ou deux phrases, de leurs propres mots, sur ce qu’ils ont vu et sur ce qu’un simulateur ne peut pas montrer. Rien n’est noté automatiquement : la phrase montre si c’était compris. Pour un travail plus poussé, demandez de prévoir les comptages avant d’exécuter une cellule.

Une leçon de base sur ce lab

Quantum Simulator Basics est une petite leçon qui se fait dans ce lab. L’élève y liste le dossier de travail, crée un qubit, applique X et H, mesure avec une graine fixe, construit un état de Bell, voit des amplitudes s’annuler et oriente quatre éléments vers celui qui est marqué.

Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.

Le code sur GitHub

Le fichier compose n’a pas de Dockerfile : il lance une seule image publique, scipy-notebook des Jupyter Docker Stacks, figée sur une étiquette datée, avec son propre compte sans privilèges et 512 Mo de mémoire. L’image est sous licence BSD-3-Clause et n’est pas distribuée par nous. Le fichier écrit qsim.py et les scripts au démarrage, ne télécharge rien, et chaque script affiche la même chose à chaque fois. Les limites sont honnêtes : c’est un simulateur et il ne montre aucune vitesse, il garde chaque amplitude et ne convient donc qu’à quelques qubits, et rien ne peut être installé depuis internet. Rien n’est conservé quand le lab s’arrête : l’élève télécharge son notebook avant.

En faire un travail

Indiquez dans la tâche ce qu’il faut rendre.

  1. Créer le lab. Dans votre module, ajoutez une tâche et choisissez la carte « Lab de conteneurs », puis « Dans un dépôt GitHub ». Indiquez https://github.com/mitsurutech/lab-quantum-sim avec la branche main. Le fichier compose par défaut est compose.yaml. Faites d’abord un fork du dépôt si vous voulez le modifier, par exemple pour ajouter une porte de votre choix.
  2. Publier et l’essayer. « Publier » fige le commit qui vous a été montré : un changement ultérieur dans le dépôt ne modifie donc pas un lab que vous avez déjà proposé. Démarrez d’abord votre propre copie.
  3. Le distribuer. Attribuez-le comme n’importe quelle tâche, avec une échéance si vous le souhaitez, et indiquez dans la tâche ce qu’il faut faire et ce qu’il faut rendre.
  4. Noter ce qui est rendu. Ouvrez la copie d’un élève et le travail rendu, notez-le et renvoyez-le avec un motif s’il demande un complément.

Essayer ce lab, et ce qu’il coûte

Un compte personnel gratuit permet de suivre les leçons de base de ce lab, avec chaque mois assez de crédit gratuit pour suivre la plupart des leçons, sans carte. Pour une classe, un établissement a ses 365 premiers jours gratuits pour 50 élèves au plus, puis paie par élève et par an, tous les labs compris et les enseignants gratuits.

Questions fréquentes

Est-ce un vrai ordinateur quantique ?
Non. C’est un simulateur : un programme ordinaire qui suit les règles des qubits avec NumPy. Il est bon pour apprendre les règles, et il ne peut pas montrer si un ordinateur quantique est plus rapide, car il fonctionne en gardant chaque amplitude.
Pourquoi une exécution affiche-t-elle les mêmes comptages à chaque fois ?
La mesure prend une graine, et la même graine donne les mêmes tirages. Change la graine et les comptages changent un peu, comme le fait le hasard. Les scripts fixent la graine pour que la leçon et ton écran concordent.
Pourquoi le terminal utilise-t-il docker exec jupyter ?
Le terminal du lab contient curl, psql et quelques autres clients, mais pas Python. docker exec jupyter lance une commande dans le conteneur du lab, qui a Python et NumPy. JupyterLab a aussi son propre terminal, sous File, New, Terminal.