AI Training - Tutoriel - Premiers pas avec Triton Inference Server de NVIDIA et AI Training
Comment utiliser de manière optimale les modèles d'IA avec le serveur d'inférence Triton de NVIDIA et AI Training
Objectif
Triton Inference Server de NVIDIA vous permet de simplifier et de standardiser l'inférence IA.
Triton permet aux utilisateurs de déployer, exécuter et scaler des modèles d'IA entraînés, quel que soit le framework et quel que soit le type de ressources : GPU ou CPU. Il permet également aux développeurs de fournir de l'inférence haute performance dans le Cloud.
L'objectif de ce tutoriel est de voir comment déployer facilement Triton Inference Server grâce à l'outil OVHcloud AI Training.
Prérequis
- Accès à l'
- La CLI ovhai installée
- Un projet AI Training créé au sein d'un projet Public Cloud sur votre compte OVHcloud
- Un utilisateur pour AI Training
- Docker installé sur votre ordinateur local ou sur une machine virtuelle
- Quelques connaissances sur les images Docker et le Dockerfile
- Quelques bases sur NVIDIA Triton Inference Server
En pratique
Créer le repository de modèles
Le repository de modèles est le répertoire dans lequel vous placez les modèles d'IA que vous souhaitez faire servir par Triton Inference Server.
Modèles personnalisés
Triton Inference Sever vous permet de déployer plusieurs modèles provenant de multiples frameworks de Deep Learning et de Machine Learning. Par exemple, Triton Inference Server peut servir les formats de modèles suivants : TensorRT, TensorFlow, PyTorch, ONNX, ...
Suivez le guide utilisateur de NVIDIA Triton Inference Server pour en savoir plus sur ses capacités.
Pour utiliser des modèles d'IA personnalisés, les répertoires et fichiers qui composent un repository de modèles doivent suivre une structure requise.
Retrouvez plus d'informations sur l'utilisation de modèles personnalisés avec Triton dans cette documentation.
Un exemple de repository de modèles est inclus dans docs/examples/model_repository.
Nous utiliserons ces modèles déjà entraînés dans ce tutoriel.
Modèles d'exemple
Tout d'abord, vous devez cloner localement le dépôt GitHub de Triton Inference Server.
Dans cette commande, spécifiez également la version de Triton qui vous intéresse. Pour cet exemple, nous utiliserons la r23.03.
Clonez le dépôt GitHub :
Avant d'utiliser le dépôt, vous devez récupérer tous les fichiers de définition de modèles manquants depuis leurs model zoos publics via le script fourni : fetch_models.sh.
Les modèles suivants seront téléchargés :
- densenet_onnx
- inception_graphdef
- simple
- simple_dyna_sequence
- simple_identity
- simple_int8
- simple_sequence
- simple_string
Vérifiez le contenu et l'architecture de votre repository de modèles avec la commande tree :
Vous devriez obtenir :
Envoyer les modèles vers un conteneur Object Storage
Pour envoyer les modèles vers un conteneur Object Storage OVHcloud, vous pouvez utiliser la CLI ovhai.
Attention ! Pour utiliser Triton Inference Server, vous devez vous assurer que votre repository de modèles est correctement architecturé. Par exemple, conservez les répertoires vides, ils sont nécessaires au bon fonctionnement.
Une fois vos modèles envoyés, vérifiez qu'ils sont tous disponibles :
Vous devriez obtenir :
Lancer Triton Inference Server avec AI Training
Triton est optimisé pour offrir les meilleures performances d'inférence en utilisant des GPUs. Dans ce tutoriel, il fonctionnera avec un GPU grâce à l'outil OVHcloud AI Training.
Tout d'abord, récupérez l'image Docker de Triton Inference Server depuis le dépôt NGC. Dans ce tutoriel, nous utiliserons la version de container 23.03-py3.
Personnaliser l'image Docker de Triton Inference Server pour OVHcloud AI Tools
Pour rendre l'image de Triton Inference Server compatible avec AI Training, vous devez reconstruire l'image en donnant les droits à l'utilisateur OVHcloud sur le contenu de /workspace.
Pour plus d'informations sur la construction d'images Docker compatibles avec les solutions AI d'OVHcloud, reportez-vous à cette documentation.
Créer le Dockerfile
Votre Dockerfile doit commencer par l'instruction FROM indiquant l'image parente à utiliser. Dans notre cas, nous choisissons de partir de l'image récupérée FROM nvcr.io/nvidia/tritonserver:23.03-py3 :
Créez le répertoire personnel et copiez-y vos fichiers :
Donnez les droits d'accès corrects à l'utilisateur OVHcloud (42420:42420) :
N'oubliez pas l'argument --user=42420:42420 si vous souhaitez simuler exactement le même comportement que celui qui se produira sur les jobs AI Training. Il exécute le container Docker en tant qu'utilisateur OVHcloud spécifique (utilisateur 42420:42420).
Retrouvez le Dockerfile complet ci-dessous :
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 sont composés d'un nom et d'un tag de version <name>:<version>. Pour cet exemple, nous avons choisi triton-inference-server:23.03-py3.
Envoyer l'image du serveur vers le registre partagé
Le registre partagé d'AI Training ne doit être utilisé qu'à des fins de test. Pensez à attacher votre propre registre. Plus d'informations à ce sujet sont disponibles ici. Les images envoyées vers ce registre sont uniquement destiné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é :
Lancer Triton Inference Server dans un job dédié
Triton Inference Server expose des endpoints à la fois HTTP/REST et gRPC. Les clients peuvent donc communiquer avec Triton en utilisant soit le protocole HTTP/REST, soit le protocole gRPC.
Lancez Triton Inference Server avec l'outil OVHcloud AI Training pour bénéficier de la puissance du GPU :
Pour que le client puisse communiquer avec Triton Inference Server, vous devez récupérer l'IP et l'URL du job serveur.
Si nécessaire, installez jq comme suit :
Pour obtenir l'URL du job serveur, exécutez la commande suivante :
Vous pouvez vérifier que Triton Inference Server fonctionne correctement.
Ensuite, vous pouvez obtenir l'IP du job serveur :
Envoyer des requêtes d'inférence
Utilisez d'abord un docker pull pour récupérer l'image contenant les bibliothèques et exemples clients depuis NGC.
Dans l'exemple suivant, nous utiliserons densenet, un modèle de classification d'images. Nous verrons les résultats obtenus sur l'image suivante :

Tester en local (optionnel)
Ensuite, testez le modèle densenet_onnx sur l'image d'exemple.
Pour tester en local, vous devez spécifier le server_job_url pour pouvoir envoyer des requêtes http. Vous pouvez l'obtenir en utilisant la commande suivante :
ovhai job get <job_id> -o json | jq '.status.url' -r
Vous devriez obtenir le résultat suivant :
Personnaliser l'image Docker du client Triton pour OVHcloud AI Tools
Ici, la méthode est exactement la même que celle utilisée précédemment pour le serveur Triton. Reportez-vous à la partie concernant l'image Docker du serveur Triton pour plus de détails.
Créer le Dockerfile
Construire l'image Docker depuis le Dockerfile
Lancez la commande suivante depuis le répertoire du Dockerfile pour construire l'image de votre application :
Envoyer l'image du client vers le registre partagé
Envoyez l'image compilée vers le registre partagé :
Lancer un job client Triton pour l'inférence
Exécutez le client image d'exemple dans un job AI Training pour effectuer une classification d'images en utilisant le modèle d'exemple densenet_onnx.
Pour pouvoir classifier vos propres images, vous pouvez créer un conteneur d'objets dans l'Object Storage OVHcloud et y ajouter vos images :
Dans cet exemple, nous ajoutons l'image dog.jpg dans le bucket.
Pour envoyer une requête pour le modèle densenet_onnx, utilisez une image du répertoire /workspace/images. Dans ce cas, nous demandons les 3 meilleures classifications.
Protocole HTTP/REST
Il vous suffit d'utiliser le flag -u pour pointer vers l'endpoint gRPC sur Triton. L'URL du serveur d'inférence sera votre URL du job serveur.
Vous devriez avoir obtenu cette IP du job serveur lors du lancement de Triton Inference Server avec AI Training à l'étape Lancer Triton Server dans un job dédié.
Vous devez spécifier le port 8000 si vous souhaitez utiliser le protocole HTTP/REST.
Lancez le job d'inférence pour le protocole HTTP :
Une fois votre job en statut RUNNING, consultez les logs pour obtenir les résultats de la classification.
Vous devriez obtenir quelque chose comme ceci :
Protocole gRPC
Si vous souhaitez utiliser le protocole gRPC en fournissant le flag -i, vous devez également utiliser le flag -u pour pointer vers l'endpoint gRPC sur Triton. L'URL du serveur d'inférence sera votre IP du job serveur.
Vous devriez avoir obtenu cette IP du job serveur lors du lancement de Triton Inference Server avec AI Training à l'étape Lancer Triton Server dans un job dédié.
Vous devez spécifier le port 8001 si vous souhaitez utiliser le protocole gRPC.
Lancez le job d'inférence pour le protocole gRPC :
Une fois votre job en statut RUNNING, consultez les logs pour obtenir les résultats de la classification.
Vous devriez obtenir le résultat suivant :
Aller plus loin
- Pour aller plus loin avec Triton Inference Server et OVHcloud AI Tools, vous pouvez suivre ces tutoriels.
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