Déployez des modèles pour une inférence en temps réel - Amazon SageMaker

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 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 plus d’informations, consultez 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 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 SageMaker modèle, recherchez et notez les points suivants :

  • L' Région AWS endroit où se trouve votre compartiment Amazon S3

  • Le chemin de l'URI Amazon S3 où sont stockés les artefacts du modèle

  • Le rôle de l'IAM pour 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 Creating IAM roles.

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, 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 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 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 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 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 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 facilement des modèles de ML et des LLM classiques 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 :

  1. 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 un requirements.txt fichier.

  2. 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 Studio. SageMaker

La politique d'AmazonSageMakerFullaccès doit être attachée à votre rôle IAM 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 politique d'AWS PriceListServiceFullaccès (ou si vous ne souhaitez pas joindre la politique complète, plus précisément l'pricing:GetProductsaction).

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-{Region}-{accountID}. Ce compartiment est utilisé pour stocker les artefacts que vous chargez.

Après avoir créé le bucket, attachez-lui la politique CORS (cross-origin resource sharing) suivante :

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

Vous pouvez associer une politique CORS à un compartiment Amazon S3 en utilisant 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 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 :

  1. Ouvrez l'application SageMaker Studio.

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

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

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

  5. 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 :

Capture d'écran de la section de définition du conteneur pour créer un modèle dans Studio.
Pour la section Définition du conteneur, procédez comme suit :
  1. 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.

  2. 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.

  3. Si vous avez sélectionné Bring your own container, entrez un chemin Amazon ECR pour le chemin ECR vers l'image du conteneur.

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

Capture d'écran de la section Artifacts pour créer un modèle dans Studio.
Pour la section Artefacts, procédez comme suit :
  1. Si vous utilisez l'un des frameworks prenant SageMaker en charge l'empaquetage d'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, ainsi que votre fichier requirements.txt, et vous occuper de l' SageMaker empaquetage de l'archive pour vous. Procédez comme suit :

    1. 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 votre requirements.txt fichier, sélectionnez Input S3 URI pour préempaqueter les artefacts.

    2. 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.

    3. Pour Télécharger des 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 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.

    5. Pour Upload 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 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.gzarchive. Procédez comme suit :

    1. Pour les artefacts préemballés, sélectionnez l'URI S3 d'entrée pour les artefacts du modèle préemballés si votre tar.gz archive 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 votre archive sur. SageMaker

    2. Si vous avez sélectionné l'URI S3 d'entrée pour les artefacts du modèle préemballés, entrez le chemin Amazon S3 vers votre archive pour l'URI S3. 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 :

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 le rôle IAM, entrez l'ARN d'un rôle IAM.

  2. (Facultatif) Pour Virtual Private Cloud (VPC), vous pouvez sélectionner un Amazon VPC pour stocker la configuration et les artefacts de votre modèle.

  3. (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 :

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'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.

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

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

  4. 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 point de terminaison HTTPS. 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 rôle de l'IAM

  • Amazon VPC, y compris ses sous-réseaux et 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 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 :

  1. Ouvrez l'application SageMaker Studio.

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

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

  4. Choisissez Deploy (Déployer).

  5. 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.

  6. 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.

  7. Dans Nombre d'instances initial, entrez 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 provisionner lorsqu'il augmente pour faire face à une augmentation du trafic.

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

    Pour les JumpStart LLM les plus populaires, 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é-comparées. Le panneau ressemble à la capture d'écran suivante :

    Capture d'écran de la boîte de dialogue Configurations alternatives

    Dans la zone 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'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.

    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 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).

    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 que vous ajoutez, renseignez les champs suivants :

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

    2. Pour Nombre minimum de copies, entrez le nombre minimum de copies modèles que vous souhaitez héberger sur le terminal à un moment donné.

    3. Pour la mémoire minimale du processeur (Mo), entrez la quantité minimale de mémoire (en Mo) requise par le modèle.

    4. Pour Mémoire maximale du processeur (Mo), entrez la quantité maximale de mémoire (en Mo) que vous souhaitez autoriser le modèle à utiliser.

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

    1. Pour le rôle IAM, utilisez le rôle d'exécution SageMaker 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 Virtual Private Cloud (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'isolation du réseau pour restreindre l'accès Internet de votre conteneur.

    5. 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.

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

    Note

    SageMaker 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.

Après avoir configuré vos options, la page devrait ressembler à la capture d'écran suivante.

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

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 les SDK Python

À 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 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. ModelBuildercapture 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 l'URL S3 qui localise les artefacts du modèle.

SageMaker Python SDK
Exemple déclarations 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 déclarations d'importation

L'exemple suivant importe des modules depuis 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 import botocore import sys import time
boto3 models (without inference components)
Exemple déclarations d'importation

L'exemple suivant importe des modules depuis 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 import botocore import datetime from time import gmtime, strftime
Exemple URL de l'artefact du modèle

Le code suivant crée un exemple d'URL Amazon S3. L'URL localise 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 = "DOC-EXAMPLE-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 complète d'Amazon S3 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 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éez un objet modèle à partir de la Model classe : 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éez un objet modèle à partir de la ModelBuilder classe : vous fournissez des artefacts de modèle ou du code d'inférence, vous capturez ModelBuilder automatiquement vos dépendances, déduisez les fonctions de sérialisation et de désérialisation nécessaires, et vous empaquetez 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. Vous pouvez également consulter le blog Package et déployer facilement des modèles de ML classiques et des LLM avec SageMaker — 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 de modèle. Pour déployer un modèle de cette manière, vous devez suivre les étapes suivantes :

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

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

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

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, vous devez suivre les étapes suivantes :

  1. (Facultatif) Créez un objet SageMaker modèle à 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 de point de terminaison. Pour en créer un, vous devez utiliser la create_endpoint_configméthode.

  3. Créez votre point de terminaison en utilisant la create_endpointméthode 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 create_inference_component méthode. Dans les paramètres, vous pouvez spécifier un modèle en effectuant l'une des opérations suivantes :

    • Spécification d'un objet SageMaker modèle

    • 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, vous devez suivre les étapes suivantes :

  1. Créez un SageMaker modèle à 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 de point de terminaison. Pour en créer un, vous devez utiliser la create_endpoint_configméthode. Dans la configuration du point de terminaison, vous attribuez l'objet du modèle à une variante de production.

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

    Lorsque vous créez le point de terminaison, SageMaker provisionnez les ressources du point de terminaison et le modèle est déployé 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 ResourceRequirements objet. Ces ressources incluent les cœurs de processeur, les accélérateurs et la mémoire. L'exemple crée ensuite un objet modèle à partir de la Model classe. 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 le packaging 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 du modèle. À l'étape suivante, vous utiliserez 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 create_endpoint_config méthode. 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 provisionne, et vous pouvez activer le dimensionnement géré 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 SageMaker modèle avec la create_model méthode dans le AWS SDK for 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 indique ce qui suit :

  • 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 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 create_endpoint_config méthode. Amazon SageMaker 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 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 ProductionVariants champ :

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 deploy méthode de l'objet du modèle. Si vous spécifiez une valeur pour l'resourcesargument à 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 instance_type champ, l'exemple indique le nom du type d'instance Amazon EC2 pour le modèle. Pour le initial_instance_count champ, 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 deploy méthodes 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 configuré un 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 en utilisant la configuration de point de terminaison spécifiée dans la demande. Amazon SageMaker utilise le point de terminaison pour provisionner des ressources.

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

Après avoir 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 avec la create_inference_component méthode.

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. 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 défini votre modèle et votre 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 en utilisant la configuration de point de terminaison spécifiée dans la demande. Amazon SageMaker 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

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 create-modelcommande.

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

  3. Créez votre point de terminaison à l'aide de la create-endpointcommande. 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 create-inference-component commande. Dans les paramètres, vous pouvez spécifier un modèle en effectuant l'une des opérations suivantes :

    • Spécification d'un objet SageMaker modèle

    • 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 SageMaker modèle à l'aide de la create-modelcommande.

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

  3. Créez votre point de terminaison à l'aide de la create-endpointcommande. 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 provisionnez les ressources du point de terminaison et le modèle est déployé 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 create-endpoint-config commande

L'exemple suivant crée une configuration de point de terminaison à l'aide de 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, 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 à l'aide de 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, 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 crée 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 à l'aide de 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 code 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 crée 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" }