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
Dieses Tutorial führt Sie durch die Ausführung einer LLM-Inferenz (Large Language Model) mit hohem Durchsatz für eine JSONL-Datei mit Eingabeaufforderungen, wobei die vLLM-Inferenzengine aktiviert ist. GitHub
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 Aufgabenteilung für Jobvorlagen.
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
Gehen Sie folgendermaßen vor, um dieses Tutorial abzuschließen:
-
Richten Sie Ihre Farm ein.
-
Bereiten Sie die Eingabedatei vor.
-
Senden Sie den Batch-Inferenz-Job.
-
Laden Sie die Ergebnisse herunter und sehen Sie sie sich an.
-
Bereinigen Sie die Ressourcen.
Richten Sie Ihre Farm ein
Der schnellste Weg, eine kompatible Farm zu erhalten, besteht darin, die CloudFormation CUDA-Farmvorlage auf GitHub CREATE_COMPLETE, konfigurieren Sie die Deadline Cloud-CLI so, dass sie die neue Farm verwendet:
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-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
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 Eingabeaufforderung festzulegen und als JSONL zu exportieren.
Senden Sie den Batch-Inferenz-Job
Zum Absenden mit dem GUI-Absender
-
Öffnen Sie im
vllm_batchBundle-Verzeichnis den Submitter:deadline bundle gui-submit . -
Wählen Sie Ihre JSONL-Eingabedatei aus.
-
Legen Sie den Bereich der Eingabeaufforderung fest (z. B.
1-10für die ersten 10 Eingabeaufforderungen in der Datei). -
Legen Sie die Chunk-Größe fest, d. h. die Anzahl der Eingabeaufforderungen, die jede Aufgabe verarbeitet (Standardeinstellung).
5 -
Wählen Sie ein Ausgabeverzeichnis aus und klicken Sie dann auf Senden.
Senden Sie alternativ mit der CLI:
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 unter. GitHub
Laden Sie die Ergebnisse herunter und sehen Sie sich sie an
Um die Ergebnisse herunterzuladen und anzusehen
-
Laden Sie nach Abschluss des Jobs die Ausgabe herunter:
deadline job download-output --job-idjob-id -
Alle Ausgaben landen in einem
output/Unterordner innerhalb des von Ihnen ausgewählten Verzeichnisses. Öffnen Sieresults/output/results.htmlin Ihrem Browser den visuellen Ergebnisbetrachter, oder lesen Sie,results/output/output.jsonlum 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
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
Bereinigen
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
-
Wenn Sie die CloudFormation CUDA-Farmvorlage bereitgestellt haben, löschen Sie den CloudFormation Stack aus der CloudFormation Konsole.
-
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.
-
Entfernen Sie lokale Ausgabedateien, wenn Sie sie nicht mehr benötigen.
Zugehörige Ressourcen
Die folgenden Ressourcen bieten zusätzliche Informationen: