AI Training - Tutoriel - Entraîner un modèle PyTorch et l'exporter au format ONNX
Comment entraîner et exporter un modèle de classification d'images au format ONNX avec AI Training
Objectif
L'objectif de ce tutoriel est de vous montrer comment entraîner un modèle PyTorch personnalisé et l'exporter au format ONNX (Open Neural Network Exchange).
L'objectif est d'entraîner votre propre modèle de classification d'images sur le célèbre dataset MNIST. À la fin de l'entraînement du modèle, celui-ci est sauvegardé au format PyTorch (.pt) puis transformé en ONNX.
Exporter votre modèle au format ONNX vous permet d'optimiser l'inférence d'un modèle de Machine Learning.
Prérequis
- Un projet Public Cloud créé.
- L'interface CLI ovhai installée sur votre système (plus d'informations ici).
- Docker installé et configuré pour construire des images.
- Un registre d'images OCI / Docker. Vous pouvez utiliser un registre public (comme Docker Hub par exemple) ou un registre privé. Consultez la documentation Créer un registre privé pour créer un registre privé basé sur Harbor. Pour rendre votre registre compatible avec l'utilisation d'AI Solutions, suivez le guide Utiliser et gérer vos registres.
- Des connaissances sur la construction d'images avec Dockerfile.
Accès à l'espace client OVHcloud
- Lien direct :
- Pour accéder à vos services :
Public Cloud> Sélectionnez votre projet
En pratique
Créer un bucket Object Storage pour votre modèle ONNX
Pour pouvoir récupérer et utiliser le modèle ONNX à la fin de l'entraînement, vous devez créer un bucket vide pour le stocker.
Créer votre bucket via l'interface (Control Panel)
Si vous ne vous sentez pas à l'aise avec les commandes, cette méthode peut être plus intuitive.
Cliquez sur pour accéder à votre projet Public Cloud, puis sélectionnez la section Object Storage (dans la catégorie Storage) et créez un nouveau conteneur d'objets en cliquant sur Storage > Object Storage > Créer un conteneur d'objets.
Vous pouvez créer le bucket qui stockera votre modèle ONNX à la fin de l'entraînement. Sélectionnez le type de conteneur et la région qui correspondent à vos besoins.
Créer votre bucket via la CLI ovhai
Pour suivre cette partie, assurez-vous d'avoir installé la CLI ovhai sur votre ordinateur ou sur une instance.
Comme dans le Control Panel, vous devrez préciser la region et le name (cnn-model-onnx) de votre bucket. Créez votre bucket Object Storage comme suit :
Écrire le code Python d'entraînement du modèle
Pour entraîner le modèle, nous allons utiliser AI Training. Cet outil puissant vous permet d'entraîner vos modèles d'IA à partir de vos propres images Docker.
Vous devez créer un script Python chargé de réaliser l'entraînement : train_image_classification.py.
Tout d'abord, importez les dépendances Python.
Ensuite, définissez l'architecture du réseau de neurones.
Maintenant, définissez la fonction load_data.
Vérifiez la disponibilité du GPU.
Ensuite, définissez la fonction qui va entraîner votre modèle.
Vous pouvez également définir la fonction qui va tester votre modèle.
Enfin, exportez le modèle au format ONNX grâce à la fonction suivante.
Il est maintenant temps d'appeler ces fonctions dans le main !
Retrouvez le code Python complet sur notre dépôt GitHub.
Créer le fichier requirements.txt
Ensuite, créez un fichier requirements.txt pour déclarer les dépendances Python et leurs versions.
Construire votre propre image Docker
Créer un Dockerfile compatible avec AI Training
Le Dockerfile doit commencer par l'instruction FROM indiquant l'image parente à utiliser. Dans notre cas, nous choisissons de partir d'une image python:3.10.
Ensuite, précisez le chemin du workspace, installez les dépendances Python et lancez l'entraînement du modèle à l'aide de CMD.
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, qui est 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. 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 train-cnn-model-export-onnx:latest.
Envoyer l'image vers le registre partagé
Le registre partagé d'AI Deploy ne doit être utilisé qu'à des fins de test. Nous vous invitons à rattacher votre propre registre Docker. Plus d'informations à ce sujet 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 au registre partagé avec vos identifiants habituels d'utilisateur de la plateforme AI :
Envoyez l'image compilée vers le registre partagé :
Une fois votre image Docker créée et envoyée vers le registre, vous pouvez directement utiliser la commande ovhai pour créer votre entraînement de modèle.
Vous pouvez lancer l'entraînement en spécifiant plus ou moins de GPU selon la vitesse souhaitée pour votre entraînement.
Si vos images sont stockées dans un registre privé, veuillez suivre la documentation Registres - Utiliser et gérer vos registres pour ajouter votre registre.
Lancer le job AI Training
Vous pouvez lancer le job d'entraînement via l'interface ou la CLI.
Créer votre job d'entraînement via l'interface (Control Panel)
Si vous ne vous sentez pas à l'aise avec les commandes, cette méthode peut être plus intuitive.
Cliquez sur pour accéder à votre projet Public Cloud, puis sélectionnez la section AI Training (dans la catégorie AI & Machine Learning) et créez un nouveau job en cliquant sur AI Training > Lancer un job.
Vous pouvez créer le job qui entraînera votre modèle et l'exportera au format ONNX. Sélectionnez la région et ajoutez votre image Docker personnalisée (<shared-registry-address>/train-cnn-model-export-onnx:latest).
Ensuite, attachez votre conteneur Object Storage cnn-model-onnx et définissez le répertoire de montage : /workspace/models.
Enfin, configurez votre job et choisissez au moins 1 GPU.
Créer votre job d'entraînement via la CLI ovhai
La commande suivante démarre l'entraînement :
Vous pouvez ensuite suivre l'évolution de l'entraînement via les logs du job :
Aller plus loin
Consultez nos autres tutoriels pour apprendre à :
-
Utiliser le Transfer Learning avec ResNet50 pour la classification d'images
-
Fine-tuner et exporter un modèle d'IA au format ONNX via un AI Notebook
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