View a markdown version of this page

Effettua il benchmark dei LLM con vLLM e lm-evaluation-harness - Deadline Cloud

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

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

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

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

Panoramica di

Ogni attività della EvalModels fase avvia un server vLLM locale, esegue tutti i benchmark con lm-evaluation-harness di eleutherAI sull'endpoint locale, quindi arresta vLLM. 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 .

  2. Configura la tua fattoria.

  3. Invia il lavoro di valutazione.

  4. Scarica e rivedi i risultati.

  5. Eliminare le risorse.

Prerequisiti

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

Il modo più veloce per ottenere una farm compatibile è implementare il modello di farm CloudFormation CUDA. 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 stackCREATE_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

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

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

Modifica dell'elenco dei modelli

I modelli sono definiti come uno spazio parametrico STRING nel EvalModels passaggio intemplate.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'rangeelenco. 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).

Scelta dei benchmark

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 su. GitHub

Scarica e rivedi i risultati

Per scaricare i risultati della classifica
  1. Al termine del lavoro, scarica l'output:

    deadline job download-output --job-id job-id
  2. 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

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

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

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

    rm -rf leaderboard_results/

Risoluzione dei problemi

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

Le seguenti risorse forniscono informazioni aggiuntive: