

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Effettua il benchmark dei LLM con vLLM e lm-evaluation-harness
<a name="tutorial-vllm-leaderboard"></a>

Questo tutorial illustra la valutazione di più modelli linguistici di grandi dimensioni (LLM) rispetto a più benchmark in un unico lavoro di Deadline Cloud. Ogni modello diventa un'attività in uno sweep di parametri e le attività vengono eseguite in parallelo tra i lavoratori. Un passaggio finale aggrega i risultati per modello in una classifica classificata in formato CSV e Markdown.

[Il codice sorgente di questo tutorial è disponibile nel repository deadline-cloud-samples su.](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard) GitHub

Il video seguente mostra il flusso di lavoro della classifica VLLM LLM su Deadline Cloud.

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


**Tempo stimato:** 20-40 minuti (a seconda del numero di modelli e benchmark).

## Panoramica di
<a name="tutorial-vllm-overview"></a>

Ogni attività della `EvalModels` fase avvia un server [vLLM](https://github.com/vllm-project/vllm) locale, esegue tutti i benchmark con lm-evaluation-harness di [eleutherAI sull'endpoint locale, quindi arresta vLLM](https://github.com/EleutherAI/lm-evaluation-harness). I modelli vengono caricati direttamente da Hugging Face Hub, quindi non sono necessari allegati di lavoro.

Per completare questo tutorial, segui questi passaggi:

1. Completare i prerequisiti .

1. Configura la tua fattoria.

1. Invia il lavoro di valutazione.

1. Scarica e rivedi i risultati.

1. Eliminare le risorse.

## Prerequisiti
<a name="tutorial-vllm-prerequisites"></a>

Prima di iniziare, si consiglia la seguente configurazione:
+ Una Deadline Cloud farm con una flotta di GPU NVIDIA gestita dai servizi (A10G o L4, almeno 32 GB di RAM, almeno 4 vCPU).
+ Una coda con un ambiente di coda conda collegato che legge e parametri di lavoro. `CondaPackages` `CondaChannels`
+ La CLI [Deadline Cloud](https://github.com/aws-deadline/deadline-cloud) installata sulla tua workstation.
+ Quota di servizio vCPU Amazon Elastic Compute Cloud (Amazon EC2) sufficiente per le istanze GPU. *L'esecuzione predefinita su 3 modelli `g5.xlarge` (4 vCPU ciascuno) richiede almeno 12 vCPU nelle istanze Running G e VT. On-Demand *

**Nota**  
Un token Hugging Face è richiesto solo per i modelli con cancello (come Llama). L'elenco di modelli predefinito utilizza modelli non datati.

## Configura la tua fattoria
<a name="tutorial-vllm-setup-farm"></a>

Il modo più veloce per ottenere una farm compatibile è implementare il modello di [farm CloudFormation CUDA](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm). Il modello prevede una flotta gestita dal servizio GPU NVIDIA (A10G o L4) e una coda con un ambiente di coda conda che questo pacchetto utilizza senza modifiche.

**Per configurare la CLI per la tua farm**
+ Una volta raggiunto lo CloudFormation stack`CREATE_COMPLETE`, configura la CLI di Deadline Cloud per utilizzare la nuova farm:

  ```
  deadline config set defaults.farm_id {{FarmId-from-stack-outputs}}
  deadline config set defaults.queue_id {{CUDAQueueId-from-stack-outputs}}
  ```

Se disponi già di una farm, è consigliata la seguente configurazione:
+ Una flotta SMF con GPU NVIDIA, almeno 32 GB di RAM e almeno 4 vCPU.
+ Una coda con un ambiente di coda conda che legge e modifica i parametri di lavoro. `CondaPackages` `CondaChannels`

## Invia il lavoro di valutazione
<a name="tutorial-vllm-submit"></a>

**Per inviare il lavoro di valutazione**

1. Clona il repository degli esempi e vai alla directory del job bundle:

   ```
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
   ```

1. Invia il lavoro con i modelli e i benchmark predefiniti:

   ```
   deadline bundle submit . \
     --parameter MaxModelLen=2048
   ```

   L'elenco dei modelli di default valuta tre modelli piccoli e non datati:`Qwen/Qwen2.5-0.5B`, `Qwen/Qwen2.5-1.5B` e. `EleutherAI/pythia-1.4b` I benchmark predefiniti sono una suite di ragionamento basata sul buon senso:. `hellaswag,arc_easy,arc_challenge,winogrande`

1. Monitora lo stato del lavoro nella console Deadline Cloud o utilizzando il comando. `deadline job get`

### Modifica dell'elenco dei modelli
<a name="tutorial-vllm-custom-models"></a>

I modelli sono definiti come uno spazio parametrico STRING nel `EvalModels` passaggio in`template.yaml`:

```
parameterSpace:
  taskParameterDefinitions:
  - name: ModelName
    type: STRING
    range:
    - "Qwen/Qwen2.5-0.5B"
    - "Qwen/Qwen2.5-1.5B"
    - "EleutherAI/pythia-1.4b"
```

Per aggiungere o rimuovere modelli, modificate l'`range`elenco. Ogni voce diventa un'attività visibile nel monitor di Deadline Cloud. Gli ID dei modelli devono essere supportati da vLLm (vedi l'elenco dei modelli supportati da [VLLm](https://docs.vllm.ai/en/latest/models/supported_models.html)).

### Scelta dei benchmark
<a name="tutorial-vllm-custom-benchmarks"></a>

Il parametro `Benchmarks` job è un elenco separato da virgole di nomi di attività di lm-evaluation-harness. Sostituisci i benchmark predefiniti al momento dell'invio:

```
deadline bundle submit . \
  --parameter Benchmarks="hellaswag,mmlu,gsm8k"
```

Tutti i benchmark nell'elenco vengono eseguiti in sequenza sul server VLLm di ciascun modello. Mantieni un valore `MaxModelLen` inferiore o uguale alla finestra di contesto del modello più piccolo. Per un elenco completo dei benchmark disponibili, consulta le attività di [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks) su. GitHub

## Scarica e rivedi i risultati
<a name="tutorial-vllm-results"></a>

**Per scaricare i risultati della classifica**

1. Al termine del lavoro, scarica l'output:

   ```
   deadline job download-output --job-id {{job-id}}
   ```

1. Visualizza la classifica:

   ```
   cat leaderboard_results/leaderboard.md
   ```

L'esempio seguente mostra il risultato tipico della classifica:

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

## Eliminazione
<a name="tutorial-vllm-cleanup"></a>

Per evitare addebiti continui, ripulisci le risorse che hai creato per questo tutorial:

**Per ripulire le risorse del tutorial**

1. Se hai distribuito il CloudFormation modello di farm CUDA, elimina lo CloudFormation stack dalla console. CloudFormation 

1. Se hai utilizzato una farm esistente, interrompi o elimina la flotta di GPU che hai usato per questo tutorial.

1. Rimuovi i file di output locali se non sono più necessari:

   ```
   rm -rf leaderboard_results/
   ```

## Risoluzione dei problemi
<a name="tutorial-vllm-troubleshooting"></a>

**La flotta non aumenta il numero di lavoratori**

La causa più comune è una quota di servizio vCPU di Amazon EC2. Apri la [console Service Quotas](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas) in **EC2** e conferma di avere spazio per *eseguire istanze On-Demand G* e VT. L'aumento delle quote può richiedere da pochi minuti a un paio di giorni lavorativi.

## Risorse correlate
<a name="tutorial-vllm-related"></a>

Le seguenti risorse forniscono informazioni aggiuntive:
+ [Codice sorgente di esempio su GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [VLLm attivo GitHub](https://github.com/vllm-project/vllm)
+ [lm-evaluation-harness attivo GitHub](https://github.com/EleutherAI/lm-evaluation-harness)
+ [Modello di fattoria CUDA CloudFormation](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [Modelli supportati da VLLm](https://docs.vllm.ai/en/latest/models/supported_models.html)