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