Optimisation des inférences de modèles avec Amazon SageMaker - 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.

Optimisation des inférences de modèles avec Amazon SageMaker

Amazon SageMaker vous permet d'améliorer les performances de vos modèles d'IA générative en appliquant des techniques d'optimisation des inférences. En optimisant vos modèles, vous pouvez obtenir un meilleur rapport coût-performance pour votre cas d'utilisation. Lorsque vous optimisez un modèle, vous choisissez les techniques d'optimisation prises en charge à appliquer, notamment la quantification, le décodage spéculatif et la compilation. Une fois votre modèle optimisé, vous pouvez exécuter une évaluation pour connaître les indicateurs de performance en termes de latence, de débit et de prix.

Pour de nombreux modèles, plusieurs versions pré-optimisées sont SageMaker également disponibles, chacune répondant aux différents besoins des applications en termes de latence et de débit. Pour de tels modèles, vous pouvez déployer l'une des versions optimisées sans avoir préalablement optimisé le modèle vous-même.

Techniques d'optimisation

Amazon SageMaker prend en charge les techniques d'optimisation suivantes.

Décodage spéculatif

Le décodage spéculatif est une technique permettant d'accélérer le processus de décodage des fichiers volumineux. LLMs Il optimise les modèles en fonction de la latence sans compromettre la qualité du texte généré.

Cette technique utilise un modèle plus petit mais plus rapide appelé modèle brouillon. Le modèle provisoire génère des jetons candidats, qui sont ensuite validés par le modèle cible plus grand mais plus lent. À chaque itération, le projet de modèle génère plusieurs jetons candidats. Le modèle cible vérifie les jetons, et s'il trouve qu'un jeton en particulier n'est pas acceptable, il le rejette et le régénère. Ainsi, le modèle cible vérifie à la fois les jetons et en génère une petite quantité.

Le modèle provisoire est nettement plus rapide que le modèle cible. Il génère rapidement tous les jetons, puis en envoie des lots au modèle cible pour vérification. Le modèle cible les évalue tous en parallèle, ce qui accélère la réponse finale.

SageMaker propose un modèle de brouillon prédéfini que vous pouvez utiliser, de sorte que vous n'avez pas à créer le vôtre. Si vous préférez utiliser votre propre modèle de brouillon personnalisé, cette option est SageMaker également compatible.

Quantification

La quantification est une technique qui permet de réduire les exigences matérielles d'un modèle en utilisant un type de données moins précis pour les poids et les activations. Une fois que vous avez optimisé un modèle avec la quantification, vous pouvez l'héberger sur un site moins cher et plus disponibleGPUs. Cependant, le modèle quantifié peut être moins précis que le modèle source que vous avez optimisé.

SageMaker prend en charge la quantification du poids sensible à l'activation () AWQ pour. GPUs AWQest une technique de quantification efficace, précise, faible en bits et basée uniquement sur le poids. LLMs

Compilation

La compilation optimise le modèle pour obtenir les meilleures performances disponibles sur le type de matériel choisi sans perte de précision. Vous pouvez appliquer la compilation de modèles LLMs pour optimiser le matériel accéléré, tel que AWS Trainium ou AWS Inferentia.

Lorsque vous optimisez un modèle avec la compilation, vous bénéficiez de la ahead-of-time compilation. Vous réduisez le temps de déploiement du modèle et la latence d'auto-scaling, car les pondérations du modèle ne nécessitent pas de just-in-time compilation lorsque le modèle est déployé sur une nouvelle instance.

Référence des métriques pour les évaluations des performances d'inférence

Une fois que vous avez évalué avec succès les performances d'un modèle optimisé, la page des détails de l'évaluation dans Studio affiche les mesures suivantes.

Métriques de latence

La section Latence présente les métriques suivantes :

Simultanéité

Nombre d'utilisateurs simultanés simulés par l'évaluation pour invoquer simultanément le point de terminaison.

Délai d'obtention du premier jeton (ms)

Le temps qui s'est écoulé entre le moment où la demande est envoyée et le moment où le premier jeton d'une réponse en streaming est reçu.

Latence entre les jetons (ms)

Le temps nécessaire pour générer un jeton de sortie pour chaque demande.

Latence du client (ms)

La latence de la demande entre le moment où la demande est envoyée et le moment où la réponse complète est reçue.

Jetons d'entrée/sec (nombre)

Le nombre total de jetons d'entrée générés, pour toutes les demandes, divisé par la durée totale en secondes de la simultanéité.

Jetons de sortie/sec (nombre)

Le nombre total de jetons de sortie générés, pour toutes les demandes, divisé par la durée totale en secondes pour la simultanéité.

Invocations de clients (nombre)

Le nombre total de demandes d'inférence envoyées au point de terminaison par tous les utilisateurs simultanément.

Erreurs d'invocation du client (nombre)

Le nombre total de demandes d'inférence envoyées au point de terminaison par tous les utilisateurs à une simultanéité donnée qui ont entraîné une erreur d'invocation.

Tokenizer a échoué (nombre)

Le nombre total de demandes d'inférence pour lesquelles le tokenizer n'a pas réussi à analyser la demande ou la réponse.

Réponse d'inférence vide (nombre)

Le nombre total de demandes d'inférence qui ont abouti à l'absence de jetons de sortie ou à l'échec de l'analyse de la réponse par le tokenizer.

Métriques de débit

La section Débit présente les mesures suivantes.

Simultanéité

Nombre d'utilisateurs simultanés simulés par l'évaluation pour invoquer simultanément le point de terminaison.

Jetons d'entrée/sec/req (nombre)

Le nombre total de jetons d'entrée générés par seconde et par demande.

Jetons de sortie/sec/req (nombre)

Le nombre total de jetons de sortie générés par seconde et par demande.

Jetons d'entrée (nombre)

Le nombre total de jetons d'entrée générés par demande.

Jetons de sortie (nombre)

Le nombre total de jetons de sortie générés par demande.

Indicateurs de prix

La section Prix présente les statistiques suivantes.

Simultanéité

Nombre d'utilisateurs simultanés simulés par l'évaluation pour invoquer simultanément le point de terminaison.

Prix par million de jetons d'entrée

Coût de traitement de 1 million de jetons d'entrée.

Prix par million de jetons de sortie

Coût de génération de 1 million de jetons de sortie.

Référence des modèles pris en charge

Le tableau suivant indique les modèles qui SageMaker prennent en charge l'optimisation par inférence, ainsi que les techniques d'optimisation prises en charge.

