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-openai-whisper.md.

AI Deploy - Tutoriel - Déployer le modèle Whisper

Voir en Markdown

Comment déployer Whisper, le modèle de reconnaissance de la parole d'OpenAI

Info

AI Deploy est couvert par les Conditions particulières OVHcloud Public Cloud.

Introduction

Whisper d'OpenAI large-v3 est la dernière itération du modèle open source Whisper de reconnaissance automatique de la parole (ASR, Automatic Speech Recognition).

Sorti le 6 novembre 2023, Whisper large-v3 s’est fait remarquer dans divers benchmarks en tant que modèle ASR le plus performant. C’est pour cette raison qu’il représente l’état de l’art dans le domaine de l’ASR. Plus généralement, Whisper est devenu un outil puissant pour la transcription de la parole dans environ 100 langues, y compris la transcription de langues autres que l’anglais et la traduction vers l’anglais.

Vue d'ensemble

Objectif

Dans ce tutoriel, nous allons vous guider tout au long du processus de déploiement du modèle Whisper large-v3 dans une application simple sur AI Deploy, en vue d’une utilisation en production.

Contrairement à une application hébergée en local, l’utilisation d’AI Deploy offre une inférence extrêmement rapide puisqu’elle est déployée sur des ressources puissantes (GPU), ainsi que d’autres fonctionnalités telles que le partage. Vous apprendrez également à construire et à utiliser une image Docker personnalisée dans le cadre du processus de déploiement.

Prérequis

Pour construire et déployer votre app Whisper, vous avez besoin de :


Accès à l'espace client OVHcloud

  • Lien direct :
  • Pour accéder à vos services : Public Cloud > Sélectionnez votre projet > Object Storage

En pratique

Vous allez suivre différentes étapes pour déployer votre application Whisper :

Étape 1 : sélection du modèle Whisper

Il existe diverses implémentations du modèle Whisper (Distil-Whisper, WhisperX, faster-whisper, Whisper JAX, ...), mais nous utiliserons l’implémentation Whisper originale pour ce tutoriel. N’hésitez pas à explorer d’autres implémentations en fonction de vos besoins (contraintes de mémoire et vitesse d’inférence souhaitée (transcription en direct ou après coup)).

L’implémentation Whisper originale existe en cinq tailles de modèles distinctes (tiny, base, small, medium et large), chacune conçue pour des cas d’usage spécifiques. Chaque taille possède un équivalent exclusivement anglophone (tiny.en pour la taille tiny par exemple), qui offre des performances optimisées pour les applications en anglais, surpassant la variante multilingue.

Les besoins en mémoire et les vitesses d’inférence relatives sont des éléments clés à prendre en compte lors du choix de votre modèle Whisper. Les modèles tiny et base, qui nécessitent environ 1 Go de VRAM, offrent des vitesses jusqu’à 32 fois et 16 fois supérieures, respectivement, par rapport au modèle large. Plus les modèles sont volumineux, plus la VRAM requise et la vitesse relative évoluent en conséquence.

Dans ce tutoriel, nous allons déployer la dernière version du modèle Whisper large afin d’obtenir la meilleure qualité de transcription possible, quelle que soit la langue parlée. Vous pouvez néanmoins facilement passer à un autre modèle.

Étape 2 : téléchargement du modèle Whisper dans l’Object Storage

Une fois votre modèle sélectionné, il est temps de le télécharger pour l’utiliser en inférence.

Cela peut se faire au sein de l’application déployée, en installant la bibliothèque open-whisper et en exécutant le code Python suivant, qui télécharge le modèle Whisper :

pip install -U openai-whisper
import whisper
model_path = "whisper_model"
model_id = 'large-v3'

# Download model 
model = whisper.load_model(model_id, download_root=model_path)

Comme AI Deploy repose sur des images Docker, il est conseillé d’éviter de télécharger directement le modèle dans le code Python et dans l’image Docker, pour une meilleure gestion et une plus grande flexibilité. De plus, vous ne devez pas stocker le modèle Whisper directement dans l’image Docker, car cela augmenterait considérablement la taille de celle-ci.

Pour plus d’efficacité, il est préférable d’enregistrer le modèle dans un stockage distant, comme l’Object Storage OVHcloud. Ce stockage sera lié à l’app AI Deploy, ce qui permettra d’utiliser le modèle Whisper au sein de l’application. Vous pourrez ainsi facilement accéder au modèle et effectuer des mises à jour sans avoir à manipuler le container Docker lui-même.

