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éployez des modèles pour une inférence en temps réel
Important
Les IAM politiques personnalisées qui autorisent Amazon SageMaker Studio ou Amazon SageMaker Studio Classic à créer des SageMaker ressources Amazon 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 IAM politique 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 de plus amples informations, veuillez consulter Fournir des autorisations pour le balisage des ressources SageMaker.
AWS Politiques gérées pour Amazon SageMakerqui donnent des autorisations pour créer des SageMaker ressources incluent déjà des autorisations pour ajouter des balises lors de la création de ces ressources.
Il existe plusieurs options pour déployer un modèle à l'aide de services SageMaker d'hébergement. Vous pouvez déployer un modèle de manière interactive avec SageMaker Studio. Vous pouvez également déployer un modèle par programmation à l'aide d'un AWS SDK, tel que Python SDK ou pour SageMaker SDK Python (Boto3). Vous pouvez également déployer à l'aide du AWS CLI.
Avant de commencer
Avant de déployer un SageMaker modèle, repérez et notez les points suivants :
-
L' Région AWS endroit où se trouve votre compartiment Amazon S3
-
Le URI chemin Amazon S3 où sont stockés les artefacts du modèle
-
Le IAM rôle de SageMaker
-
Le chemin de ECR URI registre Docker Amazon pour l'image personnalisée contenant le code d'inférence, ou le framework et la version d'une image Docker intégrée prise en charge et par AWS
Pour obtenir la liste des réseaux Services AWS disponibles dans chacun d'entre eux Région AWS, voir Cartes des régions et réseaux périphériques
Important
Le compartiment Amazon S3 dans lequel les artefacts du modèle sont stockés doit être Région AWS identique au modèle que vous créez.
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. 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 ML et CPUs 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 SageMaker d'hébergement 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 spécifier le modèle, vous pouvez spécifier un objet SageMaker du modèle 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 adaptant la manière dont les CPU cœurs, 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 appeler directement le modèle associé lorsque vous utilisez l' InvokeEndpoint action dans le SageMaker API.
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 indépendamment.
- 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 redimensionner n'importe quelle copie de composant d'inférence jusqu'à zéro, ce qui laisse de la place à une autre copie pour la redimensionner.
SageMaker empaquète vos modèles sous forme de composants d'inférence lorsque vous les déployez en utilisant :
-
SageMaker Studio classique.
-
Le SageMaker Python SDK pour déployer un objet Model (où vous définissez le type de point de terminaison sur
EndpointType.INFERENCE_COMPONENT_BASED
). -
AWS SDK for Python (Boto3) pour définir les
InferenceComponent
objets que vous déployez sur un point de terminaison.
Déployez 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 de Studio. Pour plus d'informations sur les différents scénarios de déploiement, consultez le blog Package et déployez LLMs facilement des modèles classiques de ML avec Amazon SageMaker — Partie 2
Préparez vos artefacts et 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 :
-
Vous pouvez apporter une
tar.gz
archive préemballé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 unrequirements.txt
fichier. -
SageMaker peut emballer vos artefacts pour vous. Vous n'avez qu'à importer les artefacts de votre modèle brut et toutes les dépendances dans un
requirements.txt
fichier, et vous SageMaker pouvez fournir le code d'inférence par défaut pour vous (ou vous pouvez remplacer le code par défaut par votre propre code d'inférence personnalisé). SageMakerprend en charge cette option pour les frameworks suivants : PyTorch,XGBoost.
En plus d'apporter votre modèle, votre rôle AWS Identity and Access Management (IAM) et un conteneur Docker (ou le framework et la version souhaités pour lesquels un conteneur SageMaker est prédéfini), vous devez également accorder des autorisations pour créer et déployer des modèles via SageMaker Studio.
Vous devez avoir la AmazonSageMakerFullAccesspolitique associée à votre IAM rôle afin de pouvoir accéder à SageMaker d'autres services pertinents. Pour connaître les prix des types d'instances dans Studio, vous devez également joindre la AWS PriceListServiceFullAccesspolitique (ou, si vous ne souhaitez pas joindre la politique dans son intégralité, plus précisément l'pricing:GetProducts
action).
Si vous choisissez de télécharger les artefacts de votre modèle lors de la création d'un modèle (ou de télécharger un exemple de fichier de charge utile pour les recommandations d'inférence), vous devez créer un compartiment Amazon S3. Le nom du bucket doit être préfixé par le motSageMaker
. Les capitalisations alternatives de SageMaker sont également acceptables : Sagemaker
ou. sagemaker
Nous vous recommandons d'utiliser la convention de dénomination des compartimentssagemaker-{
. Ce compartiment est utilisé pour stocker les artefacts que vous chargez.Region
}-{accountID
}
Après avoir créé le compartiment, associez la politique suivante CORS (partage de ressources entre origines) au compartiment :
[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]
Vous pouvez associer une CORS politique à un compartiment Amazon S3 en utilisant l'une des méthodes suivantes :
-
Par le biais de la page Modifier le partage de ressources entre origines (CORS)
dans la console Amazon S3 -
Utilisation de l'Amazon S3 API PutBucketCors
-
À l'aide de la put-bucket-cors AWS CLI commande :
aws s3api put-bucket-cors --bucket="..." --cors-configuration="..."
Création d'un modèle déployable
Au cours de cette étape, vous créez une version déployable de votre modèle en SageMaker 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 :
-
Ouvrez l'application SageMaker Studio.
-
Dans le volet de navigation de gauche, choisissez Models (Modèles).
-
Choisissez l'onglet Modèles déployables.
-
Sur la page Modèles déployables, choisissez Create.
-
Sur la page Créer un modèle déployable, dans le champ Nom du modèle, entrez un nom pour le modèle.
Vous trouverez plusieurs autres sections à remplir sur la page Créer un modèle déployable.
La section de définition du conteneur ressemble à la capture d'écran suivante :
Pour la section Définition du conteneur, procédez comme suit :
-
Pour le type de conteneur, sélectionnez Conteneur préconstruit si vous souhaitez utiliser un conteneur SageMaker géré, ou sélectionnez Apportez votre propre conteneur si vous avez votre propre conteneur.
-
Si vous avez sélectionné Conteneur prédéfini, sélectionnez le framework de conteneur, la version du framework et le type de matériel que vous souhaitez utiliser.
-
Si vous avez sélectionné Bring your own container, entrez un ECR chemin Amazon pour le chemin d'ECRaccès à l'image du conteneur.
Ensuite, remplissez la section Artefacts, qui ressemble à la capture d'écran suivante :
Pour la section Artefacts, procédez comme suit :
-
Si vous utilisez l'un des frameworks qui SageMaker prend en charge l'empaquetage des artefacts du modèle (PyTorch ouXGBoost), pour les artefacts, vous pouvez choisir l'option Télécharger des 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, ainsi que votre fichier requirements.txt, et vous occuper de l' SageMaker empaquetage de l'archive pour vous. Procédez comme suit :
-
Pour Artefacts, sélectionnez Charger des artefacts pour continuer à fournir vos fichiers. Sinon, si vous avez déjà une
tar.gz
archive contenant vos fichiers de modèle, votre code d'inférence et votrerequirements.txt
fichier, sélectionnez Input S3 URI pour préempaqueter les artefacts. -
Si vous avez choisi de télécharger vos artefacts, entrez le chemin Amazon S3 vers un compartiment dans lequel vous souhaitez SageMaker stocker vos artefacts après les avoir empaquetés pour vous. Effectuez ensuite les étapes suivantes.
-
Pour Télécharger des artefacts de modèle, chargez vos fichiers de modèle.
-
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 qui SageMaker permet de servir l'inférence. Sinon, sélectionnez Télécharger un code d'inférence personnalisé pour utiliser votre propre code d'inférence.
-
Pour Upload requirements.txt, chargez un fichier texte répertoriant les dépendances que vous souhaitez installer lors de l'exécution.
-
-
Si vous n'utilisez pas un framework qui SageMaker prend en charge l'empaquetage des artefacts du modèle, Studio vous propose l'option Artefacts préemballés, et vous devez fournir tous vos artefacts déjà empaquetés sous forme d'
tar.gz
archive. Procédez comme suit :-
Pour les artefacts préemballés, sélectionnez Input S3 URI pour les artefacts de modèles préemballés si votre
tar.gz
archive a déjà été chargée sur Amazon S3. Sélectionnez Télécharger les artefacts du modèle préemballés si vous souhaitez télécharger directement votre archive sur. SageMaker -
Si vous avez sélectionné Input S3 URI pour les artefacts de modèles préemballés, entrez le chemin Amazon S3 vers votre archive pour S3 URI. Sinon, sélectionnez et téléchargez l'archive depuis votre ordinateur local.
-
La section suivante est consacrée à la sécurité, qui ressemble à la capture d'écran suivante :
Pour la section Sécurité, procédez comme suit :
-
Pour IAMrôle, entrez le ARN pour un IAM rôle.
-
(Facultatif) Pour Virtual Private Cloud (VPC), vous pouvez sélectionner un Amazon VPC pour stocker la configuration et les artefacts de votre modèle.
-
(Facultatif) Activez le bouton d'isolation du 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 :
(Facultatif) Pour la section Options avancées, procédez comme suit :
-
Activez le bouton Recommandations d'instance 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'instances recommandés pour optimiser les performances et les coûts d'inférence. Vous pouvez consulter ces recommandations relatives aux instances lorsque vous préparez le déploiement de votre modèle.
-
Pour Ajouter des variables d'environnement, entrez une variable d'environnement pour votre conteneur sous forme de paires clé-valeur.
-
Pour les balises, entrez toutes les balises sous forme de paires clé-valeur.
-
Après avoir terminé la configuration de votre modèle et de votre conteneur, choisissez Créer un modèle déployable.
Vous devriez maintenant disposer dans SageMaker Studio d'un modèle prêt à être déployé.
Déployer votre modèle
Enfin, vous déployez le modèle que vous avez configuré à l'étape précédente sur un HTTPS point de terminaison. Vous pouvez déployer un ou plusieurs modèles sur le terminal.
Compatibilité entre les modèles et les terminaux
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 IAM rôle
-
AmazonVPC, y compris ses sous-réseaux et ses groupes de sécurité
-
L'isolation du réseau (activée ou désactivée)
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 configurez 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 le déployer sur un point de terminaison existant et que ce point de terminaison 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 effectuer les opérations suivantes dans Studio :
-
Ouvrez l'application SageMaker Studio.
-
Dans le volet de navigation de gauche, choisissez Models (Modèles).
-
Sur la page Modèles, sélectionnez un ou plusieurs modèles dans la liste des SageMaker modèles.
-
Choisissez Deploy (Déployer).
-
Pour le 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.
-
Dans Type d'instance, sélectionnez le type d'instance que vous souhaitez 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'instances que vous recommandez apparaissent dans la liste sous le titre Recommandé. Sinon, vous verrez quelques instances prospectives susceptibles de convenir à votre modèle.
Compatibilité des types d'instance pour JumpStart
Si vous déployez un JumpStart modèle, Studio affiche uniquement les types d'instances pris en charge par le modèle.
-
Dans Nombre d'instances initial, entrez le nombre initial d'instances que vous souhaitez provisionner pour votre point de terminaison.
-
Pour Nombre maximal d'instances, spécifiez le nombre maximum d'instances que le point de terminaison peut provisionner lorsqu'il augmente pour faire face à une augmentation du trafic.
-
Si le modèle que vous déployez est l'un des modèles les plus utilisés JumpStart LLMs depuis le hub de modèles, l'option Autres configurations apparaît après les champs de type d'instance et de nombre d'instances.
Pour les plus populaires JumpStart LLMs, AWS propose des types d'instances pré-comparé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 votreLLM. Choisissez Autres configurations pour ouvrir une boîte de dialogue contenant les données pré-comparées. Le panneau ressemble à la capture d'écran suivante :
Dans la zone Autres configurations, procédez comme suit :
-
Sélectionnez un type d'instance. Vous pouvez choisir Coût par heure ou Meilleures performances pour voir les types d'instances 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'instances compatibles avec le JumpStart modèle. 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.
-
(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 des jetons d'entrée (le nombre maximum de jetons que vous souhaitez autoriser pour la saisie de chaque demande) et le nombre maximum de demandes simultanées (le nombre maximum de demandes que le modèle peut traiter à la fois).
-
Choisissez Sélectionner pour confirmer le type d'instance et les paramètres de configuration.
-
-
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 que vous ajoutez, renseignez les champs suivants :
-
Dans Nombre de CPU cœurs, entrez les CPU cœurs que vous souhaitez dédier à l'utilisation du modèle.
-
Pour Nombre minimum de copies, entrez le nombre minimum de copies de modèles que vous souhaitez héberger sur le terminal à un moment donné.
-
Pour CPUMémoire minimale (Mo), entrez la quantité minimale de mémoire (en Mo) requise par le modèle.
-
Pour CPUMémoire maximale (Mo), entrez la quantité maximale de mémoire (en Mo) que vous souhaitez autoriser le modèle à utiliser.
-
-
(Facultatif) Pour les options avancées, procédez comme suit :
-
Pour IAMle rôle, utilisez le rôle SageMaker IAM d'exécution par défaut ou spécifiez votre propre rôle doté des autorisations dont vous avez besoin. Notez que ce IAM rôle doit être identique à celui que vous avez spécifié lors de la création du modèle déployable.
-
Pour Virtual Private Cloud (VPC), vous pouvez spécifier un endroit VPC dans lequel vous souhaitez héberger votre point de terminaison.
-
Pour KMSClé de chiffrement, sélectionnez une AWS KMS clé pour chiffrer les données sur le volume de stockage attaché à l'instance de calcul ML qui héberge le point de terminaison.
-
Activez le bouton Activer l'isolation du réseau pour restreindre l'accès Internet de votre conteneur.
-
Pour la configuration du délai d'attente, entrez des valeurs dans les champs Délai de téléchargement des données du modèle (secondes) et Délai de vérification de l'état du démarrage du conteneur (secondes). Ces valeurs déterminent la durée maximale pendant laquelle il SageMaker est possible de télécharger le modèle dans le conteneur et de démarrer le conteneur, respectivement.
-
Pour les balises, entrez toutes les balises sous forme de paires clé-valeur.
Note
SageMaker configure le IAM rôle et VPC les paramètres d'isolation 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.
-
Après avoir configuré vos options, la page devrait ressembler à la capture d'écran suivante.
Après avoir configuré votre déploiement, choisissez Deploy pour créer le point de terminaison et déployer votre modèle.
Déployez des modèles avec Python SDKs
En utilisant le SageMaker PythonSDK, vous pouvez créer votre modèle de deux manières. La première consiste à créer un objet modèle à partir de la ModelBuilder
classe Model
or. Si vous utilisez la Model
classe pour créer votre Model
objet, 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. La deuxième méthode de création de votre modèle consiste à utiliser un modèle 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 empaquette vos dépendances pour créer votre objet. Model
Pour plus d'informations sur ModelBuilder
, consultez Créez un modèle sur Amazon SageMaker avec ModelBuilder.
La section suivante décrit les deux méthodes permettant de créer votre modèle et de déployer votre objet de 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 le S3 URL qui localise les artefacts du modèle.
Exemple modèle d'artefact URL
Le code suivant crée un exemple d'Amazon S3URL. URLLocalise les artefacts d'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'intégralité d'Amazon S3 URL est stockée dans la variablemodel_url
, qui est utilisée dans les exemples suivants.
Présentation
Il existe plusieurs manières de déployer des modèles avec SageMaker Python SDK ou 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.
Configuration
Les exemples suivants configurent les ressources dont vous avez besoin pour déployer un modèle sur un point de terminaison.
Déploiement
Les exemples suivants déploient un modèle sur un point de terminaison.
Déployez des modèles avec AWS CLI
Vous pouvez déployer un modèle sur un point de terminaison à l'aide du AWS CLI.
Présentation
Lorsque vous déployez un modèle avec le 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.
Configuration
Les exemples suivants configurent les ressources dont vous avez besoin pour déployer un modèle sur un point de terminaison.
Déploiement
Les exemples suivants déploient un modèle sur un point de terminaison.