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 linguistiques (LLM) par rapport à plusieurs points de référence dans le cadre d'une seule tâche Deadline Cloud. Chaque modèle devient une tâche lors d'un balayage de paramètres, et les tâches sont exécutées en parallèle entre les travailleurs. 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 sur. GitHub

La vidéo suivante montre 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 benchmarks).

Présentation de

Chaque tâche de cette EvalModels étape démarre un serveur vLLM local, exécute chaque test de référence avec le harnais d'évaluation lm-d' EleutherAI par rapport au point de terminaison local, puis arrête vLLM. Les modèles se chargent directement depuis Hugging Face Hub, il n'est donc pas nécessaire de les joindre à une tâche.

Pour terminer ce didacticiel, procédez comme suit :

  1. Respectez les conditions préalables de .

  2. Configurez votre ferme.

  3. Soumettez le travail d'évaluation.

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

  5. nettoyer les ressources.

Conditions préalables

Avant de commencer, la configuration suivante est recommandée :

  • Un parc Deadline Cloud doté d'un parc géré par le service GPU NVIDIA (A10G ou L4, au moins 32 Go de RAM, au moins 4 vCPU).

  • Une file d'attente associée à un environnement de file d'attente conda qui lit les paramètres de la CondaChannels tâche CondaPackages et de la tâche.

  • La CLI Deadline Cloud installée sur votre poste de travail.

  • Quota de service vCPU Amazon Elastic Compute Cloud (Amazon EC2) suffisant pour les instances de GPU. Le modèle 3 par défaut exécuté sur g5.xlarge (4 vCPU chacun) nécessite au moins 12 vCPU sous des instances G et VT en On-Demand cours d'exécution.

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 datés.

Configurez votre ferme

Le moyen le plus rapide d'obtenir une ferme compatible consiste à déployer le CloudFormation modèle de ferme CUDA. Le modèle fournit un parc géré par le service 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 la CLI pour votre ferme
  • Une fois la CloudFormation pile atteinteCREATE_COMPLETE, configurez la CLI de Deadline Cloud pour utiliser le nouveau parc 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à un parc de serveurs, la configuration suivante est recommandée :

  • Un parc SMF doté de GPU NVIDIA, d'au moins 32 Go de RAM et d'au moins 4 vCPU.

  • Une file d'attente avec un environnement de file d'attente conda qui lit les paramètres de la CondaChannels tâche CondaPackages et de la tâche.

Soumettre le travail d'évaluation

Pour soumettre le travail d'évaluation
  1. Clonez le référentiel d'échantillons et accédez au répertoire des lots 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 benchmarks par défaut :

    deadline bundle submit . \ --parameter MaxModelLen=2048

    La liste des modèles par défaut évalue trois petits modèles non datés : Qwen/Qwen2.5-0.5BQwen/Qwen2.5-1.5B, et. EleutherAI/pythia-1.4b Les benchmarks par défaut sont une suite de raisonnement sensée :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.

Modification de la liste des modèles

Les modèles sont définis sous la forme d'un espace de paramètres STRING sur l'EvalModelsétape suivante 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 (voir la liste des modèles pris en charge par vLLM).

Choisir 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 par rapport au serveur vLLM de chaque modèle. Conservez 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 lm-evaluation-harness sur. GitHub

Téléchargez et consultez les résultats

Pour télécharger les résultats du classement
  1. Une fois le travail terminé, 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 un résultat typique du 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 ferme CUDA, supprimez la CloudFormation pile de la CloudFormation console.

  2. Si vous avez utilisé une batterie de serveurs existante, arrêtez ou supprimez le parc de processeurs graphiques que vous avez utilisé 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 courante est un quota de service vCPU Amazon EC2. Ouvrez la console Service Quotas sous EC2 et vérifiez que vous disposez d'une marge de manœuvre pour exécuter des instances On-Demand G et VT. L'augmentation des quotas peut prendre de quelques minutes à quelques jours ouvrables.

Les ressources suivantes fournissent des informations supplémentaires :