Déploiement de modèles pour l’inférence en temps réel - Amazon SageMaker AI

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 pour l’inférence en temps réel

Important

Les politiques IAM personnalisées qui autorisent Amazon SageMaker Studio ou Amazon SageMaker Studio Classic à créer des ressources Amazon SageMaker doivent également accorder des autorisations pour ajouter des balises à ces ressources. L’autorisation d’ajouter des balises aux ressources est requise, car Studio et Studio Classic balisent automatiquement toutes les ressources qu’ils créent. Si une politique IAM autorise Studio et Studio Classic à créer des ressources mais n’autorise pas le balisage, des erreurs « AccessDenied » peuvent se produire lors de la tentative de création de ressources. Pour plus d’informations, consultez Fournir des autorisations pour le balisage des ressources d' SageMaker IA.

Les AWSpolitiques gérées pour Amazon SageMaker AI qui autorisent la création de ressources SageMaker incluent déjà des autorisations permettant d’ajouter des balises lors de la création de ces ressources.

Il existe plusieurs options pour déployer un modèle à l’aide des services d’hébergement SageMaker AI. Vous pouvez déployer un modèle de manière interactive avec SageMaker Studio. Vous pouvez également déployer un modèle par programme à l’aide d’un kit SDK AWS, tel que le kit SDK Python SageMaker ou le kit SDK pour Python (Boto3). Vous pouvez également déployer à l’aide de la AWS CLI.

Avant de commencer

Avant de déployer un modèle SageMaker AI, recherchez et notez les éléments suivants :

  • La Région AWS où se trouve votre compartiment Amazon S3

  • Le chemin d’accès d’URI Amazon S3 où sont stockés les artefacts du modèle

  • Le rôle IAM pour SageMaker AI

  • Le chemin de registre d’URI Docker Amazon ECR pour l’image client contenant le code d’inférence, ou le cadre et la version d’une image Docker intégrée prise en charge par AWS

Pour obtenir la liste des Services AWS disponibles dans chaque région Région AWS, consultez Cartes régionales et réseaux périphériques. Pour plus d’informations sur la création d’un rôle IAM, consultez Création de rôles IAM.

Important

Le compartiment Amazon S3 où les artefacts de modèle sont stockés doit se trouver dans la même Région AWS que le modèle qui vous êtes en train de créer.

Utilisation partagée des ressources avec plusieurs modèles

Vous pouvez déployer un ou plusieurs modèles sur un point de terminaison avec Amazon SageMaker AI. Lorsque plusieurs modèles partagent un point de terminaison, ils utilisent conjointement les ressources qui y sont hébergées, telles que les instances de calcul de ML, les processeurs et les accélérateurs. Le moyen le plus flexible de déployer plusieurs modèles sur un point de terminaison consiste à définir chaque modèle en tant que composant d’inférence.

Composants Inférence

Un composant d’inférence est un objet d’hébergement SageMaker AI que vous pouvez utiliser pour déployer un modèle sur un point de terminaison. Dans les paramètres du composant d’inférence, vous spécifiez le modèle, le point de terminaison et la manière dont le modèle utilise les ressources hébergées par le point de terminaison. Pour définir le modèle, vous pouvez spécifier un objet modèle SageMaker AI, ou vous pouvez directement spécifier les artefacts et l’image du modèle.

Dans les paramètres, vous pouvez optimiser l’utilisation des ressources en personnalisant la manière dont les cœurs de processeur, les accélérateurs et la mémoire requis sont alloués au modèle. Vous pouvez déployer plusieurs composants d’inférence sur un point de terminaison, chaque composant d’inférence contenant un modèle et les besoins d’utilisation des ressources pour ce modèle.

Après avoir déployé un composant d’inférence, vous pouvez invoquer directement le modèle associé lorsque vous utilisez l’action InvokeEndpoint dans l’API SageMaker.

Les composants d’inférence offrent les avantages suivants :

Flexibilité

Le composant d’inférence dissocie les détails de l’hébergement du modèle du point de terminaison lui-même. Cela offre plus de flexibilité et de contrôle sur la manière dont les modèles sont hébergés et servis avec un point de terminaison. Vous pouvez héberger plusieurs modèles sur la même infrastructure et vous pouvez ajouter ou supprimer des modèles d’un point de terminaison selon les besoins. Vous pouvez mettre à jour chaque modèle de manière indépendante.

Evolutivité

Vous pouvez spécifier le nombre de copies de chaque modèle à héberger et vous pouvez définir un nombre minimum de copies pour garantir que le modèle charge la quantité requise pour répondre aux demandes. Vous pouvez réduire verticalement n’importe quelle copie de composant d’inférence jusqu’à zéro, ce qui libère de l’espace pour qu’une autre copie puisse augmenter verticalement.

