Déployer un modèle : de Streamlit à Cloud Run
Conteneuriser une plateforme d’expérimentation et la mettre en ligne sur GCP Cloud Run pour un suivi collaboratif.
Un modèle qui tourne sur votre machine n'existe pas encore vraiment. Tant qu'il n'est pas accessible à d'autres — collègues, encadrants, utilisateurs — il reste une expérience privée. Voici comment je transforme un prototype en service partagé.
Streamlit pour l'exploration et le suivi
Streamlit a un défaut et une qualité : il n'impose aucune structure, ce qui en fait l'outil idéal pour prototyper une interface en une après-midi. Pour une plateforme d'expérimentation, il suffit de quelques widgets pour charger un jeu de données, choisir un modèle, lancer une évaluation et comparer les métriques.
import streamlit as st
dataset = st.selectbox("Jeu de données", ["foyer-1", "foyer-2", "foyer-3"])
model = st.selectbox("Modèle", ["RandomForest", "LSTM", "Transformer"])
if st.button("Évaluer"):
metrics = run_experiment(dataset, model)
st.line_chart(metrics)
L'interface devient le point de rencontre de l'équipe : chacun voit les mêmes courbes, les mêmes scores, et peut reproduire l'expérience d'un autre.
Docker pour la reproductibilité
Le passage en conteneur fige l'environnement : la bonne version de Python, les bonnes dépendances, rien qui dépende de la machine de l'un ou de l'autre.
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "app.py", "--server.port=8501"]
Une image Docker, c'est un contrat : ce qui marche dans le conteneur marchera en production.
Cloud Run pour la mise en ligne
Cloud Run (GCP) prend cette image et la sert derrière une URL HTTPS, avec mise à l'échelle automatique — de zéro instance quand personne ne consulte, à plusieurs sous charge. Le déploiement tient en une commande :
gcloud run deploy har-platform \
--image gcr.io/mon-projet/har-platform \
--platform managed \
--allow-unauthenticated
Résultat : une URL partageable, un historique des expériences centralisé, et une équipe qui suit les résultats en temps réel. C'est le même schéma que j'applique à l'inférence de modèles NLP avec FastAPI — seule la cible change (AWS EC2 pour un chatbot, Cloud Run pour une plateforme).
Le déploiement n'est pas la dernière étape, c'est la première qui rend le travail utile aux autres.