View a markdown version of this page

Comparez les LLM avec vLLM et lm-evaluation-harness - Deadline Cloud

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 deadline-cloud-samples du site Web. GitHub

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 et https://github.com/EleutherAI/lm-evaluation-harness lm-evaluation-harness sur le site Web. GitHub Les modèles se chargent directement depuis Hugging Face Hub, il n'est donc pas nécessaire de joindre des tâches.

Pour terminer ce didacticiel, procédez comme suit :

  1. Respectez les conditions préalables de .

  2. Configurez votre ferme.

  3. Soumettez la tâche d'évaluation.

  4. Téléchargez et examinez les résultats.

  5. 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 CondaPackages les paramètres et les CondaChannels tâ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 sur le GitHub site Web. Le modèle fournit une flotte gérée par des services GPU NVIDIA (A10G ou L4) et une file d'attente avec un environnement de file d'attente conda que ce bundle utilise sans modification.

Pour configurer l'interface de ligne de commande pour votre ferme
  • Une fois la CloudFormation pile atteinteCREATE_COMPLETE, configurez l'interface de ligne de commande Deadline Cloud pour utiliser la nouvelle batterie de serveurs :

    deadline config set defaults.farm_id FarmId-from-stack-outputs deadline config set defaults.queue_id CUDAQueueId-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 CondaPackages les paramètres et les CondaChannels tâches.

Soumettre la tâche d'évaluation

Pour soumettre la tâche d'évaluation
  1. 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
  2. Soumettez la tâche avec les modèles et les repères par défaut :

    deadline bundle submit . \ --parameter MaxModelLen=2048

    La 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.4b Les repères par défaut sont une suite de raisonnement de bon sens :hellaswag,arc_easy,arc_challenge,winogrande.

  3. Surveillez l'état de la tâche dans la console Deadline Cloud ou à l'aide de la deadline job get commande.

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 sur le site Web de vLLM.

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 lm-evaluation-harness sur le site Web. GitHub

Télécharger et consulter les résultats

Pour télécharger les résultats du classement
  1. Une fois la tâche terminée, téléchargez le résultat :

    deadline job download-output --job-id job-id
  2. 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
  1. Si vous avez déployé le CloudFormation modèle de batterie de serveurs CUDA, supprimez la CloudFormation pile de la CloudFormation console.

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

  3. 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 sous AWS Deadline Cloud et vérifiez que vous disposez d'une marge de manœuvre pour les GPU d'instance OnDemand G par région et les OnDemand vCPU par région. L'augmentation des quotas peut prendre de quelques minutes à quelques jours ouvrables.

Les ressources suivantes fournissent des informations supplémentaires sur le GitHub site Web et le site Web du VLLM :