SageMaker AI empaquète vos modèles sous forme de composants d’inférence lorsque vous les déployez en utilisant :

  • SageMaker Studio Classic.

  • Le kit SDK Python SageMaker pour déployer un objet modèle (dans lequel vous définissez le type de point de terminaison sur EndpointType.INFERENCE_COMPONENT_BASED).

  • Le kit AWS SDK pour Python (Boto3) pour définir les objets InferenceComponent que vous déployez sur un point de terminaison.

Déploiement des modèles avec SageMaker Studio

Procédez comme suit pour créer et déployer votre modèle de manière interactive via SageMaker Studio. Pour plus d’informations sur Studio, consultez la documentation Studio. Pour plus d’informations sur les différents scénarios de déploiement, consultez le blog Empaquetez et déployez facilement des modèles de ML et des LLM classiques avec Amazon SageMaker AI – Partie 2.

Préparation de vos artefacts et de vos autorisations

Complétez cette section avant de créer un modèle dans SageMaker Studio.

Deux options s’offrent à vous pour importer vos artefacts et créer un modèle dans Studio :

  1. Vous pouvez apporter une archive tar.gz prépackagée, qui doit inclure les artefacts de votre modèle, tout code d’inférence personnalisé et toutes les dépendances répertoriées dans un fichier requirements.txt.

  2. SageMaker AI peut empaqueter vos artefacts pour vous. Vous n’avez qu’à importer les artefacts de votre modèle brut et toutes les dépendances dans un fichier requirements.txt et SageMaker AI peut vous fournir le code d’inférence par défaut (ou vous pouvez remplacer le code par défaut par votre propre code d’inférence personnalisé). SageMaker AI prend en charge cette option pour les frameworks suivants : PyTorch, XGBoost.

En plus d’apporter votre modèle, votre rôle Gestion des identités et des accès AWS (IAM) et un conteneur Docker (ou le framework et la version souhaités pour lesquels SageMaker AI possède un conteneur prédéfini), vous devez également accorder des autorisations pour créer et déployer des modèles via SageMaker AI Studio.

La politique AmazonSageMakerFullAccess doit être associée à votre rôle IAM afin de pouvoir accéder à SageMaker AI et aux autres services pertinents. Pour connaître les prix des types d’instances dans Studio, vous devez également joindre la politique AWSPriceListServiceFullAccess (ou si vous ne souhaitez pas joindre la politique complète, plus précisément l’action pricing:GetProducts).

Si vous choisissez de charger les artefacts de votre modèle lors de la création d’un modèle (ou de charger un exemple de fichier de données utiles pour les recommandations d’inférence), vous devez créer un compartiment Amazon S3. Le nom du compartiment doit être préfixé par le mot SageMaker AI. Les capitalisations alternatives de SageMaker AI sont également acceptables : Sagemaker ou sagemaker.

Nous vous recommandons d’utiliser la convention de dénomination des compartiments sagemaker-{Region}-{accountID}. Ce compartiment est utilisé pour stocker les artefacts que vous chargez.

Après avoir créé le compartiment, attachez-lui la politique CORS (cross-origin resource sharing, partage des ressources entre origines multiples) suivante :

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

Vous pouvez attacher une politique CORS à un compartiment Amazon S3 à l’aide de l’une des méthodes suivantes :

Création d’un modèle déployable

Au cours de cette étape, vous créez une version déployable de votre modèle dans SageMaker AI en fournissant vos artefacts ainsi que des spécifications supplémentaires, telles que le conteneur et le framework souhaités, tout code d’inférence personnalisé et les paramètres réseau.

Créez un modèle déployable dans SageMaker Studio en procédant comme suit :

  1. Ouvrez l’application SageMaker Studio.

  2. Dans le volet de navigation de gauche, choisissez Modèles.

  3. Choisissez l’onglet Modèles déployables.

  4. Sur la page Modèles déployables, choisissez Créer.

  5. Sur la page Créer un modèle déployable, dans le champ Nom du modèle, saisissez un nom pour le modèle.

Vous trouverez plusieurs autres sections à remplir sur la page Créer un modèle déployable.

La section Définition de conteneur ressemble à la capture d’écran suivante :

Capture d’écran de la section de Définition de conteneur pour créer un modèle dans Studio.
Dans la section Définition de conteneur, procédez comme suit :
  1. Pour Type de conteneur, sélectionnez Conteneur préconçu si vous souhaitez utiliser un conteneur géré par SageMaker AI, ou sélectionnez Apporter votre propre conteneur si vous avez votre propre conteneur.

  2. Si vous avez sélectionné Conteneur préconçu, sélectionnez le Framework de conteneur, la Version du framework et le Type de matériel que vous souhaitez utiliser.

  3. Si vous avez sélectionné Apporter votre propre conteneur, saisissez un chemin d’accès Amazon ECR pour le Chemin d’accès ECR vers l’image du conteneur.

Ensuite, remplissez la section Artefacts, qui ressemble à la capture d’écran suivante :

Capture d’écran de la section Artefacts pour créer un modèle dans Studio.
Pour la section Artefacts, procédez comme suit :
  1. Si vous utilisez l’un des frameworks pris en charge par SageMaker AI pour empaqueter les artefacts de modèle (PyTorch ou XGBoost), alors pour les artefacts, vous pouvez choisir l’option Charger les artefacts. Avec cette option, vous pouvez simplement spécifier les artefacts de votre modèle brut, tout code d’inférence personnalisé dont vous disposez et votre fichier requirements.txt, et SageMaker AI se charge de l’empaquetage de l’archive pour vous. Procédez comme suit :

    1. Pour Artefacts, sélectionnez Charger les artefacts pour continuer à fournir vos fichiers. Sinon, si vous avez déjà une archive tar.gz contenant vos fichiers de modèle, votre code d’inférence et votre fichier requirements.txt, sélectionnez URI S3 d’entrée vers les artefacts prépackagés.

    2. Si vous avez choisi de charger vos artefacts, pour Compartiment S3, saisissez le chemin Amazon S3 vers un compartiment dans lequel vous souhaitez que SageMaker AI stocke vos artefacts après les avoir empaquetés pour vous. Ensuite, procédez comme suit.

    3. Pour Charger les artefacts de modèle, chargez vos fichiers de modèle.

    4. Pour le code d’inférence, sélectionnez Utiliser le code d’inférence par défaut si vous souhaitez utiliser le code par défaut fourni par SageMaker AI pour servir l’inférence. Sinon, sélectionnez Charger un code d’inférence personnalisé pour utiliser votre propre code d’inférence.

    5. Pour Charger requirements.txt, chargez un fichier texte répertoriant les dépendances que vous souhaitez installer lors de l’exécution.

  2. Si vous n’utilisez pas de framework compatible avec SageMaker AI pour empaqueter les artefacts de modèle, Studio vous propose l’option Artefacts prépackagés et vous devez fournir tous vos artefacts déjà empaquetés sous forme d’archive tar.gz. Procédez comme suit :

    1. Pour Artefacts prépackagés, sélectionnez URI S3 d’entrée pour les artefacts de modèle prépackagés si votre archive tar.gz a déjà été chargée sur Amazon S3. Sélectionnez Charger des artefacts de modèle prépackagés si vous souhaitez charger directement vos archives dans SageMaker AI.

    2. Si vous avez sélectionné URI S3 d’entrée pour les artefacts de modèle prépackagés, saisissez le chemin Amazon S3 vers votre archive pour URI S3. Sinon, sélectionnez et chargez l’archive à partir de votre machine locale.

La section suivante est Sécurité, qui ressemble à la capture d’écran suivante :

Capture d’écran de la section Sécurité pour créer un modèle dans Studio.
Pour la section Sécurité, procédez comme suit :
  1. Pour Rôle IAM, saisissez l’ARN pour un rôle IAM.

  2. (Facultatif) Pour Cloud privé virtuel (VPC), vous pouvez sélectionner un VPC Amazon pour stocker votre configuration et vos artefacts de modèle.

  3. (Facultatif) Activez le bouton Isolement de réseau si vous souhaitez restreindre l’accès Internet de votre conteneur.

Enfin, vous pouvez éventuellement remplir la section Options avancées, qui ressemble à la capture d’écran suivante :

Capture d’écran de la section Options avancées pour créer un modèle dans Studio.
(Facultatif) Pour la section Options avancées, procédez comme suit :
  1. Activez le bouton Recommandations d’instances personnalisées si vous souhaitez exécuter une tâche Amazon SageMaker Inference Recommender sur votre modèle après sa création. Inference Recommender est une fonctionnalité qui vous fournit des types d’instance recommandés pour optimiser les performances et les coûts d’inférence. Vous pouvez consulter ces recommandations d’instances lorsque vous préparez le déploiement de votre modèle.

  2. Pour Ajouter des variables d’environnement, saisissez une variable d’environnement pour votre conteneur sous forme de paires clé-valeur.

  3. Pour Balises, saisissez toutes les balises sous forme de paires clé-valeur.

  4. Après avoir terminé la configuration de votre modèle et de votre conteneur, sélectionnez Créer un modèle déployable.

SageMaker Studio devrait à présent disposer d’un modèle prêt au déploiement.

Déployer votre modèle

Enfin, vous déployez le modèle que vous avez configuré à l’étape précédente sur un point de terminaison HTTPS. Vous pouvez déployer un modèle unique ou plusieurs modèles sur le point de terminaison.

Compatibilité entre le modèle et le point de terminaison

Avant de pouvoir déployer un modèle sur un point de terminaison, le modèle et le point de terminaison doivent être compatibles en ayant les mêmes valeurs pour les paramètres suivants :

  • Le rôle IAM

  • Le VPC Amazon, y compris ses sous-réseaux et groupes de sécurité

  • L’isolement du réseau (activé ou désactivé)

Studio vous empêche de déployer des modèles sur des points de terminaison incompatibles de la manière suivante :

  • Si vous tentez de déployer un modèle sur un nouveau point de terminaison, SageMaker AI configure le point de terminaison avec des paramètres initiaux compatibles. Si vous interrompez la compatibilité en modifiant ces paramètres, Studio affiche une alerte et empêche votre déploiement.

  • Si vous tentez de déployer sur un point de terminaison existant et que celui-ci est incompatible, Studio affiche une alerte et empêche votre déploiement.

  • Si vous tentez d’ajouter plusieurs modèles à un déploiement, Studio vous empêche de déployer des modèles incompatibles entre eux.

Lorsque Studio affiche l’alerte concernant l’incompatibilité du modèle et du point de terminaison, vous pouvez choisir Afficher les détails de l’alerte pour voir quels paramètres sont incompatibles.

Pour déployer un modèle, vous pouvez notamment procéder comme suit dans Studio :

  1. Ouvrez l’application SageMaker Studio.

  2. Dans le volet de navigation de gauche, choisissez Modèles.

  3. Sur la page Modèles, sélectionnez un ou plusieurs modèles dans la liste des modèles SageMaker AI.

  4. Choisissez Déployer.

  5. Pour Nom du point de terminaison, ouvrez le menu déroulant. Vous pouvez sélectionner un point de terminaison existant ou créer un nouveau point de terminaison sur lequel vous déployez le modèle.

  6. Pour Type d’instance, sélectionnez le type d’instance à utiliser pour le point de terminaison. Si vous avez déjà exécuté une tâche Inference Recommender pour le modèle, les types d’instance que vous recommandez apparaissent dans la liste sous le titre Recommandé. Sinon, vous verrez quelques Instances potentielles susceptibles de convenir à votre modèle.

    Compatibilité des types d’instance pour JumpStart

    Si vous déployez un modèle JumpStart, Studio affiche uniquement les types d’instance pris en charge par le modèle.

  7. Dans Nombre d’instances initial, saisissez le nombre initial d’instances que vous souhaitez provisionner pour votre point de terminaison.

  8. Pour Nombre maximal d’instances, spécifiez le nombre maximum d’instances que le point de terminaison peut mettre en service lorsqu’il augmente verticalement pour faire face à une augmentation du trafic.

  9. Si le modèle que vous déployez est l’un des LLM JumpStart les plus utilisés depuis le hub de modèle, l’option Autres configurations apparaît après les champs Type d’instance et Nombre d’instances.

    Pour les LLM JumpStart les plus populaires, AWS propose des types d’instance préévalués afin d’optimiser les coûts ou les performances. Ces données peuvent vous aider à choisir le type d’instance à utiliser pour déployer votre LLM. Choisissez Autres configurations pour ouvrir une boîte de dialogue contenant les données préévaluées. Le panneau ressemble à la capture d’écran suivante :

    Capture d’écran de la boîte Autres configurations

    Dans la boîte Autres configurations, procédez comme suit :

    1. Sélectionnez un type d’instance. Vous pouvez choisir Coût par heure ou Meilleures performances pour voir les types d’instance qui optimisent le coût ou les performances pour le modèle spécifié. Vous pouvez également sélectionner Autres instances prises en charge pour voir la liste des autres types d’instance compatibles avec le modèle JumpStart. Notez que la sélection d’un type d’instance ici remplace toute sélection d’instance précédente spécifiée à l’étape 6.

    2. (Facultatif) Activez le bouton Personnaliser la configuration sélectionnée pour spécifier le Nombre maximum de jetons (le nombre maximum de jetons que vous souhaitez autoriser, qui est la somme de vos jetons d’entrée et de la sortie générée par le modèle), la Longueur maximale du jeton d’entrée (le nombre maximum de jetons que vous souhaitez autoriser pour l’entrée de chaque demande) et le Nombre maximal de requêtes simultanées (le nombre maximum de requêtes que le modèle peut traiter à la fois).

    3. Choisissez Sélectionner pour confirmer le type d’instance et les paramètres de configuration.

  10. Le champ Modèle doit déjà être renseigné avec le nom du ou des modèles que vous déployez. Vous pouvez choisir Ajouter un modèle pour ajouter d’autres modèles au déploiement. Pour chaque modèle ajouté, renseignez les champs suivants :

    1. Dans Nombre de cœurs de l’UC, saisissez les cœurs de processeur que vous souhaitez consacrer à l’utilisation du modèle.

    2. Pour Nombre minimum de copies, saisissez le nombre minimum de copies de modèle que vous souhaitez héberger sur le point de terminaison à un moment donné.

    3. Pour Mémoire minimale de l’UC (Mo), saisissez la quantité minimale de mémoire (en Mo) requise par le modèle.

    4. Pour Mémoire maximale de l’UC (Mo), saisissez la quantité maximale de mémoire (en Mo) que vous souhaitez autoriser le modèle à utiliser.

  11. (Facultatif) Pour Options avancées, procédez comme suit :

    1. Pour Rôle IAM, utilisez le rôle d’exécution IAM SageMaker AI par défaut ou spécifiez votre propre rôle doté des autorisations dont vous avez besoin. Notez que ce rôle IAM doit être identique à celui que vous avez spécifié lors de la création du modèle déployable.

    2. Pour Cloud privé virtuel (VPC), vous pouvez spécifier le VPC dans lequel vous souhaitez héberger votre point de terminaison.

    3. Pour Clé KMS de chiffrement, sélectionnez une clé AWS KMS pour chiffrer les données sur le volume de stockage attaché à l’instance de calcul ML qui héberge le point de terminaison.

    4. Activez le bouton Activer l’isolement du réseau pour restreindre l’accès Internet de votre conteneur.

    5. Pour Configuration du délai d’attente, saisissez des valeurs dans les champs Expiration de téléchargement des données du modèle (secondes) et Expiration de surveillance de l’état du démarrage du conteneur (secondes). Ces valeurs déterminent le délai maximal accordé par SageMaker AI pour télécharger le modèle dans le conteneur et démarrer le conteneur, respectivement.

    6. Pour Balises, saisissez toutes les balises sous forme de paires clé-valeur.

    Note

    SageMaker AI configure le rôle IAM, le VPC et les paramètres d’isolement du réseau avec des valeurs initiales compatibles avec le modèle que vous déployez. Si vous interrompez la compatibilité en modifiant ces paramètres, Studio affiche une alerte et empêche votre déploiement.

Une fois vos options configurées, la page doit ressembler à la capture d’écran suivante.

Capture d’écran de la page Déploiement du modèle dans Studio.

Après avoir configuré votre déploiement, choisissez Déployer pour créer le point de terminaison et déployer votre modèle.

Déploiement de modèles avec les kits SDK Python

À l’aide du kit SDK Python SageMaker, vous pouvez créer votre modèle de deux manières. La première consiste à créer un objet modèle à partir de la classe Model ou ModelBuilder. Si vous utilisez la classe Model pour créer votre objet Model, vous devez spécifier le package de modèle ou le code d’inférence (en fonction de votre modèle de serveur), les scripts pour gérer la sérialisation et la désérialisation des données entre le client et le serveur, ainsi que toutes les dépendances à charger sur Amazon S3 à des fins de consommation. La deuxième méthode de création de votre modèle consiste à utiliser un ModelBuilder pour lequel vous fournissez des artefacts ou un code d’inférence. ModelBuilder capture automatiquement vos dépendances, en déduit les fonctions de sérialisation et de désérialisation nécessaires et empaquète vos dépendances pour créer votre objet Model. Pour plus d’informations sur ModelBuilder, consultez Création d’un modèle dans Amazon SageMaker AI avec ModelBuilder.

La section suivante décrit les deux méthodes permettant de créer votre modèle et de déployer votre objet modèle.

Configuration

Les exemples suivants préparent le processus de déploiement du modèle. Ils importent les bibliothèques nécessaires et définissent l’URL S3 qui localise les artefacts du modèle.

SageMaker Python SDK
Exemple instructions d’importation

L’exemple suivant importe des modules à partir du kit SDK Python SageMaker, du kit SDK pour Python (Boto3) et de la bibliothèque standard Python. Ces modules fournissent des méthodes utiles qui vous aident à déployer des modèles et ils sont utilisés dans les exemples suivants.

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
Exemple instructions d’importation

L’exemple suivant importe des modules à partir du kit SDK pour Python (Boto3) et de la bibliothèque standard Python. Ces modules fournissent des méthodes utiles qui vous aident à déployer des modèles et ils sont utilisés dans les exemples suivants.

import boto3 import botocore import sys import time
boto3 models (without inference components)
Exemple instructions d’importation

L’exemple suivant importe des modules à partir du kit SDK pour Python (Boto3) et de la bibliothèque standard Python. Ces modules fournissent des méthodes utiles qui vous aident à déployer des modèles et ils sont utilisés dans les exemples suivants.

import boto3 import botocore import datetime from time import gmtime, strftime
Exemple URL de l’artefact de modèle

Le code suivant permet de créer un exemple d’URL Amazon S3. L’URL localise les artefacts de modèle pour un modèle préentraîné dans un compartiment Amazon S3.

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "amzn-s3-demo-bucket" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

L’URL Amazon S3 complète est stockée dans la variable model_url, qui est utilisée dans les exemples suivants.

Présentation

Vous pouvez déployer des modèles de plusieurs façons avec le kit SDK Python SageMaker ou le kit SDK pour Python (Boto3). Les sections suivantes résument les étapes que vous devez suivre pour différentes approches possibles. Ces étapes sont illustrées par les exemples suivants.

SageMaker Python SDK

Avec le kit SDK Python SageMaker, vous pouvez créer votre modèle de l’une des façons suivantes :

  • Créer un objet modèle à partir de la classe Model : vous devez spécifier le package du modèle ou le code d’inférence (en fonction de votre modèle de serveur), les scripts pour gérer la sérialisation et la désérialisation des données entre le client et le serveur, ainsi que toutes les dépendances à télécharger sur Amazon S3 à des fins de consommation.

  • Créer un objet modèle à partir de la classe ModelBuilder : vous fournissez des artefacts de modèle ou du code d’inférence et ModelBuilder capture automatiquement vos dépendances, en déduit les fonctions de sérialisation et de désérialisation nécessaires, et empaquète vos dépendances pour créer votre objet Model.

    Pour plus d’informations sur ModelBuilder, consultez Création d’un modèle dans Amazon SageMaker AI avec ModelBuilder. Vous pouvez également consulter le blog Empaquetez et déployez facilement des modèles de ML et des LLM classiques avec Amazon SageMaker AI — Partie 1 pour plus d’informations.

Les exemples suivants décrivent les deux méthodes de création de votre modèle et de déploiement de votre objet modèle. Pour déployer un modèle de ces manières, procédez comme suit :

  1. Définissez les ressources du point de terminaison à allouer au modèle avec un objet ResourceRequirements.

  2. Créez un objet modèle à partir des classes Model ou ModelBuilder. L’objet ResourceRequirements est spécifié dans les paramètres du modèle.

  3. Déployez le modèle sur un point de terminaison en utilisant la méthode deploy de l’objet Model.

boto3 inference components

Les exemples suivants montrent comment attribuer un modèle à un composant d’inférence, puis déployer le composant d’inférence sur un point de terminaison. Pour déployer un modèle de cette manière, procédez comme suit :

  1. (Facultatif) Créez un objet modèle SageMaker AI à l’aide de la méthode create_model.

  2. Spécifiez les paramètres de votre point de terminaison en créant un objet de configuration du point de terminaison. Pour en créer un, vous devez utiliser la méthode create_endpoint_config.

  3. Créez votre point de terminaison à l’aide de la méthode create_endpoint et, dans votre demande, indiquez la configuration du point de terminaison que vous avez créée.

  4. Créez un composant d’inférence à l’aide de la méthode create_inference_component. Dans les paramètres, vous pouvez spécifier un modèle en effectuant l’une des actions suivantes :

    • Spécification d’un objet modèle SageMaker AI

    • Spécification de l’URI de l’image du modèle et de l’URL S3

    Vous allouez également des ressources de point de terminaison au modèle. En créant le composant d’inférence, vous déployez le modèle sur le point de terminaison. Vous pouvez déployer plusieurs modèles sur un point de terminaison en créant plusieurs composants d’inférence, un pour chaque modèle.

boto3 models (without inference components)

Les exemples suivants montrent comment créer un objet de modèle, puis déployer le modèle sur un point de terminaison. Pour déployer un modèle de cette manière, procédez comme suit :

  1. Créez un modèle SageMaker AI à l’aide de la méthode create_model.

  2. Spécifiez les paramètres de votre point de terminaison en créant un objet de configuration du point de terminaison. Pour en créer un, vous devez utiliser la méthode create_endpoint_config. Dans la configuration du point de terminaison, vous attribuez l’objet modèle à une variante de production.

  3. Créez votre point de terminaison à l’aide de la méthode create_endpoint. Dans votre demande, indiquez la configuration du point de terminaison que vous avez créée.

    Lorsque vous créez le point de terminaison, SageMaker AI provisionne les ressources du point de terminaison et déploie le modèle sur le point de terminaison.

Configuration

Les exemples suivants configurent les ressources dont vous avez besoin pour déployer un modèle sur un point de terminaison.

SageMaker Python SDK

L’exemple suivant affecte des ressources de point de terminaison à un modèle avec un objet ResourceRequirements. Ces ressources incluent les cœurs d’UC, les accélérateurs et la mémoire. L’exemple crée ensuite un objet modèle à partir de la classe Model. Vous pouvez également créer un objet modèle en instanciant la classe ModelBuilder et en exécutant build. Cette méthode est également illustrée dans l’exemple. ModelBuilder fournit une interface unifiée pour l’empaquetage de modèle et, dans ce cas, prépare un modèle pour un déploiement de modèle à grande échelle. L’exemple utilise ModelBuilder pour construire un modèle Hugging Face. (Vous pouvez également transmettre un modèle JumpStart). Une fois le modèle créé, vous pouvez spécifier les besoins en ressources dans l’objet modèle. Dans l’étape suivante, vous allez utiliser cet objet pour déployer le modèle sur un point de terminaison.

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

L’exemple suivant configure un point de terminaison avec la méthode create_endpoint_config. Vous attribuez cette configuration à un point de terminaison lorsque vous le créez. Dans la configuration, vous définissez une ou plusieurs variantes de production. Pour chaque variante, vous pouvez choisir le type d’instance que vous souhaitez qu’Amazon SageMaker AI fournisse et vous pouvez activer la mise à l’échelle gérée des instances.

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
Exemple définition du modèle

L’exemple suivant définit un modèle SageMaker AI avec la méthode create_model dans le kit AWS SDK pour Python (Boto3).

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

Cet exemple spécifie les éléments suivants :

  • ModelName : nom de votre modèle (dans cet exemple, il est stocké sous la forme d’une variable de chaîne appelée model_name).

  • ExecutionRoleArn : l’Amazon Resource Name (ARN) du rôle IAM qu’Amazon SageMaker AI peut endosser pour accéder aux artefacts de modèle et aux images Docker pour le déploiement sur les instances de calcul ML ou pour les tâches de transformation par lots.

  • PrimaryContainer : l’emplacement de l’image Docker principale contenant le code d’inférence, les artefacts associés et les cartes d’environnement personnalisées que le code d’inférence utilise lorsque le modèle est déployé pour les prédictions.

Exemple configuration du point de terminaison ;

L’exemple suivant configure un point de terminaison avec la méthode create_endpoint_config. Amazon SageMaker AI utilise cette configuration pour déployer des modèles. Dans la configuration, vous identifiez un ou plusieurs modèles, créés avec la méthode create_model, pour déployer les ressources que vous souhaitez qu’Amazon SageMaker AI alloue.

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

Cet exemple indique les clés suivantes pour le champ ProductionVariants :

Déploiement

Les exemples suivants déploient un modèle sur un point de terminaison.

SageMaker Python SDK

L’exemple suivant déploie le modèle sur un point de terminaison HTTPS en temps réel avec la méthode deploy de l’objet modèle. Si vous spécifiez une valeur pour l’argument resources à la fois pour la création et le déploiement du modèle, les ressources que vous spécifiez pour le déploiement sont prioritaires.

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

Pour le champ instance_type, l’exemple indique le nom du type d’instance Amazon EC2 pour le modèle. Pour le champ initial_instance_count, il indique le nombre initial d’instances sur lesquelles exécuter le point de terminaison.

L’exemple de code suivant illustre un autre cas où vous déployez un modèle sur un point de terminaison, puis un autre modèle sur le même point de terminaison. Dans ce cas, vous devez fournir le même nom de point de terminaison aux méthodes deploy des deux modèles.

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

Une fois que vous avez une configuration de point de terminaison, utilisez la méthode create_point pour créer votre point de terminaison. Le nom du point de terminaison doit être unique dans une Région AWS de votre compte AWS.

L’exemple suivant crée un point de terminaison à l’aide de la configuration du point de terminaison spécifiée dans la requête. Amazon SageMaker AI utilise le point de terminaison pour mettre en service des ressources.

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

Une fois que vous avez créé un point de terminaison, vous pouvez y déployer un ou plusieurs modèles en créant des composants d’inférence. L’exemple suivant en crée un à l’aide de la méthode create_inference_component.

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
Exemple déploiement

Fournissez la configuration du point de terminaison à SageMaker AI. Le service lance les instances de calcul ML et déploie le ou les modèles tel que spécifié dans la configuration.

Une fois que vous avez votre modèle et votre configuration du point de terminaison, utilisez la méthode create_endpoint pour créer votre point de terminaison. Le nom du point de terminaison doit être unique dans une Région AWS de votre compte AWS.

L’exemple suivant crée un point de terminaison à l’aide de la configuration du point de terminaison spécifiée dans la requête. Amazon SageMaker AI utilise le point de terminaison pour mettre en service des ressources et déployer des modèles.

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

Déploiement des modèles avec la AWS CLI

Vous pouvez déployer un modèle sur un point de terminaison à l’aide de la AWS CLI.

Présentation

Lorsque vous déployez un modèle avec la AWS CLI, vous pouvez le déployer avec ou sans composant d’inférence. Les sections suivantes résument les commandes que vous exécutez pour les deux approches. Ces commandes sont illustrées par les exemples suivants.

With inference components

Pour déployer un modèle avec un composant d’inférence, procédez comme suit :

  1. (Facultatif) Créez un modèle à l’aide de la commande create-model.

  2. Spécifiez les paramètres de votre point de terminaison en créant une configuration du point de terminaison. Pour en créer une, vous devez exécuter la commande create-endpoint-config.

  3. Créez votre point de terminaison à l’aide de la commande create-endpoint. Dans le corps de commande, spécifiez la configuration du point de terminaison que vous avez créée.

  4. Créez un composant d’inférence à l’aide de la commande create-inference-component. Dans les paramètres, vous pouvez spécifier un modèle en effectuant l’une des actions suivantes :

    • Spécification d’un objet modèle SageMaker AI

    • Spécification de l’URI de l’image du modèle et de l’URL S3

    Vous allouez également des ressources de point de terminaison au modèle. En créant le composant d’inférence, vous déployez le modèle sur le point de terminaison. Vous pouvez déployer plusieurs modèles sur un point de terminaison en créant plusieurs composants d’inférence, un pour chaque modèle.

Without inference components

Pour déployer un modèle sans utiliser de composant d’inférence, procédez comme suit :

  1. Créez un modèle SageMaker AI à l’aide de la commande create-model.

  2. Spécifiez les paramètres de votre point de terminaison en créant un objet de configuration du point de terminaison. Vous utilisez la commande create-endpoint-config pour en créer un. Dans la configuration du point de terminaison, vous attribuez l’objet modèle à une variante de production.

  3. Créez votre point de terminaison à l’aide de la commande create-endpoint. Dans le corps de commande, spécifiez la configuration du point de terminaison que vous avez créée.

    Lorsque vous créez le point de terminaison, SageMaker AI provisionne les ressources du point de terminaison et déploie le modèle sur le point de terminaison.

Configuration

Les exemples suivants configurent les ressources dont vous avez besoin pour déployer un modèle sur un point de terminaison.

With inference components
Exemple commande create-endpoint-config

L’exemple suivant crée une configuration du point de terminaison avec la commande create-endpoint-config.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

Dans cet exemple, le fichier production-variants.json définit une variante de production avec le code JSON suivant :

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
Exemple commande create-model

L’exemple suivant crée un modèle à l’aide de la commande create-model.

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
Exemple commande create-endpoint-config

L’exemple suivant crée une configuration du point de terminaison avec la commande create-endpoint-config.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

Dans cet exemple, le fichier production-variants.json définit une variante de production avec le code JSON suivant :

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

Déploiement

Les exemples suivants déploient un modèle sur un point de terminaison.

With inference components
Exemple commande create-endpoint

L’exemple suivant d’utilisation permet de créer un point de terminaison avec la commande create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
Exemple commande create-inference-component

L’exemple suivant crée un composant d’inférence avec la commande create-inference-component.

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

Dans cet exemple, le fichier specification.json définit le conteneur et les ressources de calcul avec le JSON suivant :

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
Exemple commande create-endpoint

L’exemple suivant d’utilisation permet de créer un point de terminaison avec la commande create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Si la commande aboutit, la AWS CLI répond avec l’ARN de la ressource que vous avez créée.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }