View a markdown version of this page

Benchmark-LLMs mit vLLM und lm-evaluation-harness - Deadline Cloud

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Benchmark-LLMs mit vLLM und lm-evaluation-harness

Dieses Tutorial führt Sie durch die Bewertung mehrerer großer Sprachmodelle (LLMs) anhand mehrerer Benchmarks in einem einzigen Deadline Cloud-Job. Jedes Modell wird in einem Parameter-Sweep zu einer Aufgabe, und die Aufgaben werden parallel von allen Workern ausgeführt. In einem letzten Schritt werden die Ergebnisse pro Modell zu einer Rangliste im CSV- und Markdown-Format zusammengefasst.

Der Quellcode für dieses Tutorial ist im Deadline-Cloud-Samples-Repository auf der Website verfügbar. GitHub

Das folgende Video zeigt den vLLM LLM-Leaderboard-Workflow auf Deadline Cloud.

Geschätzte Zeit: 20—40 Minuten (abhängig von der Anzahl der Modelle und Benchmarks).

-Übersicht

Jede Aufgabe in diesem EvalModels Schritt startet einen lokalen vLLM-Server, führt jeden Benchmark mit EleutherAis lm-evaluation-harness gegen den lokalen Endpunkt aus und stoppt dann vLLM. Weitere Informationen finden Sie unter vLLM und lm-evaluation-harness auf der Website. https://github.com/vllm-project/vllm https://github.com/EleutherAI/lm-evaluation-harness GitHub Modelle werden direkt von Hugging Face Hub geladen, sodass keine Jobanhänge erforderlich sind.

Gehen Sie folgendermaßen vor, um dieses Tutorial abzuschließen:

  1. Sorgen Sie dafür, dass die -Voraussetzungen erfüllt sind.

  2. Richten Sie Ihre Farm ein.

  3. Reichen Sie den Bewertungsauftrag ein.

  4. Laden Sie die Ergebnisse herunter und überprüfen Sie sie.

  5. Bereinigen Sie die Ressourcen.

Voraussetzungen

Bevor Sie beginnen, wird die folgende Einrichtung empfohlen:

  • Eine Deadline Cloud-Farm mit einer vom NVIDIA-GPU-Service verwalteten Flotte (A10G oder L4, mindestens 32 GB RAM, mindestens 4 vCPUs).

  • Eine Warteschlange mit einer angehängten Conda-Queue-Umgebung, die Lese- und Jobparameter liest. CondaPackages CondaChannels

  • Die Deadline Cloud-CLI ist auf Ihrer Workstation installiert. Anweisungen zur Installation finden Sie im https://github.com/aws-deadline/deadline-cloud Deadline-Cloud-Repository auf der GitHub Website.

  • Ausreichendes Deadline Cloud-Dienstkontingent für GPU-Instanzen. Das Standardmodell mit 3 Modellen g5.xlarge (4 vCPUs und jeweils 1 GPU) erfordert mindestens 3 GPUs unter OnDemand G-Instanz-GPUs pro Region und 12 vCPUs unter vCPUs pro Region. OnDemand

Anmerkung

Ein Hugging Face-Token ist nur für geschlossene Modelle (wie Llama) erforderlich. In der Standardmodellliste werden Modelle ohne Gitter verwendet.

Richten Sie Ihre Farm ein

Der schnellste Weg, eine kompatible Farm zu erhalten, besteht darin, die CloudFormation CUDA-Farmvorlage auf der GitHub Website bereitzustellen. Die Vorlage stellt eine vom NVIDIA GPU-Service verwaltete Flotte (A10G oder L4) und eine Warteschlange mit einer Conda-Warteschlangenumgebung bereit, die dieses Paket unverändert verwendet.

So konfigurieren Sie die CLI für Ihre Farm
  • Wenn der CloudFormation Stack erreicht istCREATE_COMPLETE, konfigurieren Sie die Deadline Cloud-CLI so, dass sie die neue Farm verwendet:

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

Wenn Sie bereits eine Farm haben, wird die folgende Konfiguration empfohlen:

  • Eine SMF-Flotte mit NVIDIA-GPUs, mindestens 32 GB RAM und mindestens 4 vCPUs.

  • Eine Warteschlange mit einer Conda-Queue-Umgebung, die Lese- und Job-Parameter liest. CondaPackages CondaChannels

Reichen Sie den Evaluierungsauftrag ein

Um den Bewertungsauftrag einzureichen
  1. Klonen Sie das Beispiel-Repository und navigieren Sie zum Job-Bundle-Verzeichnis:

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles/vllm_lm_eval_leaderboard
  2. Reichen Sie den Job mit den Standardmodellen und Benchmarks ein:

    deadline bundle submit . \ --parameter MaxModelLen=2048

    In der Standardmodellliste werden drei kleine, ungatierte Modelle bewertet:Qwen/Qwen2.5-0.5B, undQwen/Qwen2.5-1.5B. EleutherAI/pythia-1.4b Die Standard-Benchmarks basieren auf gesundem Menschenverstand:. hellaswag,arc_easy,arc_challenge,winogrande

  3. Überwachen Sie den Jobstatus in der Deadline Cloud-Konsole oder mithilfe des Befehls. deadline job get

Änderung der Modellliste

Modelle werden als STRING-Parameterraum im folgenden EvalModels Schritt definierttemplate.yaml:

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

Bearbeiten Sie die range Liste, um Modelle hinzuzufügen oder zu entfernen. Jeder Eintrag wird zu einer Aufgabe, die im Deadline Cloud-Monitor sichtbar ist. Modell-IDs müssen von vLLM unterstützt werden. Weitere Informationen finden Sie in der Liste der unterstützten Modelle auf der vLLM-Website.

Auswahl von Benchmarks

Der Benchmarks Jobparameter ist eine durch Kommas getrennte Liste von lm-evaluation-harness-Aufgabennamen. Überschreiben Sie die Standard-Benchmarks bei der Übermittlung:

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

Alle Benchmarks in der Liste werden sequentiell auf dem vLLM-Server jedes Modells ausgeführt. Halten Sie den MaxModelLen Wert kleiner als oder gleich dem Kontextfenster des kleinsten Modells. Eine vollständige Liste der verfügbaren Benchmarks finden Sie unter den Aufgaben von lm-evaluation-harness auf der Website. GitHub

Laden Sie die Ergebnisse herunter und überprüfen Sie sie

Um die Ergebnisse der Bestenliste herunterzuladen
  1. Laden Sie nach Abschluss des Jobs die Ausgabe herunter:

    deadline job download-output --job-id job-id
  2. Sehen Sie sich die Bestenliste an:

    cat leaderboard_results/leaderboard.md

Das folgende Beispiel zeigt eine typische Ausgabe der Bestenliste:

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

Bereinigen

Um laufende Gebühren zu vermeiden, bereinigen Sie die Ressourcen, die Sie für dieses Tutorial erstellt haben:

So bereinigen Sie die Ressourcen für das Tutorial
  1. Wenn Sie die CloudFormation CUDA-Farmvorlage bereitgestellt haben, löschen Sie den CloudFormation Stack aus der CloudFormation Konsole.

  2. Wenn Sie eine vorhandene Farm verwendet haben, beenden oder löschen Sie die GPU-Flotte, die Sie für dieses Tutorial verwendet haben.

  3. Entfernen Sie lokale Ausgabedateien, wenn sie nicht mehr benötigt werden:

    rm -rf leaderboard_results/

Fehlerbehebung

Die Flotte skaliert die Anzahl der Mitarbeiter nicht

Die häufigste Ursache ist ein Deadline Cloud-Dienstkontingent. Öffnen Sie die Service Quota-Konsole unter AWS Deadline Cloud und vergewissern Sie sich, dass Sie ausreichend Platz für OnDemand G-Instance-GPUs pro Region und OnDemand vCPUs pro Region haben. Eine Erhöhung der Kontingente kann Minuten bis ein paar Arbeitstage dauern.

Die folgenden Ressourcen bieten zusätzliche Informationen auf der GitHub Website und der vLLM-Website: