Tous les articles

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.

AN
Ali Ncibi
2 min de lecture

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.