AI Deploy - Tutoriel - Créer et déployer une application de Speech to Text
Comment créer et déployer une application de Speech to Text / Transcription audio
AI Deploy est couvert par les Conditions particulières OVHcloud Public Cloud.
Objectif
L’objectif de cette documentation est de déployer l’application de Speech to Text que nous avons réalisée dans notre article de blog en utilisant Streamlit et des modèles pré-entraînés.
Déployer votre app vous permettra de bénéficier de ressources très puissantes qui rendront l’application de speech to text extrêmement rapide. Elle peut également être facilement partagée, contrairement à une application locale.
Ici, le cas d’usage est la reconnaissance vocale en anglais, mais vous pouvez choisir un autre modèle comme expliqué dans notre article de blog. Certains modèles fonctionnent avec le chinois, le français, l’allemand, le japonais, le russe, etc.
Aperçu de l’app de speech to text :
Prérequis
Pour déployer votre app, vous avez besoin de :
- Un projet AI Deploy créé au sein d’un projet Public Cloud dans votre compte OVHcloud
- Un utilisateur pour AI Deploy.
- La CLI AI d’OVHcloud et Docker installés sur votre ordinateur local, ou simplement un accès à une instance Docker Debian sur le .
- Pour déployer votre app, vous devez disposer du code complet de l’application, soit en clonant le dépôt GitHub, soit en ayant suivi notre article de blog qui vous a appris à construire cette app étape par étape.
- Si vous souhaitez l’option de diarisation (différenciation des locuteurs), vous aurez besoin d’un token d’accès. Ce token sera demandé au lancement de l’application. Pour créer votre token, suivez les étapes indiquées sur la page du modèle. Si le token n’est pas renseigné, l’application sera lancée sans cette fonctionnalité.
En pratique
Vous allez suivre différentes étapes pour déployer votre application Streamlit de Speech to Text :
- Écrire et installer les librairies et paquets dans notre environnement afin que notre application puisse fonctionner.
- Écrire le
Dockerfilecontenant toutes les commandes permettant de lancer notre app de speech to text. - Construire l’image Docker à partir du Dockerfile
- (Optionnel) - Importer les modèles et les enregistrer localement dans un Object Storage (volume) afin d’accélérer l’initialisation de l’app.
- Déployer votre app.
Si vous avez cloné le dépôt GitHub, vous n’aurez pas besoin de réécrire les fichiers (requirements.txt et Dockerfile) puisque vous les avez déjà. Dans ce cas, vous pouvez passer directement à l’étape « Construire l’image Docker », même s’il est préférable de comprendre le fonctionnement global.
Écrire le fichier requirements.txt de l’application
Le fichier requirements.txt nous permettra d’indiquer tous les modules nécessaires au fonctionnement de notre application. Ce fichier sera utile lors de l’écriture du Dockerfile.
Placez ce fichier (ainsi que les suivants) dans le même répertoire que vos scripts python.
Écrire le Dockerfile de l’application
Un Dockerfile est un document texte contenant toutes les commandes qu’un utilisateur pourrait exécuter en ligne de commande pour construire une image.
Ce fichier doit commencer par l’instruction FROM, qui indique l’image parente à utiliser. Dans notre cas, nous choisissons de partir de l’image officielle python:3.8 :
Nous vous recommandons de ne pas rétrograder la version de python. En effet, selon la documentation de pyannote.audio, seul python 3.8+ est officiellement pris en charge pour le moment.
Ensuite, définissez le répertoire d’accueil et ajoutez-y tous vos fichiers (scripts python, requirements.txt et le Dockerfile) grâce aux commandes suivantes :
Avec AI Deploy, workspace sera votre répertoire d’accueil.
Nous pouvons maintenant installer les paquets système dont nous avons besoin. Pour cela, utilisez apt-get, un outil en ligne de commande qui aide à gérer les paquets :
Utilisez une commande pip install ... pour installer les modules python nécessaires présents dans le fichier requirements.txt :
Une fois votre environnement configuré, définissez votre commande de lancement par défaut pour démarrer l’application :
Enfin, créez un dossier data qui stockera temporairement les fichiers audio des utilisateurs jusqu’à ce qu’ils soient transcrits. Puis, donnez les droits d’accès corrects à l’utilisateur OVHcloud (42420:42420) :
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 :
-
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 exempleARM64surApple 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/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. Généralement, 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_app:latest.
Envoyer l’image vers le registre partagé
Le registre partagé ne doit être utilisé qu’à des fins de test. Pensez à créer et à rattacher votre propre registre. Plus d’informations à ce sujet sont disponibles ici. Les images envoyées vers ce registre sont réservées aux charges de travail 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 de la plateforme AI :
Taguez l’image compilée et envoyez-la vers votre registre partagé :
Importer les modèles et les enregistrer localement (optionnel)
Comme expliqué dans l’article de blog, vous réduirez considérablement le temps d’initialisation de l’app si vous téléchargez les modèles et les stockez dans un dossier local. Cela vous évitera d’avoir à les retélécharger à chaque relance de l’application.
Pour cela, nous utiliserons AI Training. Cela nous permettra de lancer un script python depuis GitHub qui téléchargera les modèles et les stockera dans un volume OVHcloud nommé speech_to_text_app_models.
Une fois les modèles téléchargés et ajoutés à ce volume, le statut du job passera automatiquement de Running à Done et le job sera immédiatement arrêté. Cette opération devrait être assez rapide.
Malheureusement, le modèle de diarisation ne peut plus être enregistré depuis pyannote.audio v2. L’application le chargera de façon classique, en utilisant votre token d’accès au modèle, qui sera demandé par l’application une fois lancée.
Pour lancer ce job AI Training et télécharger les modèles, utilisez la commande CLI d’OVHcloud suivante :
streamlit_app:latest correspond au nom de votre image Docker.
--volume vous permet de préciser quel volume vous souhaitez ajouter à votre job. Comme mentionné, nous ajoutons le volume speech_to_text_app_models et le mettons en mode RW (lecture et écriture) puisque nous souhaitons y ajouter nos modèles. Si vous n’avez pas ce volume dans votre liste Object Storage, ne vous inquiétez pas, il sera créé automatiquement. Comme vous pouvez le voir, le paramètre --volume permet également de récupérer des fichiers depuis un dépôt GitHub, qui dans notre cas contient le script de téléchargement des modèles.
--bash vous permet de fournir des commandes permettant d’installer les librairies mentionnées dans votre fichier requirements.txt, et d’exécuter le script python.
Lorsque vous exécutez cette commande, une Info url apparaîtra. L’ouvrir vous permettra de suivre le statut du job.
Une fois le dépôt GitHub récupéré, le script python sera lancé et le statut du job passera à Running. Ensuite, il vous suffit d’attendre la fin du job.
Nous vous conseillons d’activer l’option d’actualisation automatique (le statut Running la désactive automatiquement). Cela vous permettra de voir quand le job se terminera (le statut du job passe à Done). Sinon, vous pouvez actualiser la page manuellement.
Une fois les modèles envoyés et le statut passé à Done, vous pouvez continuer.
Lancer l’app sur AI Deploy
Si vous avez suivi la partie optionnelle « Importer les modèles et les enregistrer localement », vous pouvez charger le volume où sont stockés vos modèles avec le paramètre --volume. Cette fois, nous plaçons ce volume en mode lecture seule (RO) car nous avons seulement besoin d’accéder aux modèles pour les utiliser. Nous n’avons pas besoin d’écrire ou de supprimer quoi que ce soit dans ce conteneur Object Storage.
Sinon, vous pouvez supprimer la ligne --volume, car elle n’apportera rien à votre app.
La commande suivante démarre une nouvelle app exécutant votre application Streamlit :
default-http-port 8501 indique que le port à atteindre sur l’URL de l’app est le 8501.
--gpu 1 indique que nous demandons 1 GPU pour notre app.
Si vous souhaitez que votre app soit accessible sans avoir besoin de vous authentifier, précisez-le comme suit :
Pensez à ajouter l’attribut --unsecure-http si vous souhaitez que votre application soit accessible sans authentification.
Nous voulons vos retours !
N’hésitez pas à nous faire part de vos questions, retours et suggestions pour améliorer le service :
- Sur le serveur Discord OVHcloud
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.