

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
<a name="tutorial-vllm-leaderboard"></a>

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.](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard) GitHub

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

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


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

## -Übersicht
<a name="tutorial-vllm-overview"></a>

Jede Aufgabe in diesem `EvalModels` Schritt startet einen lokalen [vLLM-Server](https://github.com/vllm-project/vllm), führt jeden Benchmark mit dem [lm-evaluation-harness von EleutherAI gegen den lokalen Endpunkt aus und stoppt dann vLLM](https://github.com/EleutherAI/lm-evaluation-harness). 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.

1. Richten Sie Ihre Farm ein.

1. Reichen Sie den Bewertungsauftrag ein.

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

1. Bereinigen Sie die Ressourcen.

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

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](https://github.com/aws-deadline/deadline-cloud) 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
<a name="tutorial-vllm-setup-farm"></a>

Der schnellste Weg, eine kompatible Farm zu erhalten, ist die Bereitstellung der [CloudFormation CUDA-Farmvorlage](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm). 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 ist`CREATE_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
<a name="tutorial-vllm-submit"></a>

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

1. 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`, und`Qwen/Qwen2.5-1.5B`. `EleutherAI/pythia-1.4b` Die Standard-Benchmarks basieren auf gesundem Menschenverstand:. `hellaswag,arc_easy,arc_challenge,winogrande`

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

### Änderung der Modellliste
<a name="tutorial-vllm-custom-models"></a>

Modelle werden im folgenden `EvalModels` Schritt als STRING-Parameterraum definiert`template.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](https://docs.vllm.ai/en/latest/models/supported_models.html) Modelle).

### Auswahl von Benchmarks
<a name="tutorial-vllm-custom-benchmarks"></a>

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](https://github.com/EleutherAI/lm-evaluation-harness/tree/main/lm_eval/tasks) unter. GitHub

## Laden Sie die Ergebnisse herunter und überprüfen Sie sie
<a name="tutorial-vllm-results"></a>

**Um die Ergebnisse der Bestenliste herunterzuladen**

1. Laden Sie nach Abschluss des Jobs die Ausgabe herunter:

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

1. 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
<a name="tutorial-vllm-cleanup"></a>

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.

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

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

   ```
   rm -rf leaderboard_results/
   ```

## Fehlerbehebung
<a name="tutorial-vllm-troubleshooting"></a>

**Fleet erweitert die Anzahl der Mitarbeiter nicht**

Die häufigste Ursache ist ein Amazon EC2 vCPU-Servicekontingent. Öffnen Sie die [Service Quotas Quotas-Konsole](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas) 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.

## Zugehörige Ressourcen
<a name="tutorial-vllm-related"></a>

Die folgenden Ressourcen bieten zusätzliche Informationen:
+ [Beispielquellcode auf GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_lm_eval_leaderboard)
+ [vLLM ein GitHub](https://github.com/vllm-project/vllm)
+ [lm-evaluation-harness ein GitHub](https://github.com/EleutherAI/lm-evaluation-harness)
+ [CUDA-Farm-Vorlage CloudFormation](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm)
+ [Von vLLM unterstützte Modelle](https://docs.vllm.ai/en/latest/models/supported_models.html)