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.
Generieren Sie Bilder stapelweise mit einem Diffusionsmodell
In diesem Tutorial erfahren Sie, wie Sie mithilfe eines Diffusionsmodells eine Batch-Bildgenerierung mit hohem Durchsatz in einer JSONL-Datei mit Eingabeaufforderungen ausführen. Sie senden das Text-zu-Bild-Batch-Auftragspaket an eine GPU-Flotte GitHub
Jede ausgewählte Zeile in der JSONL wird zu einer Generierungsaufgabe. Der Scheduler verteilt die Aufgaben auf die verfügbaren GPU-Worker, und jeder Worker lädt die Diffusionspipeline einmal und verwendet sie für jede ausgeführte Aufgabe erneut. Wenn eine Zeile ein caption Feld oder ein aus der Ausgabe des vLLM-Batch-Inferenz-Bundles verkettetes generated_text Feld enthält, fügt der Job den Text über dem generierten Bild zu einer scharfen Typografie zusammen. Zeilen ohne Bildunterschrift erzeugen reine Bilder, sodass das Paket genauso gut funktioniert wie ein einfacher Text-Bild-Batch-Generator.
Geschätzte Zeit: 30—60 Minuten, einschließlich der Einrichtung der Farm. Beim ersten Durchlauf werden außerdem etwa 13 GB an Modellgewichten pro Arbeiter heruntergeladen.
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.
-
Reichen Sie den Job zur Bildgenerierung ein.
-
Laden Sie die Galerie herunter und durchsuchen Sie sie.
-
Bereinigen Sie die Ressourcen.
Richten Sie Ihre Farm ein
Sie benötigen 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. FLUX.2 Klein 4B passt dank CPU-Entlastung problemlos auf GPUs mit 16 GB und mehr (z. B. L4 oder A10G).
Der schnellste Weg, eine kompatible Farm zu erhalten, besteht darin, die CUDA-Farmvorlage bereitzustellen. Dabei handelt es sich um dieselbe CloudFormation Vorlage GitHubCREATE_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
Anmerkung
Das Paket beinhaltet eine InstallDeps Job-Umgebung, die installiert wird, PyTorch und die neueste Diffusor-Bibliothek von Git zusätzlich zur Conda-Umgebung der Warteschlange bei jeder Sitzung. Außerdem werden vier kleine Google-Fonts für das Caption-Overlay heruntergeladen. Rechnen Sie mit einer zusätzlichen Einrichtungszeit von 30—90 Sekunden pro Mitarbeiter bei der ersten Verwendung sowie dem Herunterladen des Modells bei der ersten Ausführung. Wenn Ihre Flotte in einer VPC mit eingeschränktem Netzwerk läuft, müssen Sie die Abhängigkeiten entweder vorab in einem benutzerdefinierten AMI oder Conda-Channel speichern oder den Ausgang öffnen.
Bereiten Sie die Eingabedatei vor
Die Eingabe ist eine JSONL-Datei mit einem JSON-Objekt pro Zeile. Jede Zeile muss entweder ein prompt Feld oder ein generated_text Feld enthalten, das aus der Ausgabe des vLLM-Batch-Inferenzpakets verkettet ist:
{"prompt": "A golden hour photo of a sourdough loaf on a linen-covered table", "id": "loaf_01"} {"prompt": "A bakery storefront at sunrise, photorealistic", "caption": "OPEN AT DAWN", "id": "shop_01"} {"prompt": "Write a slogan for sourdough", "id": "001", "generated_text": "Real grain. Real fermentation. Real you.", "style": "rustic flat lay, warm tones"}
Zu den optionalen zeilenspezifischen Feldern gehören caption für Overlay-Text, style um das Stilsuffix auf Jobebene außer Kraft zu setzen, und, und. font width height steps seed Das Paket enthält dasselbe Prompt-Builder-Tool ohne Abhängigkeit wie das vLLM-Batch-Paket. Öffnen Sie tools/prompt_builder.html es, um Eingabedateien zu erstellen, eine JSONL per Drag-and-Drop zu importieren und Überschreibungen pro Prompt hinzuzufügen.
Bei der mitgelieferten sample_prompts.jsonl Datei handelt es sich um eine Demoversion einer Bäckereikampagne mit 10 Bildern: Bäckerei-Slogans, die mit dem Batch Inference Bundle von vLLM generiert wurden, mit überlagerten Style-Hinweisen für eindrucksvolle Grafiken.
Reichen Sie den Auftrag zur Bildgenerierung ein
Um ihn mit dem GUI-Absender einzureichen
-
Öffnen Sie im
text_to_image_batchBundle-Verzeichnis den Submitter:deadline bundle gui-submit . -
Wählen Sie Ihre JSONL-Eingabedatei aus. Probieren Sie
sample_prompts.jsonldie Demo der Bäckerei-Kampagne aus. -
Stellen Sie den Bereich der Eingabeaufforderungen ein (z. B.
1-10für die ersten 10 Eingabeaufforderungen) und wählen Sie ein Ausgabeverzeichnis. -
Passen Sie optional Breite StyleSuffix und Höhe an. Belassen Sie Overlay Caption bei,
truewenn Ihre JSONL Bildunterschriften oder Slogans enthält, oder stellen Sie sie auf für die reine Bildgenerierung ein.false -
Wählen Sie Absenden aus.
Senden Sie es alternativ mit der CLI:
deadline bundle submit . \ --parameter InputFile=$PWD/sample_prompts.jsonl \ --parameter Prompts=1-10 \ --parameter OutputDir=$PWD/output
Die ChunkSize Parameter Prompts und funktionieren genauso wie im vLLM-Batch-Inferenzpaket, wobei die Deadline Cloud-Task-Chunking-Funktion verwendet wird. Weitere Informationen finden Sie unter Aufgabenteilung für Jobvorlagen. Der ModelName Parameter akzeptiert alles, was die Diffusor-Bibliothek laden kann, einschließlich SDXL Turbo und Stable Diffusion 3.5. Die vollständige Parameterliste und die Einstellungen für andere Modelle finden Sie in der Parametertabelle in der Beispiel-README-Datei unter. GitHub
Laden Sie die Galerie herunter und durchsuchen Sie sie
Um die Ergebnisse herunterzuladen und zu durchsuchen
-
Führen Sie nach Abschluss des Jobs den Download-Befehl in demselben Verzeichnis aus, das Sie beim Senden verwendet haben, sodass der
OutputDirPfad an derselben Stelle angezeigt wird:deadline job download-output --job-idjob-id -
Jedes Artefakt landet in einem
output/Unterverzeichnis des Pfads, den Sie als festgelegt haben.OutputDirDie rohen PNGs sind daoutput/images/, die kombinierten Metadaten sind drinoutput/output.jsonlundoutput/gallery.htmles handelt sich um einen statischen Galerie-Viewer mit Suche und CSV-Export. -
Wenn die Bilder der Galerie nicht geladen werden, wenn Sie sie
gallery.htmldirekt öffnen, handelt es sich um eine Browser-Sicherheitsbeschränkung fürfile://URLs. Bereite stattdessen das Verzeichnis an:cdOutputDir/output && python3 -m http.server 8080 # open http://localhost:8080/gallery.html
Kette aus der vLLM-Batch-Inferenz
Der klassische Flow kombiniert dieses Paket mit dem vLLM-Batch-Inferenzpaket:
-
Generieren Sie Text mit dem vLLM-Batch-Inferenzpaket: Slogans, Bildunterschriften, Szenenbeschreibungen oder Alt-Text. Die Ausgabe erfolgt mit einem Feld pro Zeile.
output.jsonlgenerated_textSiehe Führen Sie eine Batch-LLM-Inferenz mit vLLM aus. -
(Optional) Öffnen Sie Beschriftungen
tools/prompt_builder.html, Stile oder visuelle Beschreibungen für jede Aufforderungoutput.jsonl, fügen Sie sie hinzu, fügen Sie sie hinzu oder bearbeiten Sie sie und exportieren Sie sie erneut. -
Reichen Sie dieses Paket mit der JSONL ein als.
InputFileDas aufgabenbezogene Skript wird automatischgenerated_textals Overlay-Überschrift verwendet.
Wenn eine Zeile sowohl einen generated_text Slogan als auch das ursprüngliche LLM enthältprompt, versucht das Task-Skript, den Betreff aus der Anfrage herauszuziehen und ihn als visuelle Aufforderung für das Diffusionsmodell zu verwenden, da Slogans oft zu abstrakt sind, um dem Modell ein konkretes Thema zu geben. Der Worker protokolliert die Quelle der visuellen Eingabeaufforderung pro Aufgabe, sodass Sie Fehlextraktionen erkennen können.
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: