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.
Comparez les LLM avec vLLM et lm-evaluation-harness
Ce didacticiel vous explique comment évaluer plusieurs grands modèles de langage (LLM) par rapport à plusieurs critères de référence dans le cadre d'une seule tâche Deadline Cloud. Chaque modèle devient une tâche dans le cadre d'un balayage des paramètres, et les tâches sont exécutées en parallèle entre les opérateurs. Une dernière étape regroupe les résultats par modèle dans un classement classé au format CSV et Markdown.
Le code source de ce didacticiel est disponible dans le référentiel
La vidéo suivante présente le flux de travail du classement vLLM LLM sur Deadline Cloud.
Durée estimée : 20 à 40 minutes (selon le nombre de modèles et de points de référence).
Vue d’ensemble
Chaque tâche de cette EvalModels étape démarre un serveur vLLM local, exécute chaque test de performance avec le système lm-evaluation-harness d'EleutherAI par rapport au point de terminaison local, puis arrête vLLM. Pour plus d'informations, consultez vLLM
Pour terminer ce didacticiel, procédez comme suit :
-
Respectez les conditions préalables de .
-
Configurez votre ferme.
-
Soumettez la tâche d'évaluation.
-
Téléchargez et examinez les résultats.
-
nettoyer les ressources.
Conditions préalables
Avant de commencer, il est recommandé de procéder à la configuration suivante :
-
Une ferme Deadline Cloud avec un parc de GPU NVIDIA géré par les services (A10G ou L4, au moins 32 Go de RAM, au moins 4 vCPU).
-
Une file d'attente à laquelle est attaché un environnement de file d'attente conda qui lit
CondaPackagesles paramètres et lesCondaChannelstâches. -
La CLI Deadline Cloud est installée sur votre poste de travail. Pour les instructions d'installation, consultez le référentiel
deadline-cloud sur le site Web. GitHub -
Quota de service Deadline Cloud suffisant pour les instances GPU. Le modèle 3 par défaut sur lequel il est exécuté
g5.xlarge(4 vCPU et 1 GPU chacun) nécessite au moins 3 GPU sous GPU d'instance OnDemand G par région et 12 vCPU sous vCPU par région. OnDemand
Note
Un jeton Hugging Face n'est requis que pour les modèles sécurisés (tels que Llama). La liste des modèles par défaut utilise des modèles non classés.
Configurez votre ferme
Le moyen le plus rapide d'obtenir une ferme compatible est de déployer le CloudFormation modèle de ferme CUDA
Pour configurer l'interface de ligne de commande pour votre ferme
-
Une fois la CloudFormation pile atteinte
CREATE_COMPLETE, configurez l'interface de ligne de commande Deadline Cloud pour utiliser la nouvelle batterie de serveurs :deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
Si vous possédez déjà une ferme, la configuration suivante est recommandée :
-
Un parc SMF équipé de GPU NVIDIA, d'au moins 32 Go de RAM et d'au moins 4 processeurs virtuels.
-
Une file d'attente avec un environnement de file d'attente conda qui lit
CondaPackagesles paramètres et lesCondaChannelstâches.
Soumettre la tâche d'évaluation
Pour soumettre la tâche d'évaluation
-
Clonez le référentiel d'exemples et accédez au répertoire du bundle de tâches :
git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard -
Soumettez la tâche avec les modèles et les repères par défaut :
deadline bundle submit . \ --parameter MaxModelLen=2048La liste des modèles par défaut évalue trois petits modèles non classés :
Qwen/Qwen2.5-0.5BQwen/Qwen2.5-1.5B, et.EleutherAI/pythia-1.4bLes repères par défaut sont une suite de raisonnement de bon sens :hellaswag,arc_easy,arc_challenge,winogrande. -
Surveillez l'état de la tâche dans la console Deadline Cloud ou à l'aide de la
deadline job getcommande.
Modifier la liste des modèles
Les modèles sont définis comme un espace de paramètres STRING sur l'EvalModelsétape dans template.yaml :
parameterSpace: taskParameterDefinitions: - name: ModelName type: STRING range: - "Qwen/Qwen2.5-0.5B" - "Qwen/Qwen2.5-1.5B" - "EleutherAI/pythia-1.4b"
Pour ajouter ou supprimer des modèles, modifiez la range liste. Chaque entrée devient une tâche visible dans le moniteur Deadline Cloud. Les ID de modèle doivent être pris en charge par vLLM. Pour plus d'informations, consultez la liste des modèles pris en charge
Choix des points de référence
Le paramètre Benchmarks job est une liste de noms de tâches lm-evaluation-harness séparés par des virgules. Remplacez les benchmarks par défaut au moment de la soumission :
deadline bundle submit . \ --parameter Benchmarks="hellaswag,mmlu,gsm8k"
Tous les benchmarks de la liste s'exécutent de manière séquentielle sur le serveur vLLM de chaque modèle. Conserver une valeur MaxModelLen inférieure ou égale à la fenêtre contextuelle du plus petit modèle. Pour une liste complète des benchmarks disponibles, consultez les tâches https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks
Télécharger et consulter les résultats
Pour télécharger les résultats du classement
-
Une fois la tâche terminée, téléchargez le résultat :
deadline job download-output --job-idjob-id -
Consultez le classement :
cat leaderboard_results/leaderboard.md
L'exemple suivant montre le résultat typique d'un classement :
# LLM Leaderboard Models: 3 | Benchmarks: arc_challenge, arc_easy, hellaswag, winogrande | Rank | Model | arc_challenge | arc_easy | hellaswag | winogrande | Mean | |------|------------------------|---------------|----------|-----------|------------|--------| | 1 | Qwen/Qwen2.5-1.5B | 0.4497 | 0.7176 | 0.6775 | 0.6322 | 0.6192 | | 2 | Qwen/Qwen2.5-0.5B | 0.3200 | 0.5816 | 0.5223 | 0.5691 | 0.4982 | | 3 | EleutherAI/pythia-1.4b | 0.2833 | 0.5387 | 0.5201 | 0.5730 | 0.4788 |
Nettoyage
Pour éviter des frais récurrents, nettoyez les ressources que vous avez créées pour ce didacticiel :
Pour nettoyer les ressources du didacticiel
-
Si vous avez déployé le CloudFormation modèle de batterie de serveurs CUDA, supprimez la CloudFormation pile de la CloudFormation console.
-
Si vous avez utilisé une batterie de serveurs existante, arrêtez ou supprimez la flotte de GPU que vous avez utilisée pour ce didacticiel.
-
Supprimez les fichiers de sortie locaux s'ils ne sont plus nécessaires :
rm -rf leaderboard_results/
Résolution des problèmes
La flotte n'augmente pas le nombre de travailleurs
La cause la plus fréquente est un quota de service Deadline Cloud. Ouvrez la console Service Quotas
Ressources connexes
Les ressources suivantes fournissent des informations supplémentaires sur le GitHub site Web et le site Web du VLLM :