AI Training - Tutoriel - Entraîner un chatbot Rasa dans un container Docker
Découvrez comment entraîner de manière simple un chatbot avec AI Training
Objectif
L'objectif de ce tutoriel est de comprendre comment entraîner un modèle Rasa avec AI Training.
Le déploiement sera effectué dans la seconde partie du tutoriel, que vous pouvez trouver ici : Comment déployer un chatbot. Si vous souhaitez accéder au code, vous pouvez le trouver ici. Si vous souhaitez créer un chatbot Rasa avec un notebook, suivez ce tutoriel : Créer et entraîner un chatbot Rasa.
Nous utiliserons le célèbre framework open source Rasa pour construire le chatbot, ainsi que le framework Chatette pour générer des exemples de phrases humaines. Les deux frameworks sont des packages Python.
Prérequis
- Accès à l'
- Un projet Public Cloud créé
- L'interface CLI ovhai installée sur votre système (plus d'informations ici)
- Un utilisateur pour AI Training
- Docker installé sur votre ordinateur local
- Un compte Docker Hub
- Des connaissances sur la construction d'images avec Dockerfile
En pratique
Créer un token pour accéder à vos services AI
La première étape consiste à créer un token applicatif AI. Avec ce token, vous pourrez accéder de manière sécurisée à tous vos services AI.
Pour cela, lancez cette commande dans le terminal une fois la CLI ovhai installée :
Le token est maintenant créé. N'oubliez pas de le sauvegarder pour l'utiliser plus tard.
Maintenant, envoyons les données pour entraîner notre modèle sur un conteneur d'objets.
Comprendre les concepts de stockage
Pour ce tutoriel, nous allons créer deux buckets Object Storage. L'un servira à lire les données que nous fournissons au chatbot, et l'autre à sauvegarder le modèle de chatbot créé.
Nous pouvons spécifier lors de la création si nous les voulons en lecture seule, lecture/écriture, etc. Séparer les données d'entrée et de sortie est une bonne pratique, permettant un code de développement plus rapide et évitant les risques de suppression de données.
L'objectif évident d'utiliser l'Object Storage plutôt que le stockage local de l'AI Notebook est de décorréler le calcul et le stockage, nous permettant d'arrêter ou de supprimer le notebook tout en conservant les données en sécurité.
Si vous souhaitez en savoir plus sur le concept de stockage des données, lisez ce guide : Créer un conteneur d'objets.
Pour le chatbot, nous allons créer deux buckets Object Storage. L'un avec toutes les données à entraîner, et l'autre sera rempli au fil du temps par la sortie de notre modèle entraîné. Le conteneur dans lequel le modèle sera sauvegardé n'a pas besoin d'être créé. Lorsque nous lancerons notre notebook, le conteneur sera automatiquement créé.
Pour créer le volume à GRA (datacenter de Gravelines), clonez le dépôt GitHub puis rendez-vous dans le dossier jobs/rasa-chatbot.
Ensuite, il vous suffira de taper :
Vos données seront envoyées et créées dans le conteneur <data-to-train-container> et montées avec le préfixe data. 3 fichiers seront envoyés : le fichier nlu.yml, le fichier stories.yml et le fichier rules.yml.
Entraînons notre modèle !
Entraîner votre modèle
Pour entraîner le modèle, nous utiliserons AI Training. Cet outil est bien plus puissant. Il vous permettra d'automatiser vos pipelines et de construire facilement des phases de fine-tuning.
AI Training vous permet d'entraîner des modèles directement à partir de vos propres images Docker.
Tout d'abord, vous avez besoin d'un Dockerfile compatible avec AI Training. Vous n'avez pas besoin de créer ce fichier puisqu'un exemple est disponible dans notre dépôt GitHub. Ce Dockerfile se trouve ici et ressemble à ceci :
Ensuite, vous devez construire l'image Docker et l'envoyer dans votre dépôt public (comme Dockerhub) ou dans un répertoire privé. Pour cela, exécutez l'une des commandes suivantes dans le dossier rasa_bot :
Ensuite, envoyez votre image :
Pour cela, vous devez être connecté dans le terminal. Pour vous connecter, exécutez simplement docker login dans un terminal et renseignez vos identifiants Dockerhub.
Une fois votre image Docker créée et envoyée dans le dépôt, vous pouvez directement utiliser la commande ovhai pour créer votre entraînement de modèle. Voici la commande complète. L'entraînement dure environ 5 minutes. Vous pouvez modifier la durée de l'entraînement en changeant le nombre de GPUs ou le fichier de configuration pour l'entraînement Rasa.
Pour plus d'explications sur la commande CLI pour AI Training, lisez ce guide : Référence CLI.
Explication de la commande dans le Dockerfile :
- rasa train : cette commande lance l'entraînement d'un modèle avec les données NLU que vous fournissez. L'entraînement lance certains composants et suit un pipeline défini dans votre fichier
config.yml. - --force : cette option pour la commande Rasa train permet de forcer Rasa à entraîner un modèle plutôt que de simplement vérifier si les données fournies ont déjà été entraînées. Cette option réentraînera un modèle même si les données n'ont pas changé.
- --out : cet argument permet d'indiquer comment vous souhaitez sauvegarder votre modèle. Ici, nous avons sauvegardé le modèle dans le dossier « trained-models » et dans le conteneur
<model-output-container>.
Tester votre modèle
Une fois votre modèle entraîné et si vous souhaitez vérifier qu'il renvoie de bons résultats, créons un notebook Visual Studio Code. Vous pouvez exécuter cette commande pour aller vite :
Rasa ne prend en charge Python que jusqu'à la version 3.10, il faut donc d'abord créer et activer un environnement conda dédié. Installez ensuite toutes les dépendances en exécutant dans un terminal (cliquez sur l'icône de menu > Terminal > New Terminal) :
Nous pouvons maintenant tester notre modèle !
Ouvrez deux terminaux. Dans l'un nous exécuterons une action personnalisée et dans le second nous parlerons avec le chatbot. Voici la commande pour le premier terminal :
Dans Rasa, une interaction avec un utilisateur est décrite par une intention de l'utilisateur et une réponse du chatbot. La réponse du chatbot est appelée une action. Parfois, comme dans ce cas, nous devons créer des actions personnalisées (remplir un formulaire avec l'utilisateur et collecter certaines données). C'est le but de la commande rasa run actions.
Dans l'autre terminal, lancez :
Explication de la commande :
rasa shell: charge un modèle et discute avec lui pour le tester.-m ~/trained-models: permet de spécifier le chemin où votre modèle est sauvegardé. Comme vu précédemment, votre modèle a été entraîné et est sauvegardé dans ce dossier. Si vous avez plusieurs modèles dans le dossiertrained-models, vous pouvez spécifier le nom du modèle précis que vous souhaitez entraîner dans cet argument.--endpoints ~/ai-training-examples/jobs/rasa-chatbot/endpoints.yml: vous spécifiez le chemin de votre fichierendpoints.yml. Ce fichier permet d'indiquer où votre modèle s'exécute et où s'exécutent les ports de vos actions personnalisées.
Voici un petit exemple de discussion avec le bot :
Félicitations ! Vous pouvez tester votre premier modèle Rasa et discuter avec lui. Si vous avez plusieurs modèles dans votre dossier trained-models, vous pouvez spécifier le dossier après l'option -m et ajouter le modèle spécifique que vous souhaitez entraîner.
Si vous n'êtes pas satisfait du modèle parce que votre chatbot ne répond pas très bien, vous pouvez exécuter cette commande. Elle relancera le job et créera un nouveau modèle.
Pour obtenir le job_id du job précédent, exécutez simplement cette commande pour obtenir la liste des jobs que vous avez exécutés auparavant.
Plus d'explications ici : Référence CLI.
Une fois votre modèle prêt, déployez-le pour l'utiliser. Cela se fera avec l'outil AI Deploy du Public Cloud.
Aller plus loin
Si vous souhaitez utiliser davantage de fonctionnalités de Rasa, suivez ce lien. Nous utilisons Rasa Open Source et non Rasa X.
Si vous souhaitez voir comment le modèle est créé et entraîné avec AI Notebooks, suivez ce tutoriel.
Comment créer et entraîner un chatbot rasa
Si vous souhaitez déployer le modèle créé avec le chatbot, vous pouvez suivre ce tutoriel.
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