Créer un conteneur Object Storage pour votre modèle Whisper

Vous pouvez créer votre conteneur Object Storage soit via l’interface (espace client OVHcloud), soit via la CLI ovhai, que vous pouvez télécharger ici.

Depuis l'espace client (UI)
Depuis la CLI ovhai

Si vous n’êtes pas à l’aise avec les commandes, cette méthode peut être plus intuitive.

Rendez-vous d’abord dans la section Public Cloud de l’.

Sélectionnez ensuite la section Object Storage (dans la catégorie Storage) et créez un nouveau conteneur d’objets en cliquant sur Stockage > Object Storage > Créer un conteneur d'objets.

Page Create an object container avec l'étape 1 Select a region ouverte sur l'onglet All locations proposant Beauharnois BHS Frankfurt DE Gravelines GRA Strasbourg SBG London UK et Warsaw WAW

Vous pouvez créer le conteneur qui stockera votre modèle Whisper. Sélectionnez le type de conteneur et le datastore_alias correspondant à vos besoins, et nommez-le comme vous le souhaitez. L’alias GRA et le nom whisper-model seront utilisés dans ce tutoriel.

Télécharger Whisper dans le conteneur créé

Pour télécharger le modèle, nous allons utiliser AI Training. Le job créé reposera sur une image Docker officielle OVHcloud ovhcom/ai-training-pytorch, conforme au produit.

L’utilisation de 5 CPU suffira pour télécharger le modèle, en garantissant des ressources mémoire suffisantes.

Deux volumes seront associés à ce job :

  • Le premier volume contiendra le dépôt GitHub ai-training-examples, qui contient le script Python utilisé pour télécharger le modèle Whisper. Pour des raisons de sécurité, ce volume est configuré avec une permission en lecture seule (RO), car nous n’avons besoin d’accéder qu’au script Python, situé à ai-training-examples/apps/streamlit/whisper/download_model.py.
  • Le second volume correspond au conteneur créé, où nous stockerons le modèle Whisper une fois téléchargé. Ce conteneur doit donc disposer d’une permission en lecture-écriture (RW), puisque nous allons y écrire. Veillez à bien le nommer et à préciser l’alias utilisé lors de la création du conteneur.

Pour lancer ce job, nous utiliserons une commande pip install afin d’installer les bibliothèques nécessaires (depuis le fichier ai-training-examples/apps/streamlit/whisper/requirements.txt), puis nous exécuterons le script Python de téléchargement de Whisper.

Ces étapes peuvent être résumées dans la commande suivante, qui reprend tous les points mentionnés ci-dessus :

ovhai job run ovhcom/ai-training-pytorch \
    --cpu 5 \
    --volume https://github.com/ovh/ai-training-examples.git:/workspace/github_repo:RO \
    --volume whisper-model@GRA/:/workspace/whisper-model:RW \
    -- bash -c 'pip install -r /workspace/github_repo/apps/streamlit/whisper/requirements.txt && python /workspace/github_repo/apps/streamlit/whisper/download_model.py large-v3 /workspace/whisper-model'
Warning

Avertissement Dans la dernière ligne de la commande ci-dessus, vous remarquerez que le fichier download_model.py prend deux arguments.

Le premier indique le modèle que vous souhaitez télécharger (ici large-v3). Vous pouvez le remplacer par l’un des suivants : tiny.en, tiny, base.en, base, small.en, small, medium.en, medium, large-v1, large-v2, large-v3, large.

Le second indique l’endroit où le modèle sera enregistré. Il doit s’agir du même emplacement que celui où vous avez monté le premier volume. Cela permettra de sauvegarder le modèle dans le conteneur, et non dans le stockage éphémère du job. Ici, nous utilisons le chemin /workspace/whisper-model.

Par ailleurs, vous devrez peut-être modifier le nom du conteneur et le datastore_alias du dernier paramètre --volume, en fonction du nom que vous lui avez donné et de l’alias avec lequel vous l’avez créé.

Le job sera ensuite lancé. Il faudra quelques minutes pour que les deux volumes soient ajoutés au job, que l’environnement soit installé et que le modèle Whisper soit téléchargé et synchronisé avec votre conteneur (statut FINALZING).

Si vous avez correctement configuré vos volumes avec les bonnes permissions, et indiqué les bons chemins au script Python, vous devriez alors voir apparaître votre modèle Whisper dans votre conteneur. Vous pouvez le vérifier depuis l’espace client, ou avec la CLI, à l’aide de la commande suivante qui liste tous les objets de votre conteneur :

`ovhai bucket object list <bucket_name>@<datastore_alias>`

*En suivant l’exemple donné dans ce tutoriel, nous utiliserons :

`ovhai bucket object list whisper-model@GRA`
Info

Pourquoi rien n’est-il retourné lorsque j’exécute la commande ?

Si rien ne s’affiche lorsque vous listez les objets de votre conteneur, n’hésitez pas à vérifier les logs de votre job en exécutant ovhai job logs <job_id>, afin de voir si le modèle a bien été téléchargé.

Si une exception s’est produite pendant le téléchargement du modèle, c’est probablement parce que vous ne disposez pas de suffisamment de mémoire dans votre job AI Training. Pour en avoir le cœur net, vérifiez le monitoring de l’URL pour voir si la mémoire totale a été atteinte.

Si le modèle a bien été téléchargé, mais que vous ne voyez rien lorsque vous listez les objets de votre conteneur, cela peut venir du fait que le chemin de sortie du modèle diffère du chemin de votre conteneur attaché. Ces deux chemins doivent correspondre pour que le modèle soit enregistré au bon endroit. Dans le cas contraire, le modèle pourrait ne pas avoir été enregistré au bon emplacement.

Étape 3 : développement de l’app Whisper

Maintenant que le modèle Whisper se trouve dans un conteneur, vous pouvez facilement l’attacher à une app AI Deploy, en suivant la même méthode que celle utilisée avec AI Training.

Mais pour interagir avec le modèle, nous allons construire une application très simple, à l’aide de Streamlit, qui permettra à un utilisateur de charger un fichier audio puis de le transcrire.

Construire une image Docker

Comme pour AI Training, vous devrez utiliser une image Docker pour AI Deploy. Cependant, vous ne pouvez pas utiliser cette fois l’image Docker ovhcom/ai-training-pytorch. En effet, l’utilisation du modèle Whisper nécessite l’installation de certains paquets système, tels que ffmpeg, ce qui n’est pas le cas dans l’image précédente. C’est pourquoi vous devez construire une nouvelle image Docker, dédiée à votre projet AI.

Pour cela, vous aurez besoin de Docker, installé directement sur votre ordinateur, ou via une instance Docker Debian, disponible sur le .

Le Dockerfile à utiliser est déjà fourni. Clonez le dépôt GitHub ai-training-examples :

git clone https://github.com/ovh/ai-training-examples.git

Exécutez ensuite cd ai-training-examples/apps/streamlit/whisper/ pour vous déplacer dans le dossier de l’app Whisper. Si vous exécutez ls pour lister les fichiers existants, vous devriez en voir plusieurs, dont les suivants :

  • app.py : le code Python de l’application Whisper.
  • requirements.txt : contient les bibliothèques nécessaires à l’application Whisper (streamlit, openai-whisper, ...).
  • Dockerfile : contient toutes les commandes que vous pourriez appeler en ligne de commande pour exécuter votre application (installation de requirements.txt, exécution du script Python, ...).

Exécutez ensuite l’une des commandes suivantes pour construire l’image de votre application. L’image créée sera nommée whisper_app. Vous pouvez la renommer si vous le souhaitez, mais veillez à conserver le même identifiant tout au long des prochaines commandes.

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

# Build image targeting the linux/amd64 architecture
docker buildx build --platform linux/amd64 -t whisper_app: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 ayant une architecture différente (par exemple ARM64 sur Apple Silicon), l’image obtenue 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 se composent d’un nom et d’un tag de version <name>:<version>. Pour cet exemple, nous avons choisi whisper_app:latest.

Pendant le processus de build, Docker lit les instructions du Dockerfile et les exécute étape par étape. Pour votre information, voici les étapes de ce Dockerfile :

# 🐳 Base image (official small Python image)
FROM python:3.10-slim

# Install missing system packages (ffmpeg is needed for Whisper and is not installed in the small Python image)
RUN apt-get update && \
    apt-get install -y ffmpeg libsndfile1-dev

# 👱 Set the working directory inside the container
WORKDIR /workspace