Modèles prenant en charge l'optimisation des inférences
Nom du modèle JumpStart ID du modèle Supporte la quantification Supporte le décodage spéculatif Décodage spéculatif avec projet de modèle SageMaker
Faucon huggingface-llm-falcon-40b-bf16 Oui Oui Non
huggingface-llm-falcon-40 16 b-instruct-bf Oui Oui Non
huggingface-llm-falcon-180 16 b-chat-bf Non Oui Non
huggingface-llm-falcon-180b-bf16 Non Oui Non
huggingface-llm-amazon-falconlite Oui Oui Non
huggingface-llm-amazon-falconlite2 Oui Oui Non
huggingface-llm-tiiuae-falcon-rw-1b Oui Oui Non
huggingface-llm-falcon-7b-bf16 Oui Oui Non
huggingface-llm-falcon-7 16 b-instruct-bf Oui Oui Non
huggingface-llm-falcon2-11 b Oui Oui Non
gpt-neox huggingface-textgeneration2- -20b-fp16 gpt-neoxt-chat-base Oui Oui Non
huggingface-textgeneration2-gpt-neox-20b-fp16 Oui Oui Non
LLaMA meta-textgeneration-llama-3-70b-instruire Oui Oui Oui
meta-textgeneration-llama-3-70b Oui Oui Oui
meta-textgeneration-llama-3-8b Oui Oui Oui
meta-textgeneration-llama-3-8b - instruire Oui Oui Oui
meta-textgeneration-llama-2-7b Oui Oui Oui
meta-textgeneration-llama-2-7b-f Oui Oui Oui
meta-textgeneration-llama-2-13b Oui Oui Oui
meta-textgeneration-llama-2-13b-f Oui Oui Oui
meta-textgeneration-llama-2-70b Oui Oui Oui
meta-textgeneration-llama-2-70b-f Oui Oui Oui
meta-textgeneration-llama-codellama-7b Oui Oui Oui
meta-textgeneration-llama-codellama-7b-instruit Oui Oui Oui
meta-textgeneration-llama-codellama-7b python Oui Oui Oui
meta-textgeneration-llama-codellama-13 b Oui Oui Oui
meta-textgeneration-llama-codellama-13b - instruire Oui Oui Oui
meta-textgeneration-llama-codellama-13 b-python Oui Oui Oui
meta-textgeneration-llama-codellama-34 b Oui Oui Oui
meta-textgeneration-llama-codellama-34b - instruire Oui Oui Oui
meta-textgeneration-llama-codellama-34b-python Oui Oui Oui
meta-textgeneration-llama-codellama-70 b Oui Oui Oui
meta-textgeneration-llama-codellama-70b - instruire Oui Oui Oui
meta-textgeneration-llama-codellama-70b python Oui Oui Oui
meta-textgeneration-llama-guard-7b Oui Oui Oui
Bloom huggingface-textgeneration-bloom-1b7 Oui Oui Non
huggingface-textgeneration-bloom-1b1 Oui Oui Non
huggingface-textgeneration-bloom-560 m Oui Oui Non
huggingface-textgeneration-bloomz-560 m Oui Oui Non
huggingface-textgeneration-bloomz-1b1 Oui Oui Non
huggingface-textgeneration-bloomz-1b7 Oui Oui Non
huggingface-textgeneration1-bloomz-7b1-fp16 Oui Oui Non
huggingface-textgeneration1-bloom-7b1 Oui Oui Non
huggingface-textgeneration1-bloomz-3b-fp16 Oui Oui Non
huggingface-textgeneration1-bloom-3b Oui Oui Non
huggingface-textembedding-bloom-7b1 Oui Oui Non
huggingface-textembedding-bloom-7b1-fp16 Oui Oui Non
Cohere huggingface-llm-cohereforai-c4 ai-command-r-plus Oui
Gemma huggingface-llm-gemma-7b Oui Oui Non
huggingface-llm-gemma-7b-instruit Oui Oui Non
huggingface-llm-gemma-2b Oui Oui Non
huggingface-llm-gemma-2b-instruction Oui Oui Non
huggingface-llm-zephyr-7b - Gemma Oui Oui Non
gpt2 huggingface-textgeneration-gpt2 Oui Non Non
huggingface-textgeneration-distilgpt2 Oui Non Non
Mistral huggingface-llm-mistral-7b Oui Oui Oui
huggingface-llm-mistral-7b-instruit Oui Oui Oui
huggingface-llm-mistral-7 b-openorca-gptq Oui Oui Oui
huggingface-llm-amazon-mistrallite Oui Oui Oui
huggingface-llm-thebloke-mistral-7 b-openorca-awq Oui Oui Oui
huggingface-llm-huggingfaceh4-mistral-7 b-sft-beta Oui Oui Oui
huggingface-llm-huggingfaceh4-mistral-7 b-sft-alpha Oui Oui Oui
huggingface-llm-teknium-openhermes-2-mistral-7b Oui Oui Oui
huggingface-llm-nousresearch-yarn-mistral-7b-128k Oui Oui Oui
huggingface-llm-dolphin-2-2-1-mistral-7b Oui Oui Oui
huggingface-llm-cultrix-mistraltrix-v1 Oui Oui Oui
Mixtral huggingface-llm-mixtral-8x7b - instruire Oui Oui Oui
huggingface-llm-mixtral- 8 x 7 b-instruct-gptq Oui Oui Oui
huggingface-llm-mixtral- 8 x 7 b Oui Oui Oui
huggingface-llm-mistralai-mixtral-8x22B-Instruct-V0-1 Oui Oui Oui
huggingface-llm-dolphin-2-5-mixtral-8x7b Oui Oui Oui
huggingface-llm-dolphin-2-7-mixtral-8x7b Oui Oui Oui
Phi huggingface-llm-phi-2 Oui

Modèles préoptimisés JumpStart

Les JumpStart modèles suivants présentent des configurations préoptimisées.

Meta
  • Llama 3 8B Instruct

  • Lama 3 8B

  • Llama 3 70B Instructeur

  • Lama 3 70B

  • Chat Llama 2 70B

  • Chat Llama 2 7B

  • Chat Llama 2 13B

HuggingFace
  • Mixtral 8x7B Instruct

  • Mixtral 8 x 7 V

  • Mistral 7B Instruct

  • Mistral 7B

Modèles précompilés JumpStart

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

Voici les JumpStart modèles pour lesquels des modèles SageMaker ont été précompilés :

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • Code Llama 7B

  • Code Llama 70B

HuggingFace
  • Mistral 7B