HyperAI
Back to Headlines

Optimiser les Modèles de Langue avec TensorRT-LLM : Guide Pratique pour le Benchmark et le Tuning de la Performance

il y a 2 jours

Optimisation des Performances d'Inférence avec TensorRT-LLM : Guide Pratique Lorsque vous déplochez, intégrez ou évaluez des modèles de langage grand (LLM), il est essentiel de considérer les performances d'inférence. Cette troisième partie de notre série sur le benchmarking des performances d'inférence des LLM vise à guider les développeurs dans l'utilisation de TensorRT-LLM, l'outil d'inférence open-source de NVIDIA, pour optimiser et déployer leurs modèles. Comment Utiliser trtllm-bench 1. Configurer votre Environnement GPU Pour commencer le benchmarking, assurez-vous que votre environnement GPU est correctement configuré. Voici quelques commandes utiles : Pour restaurer les GPU à leurs paramètres par défaut : bash nvidia-smi -r Pour interroger l'utilisation maximale des GPU : bash nvidia-smi -q -d POWER Pour définir une limite d'énergie spécifique (ou maximale) : bash nvidia-smi -pl [limite] Consultez la documentation de trtllm-bench pour plus de détails. 2. Préparer un Jeu de Données Vous pouvez préparer un jeu de données synthétique en utilisant prepare_dataset ou créer votre propre jeu de données en suivant le format spécifié dans la documentation. Un jeu de données personnalisé peut être formaté sous forme de fichier JSON Lines (jsonl) avec une charge utile configurée sur chaque ligne. Exemple d'une entrée de jeu de données : json { "input": "What is the capital of France?", "max_length": 128, "min_length": 128 } Pour ce guide, nous utilisons un jeu de données synthétique avec une longueur d'entrée/sortie de 128. 3. Exécuter des Benchmarks Exécutez les benchmarks en utilisant la sous-commande throughput de trtllm-bench. Voici la commande pour utiliser le flux PyTorch avec un modèle LLM : bash python -m tensorrtllm.bench.throughput --model llama --model_size 8B --precision fp16 --dataset_path path/to/dataset.jsonl --output_path results.json Cette commande va automatiquement télécharger le point de contrôle (si non en cache) et initialiser TensorRT-LLM avec le flux PyTorch. Les résultats seront enregistrés dans results.json et affichés dans le terminal. Voici un exemple de sortie : json { "performance_overview": { "per_user_output_speed": "72.3 tokens/sec", "per_gpu_output_throughput": "18480 tokens/sec", "time_to_first_token": "750 ms" } } Analyser les Résultats de Performance Dans la section PERFORMANCE OVERVIEW des résultats, les statistiques primordiales que vous devez observer sont : Per User Output Speed : Vitesse à laquelle les tokens sont retournés à l'utilisateur après la phase de contexte. Per GPU Output Throughput : Taux de traitement global des tokens par GPU. En supposant que vous voulez une vitesse de sortie de 50 tokens/seconde (environ 20 ms entre chaque token), vous pouvez tracer des courbes de performances en fonction de la congestion (concurrency). Figure 1. Comparaison de la vitesse de sortie par utilisateur et du taux de traitement par GPU. Sur la figure 1, nous observons que le modèle Meta Llama-3.1 8B FP16 ne peut gérer que 256 utilisateurs simultanés avec environ 72 tokens/seconde avant de violer la contrainte de 50 tokens/seconde. En revanche, le modèle quantifié Llama-3.1 8B FP8 peut supporter jusqu'à 512 utilisateurs avec environ 66 tokens/seconde. Ces résultats montrent l'avantage du modèle quantifié en termes de capacité de service. Décisions Basées sur les Résultats Si vous fixez la taille maximale du batch à 512, le temps de premier token (TTFT) risque d'augmenter si le trafic dépasse 512 utilisateurs (les requêtes supplémentaires seront mise en file d'attente). Utilisez trtllm-bench pour évaluer d'autres scénarios de service et autres modèles avec différents jeux de données. Le réglage simple des options de ligne de commande permet d'ajuster les métriques selon vos priorités. Si vous avez besoin de modèles nécessitant plusieurs GPU, configurez trtllm-bench avec les options --tp, --pp, et --ep pour trouver la meilleure configuration parallèle. Pour les développeurs needing des fonctionnalités avancées, l'option --extra_llm_api_options offre une flexibilité supplémentaire. Comment Déployer un Modèle LLM avec trtllm-serve TensorRT-LLM permet de déployer facilement un point de terminaison compatible OpenAI en utilisant la commande trtllm-serve. Vous pouvez utiliser les tunings obtenus avec trtllm-bench pour configurer ce serveur. Contrairement au benchmark, trtllm-serve ne fait aucune supposition sur la configuration sauf les paramètres généraux. Voici comment configurer le serveur basé sur les résultats de performance : Spécifier les Paramètres du Serveur Utilisez les commandes suivantes avec les paramètres trouvés lors du benchmark : bash python -m tensorrtllm.serve --model llama --model_size 8B --precision fp16 --tp_size 1 --pp_size 1 --concurrency 512 --output_path llm_api_options.yml Configurer le Fichier YAML Modifiez le fichier llm_api_options.yml pour refléter les paramètres du benchmark : yaml per_gpu_throughput: 18480 max_batch_size: 512 max_outstanding_requests: 512 Démarrer le Serveur Une fois configuré, exécutez le serveur : bash python -m tensorrtllm.serve --model llama --model_size 8B --precision fp16 --tp_size 1 --pp_size 1 --ep_size 1 --llm_api_options_file llm_api_options.yml Vous devriez voir un message indiquant que le serveur est opérationnel : bash Serving Llama-3.1 8B FP16 on GPU. Endpoint available at http://localhost:8000/v1/completions. Valider les Performances du Serveur Avec le serveur en fonctionnement, utilizez GenAI-Perf ou notre version adaptée de benchmark_serving.py pour vérifier ses performances. Ces outils vous aideront à confirmer que la configuration optimisée est correctement appliquée. Prochaines Étapes Nous prévoyons d'améliorer trtllm-bench afin qu'il puisse lancer automatiquement un serveur optimisé pour le benchmarking dans les prochaines versions. Ressources Complémentaires Documentation de TensorRT-LLM : NVIDIA TensorRT-LLM Documentation Benchmarking des Performances LLM : LLM Inference Benchmarking: Fundamental Concepts Guide Pratique pour GenAI-Perf et NIM : LLM Inference Benchmarking Guide: NVIDIA GenAI-Perf and NIM Évaluation Professionnelle Les outils de benchmarking et de déploiement de TensorRT-LLM offrent une solution puissante pour optimiser les performances des LLM. Les développeurs et chercheurs de l'industrie reconnaissent cette plateforme pour sa flexibilité et sa facilité d'utilisation, soulignant particulièrement son capacité à manipuler des configurations complexes et à produire des résultats rapides et précis. Profil de NVIDIA NVIDIA, leader dans les technologies GPU et l'IA, continue d'innover dans le domaine des LLM. Grâce à des outils comme TensorRT-LLM, l'entreprise facilite le déploiement de modèles d'inférence de manière efficace et performante, répondant ainsi aux besoins croissants des applications de génération de contenu par IA.

Related Links