

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.

# Führen Sie eine Batch-LLM-Inferenz mit vLLM aus
<a name="tutorial-vllm-batch"></a>

Dieses Tutorial führt Sie durch die Ausführung einer LLM-Inferenz (Large Language Model) mit hohem Durchsatz auf einer JSONL-Datei mit Eingabeaufforderungen mithilfe der vLLM-Inferenzengine auf der Website. [https://github.com/vllm-project/vllm](https://github.com/vllm-project/vllm) GitHub Sie reichen das [ vLLM-Batch-Inferenz-Auftragspaket ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_batch) auf der GitHub Website mit einer Datei ein, in der jede Zeile eine Aufforderung ist, wählen ein Modell aus und der Job verteilt sich auf eine GPU-Flotte. Jede Aufforderung erhält eine LLM-Antwort, und in einem Aggregatschritt wird alles in einer JSONL-Datei sowie einem eigenständigen HTML-Viewer zusammengefasst, den Sie in jedem Browser öffnen können.

Das Paket bewältigt peinlich parallele Offline-Workloads: Inhaltsgenerierung, Bewertungsdatensätze, Übersetzung, Extraktion und Klassifizierung. Es passt überall dort, wo Sie ein Modell benötigen, um viele unabhängige Eingabeaufforderungen ohne einen Live-API-Server zu beantworten. Unter der Haube verwendet es die Deadline Cloud-Funktion zum Aufteilen von Aufgaben, um Prompts in Batch-Aufgaben zu gruppieren, sodass Sie mit einem einzigen Parameter Parallelität gegen den Terminaufwand wählen können. `ChunkSize` Weitere Informationen finden Sie unter [Aufschlüsselung von Aufgaben für Jobvorlagen](build-job-bundle-chunking.md).

Das Laden eines 7 B-parameter LLM dauert 30 oder mehr Sekunden. Die Bezahlung dieser Kosten pro Aufgabe würde also die Batch-Laufzeit dominieren. In Umgebungen mit dem Schritt „Jobbeschreibung öffnen“ wird dieses Problem gelöst: Der vLLM-Server startet, wenn ein Worker den Job annimmt, und bleibt bei jeder Aufgabe, die der Worker ausführt, geladen und wird dann mit der Sitzung beendet. Ein Batch mit 24 Eingabeaufforderungen auf einer Flotte von 4 Mitarbeitern zahlt sich für 4 Modellladungen statt 24 aus.

**Geschätzte Zeit: ** 30—60 Minuten, einschließlich der Einrichtung der Farm.

Bei der Ausführung dieses Tutorials fallen Gebühren für die GPU-Worker-Instances an, die den Job verarbeiten.

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

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

1. Richten Sie Ihre Farm ein.

1. Bereiten Sie die Eingabedatei vor.

1. Reichen Sie den Batch-Inferenz-Job ein.

1. Laden Sie die Ergebnisse herunter und sehen Sie sie sich an.

1. Bereinigen Sie die Ressourcen.

## Richten Sie Ihre Farm ein
<a name="tutorial-vllm-batch-setup"></a>

Der schnellste Weg, eine kompatible Farm zu erhalten, besteht darin, die [CloudFormation CUDA-Farmvorlage ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm) auf der GitHub Website bereitzustellen. Wenn der 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 über eine Farm verfügen, benötigen Sie eine vom Service verwaltete Flotte mit NVIDIA-GPUs und mindestens 32 GB RAM sowie eine Warteschlange mit einer angeschlossenen Conda-Warteschlangenumgebung, die Lese `CondaPackages` - und `CondaChannels` Jobparameter liest.

## Bereiten Sie die Eingabedatei vor
<a name="tutorial-vllm-batch-input"></a>

Die Eingabe ist eine JSONL-Datei mit einem JSON-Objekt pro Zeile. Jede Zeile muss ein `prompt` Feld haben:

```
{"prompt": "What is photosynthesis?", "id": "001"}
{"prompt": "Write a haiku about clouds.", "id": "002"}
{"prompt": "Explain gravity to a 5 year old.", "id": "003", "max_tokens": 256, "temperature": 0.9}
```

Zu den optionalen Feldern `id` für die einzelnen Eingabeaufforderungen gehören `max_tokens` zur Nachverfolgung, zur Begrenzung der Antwortlänge und `temperature` zur Kontrolle der Zufälligkeit der Stichproben. Per-promptFelder überschreiben die Standardwerte auf Jobebene nur für diese Zeile, und alle zusätzlichen Felder werden unverändert in die Ausgabe übernommen.

Das Paket enthält ein HTML-Tool ohne Abhängigkeiten zum Erstellen von Eingabedateien. Öffnen Sie es `tools/prompt_builder.html` in Ihrem Browser, um Aufforderungen hinzuzufügen, Optionen pro Aufforderung festzulegen und als JSONL zu exportieren.

## Reichen Sie den Batch-Inferenz-Job ein
<a name="tutorial-vllm-batch-submit"></a>

**Zum Absenden mit dem GUI-Absender**

1. Öffnen Sie im `vllm_batch` Bundle-Verzeichnis den Submitter:

   ```
   deadline bundle gui-submit .
   ```

1. Wählen Sie Ihre JSONL-Eingabedatei aus.

1. Legen Sie den Bereich der ** Eingabeaufforderung fest ** (z. B. `1-10` für die ersten 10 Eingabeaufforderungen in der Datei).

1. Legen Sie die ** Chunk-Größe fest**, d. h. die Anzahl der Eingabeaufforderungen, die jede Aufgabe verarbeitet (Standardeinstellung). `5`

1. Wählen Sie ein Ausgabeverzeichnis aus und klicken Sie ** dann auf Senden. **

Sie können das Senden auch mit der CLI durchführen:

```
deadline bundle submit . \
  --parameter InputFile={{prompts.jsonl}} \
  --parameter Prompts=1-10 \
  --parameter ChunkSize=5 \
  --parameter OutputDir=$PWD/results
```

Der `ModelName` Parameter ist standardmäßig auf jede Hugging Face-Modell-ID voreingestellt `Qwen/Qwen2.5-7B-Instruct` und akzeptiert diese. Der `Prompts` Parameter akzeptiert die vollständige Ganzzahlbereichssyntax von Open Job Description, z. B. `2,5,8-9` für bestimmte Zeilen oder `4,7` um nur fehlgeschlagene Zeilen erneut auszuführen. Anstatt die Blockgröße festzulegen, können Sie sie auch von Deadline Cloud automatisch optimieren lassen: Stellen `TargetRuntimeSeconds` Sie ein, wie lange jeder Block dauern soll (standardmäßig 120 Sekunden), und der Scheduler vergrößert oder verkleinert die Chunk-Größe, damit zukünftige Aufgaben das Ziel erreichen. Die vollständige Parameterliste finden Sie in der Parametertabelle in der [ Beispiel-README-Datei auf der Website. ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_batch#parameters) GitHub 

## Laden Sie die Ergebnisse herunter und sehen Sie sich sie an
<a name="tutorial-vllm-batch-results"></a>

**Um die Ergebnisse herunterzuladen und anzusehen**

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

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

1. Alle Ausgaben landen in einem `output/` Unterordner innerhalb des von Ihnen ausgewählten Verzeichnisses. Öffnen Sie `results/output/results.html` in Ihrem Browser den visuellen Ergebnisbetrachter, oder lesen Sie, `results/output/output.jsonl` um die kombinierte Rohausgabe zu sehen.

Jede Ausgabezeile enthält die ursprüngliche Eingabeaufforderung und ihre Pass-Through-Felder sowie die `generated_text` Antwort, den Grund für die Fertigstellung und die Anzahl der Token:

```
{"prompt": "What is photosynthesis?", "id": "001", "generated_text": "Photosynthesis is...", "finish_reason": "stop", "prompt_tokens": 7, "completion_tokens": 42}
```

## Verketten Sie die Ausgabe mit der Generierung von Batch-Bildern
<a name="tutorial-vllm-batch-chaining"></a>

Die `output.jsonl` Datei ist eine vorgefertigte Eingabe für das Batch-Paket von Text zu Bild. Generieren Sie Text mit diesem Paket (Slogans, Bildunterschriften, Szenenbeschreibungen) und senden Sie dann die Ausgabedatei an das Bildgenerierungspaket, das automatisch jede Zeile `generated_text` als Überschrift verwendet, die über dem generierten Bild zusammengesetzt wird. Die vollständige Anleitung finden Sie unter. [Generieren Sie Bilder stapelweise mit einem Diffusionsmodell](tutorial-text-to-image-batch.md)

## Bereinigen
<a name="tutorial-vllm-batch-cleanup"></a>

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

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

1. Wenn Sie eine vorhandene Farm verwendet und speziell für dieses Tutorial eine GPU-Flotte erstellt haben, beenden oder löschen Sie diese Flotte. Wenn Sie eine bereits vorhandene gemeinsame Flotte verwendet haben, lassen Sie sie unverändert.

1. Entfernen Sie lokale Ausgabedateien, wenn Sie sie nicht mehr benötigen.

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

Die folgenden Ressourcen bieten zusätzliche Informationen auf der GitHub Website:
+ [Beispiel für einen Quellcode ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/vllm_batch)
+ [Generieren Sie Bilder stapelweise mit einem Diffusionsmodell](tutorial-text-to-image-batch.md)
+ [Aufschlüsselung von Aufgaben für Jobvorlagen](build-job-bundle-chunking.md)
+ [Benchmark-LLMs mit vLLM und lm-evaluation-harness](tutorial-vllm-leaderboard.md)
+ [Öffnen Sie die Umgebungsspezifikation für die Stellenbeschreibung ](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment)