

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
<a name="tutorial-vllm-leaderboard"></a>

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](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard). GitHub

La vidéo suivante montre le flux de travail du classement vLLM LLM sur Deadline Cloud.

[![AWS Videos](http://img.youtube.com/vi/Hh_s65lEalU/0.jpg)](http://www.youtube.com/watch?v=Hh_s65lEalU)


**Durée estimée :** 20 à 40 minutes (selon le nombre de modèles et de benchmarks).

## Présentation de
<a name="tutorial-vllm-overview"></a>

Chaque tâche de cette `EvalModels` étape démarre un serveur [vLLM](https://github.com/vllm-project/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](https://github.com/EleutherAI/lm-evaluation-harness). 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 .

1. Configurez votre ferme.

1. Soumettez le travail d'évaluation.

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

1. nettoyer les ressources.

## Conditions préalables
<a name="tutorial-vllm-prerequisites"></a>

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](https://github.com/aws-deadline/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
<a name="tutorial-vllm-setup-farm"></a>

Le moyen le plus rapide d'obtenir une ferme compatible consiste à déployer le [CloudFormation modèle de ferme CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm). 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 atteinte`CREATE_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
<a name="tutorial-vllm-submit"></a>

**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
   ```

1. 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.5B``Qwen/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`.

1. 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
<a name="tutorial-vllm-custom-models"></a>

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](https://docs.vllm.ai/en/latest/models/supported_models.html)).

### Choisir des points de référence
<a name="tutorial-vllm-custom-benchmarks"></a>

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](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks) sur. GitHub

## Téléchargez et consultez les résultats
<a name="tutorial-vllm-results"></a>

**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}}
   ```

1. 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
<a name="tutorial-vllm-cleanup"></a>

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.

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

1. Supprimez les fichiers de sortie locaux s'ils ne sont plus nécessaires :

   ```
   rm -rf leaderboard_results/
   ```

## Résolution des problèmes
<a name="tutorial-vllm-troubleshooting"></a>

**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](https://console.aws.amazon.com/servicequotas/home/services/ec2/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.

## Ressources connexes
<a name="tutorial-vllm-related"></a>

Les ressources suivantes fournissent des informations supplémentaires :
+ [Exemple de code source sur GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [vLLM activé GitHub](https://github.com/vllm-project/vllm)
+ [lm-evaluation-harness activé GitHub](https://github.com/EleutherAI/lm-evaluation-harness)
+ [Modèle de ferme CloudFormation CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [Modèles pris en charge par vLLM](https://docs.vllm.ai/en/latest/models/supported_models.html)