For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/ai-machine-learning/ai-deploy-build-use-streamlit-image.md.

AI Deploy - Tutoriel - Construire & utiliser une image Streamlit

Voir en Markdown

Comment construire et utiliser votre propre image Docker contenant une application Streamlit

Info

Objectif

Streamlit est un framework python qui transforme des scripts en applications web partageables.

L’objectif de ce tutoriel est de fournir un exemple concret de la manière de construire et d’utiliser une image Docker personnalisée pour une application Streamlit.

Prérequis

  • un projet AI Deploy créé au sein d’un projet Public Cloud
  • un utilisateur pour AI Deploy
  • Docker installé sur votre ordinateur local
  • des connaissances sur la construction d’images et sur le Dockerfile

En pratique

Écrire une application Streamlit simple

Créez un fichier python simple nommé simple_app.py.

Dans ce fichier, importez les modules nécessaires :

import streamlit as st
import pandas as pd

Affichez toutes les informations que vous souhaitez sur votre application Streamlit :

st.title('My first app')
st.write("Here's our first attempt at using data to create a table:")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))
  • Plus d’informations sur les fonctionnalités de Streamlit sont disponibles ici
  • Le lien direct vers le fichier python complet est disponible ici

Écrire le Dockerfile de l’application

Votre Dockerfile doit commencer par l’instruction FROM indiquant l’image parente à utiliser. Dans notre cas, nous choisissons de partir d’une image python classique.

FROM python:3.8

Installez le module python nécessaire à l’aide d’une commande pip install .... Dans notre cas, nous n’avons besoin que de ces 2 modules :

  • streamlit
  • pandas
RUN pip install streamlit pandas

Installez votre application dans votre image. Dans notre cas, nous copions simplement notre fichier python dans le répertoire /opt.

COPY simple_app.py /opt/simple_app.py

Définissez votre commande de lancement par défaut pour démarrer l’application :

CMD [ "streamlit" , "run" , "/opt/simple_app.py", "--server.address=0.0.0.0" ]
Warning

Afin de pouvoir accéder à l’app depuis l’extérieur, n’oubliez pas d’ajouter l’instruction --server.address=0.0.0.0 à votre commande streamlit run .... En procédant ainsi, vous indiquez au processus qu’il doit se lier à toutes les interfaces réseau et pas seulement au localhost.

Créez le répertoire personnel de l’utilisateur ovhcloud (42420:42420) et donnez-lui les droits d’accès nécessaires :

RUN mkdir /workspace && chown -R 42420:42420 /workspace
ENV HOME /workspace
WORKDIR /workspace
Info

Cette dernière étape est obligatoire car Streamlit doit pouvoir écrire dans le répertoire HOME du propriétaire du processus pour fonctionner correctement.

  • Plus d’informations sur les Dockerfiles sont disponibles ici
  • Le lien direct vers le Dockerfile complet est disponible ici

Construire l’image Docker depuis le Dockerfile

Depuis le répertoire contenant votre Dockerfile, exécutez l’une des commandes suivantes pour construire l’image de votre application :

# Build the image using your machine's default architecture
docker build . -t streamlit-example:latest

# Build image targeting the linux/amd64 architecture
docker buildx build --platform linux/amd64 -t streamlit-example:latest .
  • La première commande construit l’image en utilisant l’architecture par défaut de votre système. Cela peut fonctionner si votre machine utilise déjà l’architecture linux/amd64, requise pour exécuter des containers avec nos produits AI. Cependant, sur des systèmes avec une architecture différente (par exemple ARM64 sur Apple Silicon), l’image résultante ne sera pas compatible et ne pourra pas être déployée.

  • La seconde commande cible explicitement l’architecture linux/amd64 afin de garantir la compatibilité avec nos services AI. Elle nécessite buildx, qui n’est pas installé par défaut. Si vous n’avez jamais utilisé buildx, vous pouvez l’installer en exécutant : docker buildx install

Info

L’argument point . indique que votre contexte de build (emplacement du Dockerfile et des autres fichiers nécessaires) est le répertoire courant.

L’argument -t vous permet de choisir l’identifiant à donner à votre image. En général, les identifiants d’image sont composés d’un nom et d’un tag de version <name>:<version>. Pour cet exemple, nous avons choisi streamlit-example:latest.

Tester en local (optionnel)

Lancez la commande docker suivante pour lancer votre application localement sur votre ordinateur :

docker run --rm -it -p 8501:8501 --user=42420:42420 streamlit-example:latest
Info

L’argument -p 8501:8501 indique que vous souhaitez rediriger le port 8501 de votre machine locale vers le port 8501 du container docker. Le port 8501 est le port par défaut utilisé par les applications streamlit.

Warning

N’oubliez pas l’argument --user=42420:42420 si vous souhaitez simuler exactement le même comportement que celui qui se produira sur les apps AI Deploy. Il exécute le container docker en tant qu’utilisateur OVHcloud spécifique (utilisateur 42420:42420).

Une fois démarrée, votre application devrait être disponible à l’adresse http://localhost:8501.

Envoyer l’image vers le registre partagé

Warning

Le registre partagé ne doit être utilisé qu’à des fins de test. Nous vous recommandons de créer et d’attacher votre propre registre. Plus d’informations à ce sujet sont disponibles ici. Les images envoyées sur ce registre sont destinées uniquement aux workloads AI Tools et ne seront pas accessibles pour des usages externes.

Trouvez l’adresse de votre registre partagé en lançant cette commande :

ovhai registry list

Connectez-vous au registre partagé avec vos identifiants habituels d’utilisateur AI Platform

docker login -u `<user-password>` -p <user-password> `<shared-registry-address>`

Envoyez l’image compilée vers le registre partagé :

docker tag streamlit-example:latest `<shared-registry-address>`/streamlit-example:latest
docker push `<shared-registry-address>`/streamlit-example:latest

Lancer l’app AI Deploy

La commande suivante démarre une nouvelle app exécutant votre application Streamlit :

ovhai app run --default-http-port 8501 --cpu 1 `<shared-registry-address>`/streamlit-example:latest
Info

--default-http-port 8501 indique que le port à atteindre sur l’URL de l’app est le 8501.

Info

--cpu 1 indique que nous ne demandons qu’un seul CPU pour cette app.

Info

Pensez à ajouter l’attribut --unsecure-http si vous souhaitez que votre application soit accessible sans authentification.

Une fois l’app AI Deploy en cours d’exécution, vous pouvez accéder à votre application Streamlit directement depuis l’URL de l’app.

Application Streamlit intitulée My first app affichant un tableau de quatre lignes avec les colonnes first column et second column et un graphique en courbes de trois séries a b et c

Aller plus loin

  • Vous souhaitez utiliser Streamlit pour déployer un modèle d’IA pour une tâche de classification audio ? C’est par ici.
  • Vous pouvez imaginer déployer un modèle d’IA avec un autre outil : Flask. Reportez-vous à ce tutoriel.

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Nous voulons vos retours !

N’hésitez pas à nous faire part de vos questions, retours et suggestions pour améliorer le service :

Cette page vous a-t-elle aidé ?