Retour aux projets

Projet 01/ 12·2025 - 2026

DeepLearn

Plateforme web pour apprendre le deep learning en le faisant : diagnostic de niveau, cours générés par RAG, réseaux construits sans code et entraînés pour de vrai sur AWS, puis une arène de combat avec classement Elo.

Année
2025 - 2026
Stack technique
Deep LearningAWS EC2 SpotNext.js 15PythonTensorFlow.jsReact 19TypeScriptSupabaseTerraformRAGApprentissage par renforcement

Apprendre le deep learning en le faisant, pas seulement en lisant.

Apprendre le deep learning bute sur trois obstacles : la théorie est abstraite, entraîner un modèle coûte cher et les cours ignorent ce que la personne sait déjà. DeepLearn répond aux trois avec une boucle complète, sur un seul site : apprendre, se situer, construire, entraîner, s'affronter. Projet d'école d'architecture cloud mené à trois de mai 2025 à septembre 2026, il compte environ 32 000 lignes de TypeScript et 41 000 lignes de Python, réparties sur vingt pages.

Ce que vit l'utilisateur

  • Inscription et onboarding : e-mail, lien magique ou GitHub, puis six questions rapides qui personnalisent le tableau de bord, les objectifs quotidiens et les modèles recommandés.
  • Diagnostic de niveau : une auto-évaluation de 30 questions suivie d'un QCM adaptatif d'au moins 25 questions, noté côté serveur, pour mesurer le niveau réel et non le niveau déclaré.
  • Cours : six architectures, du perceptron au Transformer, avec trois cours chacune, formules KaTeX, schémas, quiz et suivi de progression, plus vingt-cinq articles fondateurs résumés.
  • Générateur de cours sur mesure : on tape un sujet, le système compose en quelques minutes un cours adapté au profil mesuré, ancré dans un corpus vérifié.
  • Sandbox : un réseau de neurones assemblé par glisser-déposer, trois hyperparamètres, un clic : une machine est louée sur AWS, entraîne le modèle, renvoie les courbes en direct et se détruit.
  • Test dans le navigateur : on dessine un chiffre que le modèle reconnaît, on regarde son agent équilibrer un pendule, on fait combattre son combattant.
  • Arène : les modèles entraînés s'affrontent dans un jeu de combat 2D avec classement Elo, rangs de Bronze à Maître et bots pédagogiques.

Un diagnostic qui ne croit personne sur parole

Chaque réponse déclarative est enregistrée avec une confiance volontairement faible. Le QCM adaptatif est composé sur le serveur avec des garanties de couverture (au moins quatre questions sur le concept visé, deux par prérequis critique, trois niveaux de difficulté), puis la maîtrise finale d'un concept mélange le déclaré et l'observé, le poids de l'observé croissant avec le nombre de questions posées. Le système corrige aussi bien les personnes surconfiantes que sous-confiantes. La correction est incorruptible : chaque question existe en deux versions, une version publique sans la bonne réponse et une version serveur qui ne quitte jamais le serveur, et une validation stricte en sortie de route retire tout champ inattendu.

Des cours générés sans inventer de faits

Le générateur repose sur le RAG (génération augmentée par recherche documentaire) : le modèle de langage ne rédige qu'à partir de preuves extraites d'un corpus d'environ 2 000 extraits issus de sources vérifiées (scikit-learn, d2l.ai, Google ML Crash Course, cours HuggingFace, résumés d'articles fondateurs). La recherche est hybride, mots-clés BM25 et similarité sémantique fusionnées par rang, avec un rappel@5 mesuré à 0,81. Un agent planificateur produit le plan du cours sans jamais voir les faits ; un agent rédacteur écrit chaque section uniquement à partir des preuves approuvées, avec interdiction d'inventer une API ; des validateurs de grounding, de provenance et de code bouclent avec une réparation bornée. Chaque étape LLM possède un repli déterministe qui passe les mêmes validateurs, si bien que tout fonctionne sans clé OpenAI. La personnalisation change la pédagogie, pas les faits : deux profils opposés reçoivent des cours factuellement identiques, l'un avec tableaux et exemples chiffrés, l'autre avec un cadrage théorique et des références aux articles fondateurs. La génération, longue de plusieurs minutes, tourne dans une file de jobs Postgres (réservation atomique, bail et heartbeat, reprise sur panne) exécutée par un worker Python sur une machine AWS éphémère, réconciliée chaque minute par une Lambda.

Construire sans code, entraîner pour de vrai

Le constructeur (React Flow) propose neuf types de couches et huit modèles prêts à l'emploi, sur MNIST, Fashion-MNIST, CIFAR-10, CartPole et le jeu de données Combat. Au clic sur « Exécuter », le graphe est validé à trois niveaux (navigateur, serveur, worker), puis une instance EC2 spot démarre, télécharge l'image Docker du worker, entraîne le modèle, envoie les métriques à chaque époque par callbacks signés, sauvegarde le modèle et se détruit elle-même : aucun coût résiduel possible, même si l'application perdait sa trace. Avant de payer une seconde de calcul, le worker vérifie le schéma du jeu de données via le catalogue Glue et exécute quatorze contrôles de qualité. Supervisé et apprentissage par renforcement (REINFORCE) partagent la même infrastructure et le même contrat de métriques. Un entraînement de dix minutes coûte environ 0,001 $. Le modèle est ensuite converti en TensorFlow.js et servi dans le navigateur : aucun serveur d'inférence, coût nul, aucune latence réseau.

L'arène : une IA qui se bat, un Elo qui grimpe

Le moteur de combat 2D est entièrement déterministe, à 60 images par seconde, avec dix actions, double saut, dégâts en pourcentage et KO par éjection, rendu en pixel art dans une borne d'arcade. Il existe en deux versions identiques image par image, TypeScript pour le navigateur et Python pour l'entraînement : un test rejoue une trajectoire de 5 466 images et exige l'égalité exacte. Les combattants s'entraînent par imitation des bots, par REINFORCE (16 combats par itération) ou en self-play contre une copie gelée d'eux-mêmes, avec un tableau de bord qui explique ce que l'on voit. L'équilibrage des quatre bots à règles est mesuré, pas ressenti : 60 combats par paire, bornes figées par test, et un délai de réaction de quatre images comme levier décisif. Le classement suit un Elo façon chess.com avec facteur K adaptatif. Anti-triche : le serveur choisit l'adversaire et la graine, émet un ticket signé à usage unique, et un déclencheur en base interdit toute modification directe de l'Elo.

Sécurité, fiabilité et coûts

  • Cinq zones de confiance qui ne communiquent que par des frontières authentifiées : navigateur, Vercel, Supabase (13 tables sous Row Level Security), workers EC2, services AWS.
  • IAM au moindre privilège : l'orchestrateur peut lancer des machines mais pas lire les données, le worker l'inverse. Machines sans port entrant, callbacks signés HMAC à temps constant, clé OpenAI dans Secrets Manager.
  • Budget maîtrisé : alerte AWS à 80 % réel et 100 % prévu d'un plafond de 5 $ par mois. Cinquante entraînements par mois coûtent moins d'un dollar.
  • Fiabilité : un job annulé n'est jamais ressuscité, un échec de callback ne tue jamais un entraînement, un worker qui meurt libère son bail et le job est repris.

Qualité et méthode

236 tests Vitest et 683 tests pytest couvrent les routes API, le moteur de combat, la parité TypeScript/Python, l'équilibrage des bots, le planner, le retrieval et le diagnostic. Des recettes de bout en bout rejouent le parcours complet contre la production avec une adresse jetable supprimée à la fin, et cinq personas traversent le diagnostic et la génération pour vérifier la correction du déclaré vers l'observé. L'infrastructure est décrite en Terraform, avec 38 ressources existantes adoptées sans destruction, et les migrations de base sont non destructives, transactionnelles et idempotentes.

Mon rôle

Au sein de l'équipe de trois, j'ai conçu et développé la sandbox d'entraînement cloud (constructeur, orchestration EC2, worker Python, contrat de données Glue), l'arène de combat (moteur déterministe bilingue, équilibrage des bots, entraînement par renforcement, Elo et anti-triche), l'infrastructure AWS et sa description en Terraform, ainsi que les recettes de validation en production.

Stack

  • Frontend : Next.js 15, React 19, TypeScript, Tailwind CSS, shadcn/ui, React Flow, Recharts, TensorFlow.js, KaTeX, Mermaid, MDX.
  • Backend et données : routes API Next.js sur Vercel, Zod, Supabase (PostgreSQL, Auth, RLS, triggers, RPC).
  • Calcul et IA : Python, TensorFlow/Keras, scikit-learn, NumPy, REINFORCE, behavioral cloning, self-play, BM25, embeddings, RRF, OpenAI API.
  • Cloud : AWS EC2 spot, S3, Glue Data Catalog, IAM, Secrets Manager, CloudWatch, Lambda, EventBridge Scheduler, Budgets, Docker Hub, Terraform.

Architecture & flux

De la sandbox à l'arène

Un entraînement de bout en bout : le réseau assemblé sans code est validé, entraîné sur une machine AWS éphémère qui se détruit seule, puis servi dans le navigateur pour être testé et envoyé dans l'arène.

Loading diagram...