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 Evaluierung 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 zwischen den 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 unter verfügbar. GitHub

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

Geschätzte Dauer: 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 dem lm-evaluation-harness von EleutherAI gegen den lokalen Endpunkt aus und stoppt dann vLLM. Modelle werden direkt von Hugging Face Hub geladen, sodass keine Jobanhänge erforderlich sind.

Gehen Sie wie folgt 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 Dienst verwalteten NVIDIA-GPU-Flotte (A10G oder L4, mindestens 32 GB RAM, mindestens 4 vCPUs).

  • Eine Warteschlange, an die eine Conda-Warteschlangenumgebung angehängt ist, in der Jobparameter gelesen und ausgeführt werden. CondaPackages CondaChannels

  • Die Deadline Cloud-CLI ist auf Ihrer Workstation installiert.

  • Ausreichendes vCPU-Servicekontingent für Amazon Elastic Compute Cloud (Amazon EC2) für GPU-Instances. Die standardmäßige Ausführung mit 3 Modellen g5.xlarge (jeweils 4 vCPUs) erfordert mindestens 12 vCPUs unter laufenden On-Demand G- und VT-Instances.

Anmerkung

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

Richten Sie Ihre Farm ein

Der schnellste Weg, eine kompatible Farm zu erhalten, ist die Bereitstellung der CloudFormation CUDA-Farmvorlage. Die Vorlage stellt eine vom Dienst verwaltete NVIDIA-GPU-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-Warteschlangenumgebung, in der Jobparameter gelesen und gelesen werden. CondaPackages CondaChannels

Reichen Sie den Evaluierungsjob ein

Um den Bewertungsjob 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 Modelle ohne Staffelung 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 im folgenden EvalModels Schritt als STRING-Parameterraum 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 (siehe Liste der von VllM unterstützten Modelle).

Auswahl von Benchmarks

Der Benchmarks Job-Parameter ist eine durch Kommas getrennte Liste von lm-evaluation-harness-Aufgabennamen. Überschreiben Sie die Standard-Benchmarks beim Absenden:

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

Alle Benchmarks in der Liste werden sequentiell auf den vLLM-Servern der einzelnen Modelle ausgeführt. Verwenden Sie MaxModelLen weniger als oder gleich dem Kontextfenster des kleinsten Modells. Eine vollständige Liste der verfügbaren Benchmarks finden Sie in den Aufgaben von lm-evaluation-harness unter. 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 des Tutorials
  1. Wenn Sie die CloudFormation CUDA-Farmvorlage bereitgestellt haben, löschen Sie den CloudFormation Stack aus der CloudFormation Konsole.

  2. Wenn Sie eine bestehende 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

Fleet erweitert die Anzahl der Mitarbeiter nicht

Die häufigste Ursache ist ein Amazon EC2 vCPU-Servicekontingent. Öffnen Sie die Service Quotas Quotas-Konsole unter EC2 und vergewissern Sie sich, dass Sie genügend Spielraum für Running On-Demand G- und VT-Instances haben. Eine Erhöhung des Kontingents kann Minuten bis zu einigen Geschäftstagen dauern.

Die folgenden Ressourcen bieten zusätzliche Informationen: