Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déploiement de modèles avec Triton Inference Server
Triton Inference Server
Les conteneurs Triton SageMaker AI vous aident à déployer Triton Inference Server sur la plateforme d’hébergement SageMaker AI afin de servir des modèles entraînés en production. Il prend en charge les différents modes de fonctionnement de SageMaker AI. Pour obtenir la liste des conteneurs Triton Inference Server disponibles sur SageMaker AI, consultez NVIDIA Triton Inference Containers (SM support only)
Pour des exemples de blocs-notes de bout en bout, nous vous recommandons de consulter le référentiel amazon-sagemaker-examples
Modes d'hébergement
Les modes d’hébergement SageMaker AI suivants sont pris en charge par les conteneurs Triton :
-
Points de terminaison à modèle unique
-
Il s’agit du mode de fonctionnement par défaut de SageMaker AI. Dans ce mode, le conteneur Triton peut charger un seul modèle ou un seul modèle d'ensemble.
-
Le nom du modèle doit être transmis en tant que propriété de l’environnement du conteneur, ce qui fait partie de l’appel d’API
CreateModelSageMaker AI. La variable d'environnement utilisée pour transmettre le nom du modèle estSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Points de terminaison à modèle unique avec ensemble
-
Le serveur d'inférence Triton prend en charge un ensemble, qui est un pipeline, ou un DAG (graphe orienté acyclique) de modèles. Bien qu’un ensemble soit techniquement composé de plusieurs modèles, dans le mode par défaut de point de terminaison à modèle unique, SageMaker AI peut traiter l’ensemble proprement dit (le méta-modèle qui représente le pipeline) comme le modèle principal à charger, puis charger les modèles associés.
-
Le nom du modèle de l'ensemble proprement dit doit être utilisé pour charger le modèle. Il doit être transmis en tant que propriété de l'environnement du conteneur, ce qui fait partie de l'appel d'API SageMaker
CreateModel. La variable d'environnement utilisée pour transmettre le nom du modèle estSAGEMAKER_TRITON_DEFAULT_MODEL_NAME.
-
-
Points de terminaison multi-modèles
-
Dans ce mode, SageMaker AI peut servir plusieurs modèles sur un seul point de terminaison. Vous pouvez utiliser ce mode en spécifiant la variable d'environnement
‘MultiModel’: trueen tant que propriété de l'environnement du conteneur, ce qui fait partie de l'appel d'API SageMakerCreateModel. -
Par défaut, aucun modèle n'est chargé au démarrage de l'instance. Pour exécuter une demande d'inférence sur un modèle particulier, spécifiez le fichier
*.tar.gzdu modèle correspondant comme argument de la propriétéTargetModelde l'appel d'API SageMakerInvokeEndpoint.
-
-
Points de terminaison multimodèles avec ensemble
-
Dans ce mode, SageMaker AI fonctionne comme décrit pour les points de terminaison multimodèles. Cependant, le conteneur Triton SageMaker AI peut charger plusieurs modèles d’ensemble, ce qui signifie que plusieurs pipelines de modèles peuvent s’exécuter sur la même instance. SageMaker AI traite chaque ensemble comme un seul modèle et l’ensemble proprement dit de chaque modèle peut être invoqué en spécifiant l’archive
*.tar.gzcorrespondante en tant queTargetModel. Pour une meilleure gestion de la mémoire pendant la
LOADet laUNLOADde la mémoire dynamique, nous vous recommandons de réduire la taille de l'ensemble.
-
Types de charge utile d'inférence
Triton prend en charge deux méthodes pour envoyer une charge utile d'inférence sur le réseau : json et binary+json (ou json codé en binaire). Dans les deux cas, la charge utile JSON inclut le type de données, la forme et le tenseur de demande d'inférence réel. Le tenseur de demande doit être un tenseur binaire.
Avec le format binary+json, vous devez spécifier la longueur des métadonnées de la demande dans l'en-tête pour permettre à Triton d'analyser correctement la charge utile binaire. Dans le conteneur Triton SageMaker AI, cela se fait à l’aide d’un en-tête Content-Type personnalisé : application/vnd.sagemaker-triton.binary+json;json-header-size={}. Cela est différent de l’utilisation de l’en-tête Inference-Header-Content-Length sur un serveur d’inférence Triton autonome, car les en-têtes personnalisés ne sont pas autorisés dans SageMaker AI.
Utilisation de config.pbtxt pour définir la configuration du modèle
Pour les serveurs d’inférence Triton sur SageMaker AI, chaque modèle doit inclure un fichier config.pbtxt qui spécifie, au minimum, les configurations suivantes pour le modèle :
-
name: bien que cela soit facultatif pour les modèles exécutés en dehors de SageMaker AI, nous vous recommandons de toujours donner un nom aux modèles à exécuter dans Triton sur SageMaker AI. -
platformet/oubackend: la définition d'un backend est essentielle pour spécifier le type du modèle. Certains backends ont une classification supplémentaire, telle que tensorflow_savedmodeloutensorflow_graphdef. Ces options peuvent être spécifiées dans le cadre de la cléplatform, en plus de la clébackend. Les backends les plus courants sonttensorrt,onnxruntime,tensorflow,pytorch,python,dali,filetopenvino. -
input: spécifiez trois attributs pour l'entrée :name,data_typeetdims(la forme). -
output: spécifiez trois attributs pour la sortie :name,data_typeetdims(la forme). -
max_batch_size: définissez la taille du lot sur une valeur supérieure ou égale à 1 qui indique la taille de lot maximale que Triton doit utiliser avec le modèle.
Pour plus de détails sur la configuration de config.pbtxt, consultez le référentiel
-
instance_groups: les groupes d'instances aident à spécifier le numéro et l'emplacement d'un modèle donné. Ils ont les attributs count,kindetgpus(utilisés quandkindestKIND_GPU). L'attributcountéquivaut au nombre d'applications de travail. Pour le service des modèles réguliers, chaque application de travail a sa propre copie du modèle. De même, dans Triton, lecountspécifie le nombre de copies du modèle par appareil. Par exemple, si le typeinstance_groupestKIND_CPU, le CPU possède le nombrecountde copies du modèle.Note
Sur une instance de GPU, la configuration
instance_groups'applique à chaque dispositif GPU. Par exemple, le nombrecountde copies du modèle est placé sur chaque dispositif GPU, sauf si vous spécifiez explicitement quels dispositifs GPU doivent charger le modèle. -
dynamic_batchinget sequence_batching: le traitement par lots dynamique est utilisé pour les modèles sans état et le traitement par lots de séquences est utilisé pour les modèles dynamiques (dans lesquels vous souhaitez acheminer une demande vers la même instance de modèle à chaque fois). Les planificateurs de traitement par lots activent une file d'attente par modèle, ce qui contribue à augmenter le débit, en fonction de la configuration du traitement par lots. -
ensemble: un modèle d'ensemble représente un pipeline d'un ou plusieurs modèles et la connexion des tenseurs d'entrée et de sortie entre eux. Il peut être configuré en spécifiant platformcommeensemble. La configuration de l'ensemble n'est qu'une représentation du pipeline du modèle. Dans SageMaker AI, tous les modèles d’un ensemble sont considérés comme dépendants du modèle d’ensemble, et comptés comme un modèle unique pour les métriques SageMaker AI, telles queLoadedModelCount.
Publication des métriques Triton par défaut sur Amazon CloudWatch
Le conteneur d'inférence NVIDIA Triton expose les métriques sur le port 8002 (configurable) pour les différents modèles et GPU utilisés dans le serveur d'inférence Triton. Pour plus de détails sur les métriques par défaut disponibles, consultez la page GitHub consacrée aux métriques du serveur d'inférence Triton
À partir de la version v23.07, le conteneur Triton SageMaker AI prend en charge la publication de ces métriques sur Amazon CloudWatch en spécifiant quelques variables d’environnement. Afin de récupérer les métriques Prometheus, le conteneur Triton SageMaker AI utilise l’agent Amazon CloudWatch.
Les variables d'environnement requises que vous devez spécifier pour collecter des métriques sont les suivantes :
| Variable d'environnement | Description | Exemple de valeur |
|---|---|---|
|
|
Spécifiez cette option pour autoriser Triton à publier des métriques sur son point de terminaison Prometheus. |
"true" |
|
|
Spécifiez cette option pour démarrer les vérifications préalables nécessaires à la publication des métriques sur Amazon CloudWatch. |
"true" |
|
|
Spécifiez cette option pour pointer vers le groupe de journaux dans lequel les métriques sont écrites. |
« /aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesTest » |
|
|
Spécifiez cette option pour pointer vers l'espace de noms des métriques dans lequel vous souhaitez voir et tracer les métriques. |
« /aws/SageMaker AI/Endpoints/TritonMetrics/SageMakerTwoEnsemblesPublicTest » |
|
|
Spécifiez ce port comme 8002 ou tout autre port. Si SageMaker AI n’a pas bloqué le port spécifié, il est utilisé. Dans le cas contraire, un autre port non bloqué est automatiquement sélectionné. |
« 8002 » |
Lorsque vous publiez des métriques avec Triton sur SageMaker AI, gardez à l’esprit les limites suivantes :
Bien que vous puissiez générer des métriques personnalisées via la C-API et le backend Python (version v23.05 et ultérieure), celles-ci ne sont actuellement pas prises en charge pour la publication sur Amazon CloudWatch.
En mode points de terminaison multimodèles (MME) SageMaker AI, Triton s’exécute dans un environnement qui nécessite l’activation de l’espacement des noms des modèles, car chaque modèle (à l’exception des modèles d’ensemble) est traité comme s’il se trouvait dans son propre référentiel de modèles. À l'heure actuelle, cela crée une limite pour les métriques. Lorsque l'espacement des noms des modèles est activé, Triton ne fait pas la distinction entre des métriques de deux modèles portant le même nom et appartenant à des ensembles différents. Pour contourner le problème, assurez-vous que chaque modèle déployé porte un nom unique. Cela facilite également la recherche de vos statistiques dans CloudWatch.
Variables d’environnement
Le tableau suivant répertorie les variables d’environnement prises en charge pour Triton sur SageMaker AI.
| Variable d'environnement | Description | Type | Valeurs possibles |
|---|---|---|---|
|
Permet à Triton de fonctionner en mode points de terminaison multimodèles SageMaker AI. |
Booléen |
|
|
Spécifiez le modèle à charger en mode modèle unique (par défaut) SageMaker AI. Pour le mode ensemble, spécifiez le nom de l'ensemble proprement dit. |
Chaîne |
|
|
|
Chaîne |
|
|
Dans le conteneur Triton SageMaker AI, cette valeur est définie par défaut à |
Booléen |
|
|
Sous SageMaker AI, le port par défaut est 8080. Vous pouvez le personnaliser pour un port différent dans les scénarios multi-conteneurs. |
Chaîne |
|
|
Ceci est défini par la plateforme SageMaker AI lors de l’utilisation du mode multi-conteneurs. |
Chaîne |
|
|
Même si SageMaker AI ne prend pas en charge le GRPC pour le moment, vous pouvez choisir de l’activer si vous utilisez Triton devant un proxy inverse personnalisé. |
Booléen |
|
|
Le port par défaut du GRPC est 8001, mais vous pouvez le modifier. |
Chaîne |
|
|
Vous pouvez définir le nombre de threads du gestionnaire de requêtes HTTP par défaut. |
Chaîne |
|
|
|
Booléen |
|
|
|
Booléen |
|
|
|
Booléen |
|
|
|
Booléen |
|
|
Spécifiez la taille du shm pour le backend Python, en octets. La valeur par défaut est de 16 Mo, mais elle peut être augmentée. |
Chaîne |
|
|
Spécifiez la taille de croissance du shm pour le backend Python, en octets. La valeur par défaut est de 1 Mo, mais elle peut être augmentée pour permettre des incréments plus importants. |
Chaîne |
|
|
La valeur par défaut est |
Chaîne |
|
|
Limitez le pourcentage de mémoire de GPU maximal utilisé pour le chargement du modèle, le reste pouvant être utilisé pour les demandes d'inférence. |
Chaîne |
|
|
|
Booléen |
|
|
La valeur par défaut du port est 8002. |
Chaîne |
|
|
|
Booléen |
|
|
Obligatoire si vous avez activé la publication de métriques sur CloudWatch. |
Chaîne |
|
|
Obligatoire si vous avez activé la publication de métriques sur CloudWatch. |
Chaîne |
|
|
Ajoute des arguments supplémentaires lors du démarrage du serveur Triton. |
Chaîne |
|