View a markdown version of this page

Confronta gli 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à.

Confronta gli LLM con vLLM e lm-evaluation-harness

Questo tutorial ti guida nella valutazione di più modelli linguistici di grandi dimensioni (LLM) rispetto a più benchmark in un unico job di Deadline Cloud. Ogni modello diventa un'unica attività in un'analisi dei 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 sul sito web. 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 ogni benchmark con lm-evaluation-harness di EleutherAI rispetto all'endpoint locale, quindi interrompe il vLLM. Per ulteriori informazioni GitHub , vedere vLLM e lm-evaluation-harness sul sito Web. I modelli vengono caricati direttamente da Hugging Face Hub, quindi non sono necessari allegati al lavoro.

Per completare questo tutorial, segui questi passaggi:

  1. Completare i prerequisiti .

  2. Allestisci 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 farm Deadline Cloud con una flotta di servizi gestiti da GPU NVIDIA (A10G o L4, almeno 32 GB di RAM, almeno 4 vCPU).

  • Una coda a cui è collegato un ambiente conda queue che legge i parametri del lavoro. CondaPackages CondaChannels

  • L'interfaccia a riga di comando di Deadline Cloud installata sulla tua workstation. Per le istruzioni di installazione, consulta il repository deadline-cloud sul sito Web. GitHub

  • Quota di servizio Deadline Cloud sufficiente per le istanze GPU. L'esecuzione su 3 modelli predefiniti g5.xlarge (4 vCPU e 1 GPU ciascuno) richiede almeno 3 GPU con istanza OnDemand G per regione e 12 vCPU con vCPU per regione. OnDemand

Nota

Il token Hugging Face è richiesto solo per i modelli gated (come Llama). L'elenco di modelli predefinito utilizza modelli non assegnati.

Configura la tua fattoria

Il modo più veloce per ottenere una farm compatibile è distribuire il CloudFormation modello di farm CUDA sul GitHub sito Web. Il modello fornisce una flotta gestita da 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 hai già 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 i parametri dei processi. CondaPackages CondaChannels

Invia il lavoro di valutazione

Per inviare il lavoro di valutazione
  1. Clona il repository degli esempi e accedi 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 di modelli predefinito valuta tre modelli piccoli e non classificati: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 nella EvalModels fase 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 Deadline Cloud. Gli ID dei modelli devono essere supportati da vLLM. Per ulteriori informazioni, consulta l'elenco dei modelli supportati sul sito Web vLLM.

Scelta dei benchmark

Il parametro Benchmarks job è un elenco separato da virgole di nomi di task 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 sul sito Web. 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 l'output 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, pulisci 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 CloudFormation console.

  2. Se hai utilizzato una farm esistente, interrompi o elimina il parco GPU utilizzato 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 servizi Deadline Cloud. Apri la console Service Quotas in AWS Deadline Cloud e conferma di avere spazio per le GPU di istanza OnDemand G per regione e le OnDemand vCPU per regione. L'aumento delle quote può richiedere da pochi minuti a un paio di giorni lavorativi.

Le seguenti risorse forniscono informazioni aggiuntive sul GitHub sito Web e sul sito Web vLLM: