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 permettent à Amazon SageMaker Studio ou Amazon SageMaker Studio Classic de 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 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 de plus amples informations, veuillez consulter Fournir des autorisations pour le balisage des ressources d' SageMaker IA.

AWS politiques gérées pour Amazon SageMaker AIqui 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 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 programmation à l'aide d'un AWS SDK, tel que le SDK Python ou le SDK pour SageMaker Python (Boto3). Vous pouvez également déployer à l'aide du AWS CLI.

Avant de commencer

Avant de déployer un modèle d' SageMaker IA, repérez et notez les points suivants :

  • L' Région AWS endroit 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 de l'IAM pour l'IA SageMaker

  • Le chemin de registre d'URI Docker Amazon ECR 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. 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 terminal 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 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 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 spécifier le modèle, vous pouvez spécifier un objet du 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 appeler directement le modèle associé lorsque vous utilisez l' InvokeEndpoint action dans l' 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 de manière indépendante.

Capacité de mise à l’échelle

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 L'IA emballe vos modèles sous forme de composants d'inférence lorsque vous les déployez en utilisant :

  • SageMaker Studio classique.

  • Le SDK SageMaker Python pour déployer un objet Model (dans lequel vous définissez le type de point de terminaison surEndpointType.INFERENCE_COMPONENT_BASED).

  • AWS SDK pour 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 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 de ML 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 L'IA 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 l' SageMaker IA 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 L'IA 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 dispose d'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 AmazonSageMakerFullAccesspolitique doit être attachée à votre rôle IAM afin de pouvoir accéder à l' SageMaker IA et aux 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:GetProductsaction).

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 l' SageMaker IA 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 le type de conteneur, sélectionnez Conteneur préconstruit si vous souhaitez utiliser un conteneur géré par l' SageMaker IA, ou sélectionnez Apportez 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 l' SageMaker IA pour empaqueter des artefacts de modèles (PyTorch ou XGBoost), vous pouvez choisir l'option Télécharger des artefacts pour 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 l' SageMaker IA 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 télécharger vos artefacts, alors pour le compartiment S3, entrez le chemin Amazon S3 vers un compartiment dans lequel vous souhaitez que l' SageMaker IA stocke vos artefacts après les avoir emballé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 l' SageMaker IA 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 l' SageMaker IA pour empaqueter les 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.gzarchive. 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 Télécharger des artefacts de modèles préemballés si vous souhaitez télécharger directement vos archives vers 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'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’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.

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 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, l' SageMaker IA 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 d' SageMaker IA.

  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 JumpStart modèle, Studio affiche uniquement les types d'instances 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 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 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'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.

    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 le rôle IAM, utilisez le rôle d'exécution SageMaker AI IAM 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 la clé KMS 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.

    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 temps maximal accordé par l' SageMaker IA 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 L'IA configure le rôle IAM, le VPC et 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.

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éployez des modèles avec Python SDKs

À l'aide du SDK SageMaker Python, 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éez 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 depuis le SDK SageMaker Python, le SDK pour Python (Boto3) et 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 de

Il existe plusieurs manières de déployer des modèles avec le SDK SageMaker Python ou le 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

À l'aide du SDK SageMaker Python, vous pouvez créer votre modèle de l'une des manières 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éez un modèle dans Amazon SageMaker AI avec ModelBuilder. Vous pouvez également consulter le blog Package et déployer des modèles de ML classiques et LLMs facilement avec 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 de modèle d' SageMaker IA à l'aide de la create_modelméthode.

  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 de modèle d' SageMaker IA

    • 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 d' SageMaker IA à l'aide de la create_modelméthode.

  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, l' SageMaker IA provisionne les ressources du point de terminaison et déploie le modèle sur le point de terminaison.

Configurer

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 ModelBuilderclasse et en l'exécutant. build Cette méthode est également illustrée dans l'exemple. ModelBuilderfournit une interface unifiée pour l'empaquetage des modèles et, dans ce cas, prépare un modèle pour un déploiement de modèles à grande échelle. L’exemple utilise ModelBuilder pour construire un modèle Hugging Face. (Vous pouvez également transmettre un JumpStart modèle). 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 le dimensionnement des instances gérées.

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 d' SageMaker IA avec la create_model méthode dans le 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: le nom de ressource Amazon (ARN) du rôle IAM qu'Amazon SageMaker AI peut assumer pour accéder aux artefacts du modèle et aux images Docker à des fins de déploiement sur des instances de calcul ML ou pour des 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 create_model méthode, pour déployer les ressources que vous souhaitez qu'Amazon SageMaker AI fournisse.

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 au sein de votre AWS compte. Région 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 provisionner les 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 au sein de votre AWS compte. Région 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 provisionner 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éployez des modèles avec le AWS CLI

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

Présentation de

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.

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 de modèle d' SageMaker IA

    • 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 d' SageMaker IA à l'aide de la create-modelcommande.

  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, l' SageMaker IA provisionne les ressources du point de terminaison et déploie le modèle sur le point de terminaison.

Configurer

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 create-endpoint-config commande

L'exemple suivant crée une configuration de point de terminaison avec la create-endpoint-configcommande.

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, elle 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, elle 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 create-endpoint-config commande

L'exemple suivant crée une configuration de point de terminaison avec la create-endpoint-configcommande.

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, elle 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, elle 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 create-inference-component commande

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

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, elle 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, elle 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" }