View a markdown version of this page

Déploiement d’un modèle préoptimisé - 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 d’un modèle préoptimisé

Certains modèles JumpStart sont préoptimisés par SageMaker AI, ce qui signifie que vous pouvez déployer des versions optimisées de ces modèles sans créer au préalable une tâche d’optimisation d’inférence.

Pour obtenir la liste des modèles avec options préoptimisées, consultez Modèles JumpStart préoptimisés.

Utilisez la procédure suivante pour déployer un modèle JumpStart préoptimisé à l’aide d’Amazon SageMaker Studio.

Pour déployer un modèle préoptimisé
  1. Dans le menu de navigation de gauche de Studio, choisissez JumpStart.

  2. Sur la page Tous les modèles publics, choisissez l’un des modèles préoptimisés.

  3. Sur la page des détails du modèle, choisissez Déployer.

  4. Sur la page de déploiement, certains modèles JumpStart nécessitent que vous signiez un contrat de licence d’utilisateur final (CLUF) avant de pouvoir continuer. Si nécessaire, consultez les termes du contrat de licence dans la section Contrat de licence. Si les conditions sont acceptables pour votre cas d’utilisation, cochez la case J’accepte le CLUF et j’en ai lu les conditions générales.

    Pour plus d’informations, consultez Contrats de licence de l'utilisateur final.

  5. Pour Nom du point de terminaison et Nombre d’instances initiales, acceptez les valeurs par défaut ou définissez les valeurs personnalisées.

  6. For Type d’instance, conservez la valeur par défaut. Sinon, vous ne pouvez pas déployer de configuration préoptimisée.

  7. Sous Modèles, développez la configuration du modèle. Studio affiche un tableau qui répertorie les configurations préoptimisées que vous pouvez choisir. Chaque option comporte des métriques de latence et de débit. Choisissez l’option qui correspond le mieux aux besoins de votre application.

  8. Choisissez Déployer.

Vous pouvez déployer un modèle préoptimisé en utilisant le kit SageMaker AI Python SDK dans votre projet. Commencez par définir une instance Model à l’aide de la classe ModelBuilder. Vous utilisez ensuite la méthode set_deployment_config() pour définir la configuration préoptimisée que vous souhaitez déployer. Puis vous utilisez la méthode build() pour créer le modèle. Enfin, vous utilisez la méthode deploy() pour le déployer sur un point de terminaison d’inférence.

Pour plus d’informations sur les classes et les méthodes utilisées dans les exemples suivants, consultez API dans la documentation du kit SageMaker AI Python SDK.

Pour configurer votre projet
  1. Dans votre code d’application, importez les bibliothèques nécessaires. Les exemples suivants importent le kit SDK pour Python (Boto3). Il importe également les modules du kit SageMaker AI Python SDK que vous utilisez pour définir des modèles et travailler avec :

    import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session
  2. Initialisez une session SageMaker AI. L’exemple suivant utilise la classe Session() :

    sagemaker_session = Session()
Pour définir votre modèle
  1. Créez une instance SchemaBuilder et fournissez des exemples d’entrée et de sortie. Vous fournissez cette instance à la classe ModelBuilder lorsque vous définissez un modèle. Avec celle-ci, SageMaker AI génère automatiquement les fonctions de transformation pour sérialiser et désérialiser l’entrée et la sortie.

    Pour plus d’informations sur les classes SchemaBuilder et ModelBuilder, consultez Créez un modèle dans Amazon SageMaker AI avec ModelBuilder.

    L’exemple suivant fournit des exemples de chaînes d’entrée et de sortie à la classe SchemaBuilder :

    response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
  2. Définissez votre modèle pour SageMaker AI. L’exemple suivant définit les paramètres pour initialiser une instance ModelBuilder :

    model_builder = ModelBuilder( model="jumpstart-model-id", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )

    Cet exemple utilise un modèle JumpStart. Remplacez jumpstart-model-id par l’ID d’un modèle JumpStart, tel que meta-textgeneration-llama-3-70b.

Pour extraire des métriques de référence
  1. Pour déterminer quelle configuration préoptimisée vous souhaitez déployer, examinez les options proposées par SageMaker AI. L’exemple suivant les affiche :

    model_builder.display_benchmark_metrics()

    Cette méthode display_benchmark_metrics() imprime un tableau comme celui-ci :

    | Instance Type | Config Name | Concurrent Users | Latency, TTFT (P50 in sec) | Throughput (P50 in tokens/sec/user) | |:----------------|:--------------|-------------------:|-----------------------------:|--------------------------------------:| | ml.g5.48xlarge | lmi-optimized | 1 | 2.25 | 49.70 | | ml.g5.48xlarge | lmi-optimized | 2 | 2.28 | 21.10 | | ml.g5.48xlarge | lmi-optimized | 4 | 2.37 | 14.10 | . . . | ml.p4d.24xlarge | lmi-optimized | 1 | 0.10 | 137.40 | | ml.p4d.24xlarge | lmi-optimized | 2 | 0.11 | 109.20 | | ml.p4d.24xlarge | lmi-optimized | 4 | 0.13 | 85.00 | . . .

    La première colonne répertorie les types d’instances potentiels que vous pouvez utiliser pour héberger le modèle JumpStart que vous avez choisi. Pour chaque type d’instance, la colonne Config Name répertorie les noms des configurations préoptimisées. Les configurations fournies par SageMaker AI sont nommées lmi-optimized. Pour chaque type d’instance et chaque configuration, le tableau fournit des métriques de référence. Ces métriques indiquent le débit et la latence que votre modèle prendra en charge pour différents nombres d’utilisateurs simultanés.

  2. Sur la base des indicateurs de référence, choisissez le type d’instance et le nom de configuration qui répondent le mieux à vos besoins en matière de performances. Vous utiliserez ces valeurs lorsque vous créerez une configuration de déploiement.

Pour déployer un modèle préoptimisé
  1. Créez une configuration de déploiement. L’exemple suivant utilise une instance ModelBuilder. Il transmet un type d’instance et un nom de configuration à la méthode set_deployment_config() :

    model_builder.set_deployment_config( config_name="config-name", instance_type="instance-type", )

    Remplacez config-name par un nom de configuration figurant dans le tableau, tel que lmi-optimized. Remplacez instance-type par un type d’instance figurant dans le tableau, tel que ml.p4d.24xlarge.

  2. Créez votre modèle. L’exemple suivant utilise la méthode .build() de l’instance ModelBuilder :

    optimized_model = model_builder.build()

    La méthode .build() renvoie une instance Model déployable.

  3. Déployez votre modèle sur un point de terminaison d’inférence. L’exemple suivant utilise la méthode .deploy() de l’instance Model :

    predictor = optimized_model.deploy(accept_eula=True)

    La méthode deploy() renvoie une instance Predictor que vous pouvez utiliser pour envoyer des demandes d’inférence au modèle.

Pour tester votre modèle à l’aide d’une demande d’inférence
  • Après avoir déployé votre modèle sur un point de terminaison d’inférence, testez les prédictions du modèle. L’exemple suivant envoie une demande d’inférence à l’aide de l’instance Predictor :

    predictor.predict(sample_input)

    Le modèle renvoie le texte qu’il génère avec une réponse comme suit :

    {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}

Modèles JumpStart préoptimisés

Les modèles JumpStart dont les configurations sont préoptimisées sont les suivants.

Meta
  • Llama 3.1 70B Instruct

  • Llama 3.1 70B

  • Llama 3.1 405B Instruct FP8

  • Llama 3.1 405B FP8

  • Llama 3 8B Instruct

  • Llama 3 8B

  • Llama 3 70B Instruct

  • Llama 3 70B

  • Llama 2 70B Chat

  • Llama 2 7B Chat

  • Llama 2 13B Chat

HuggingFace
  • Mixtral 8x7B Instruct

  • Mixtral 8x7B

  • Mistral 7B Instruct

  • Mistral 7B

Modèles JumpStart précompilés

Pour certains modèles et configurations, SageMaker AI fournit des modèles précompilés pour des instances AWS Inferentia et AWS Trainium spécifiques. Dans ce cas, si vous créez une tâche d’optimisation de compilation et que vous choisissez ml.inf2.48xlarge ou ml.trn1.32xlarge comme type d’instance de déploiement, SageMaker AI récupère les artefacts compilés. Comme la tâche utilise un modèle déjà compilé, elle s’exécute rapidement sans que la compilation parte de zéro.

Voici les modèles JumpStart pour lesquels SageMaker AI propose des modèles précompilés :

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • Code Llama 7B

  • Code Llama 70B

HuggingFace
  • Mistral 7B