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.
Hébergez plusieurs modèles dans un conteneur derrière un point de terminaison
Les points de terminaison multimodèles offrent une solution évolutive et économique pour le déploiement d'un grand nombre de modèles. Ils utilisent la même flotte de ressources et un conteneur de service partagé pour héberger tous vos modèles. Cela réduit les coûts d'hébergement en améliorant l'utilisation des points de terminaison par rapport à l'utilisation des points de terminaison à modèle unique. Cela réduit également les frais de déploiement, car Amazon SageMaker gère le chargement des modèles en mémoire et leur mise à l'échelle en fonction des modèles de trafic de votre point de terminaison.
Le diagramme suivant montre comment les points de terminaison multi-modèles fonctionnent par rapport aux points de terminaison à modèle unique.
Les points de terminaison multi-modèles sont idéaux pour héberger un grand nombre de modèles utilisant le même cadre de ML sur un conteneur de service partagé. Si vous disposez d'une combinaison de modèles fréquemment et peu utilisés, un point de terminaison multi-modèle peut traiter efficacement ce trafic avec moins de ressources et des économies de coûts plus importantes. Votre application doit être tolérante aux pénalités de latence occasionnelles liées au démarrage à froid qui se produisent lors de l'appel de modèles peu utilisés.
Les points de terminaison multi-modèles permettent d'héberger à la fois des modèles basés sur des processeurs et des GPU. En utilisant des modèles basés sur des GPU, vous pouvez réduire les coûts de déploiement de vos modèles grâce à une utilisation accrue du point de terminaison et de ses instances de calcul accéléré sous-jacentes.
Les points de terminaison multimodèles permettent également le partage du temps des ressources de mémoire sur l'ensemble de vos modèles. Cela fonctionne mieux lorsque les modèles sont assez similaires en taille et en latence d'invocation. Dans ce cas, les points de terminaison multimodèles peuvent utiliser efficacement des instances sur tous les modèles. Si vous avez des modèles qui ont des exigences de transactions par seconde (TPS) significativement plus élevées ou de latence, nous vous recommandons de les héberger sur des points de terminaison dédiés.
Vous pouvez utiliser des points de terminaison multi-modèles dotés des fonctions suivantes :
AWS PrivateLink et VPC
Auto scaling (Mise à l'échelle automatique)
Serial inference pipelines (Pipelines d'inférence série) (mais un seul conteneur multi-modèle peut être inclus dans un pipeline d'inférence)
Test A/B
Vous ne pouvez pas utiliser de conteneurs multimodèles avec Amazon Elastic Inference.
Vous pouvez utiliser AWS SDK for Python (Boto) ou la console SageMaker pour créer un point de terminaison multimodèles. Pour les points de terminaison multi-modèles basés sur des processeurs, vous pouvez créer votre point de terminaison multi-modèle avec des conteneurs personnalisés en intégrant la bibliothèque Multi Model Server
Rubriques
- Algorithmes, cadres et instances pris en charge
- Exemples de blocs-notes pour les points de terminaison multi-modèles
- Fonctionnement des points de terminaison multimodèles
- Définition du comportement de mise en cache des modèles de points de terminaison multi-modèles SageMaker
- Recommandations d'instance pour les déploiements de points de terminaison multi-modèles
- Créer un point de terminaison multimodèle
- Invoquer un point de terminaison multimodèle
- Ajouter ou supprimer des modèles
- Création de votre propre conteneur pour les points de terminaison multi-modèles SageMaker
- Sécurité des points de terminaison multimodèles
- Métriques CloudWatch pour les déploiements de points de terminaison multimodèles
- Définition de politiques Auto Scaling pour les déploiements de points de terminaison multi-modèles
Algorithmes, cadres et instances pris en charge
Pour plus d'informations sur les algorithmes, les cadres et les types d'instances que vous pouvez utiliser avec des points de terminaison multi-modèles, consultez les sections suivantes.
Algorithmes, cadres et instances pris en charge pour les points de terminaison multi-modèles utilisant des instances basées sur des processeurs
Les conteneurs d'inférence pour les algorithmes et cadres suivants prennent en charge les points de terminaison multimodèles :
Pour utiliser n'importe quel autre cadre ou algorithme, utilisez la boîte à outils d'inférence SageMaker pour créer un conteneur prenant en charge les points de terminaison multimodèles. Pour plus d'informations, consultez Création de votre propre conteneur pour les points de terminaison multi-modèles SageMaker.
Les points de terminaison multi-modèles prennent en charge tous les types d'instances de processeur.
Algorithmes, cadres et instances pris en charge pour les points de terminaison multi-modèles utilisant des instances basées sur des GPU
L'hébergement de plusieurs modèles basés sur des GPU sur des points de terminaison multi-modèles est pris en charge par le serveur d'inférence Triton avec Amazon SageMaker. Ila prend en charge tous les principaux cadres d'inférence tels que NVIDIA® TensorRT™, PyTorch, MXNet, Python, ONNX, XGBoost, scikit-learn, RandomForest, OpenVINO, custom C++ personnalisé, etc.
Pour utiliser un autre cadre ou algorithme, vous pouvez utiliser le backend Triton pour Python ou C++ pour écrire la logique de votre modèle et utiliser n'importe quel modèle personnalisé. Une fois le serveur prêt, vous pouvez commencer à déployer des centaines de modèles de deep learning sur un seul point de terminaison.
Les points de terminaison multi-modèles prennent en charge les types d'instances de GPU suivants :
Famille d'instances | Type d'instance | vCPU | GiO de mémoire par vCPU | GPU | Mémoire GPU |
---|---|---|---|---|---|
p2 |
ml.p2.xlarge |
4 |
15,25 |
1 |
12 |
p3 |
ml.p3.2xlarge |
8 |
7,62 |
1 |
16 |
g5 |
ml.g5.xlarge |
4 |
4 |
1 |
24 |
g5 |
ml.g5.2xlarge |
8 |
4 |
1 |
24 |
g5 |
ml.g5.4xlarge |
16 |
4 |
1 |
24 |
g5 |
ml.g5.8xlarge |
32 |
4 |
1 |
24 |
g5 |
ml.g5.16xlarge |
64 |
4 |
1 |
24 |
g4dn |
ml.g4dn.xlarge |
4 |
4 |
1 |
16 |
g4dn |
ml.g4dn.2xlarge |
8 |
4 |
1 |
16 |
g4dn |
ml.g4dn.4xlarge |
16 |
4 |
1 |
16 |
g4dn |
ml.g4dn.8xlarge |
32 |
4 |
1 |
16 |
g4dn |
ml.g4dn.16xlarge |
64 |
4 |
1 |
16 |
Exemples de blocs-notes pour les points de terminaison multi-modèles
Pour en savoir plus sur l'utilisation des points de terminaison multi-modèles, vous pouvez essayer les exemples de bloc-notes suivants :
-
Exemples de points de terminaison multi-modèles utilisant des instances basées sur des processeurs :
Multi-Model Endpoint XGBoost Sample Nootebook
(Exemple de bloc-notes XGBoost pour un point de terminaison multi-modèle) : ce bloc-notes explique comment déployer plusieurs modèles XGBoost sur un point de terminaison. Multi-Model Endpoints BYOC Sample Notebook
(Exemple de bloc-notes BYOC pour un point de terminaison multi-modèle) : ce bloc-notes montre comment configurer et déployer un conteneur personnalisé qui prend en charge les points de terminaison multi-modèles dans SageMaker.
-
Exemple de points de terminaison multi-modèles utilisant des instances basées sur des GPU :
Run mulitple deep learning models on GPUs with Amazon SageMaker Multi-model endpoints (MME)
(Exécuter plusieurs modèles de deep learning sur des GPU à l'aide de points de terminaison multi-modèles (MME) Amazon SageMaker) : ce bloc-notes explique comment utiliser un conteneur d'inférence NVIDIA Triton pour déployer des modèles ResNet-50 sur un point de terminaison multi-modèle.
Pour obtenir des instructions sur la création et l'accès aux instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter les exemples précédents dans SageMaker, consultez Instances Amazon SageMaker Notebook. Une fois l'instance de bloc-notes créée et ouverte, choisissez l'onglet SageMaker Examples (Exemples SageMaker) pour afficher la liste de tous les exemples SageMaker. Le bloc-notes de points de terminaison multi-modèles se trouve dans la section ADVANCED FUNCTIONALITY (FONCTIONNALITÉS AVANCÉES). Pour ouvrir un bloc-notes, choisissez son onglet Use (Utiliser), puis Create copy (Créer une copie).
Pour plus d'informations sur des cas d'utilisation des points de terminaison multi-modèles, consultez les blogs et ressources suivants :
Vidéo : Hosting thousands of models on SageMaker
(Hébergement de milliers de modèles sur SageMaker) Vidéo : SageMaker ML for SaaS
(SageMaker ML pour SaaS) Blog : How to scale machine learning inference for multi-tenant SaaS use cases
(Comment mettre à l'échelle l'inférence de machine learning pour les cas d'utilisation SaaS à locataires multiples) Étude de cas : Veeva Systems
(Systèmes Veeva)
Fonctionnement des points de terminaison multimodèles
SageMaker gère le cycle de vie des modèles hébergés sur des points de terminaison multimodèles dans la mémoire du conteneur. Au lieu de télécharger tous les modèles d'un compartiment Amazon S3 vers le conteneur lorsque vous créez le point de terminaison, SageMaker les charge dynamiquement et les met en cache lorsque vous les appelez. Lorsque SageMaker reçoit une demande d'appel pour un modèle particulier, le service effectue les opérations suivantes :
-
Route la demande vers une instance située derrière le point de terminaison.
-
Télécharge le modèle du compartiment S3 vers le volume de stockage de cette instance.
-
Charge le modèle dans la mémoire du conteneur (processeur ou GPU, selon que vous disposez d'instances basées sur des processeurs ou des GPU) sur cette instance de calcul accéléré. Si le modèle est déjà chargé dans la mémoire du conteneur, l'appel est plus rapide, car SageMaker n'a pas besoin de le télécharger et de le charger.
SageMaker continue d'acheminer les demandes d'un modèle vers l'instance où le modèle est déjà chargé. Toutefois, si le modèle reçoit de nombreuses demandes d'appel et qu'il existe des instances supplémentaires pour le point de terminaison multimodèles, SageMaker achemine certaines demandes vers une autre instance pour absorber le trafic. Si le modèle n'est pas déjà chargé sur la deuxième instance, il est téléchargé sur le volume de stockage de cette instance et chargé dans la mémoire du conteneur.
Lorsque l'utilisation de la mémoire d'une instance est élevée et que SageMaker doit charger un autre modèle en mémoire, le service décharge les modèles inutilisés du conteneur de cette instance pour s'assurer qu'il y a suffisamment de mémoire pour charger le modèle. Les modèles qui sont déchargés restent sur le volume de stockage de l'instance et peuvent être chargés dans la mémoire du conteneur ultérieurement sans être téléchargés à nouveau depuis le compartiment S3. Si le volume de stockage de l'instance atteint sa capacité, SageMaker supprime tous les modèles inutilisés du volume de stockage.
Pour supprimer un modèle, arrêtez l'envoi de demandes et supprimez-le du compartiment S3. SageMaker fournit une capacité de point de terminaison multimodèles dans un conteneur de service. L'ajout de modèles à un point de terminaison multimodèle et leur suppression ne nécessitent pas la mise à jour du point de terminaison lui-même. Pour ajouter un modèle, vous le chargez dans le compartiment S3 et vous l'appelez. Vous n'avez pas besoin de modifier le code pour l'utiliser.
Note
Lorsque vous mettez à jour un point de terminaison multi-modèle, les demandes d'appel initiales sur le point de terminaison peuvent présenter des latences plus élevées, car le routage intelligent des points de terminaison multi-modèles s'adapte à votre modèle de trafic. Cependant, une fois qu'il connaît votre modèle de trafic, vous pouvez constater de faibles latences pour les modèles les plus fréquemment utilisés. Les modèles moins fréquemment utilisés peuvent présenter des latences de démarrage à froid, car les modèles sont chargés dynamiquement dans une instance.
Définition du comportement de mise en cache des modèles de points de terminaison multi-modèles SageMaker
Par défaut, les points de terminaison multi-modèles mettent en cache des modèles fréquemment utilisés en mémoire (processeur ou GPU, selon que vous disposez d'instances basées sur des processeurs ou des GPU) et sur disque pour fournir une inférence de faible latence. Les modèles mis en cache sont déchargés et/ou supprimés du disque uniquement lorsqu'un conteneur manque de mémoire ou d'espace disque pour s'adapter à un modèle nouvellement ciblé.
Vous pouvez modifier le comportement de mise en cache d'un point de terminaison multimodèles et activer ou désactiver explicitement la mise en cache de modèle en définissant le paramètre ModelCacheSetting
lorsque vous appelez create_model
Nous vous recommandons de définir la valeur du paramètre ModelCacheSetting
sur Disabled
pour les cas d'utilisation qui ne bénéficient pas de la mise en cache des modèles. Par exemple, lorsqu'un grand nombre de modèles doivent être servis à partir du point de terminaison, mais que chaque modèle n'est appelé qu'une seule fois (ou très rarement). Dans de tels cas d'utilisation, définir la valeur du paramètre ModelCacheSetting
sur Disabled
permet des transactions par seconde (TPS) plus élevées pour des requêtes invoke_endpoint
par rapport au mode de mise en cache par défaut. Dans ces cas d'utilisation, le TPS est plus élevé car SageMaker effectue les opérations suivantes après la demande invoke_endpoint
:
-
Décharge de manière asynchrone le modèle de la mémoire et le supprime du disque immédiatement après qu'il a été appelé.
-
Propose une concurrence plus élevée pour le téléchargement et le chargement de modèles dans le conteneur d'inférence. Pour les points de terminaison basés sur des processeurs et des GPU, la concurrence est un facteur du nombre de vCPU de l'instance de conteneur.
Pour obtenir des instructions sur le choix d'un type d'instance ML de SageMaker pour un point de terminaison multimodèles, veuillez consulter Recommandations d'instance pour les déploiements de points de terminaison multi-modèles.
Recommandations d'instance pour les déploiements de points de terminaison multi-modèles
Plusieurs éléments doivent être pris en compte lors de la sélection d'un type d'instance de ML de SageMaker pour un point de terminaison multi-modèle :
Provisionnez suffisamment de capacité Amazon Elastic Block Store (Amazon EBS) pour tous les modèles qui doivent être servis.
Équilibrez les performances (minimisez les démarrages à froid) et les coûts (ne surprovisionnez pas la capacité d'instance). Pour de plus amples informations sur le volume de stockage attaché par SageMaker à chaque type d'instance d'un point de terminaison et d'un point de terminaison multimodèles, veuillez consulter Hébergement de volumes de stockage d'instance .
Pour un conteneur configuré pour s'exécuter en mode
MultiModel
, le volume de stockage provisionné pour ses instances est supérieur à celui du modeSingleModel
par défaut. Cela permet à d'autres modèles d'être mis en cache sur le volume de stockage d'instance qu'en modeSingleModel
.
Lorsque vous choisissez un type d'instance ML SageMaker, tenez compte des éléments suivants :
-
Les points de terminaison multi-modèles sont actuellement pris en charge pour tous les types d'instances de processeur et sur les types d'instances à GPU unique.
-
Pour la distribution du trafic (modèles d'accès) vers les modèles que vous souhaitez héberger derrière le point de terminaison multi-modèle, ainsi que la taille du modèle (nombre de modèles pouvant être chargés en mémoire sur l'instance), gardez les informations suivantes à l'esprit :
-
Considérez la quantité de mémoire d'une instance comme l'espace de cache pour les modèles à charger, et considérez le nombre de vCPUs comme la limite de simultanéité pour effectuer des inférences sur les modèles chargés (en supposant que l'appel d'un modèle est lié au processeur).
-
Pour les instances basées sur des processeurs, le nombre de vCPUs a une incidence sur le nombre maximal d'appels simultanés par instance (en supposant que l'appel d'un modèle soit lié au processeur). Un nombre plus élevé de vCPU vous permet d'appeler plus de modèles uniques simultanément.
-
Pour les instances basées sur des GPU, une capacité de mémoire d'instance et de GPU supérieure vous permet d'avoir plus de modèles chargés et prêts à servir les demandes d'inférence.
-
Pour les instances basées sur des processeurs et des GPU, une mémoire « slack » disponible permet que les modèles inutilisés puissent être déchargés, en particulier pour les points de terminaison multi-modèles avec plusieurs instances. Si une instance ou une zone de disponibilité échoue, les modèles de ces instances seront reroutés vers d'autres instances derrière le point de terminaison.
-
-
Déterminez votre tolérance aux temps de chargement/téléchargement :
-
Les familles de types d'instance d (par exemple, m5d, c5d ou r5d) et g5s sont équipées d'un SSD NVMe (mémoire non volatile express), qui offre des performances d'I/O élevées et peut réduire le temps nécessaire pour télécharger les modèles sur le volume de stockage et pour que le conteneur charge le modèle à partir du volume de stockage.
-
Comme les types d'instances d et g5 sont livrés avec un stockage SSD NVMe, SageMaker n'attache pas un volume de stockage Amazon EBS aux instances de calcul ML qui hébergent le point de terminaison multi-modèle. Auto Scaling fonctionne mieux lorsque les modèles sont similaires en taille et homogènes, c'est-à-dire lorsqu'ils ont des exigences de ressources et de latence d'inférence similaires.
-
Vous pouvez également utiliser les conseils suivants pour optimiser le chargement des modèles sur vos points de terminaison multi-modèles :
Choisir un type d'instance qui ne peut pas contenir tous les modèles ciblés en mémoire
Dans certains cas, vous pouvez décider de réduire les coûts en choisissant un type d'instance qui ne peut pas contenir tous les modèles ciblés en mémoire simultanément. SageMaker décharge dynamiquement les modèles lorsqu'il manque de mémoire pour libérer de l'espace pour un modèle nouvellement ciblé. Pour les modèles rarement demandés, vous sacrifiez la latence de charge dynamique. Dans les cas où les besoins de latence sont plus stricts, vous pouvez opter pour des types d'instance plus importants ou pour plus d'instances. Investir du temps à l'avance dans les tests et les analyses des performances vous aide à réussir vos déploiements de production.
Évaluation des accès au cache de votre modèle
Les métriques Amazon CloudWatch peuvent vous aider à évaluer vos modèles. Pour plus d'informations sur les métriques que vous pouvez utilisez avec des points de terminaison multi-modèles, consultez Métriques CloudWatch pour les déploiements de points de terminaison multimodèles .
Vous pouvez utiliser la statistique Average
de la métrique ModelCacheHit
pour contrôler le ratio des demandes où le modèle est déjà chargé. Vous pouvez utiliser la statistique SampleCount
de la métrique ModelUnloadingTime
pour contrôler le nombre de demandes de déchargement envoyées au conteneur pendant une période donnée. Si les modèles sont déchargés trop fréquemment (indicateur de l'écrasement, où les modèles sont déchargés et chargés à nouveau parce qu'il n'y a pas suffisamment d'espace cache pour le jeu de modèles de travail), envisagez d'utiliser un type d'instance plus grand avec plus de mémoire ou d'augmenter le nombre d'instances derrière le point de terminaison multi-modèle. Pour les points de terminaison multi-modèles avec plusieurs instances, sachez qu'un modèle peut être chargé sur plus d'une instance.