← Retour au blog
🎓 Webinaire EUREKA 2025 · Démo Live · 28 décembre 2025

Déployer un CNN MNIST sur Hugging Face avec Streamlit & Docker

Du modèle PyTorch entraîné à la démo interactive en production.

Contexte : du webinaire à la démo live

Ce webinaire s'inscrit dans la belle initiative portée par Mr Younousse SEYE, président de l'association EUREKA, visant à faire découvrir aux jeunes lycéens comment les mathématiques qu'ils étudient (sigmoïde, dérivée, matrices) constituent les véritables fondations de l'Intelligence Artificielle.

Pour rendre cet apprentissage concret lors de notre session du 28 décembre 2025, nous avons construit et déployé une démo interactive de reconnaissance de chiffres utilisant un réseau de neurones convolutif (CNN) entraîné avec PyTorch sur le dataset MNIST.

Objectif de cet article : vous montrer le code complet — de l'entraînement du modèle à son déploiement sur Hugging Face Spaces, pour que vous puissiez reproduire la démo chez vous.

Le Space est accessible ici : 🤗 papasega/Webinaire-EUREKA-Maths_IA-2025

Le pipeline en 4 étapes

1. Entraîner
CNN PyTorch sur MNIST (5 epochs, 99.3%)
2. Exporter
Sauvegarder les poids (.pth)
3. App Streamlit
Interface de dessin + prédiction live
4. Déployer
Dockerfile → HuggingFace Space

Structure du projet

tp_mnist_pytorch_space/
├── Dockerfile
├── requirements.txt
├── mnist_cnn_v1.pth   ← modèle pré-entraîné
├── train_model.py   ← script d'entraînement
└── src/
    └── app_with_model.py   ← app Streamlit

Étape 1 : Entraîner le CNN avec PyTorch

Le script train_model.py définit un réseau compact à 3 couches convolutives et ~130k paramètres. En 5 epochs seulement, il atteint 99.33% de précision sur les 10 000 images de test MNIST.

Architecture du CNN : Conv2D(32) → MaxPool → Conv2D(64) → MaxPool → Conv2D(64) → FC(128) → Dropout(0.5) → FC(10). L'entrée est une image 28×28 en niveaux de gris, normalisée avec μ=0.1307 et σ=0.3081.
Lancer l'entraînement :
python train_model.py --epochs 5 --output mnist_cnn_v1.pth
En ~2 minutes sur CPU, le fichier mnist_cnn_v1.pth est sauvegardé avec les meilleurs poids.

Étape 2 : L'application Streamlit

L'application charge le modèle pré-entraîné sans aucun entraînement à l'exécution. L'utilisateur dessine un chiffre sur un canvas interactif, et le CNN prédit en temps réel avec la distribution de probabilités.

Points clés du code

  • Injection de thème dark au runtime : le fichier .streamlit/config.toml est créé automatiquement au démarrage
  • Prétraitement MNIST-fidèle : recadrage, redimensionnement proportionnel à 20px, padding 28×28, recentrage par centre de masse, normalisation μ/σ
  • Canvas interactif via streamlit-drawable-canvas, trait blanc sur fond noir
  • Prédiction en temps réel avec softmax et barres de probabilités

Étape 3 : Le Dockerfile pour Hugging Face Spaces

Hugging Face Spaces supporte les applications Docker. On fournit un Dockerfile qui installe les dépendances, copie le modèle pré-entraîné et lance Streamlit directement.

Pourquoi Docker ? Contrairement au mode « Streamlit natif » de HF Spaces, un Dockerfile nous donne le contrôle total : version de Python exacte, dépendances système (libgl1 pour OpenCV), et configuration du serveur. C'est la méthode la plus fiable pour les apps avec des dépendances C++.

Déploiement sur Hugging Face

  1. Créez un nouveau Space sur huggingface.co/new-space avec le SDK Docker
  2. Clonez le repo du Space et copiez-y vos fichiers :
# Structure à pousser dans le Space :
# Dockerfile
# requirements.txt
# mnist_cnn_v1.pth        ← modèle pré-entraîné (~500 KB)
# src/app_with_model.py   ← application Streamlit
  1. Faites un git push et Hugging Face build automatiquement le conteneur Docker et déploie l'application.
  2. Votre démo est live ! 🎉
Astuce importante : Le modèle mnist_cnn_v1.pth ne fait que ~500 KB car PyTorch ne sauvegarde que les poids (state_dict), pas l'architecture entière. C'est ce qui rend le déploiement rapide et léger.

Pour aller plus loin

Cet article complète le webinaire EUREKA 2025 où nous avons expliqué pas à pas les mathématiques du lycée qui font fonctionner ce réseau de neurones : la sigmoïde, la descente de gradient, la backpropagation, et l'architecture CNN.

📖 Lire l'article complet du webinaire :
IA & Mathématiques : De la Terminale à la Révolution IA — Webinaire EUREKA 2025
Neurones, sigmoïde, dérivée, backpropagation, CNN — tout expliqué à partir des maths du lycée.

Ressources

Captures d'écran de la démo

Voici l'application en action sur Hugging Face Spaces :