# 🐍 Copy all folder files (requirements.txt, python code, ...) into the /workspace folder
ADD . /workspace

# 📚 Install the Python dependencies
RUN pip install -r requirements.txt

# 🔑 Give correct access rights to the OVHcloud user
RUN chown -R 42420:42420 /workspace
ENV HOME=/workspace

# 🌐 Set default values for 'model_id' & 'model_path' variables. Will be changeable using --env parameter when launching AI Deploy app
ENV MODEL_ID="large-v3"
ENV MODEL_PATH="/workspace/whisper-model"

# 🚀 Define the command to run the Streamlit application when the container is launched
CMD [ "streamlit" , "run" , "/workspace/app.py", "--server.address=0.0.0.0", "$MODEL_ID", "$MODEL_PATH"]

Envoyer l’image vers un registre

Une fois votre image construite, vous devrez la tagger et l’envoyer vers un registre. Plusieurs registres peuvent être utilisés (Managed Private Registry OVHcloud, Docker Hub, GitHub packages, ...). Dans ce tutoriel, nous utiliserons le registre partagé OVHcloud.

Warning

Avertissement Le registre partagé doit être utilisé uniquement à des fins de test. Nous vous recommandons de créer et de rattacher votre propre registre. Plus d’informations à ce sujet sont disponibles ici. Les images envoyées vers ce registre sont réservées 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 à votre registre partagé avec vos identifiants habituels d’utilisateur AI Platform :

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

Taguez l’image compilée et envoyez-la vers votre registre partagé :

docker tag whisper_app:latest <shared-registry-address>/whisper_app:latest
docker push <shared-registry-address>/whisper_app:latest

Étape 4 : déploiement de l’app Whisper

Une fois votre image envoyée, elle peut être utilisée pour déployer de nouvelles solutions AI.

Exécutez la commande suivante pour déployer votre application de reconnaissance vocale Whisper en utilisant votre image Docker personnalisée :

ovhai app run <shared-registry-address>/whisper_app:latest \
      --name whisper_app \
      --gpu 1 \
      --default-http-port 8501 \
      --volume whisper-model@GRA/:/workspace/whisper-model:RO \
      --env MODEL_ID="large-v3" \
      --env MODEL_PATH="/workspace/whisper-model"
Info

Explication des paramètres

  • <shared-registry-address>/whisper_app:latest est l’image sur laquelle repose l’app.

  • --name whisper_app est un argument facultatif qui vous permet de donner un nom personnalisé à votre app, facilitant ainsi la gestion de l’ensemble de vos apps.

  • --default-http-port 8501 indique que le port à joindre sur l’URL de l’app est 8501 (port Streamlit par défaut).

  • --gpu 1 indique que nous demandons 1 GPU pour cette app.

  • --volume vous permet de préciser le volume que vous souhaitez ajouter à votre app. Comme mentionné, nous ajoutons le conteneur Whisper que nous avons créé, en mode RO. Cela signifie que nous pourrons uniquement lire les données de ces volumes, sans pouvoir les modifier. Cela permettra d’utiliser le modèle. Comme précédemment, veillez à utiliser le même nom de conteneur et le même alias que lors de la création du conteneur.

Le paramètre --env permet de définir des variables d’environnement au sein du container Docker, qui seront accessibles dans les scripts Python. Deux valeurs sont précisées, MODEL_ID et MODEL_PATH. Cela permettra au code de charger le modèle depuis le bon emplacement, en fonction de celui que vous avez choisi (MODEL_ID="large-v3"), et du chemin où vous avez monté votre volume du modèle Whisper (MODEL_PATH="/workspace/whisper-model").

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

Une fois votre application au statut RUNNING, vous pouvez transcrire des fichiers audio grâce au puissant modèle Whisper !

Vue d'ensemble

Aller plus loin

Ce tutoriel vous a guidé à travers le déploiement de l’implémentation du modèle Whisper d’OpenAI pour la transcription de la parole en texte au sein d’une app Streamlit.

Pour poursuivre votre projet, vous pouvez ajouter de nombreuses autres fonctionnalités, comme la spécification de la langue parlée, ou des options de traduction de la transcription, et bien plus encore !

Vous pourriez également combiner vos transcriptions avec un LLM. Découvrez comment déployer LLaMA 2 sur AI Deploy.

Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

Votre avis nous intéresse !

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

1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.

Cette page vous a-t-elle aidé ?