View a markdown version of this page

Obtenez des recommandations de déploiement de l'inférence générative basée sur l'IA - 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.

Obtenez des recommandations de déploiement de l'inférence générative basée sur l'IA

Les tâches de recommandation basées sur l'IA analysent votre modèle et les caractéristiques de votre charge de travail afin de générer des configurations de déploiement optimisées en termes de coût, de latence ou de débit. Le service évalue les types d'instances, applique des optimisations telles que le décodage spéculatif et compare chaque configuration à une infrastructure GPU réelle.

Conditions préalables

Avant de créer une tâche de recommandation, vous devez disposer des éléments suivants :

  • Artefacts de modèle stockés dans Amazon S3 au format HuggingFace point de contrôle avec poids SafeTensor

  • Un compartiment Amazon S3 pour la sortie des recommandations

  • Un rôle d'exécution AWS Identity and Access Management (IAM) qui accorde à l' SageMaker IA un accès à vos artefacts de modèle et à votre bucket de sortie

Étape 1 : créer une tâche de recommandation

Une tâche de recommandation analyse votre modèle et génère des recommandations de déploiement. Vous spécifiez l'emplacement du modèle, l'emplacement de sortie, la configuration de la charge de travail et un objectif de performance.

Python (boto3)

response = client.create_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/", } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/" }, PerformanceTarget={ "Constraints": [ {"Metric": "ttft-ms"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"])

AWS INTERFACE DE LIGNE DE COMMANDE (CLI)

aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \ --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2

Vous pouvez également préciser les paramètres suivants :

ComputeSpec

Limitez les types d'instances à évaluer (trois au maximum). Par exemple : {"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}

OptimizeModel

Définissez sur pour true autoriser les optimisations du modèle telles que le décodage spéculatif.

InferenceSpecification

Spécifiez le cadre d'inférence. Valeurs valides : LMI, VLLM.

Étape 2 : Surveiller l'état du travail

Vérifiez le statut de la tâche jusqu'à ce qu'elle atteigne un état terminal.

Python (boto3)

import time while True: response = client.describe_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) status = response["AIRecommendationJobStatus"] print(f"Status: {status}") if status in ("Completed", "Failed", "Stopped"): break time.sleep(30)

AWS INTERFACE DE LIGNE DE COMMANDE (CLI)

aws sagemaker describe-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --region us-west-2

Étape 3 : Réviser les recommandations

Lorsque le travail est terminé, la réponse de description inclut un Recommendations tableau. Chaque recommandation contient une configuration prête à être déployée avec les informations suivantes :

DeploymentConfiguration

URI de l'image du conteneur, type d'instance, nombre d'instances et variables d'environnement. Vous pouvez utiliser cette configuration pour effectuer un déploiement direct sur un point de terminaison SageMaker AI.

ExpectedPerformance

Mesures de performance validées, notamment le délai jusqu'au premier jeton (TTFT), la latence des demandes aux niveaux P90 et P99, le débit en jetons par seconde et le débit des demandes.

OptimizationDetails

Techniques d'optimisation appliquées telles que le décodage spéculatif ou le réglage du noyau, avec leurs paramètres de configuration.

Les techniques d'optimisation suivantes peuvent être appliquées :

Décodage spéculatif

Le décodage spéculatif accélère la génération de texte en traitant plusieurs jetons en parallèle plutôt qu'un jeton à la fois. Un spéculateur léger propose plusieurs jetons candidats en une seule étape, et le modèle principal les vérifie ensuite ensemble en une seule passe, en conservant les candidats qui sont d'accord avec sa propre distribution et en rejetant le reste. Le spéculateur est formé pour s'aligner sur la distribution des données du modèle principal afin qu'un plus grand nombre de ses propositions soient acceptées, ce qui se traduit directement par la production de jetons plus utiles par passe directe. La distribution de sortie du modèle principal est préservée, de sorte que la qualité de réponse est inchangée. Il en résulte une augmentation du nombre de jetons de sortie par seconde et une latence entre jetons (ITL) plus faible, ce qui améliore vos indicateurs de débit.

Réglage du noyau

Le réglage du noyau commence par l'analyse du graphe d'exécution du modèle afin d'identifier les noyaux critiques en termes de performances qui sont de bons candidats pour le réglage, tels que l'attention et les noyaux d'opérateurs fusionnés. Leurs paramètres de lancement et de tuilage sont ensuite ajustés afin que l'implémentation soit mieux adaptée au matériel GPU cible et au modèle de trafic attendu, tel que la simultanéité. Ces paramètres affectent la réutilisation de la mémoire, la localité du cache et le parallélisme, améliorant ainsi l'efficacité de l'exécution. Le nombre d'étapes du pipeline utilisées pour le chargement des données et le calcul est également ajusté, ce qui permet de superposer le mouvement de la mémoire aux calculs. En ajustant ces paramètres en fonction de la combinaison spécifique du modèle, du matériel et de la charge de travail du service, le réglage du noyau améliore le débit et la latence en garantissant que le GPU est pleinement utilisé.

Les indicateurs de performance cibles suivants sont disponibles :

ttft-ms

Délai d'obtention du premier jeton en millisecondes.

throughput

Jetons par seconde.

cost

Coût horaire de la configuration de déploiement.

Chaque métrique de la ExpectedPerformance réponse comprend un Stat champ indiquant la mesure statistique, aValue, et une optionUnit. Les statistiques courantes incluent : averagep50,p90,p95,p99,max, etmin.

Gérer les ressources de recommandation

Utilisez les opérations suivantes pour gérer vos tâches de recommandation et vos configurations de charge de travail.

# List recommendation jobs response = client.list_ai_recommendation_jobs(MaxResults=10) for job in response["AIRecommendationJobs"]: print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}") # Stop a running job client.stop_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # Delete a job (must be in a terminal state) client.delete_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-recommendation-workload" )