Comment puis-je prévenir ou résoudre les problèmes de manque de mémoire sur un point de terminaison Amazon SageMaker ?
Je souhaite prévenir ou résoudre les problèmes de manque de mémoire sur un point de terminaison Amazon SageMaker.
Résolution
Pour prévenir ou résoudre les problèmes de manque de mémoire sur un point de terminaison SageMaker, procédez comme suit :
Pour les modèles basés sur un processeur
Si vous déployez un modèle qui s'exécute sur le processeur et présente des problèmes de mémoire sur les points de terminaison, appliquez les bonnes pratiques suivantes :
Si vous utilisez des conteneurs d'algorithme intégrés à SageMaker, utilisez le paramètre model_server_workers pour limiter le nombre d’environnements de travail. Pour plus d'informations, consultez la page model_server_workers sur le site Web de SageMaker. Commencez par une valeur de 1, puis augmentez-la progressivement pour déterminer le nombre maximum d’environnements de travail que votre point de terminaison peut inclure.
Remarque : Lorsque vous augmentez la valeur de model_server_workers, vous augmentez également le nombre de copies du modèle créées. Par conséquent, vos besoins en mémoire augmentent.
Pour surveiller l'utilisation de la mémoire sur SageMaker, utilisez Amazon CloudWatch.
Si votre type d'instance de point de terminaison ne peut accueillir qu'une seule copie de modèle, augmentez le type d'instance à un type disposant de plus de mémoire. Pour plus d'informations, consultez la tarification d’Amazon SageMaker.
Pour tester le point de terminaison et surveiller l'utilisation de la mémoire pendant que l'invocation est exécutée localement, utilisez le mode local SageMaker. Pour plus d'informations, consultez la page Mode local sur le site Web de SageMaker. Assurez-vous d'utiliser le même type d'instance pour le test local afin d'obtenir des résultats cohérents.
Si vous ne parvenez pas à augmenter la mémoire d'une seule instance pour votre point de terminaison, utilisez l’autoscaling. L’autoscaling vous permet d'ajuster automatiquement le nombre d'instances en fonction de vos demandes de charge de travail afin d'optimiser les performances et l'utilisation des ressources. Pour plus d'informations, consultez la section Optimiser vos déploiements de machine learning grâce à l’autoscaling sur Amazon SageMaker.
Pour identifier le type d'instance et la configuration requis pour votre point de terminaison, utilisez Inference Recommender.
Pour les modèles basés sur le GPU
Si vous déployez un modèle qui s’exécute sur un GPU et que vous rencontrez des problèmes de mémoire sur les points de terminaison, appliquez les bonnes pratiques suivantes :
Pour calculer la mémoire GPU requise pour charger les pondérations du modèle, utilisez la formule suivante.
Exemple d’exécution de Llama 2 13B :
Model Size Calculation: Parameters (13B) × 4 bytes (FP32) = 52 GB Total Memory Required = Initial weights(52 GB) + Attention cache and Token Generation memory(4-10 GB)** + Additional overhead(2-3 GB) ** depends on sequence length, batch strategy, model architecture) Memory Precision Comparisons: • FP32 (Full Precision): Base reference ( 4 bytes for 1 parameter) • FP16 (Half Precision): 1/2 of FP32 • BF16 (Brain Float 16): 1/2 of FP32 • INT8 (8-bit Integer): 1/4 of FP32
Si votre modèle nécessite plus de mémoire que le GPU n’en dispose, utilisez la quantification, le parallélisme tensoriel et le traitement par lots continu pour optimiser les performances. Pour plus d'informations, consultez les sections Déploiement de LLM à l'aide d'Amazon SageMaker et Sélectionner une configuration de déploiement de point de terminaison. Si vous déployez un LLM disponible sur Hugging Face, utilisez l'estimateur de mémoire du modèle pour identifier les besoins estimés en mémoire du modèle. Pour plus d'informations, consultez la page Estimateur de mémoire du modèle sur le site Web de Hugging Face.
Pour identifier la taille de lot optimale pour votre modèle et la mémoire GPU disponible, consultez la section Améliorer les performances de débit des modèles Llama 2 à l'aide d'Amazon SageMaker.
Si votre modèle gère les dépendances à long terme, ajustez la longueur de la séquence. Pour plus d'informations, consultez la section Améliorer les performances d'inférence pour les LLM avec les nouveaux conteneurs Amazon SageMaker.
Assurez-vous que l'allocation de mémoire GPU du modèle est correctement configurée. Pour suivre la consommation de mémoire du GPU, utilisez des outils de surveillance tels que nvidia-smi. Pour plus d'informations, consultez la page System Management Interface SMI sur le site Web de NVIDIA. De plus, pour faciliter l’identification et la résolution des problèmes de mémoire du GPU, améliorez votre script d'inférence avec des instructions de journalisation supplémentaires.
Résoudre les erreurs courantes liées à la mémoire
« botocore.errorfactory.ModelError: An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (503) from primary with message "{"code": 503, "type": "ServiceUnavailableException", "message": "No worker is available to serve request: model"} »
Si le message d'erreur précédent s'affiche, procédez comme suit :
- Pour identifier les problèmes liés à la mémoire, consultez les journaux CloudWatch de votre point de terminaison.
- Pour vérifier que l'instance de point de terminaison peut gérer des requêtes simultanées, inspectez la configuration de votre conteneur. Assurez-vous que plusieurs collaborateurs sont disponibles pour traiter efficacement les requêtes entrantes.
- Pour prendre en charge plusieurs environnements de travail, ajustez le paramètre model_server_workers. Pour plus d'informations, consultez la page model_server_workers sur le site Web de SageMaker. Si vous utilisez des cadres tels que TorchServe pour déployer un modèle, configurez les environnements de travail minimum et maximum en fonction de votre cas d'utilisation.
- Pour identifier la configuration optimale du point de terminaison, testez la charge du point de terminaison. Si votre conteneur ne dispose pas d’une quantité suffisante de ressources pour gérer plusieurs environnements de travail, configurez l’auto scaling pour répartir la charge sur plusieurs instances.
« torch.cuda.OutOfMemoryError: CUDA out of memory. »
Si l'erreur précédente se produit pendant la phase de déploiement des points de terminaison, procédez comme suit :
- Vérifiez les exigences de mémoire de votre modèle et vérifiez votre configuration.
- Utilisez des types d'instances dotés d’une plus grande mémoire par GPU, tels que les familles p4d.* et p5.*. Vous pouvez également utiliser des instances dotées de plusieurs GPU, telles que g5.12xlarge et g5.48xlarge.
- Si votre modèle ne peut pas contenir un seul GPU, partitionnez les pondérations du modèle sur plusieurs GPU.
Si l'erreur précédente se produit lors de l'inférence, cela signifie que votre GPU ne dispose pas de suffisamment de mémoire pour gérer la requête d'entrée. Pour résoudre ce problème, réduisez la taille du lot à 1 et diminuez la durée de génération à un seul jeton. Surveillez ensuite l'utilisation de la mémoire de votre GPU et augmentez progressivement la taille du lot et la durée de génération pour déterminer la capacité maximale de votre GPU.
Remarque : Si vous utilisez la bibliothèque Accelerate de Hugging Face, activez DeepSpeed pour réduire l'utilisation de la mémoire de votre GPU. Cette méthode n'affecte pas les performances en aval. Pour plus d'informations, consultez la page Accélération sur le site Web de Hugging Face.
Contenus pertinents
- demandé il y a un anlg...
- demandé il y a 6 moislg...
- demandé il y a 2 anslg...
- demandé il y a un anlg...
- demandé il y a 7 moislg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 2 ans