AI Deploy - Tutoriel - Déployer le modèle Whisper
Comment déployer Whisper, le modèle de reconnaissance de la parole d'OpenAI
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.
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 :
- Un projet AI Deploy créé au sein d’un projet Public Cloud de votre compte OVHcloud
- Un utilisateur pour AI Deploy & Object Storage
- L’AI CLI OVHcloud installée sur votre ordinateur local
- Docker installé sur votre ordinateur local, ou un accès à une instance Docker Debian, disponible sur le
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 :
- Sélection du modèle Whisper
- Téléchargement du modèle Whisper dans l’Object Storage
- Développement de l’app Whisper
- Déploiement de l’app 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 :
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.
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.

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 :
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 :
*En suivant l’exemple donné dans ce tutoriel, nous utiliserons :
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 :
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 derequirements.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.
-
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 exempleARM64surApple Silicon), l’image obtenue ne sera pas compatible et ne pourra pas être déployée. -
La seconde commande cible explicitement l’architecture
linux/amd64afin de garantir la compatibilité avec nos services AI. Elle nécessitebuildx, 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
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 :
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.
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 :
Connectez-vous à votre registre partagé avec vos identifiants habituels d’utilisateur AI Platform :
Taguez l’image compilée et envoyez-la vers votre registre partagé :
É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 :
Explication des paramètres
-
<shared-registry-address>/whisper_app:latestest l’image sur laquelle repose l’app. -
--name whisper_appest 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 8501indique que le port à joindre sur l’URL de l’app est8501(port Streamlit par défaut). -
--gpu 1indique que nous demandons 1 GPU pour cette app. -
--volumevous permet de préciser le volume que vous souhaitez ajouter à votre app. Comme mentionné, nous ajoutons le conteneur Whisper que nous avons créé, en modeRO. 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-httpsi 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 !
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 :
- Sur le serveur Discord OVHcloud
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.