View a markdown version of this page

Genera immagini in batch con un modello di diffusione - Deadline Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Genera immagini in batch con un modello di diffusione

Questo tutorial illustra come eseguire la generazione di immagini batch ad alto rendimento su un file JSONL di prompt utilizzando un modello di diffusione. Invii il pacchetto di lavori batch da testo a immagine a una flotta di GPU nella tua farm Deadline Cloud GitHub. Il modello predefinito è FLUX.2 Klein 4B su Hugging Face, con licenza Apache 2.0, non certificato, suddiviso in 4 passaggi e richiede circa 13 GB di RAM video (VRAM).

Ogni riga selezionata nel JSONL diventa un'attività di generazione. Lo scheduler distribuisce le attività tra i GPU worker disponibili e ogni lavoratore carica la pipeline di diffusione una volta e la riutilizza per ogni attività eseguita. Quando una riga contiene un campo o un caption generated_text campo concatenato dall'output del batch inference bundle vLLM, il lavoro compone il testo sull'immagine generata sotto forma di caratteri tipografici nitidi. Le righe senza didascalia producono immagini pure, quindi il pacchetto funziona altrettanto bene come un semplice generatore di batch da testo a immagine.

Tempo stimato: 30-60 minuti, inclusa la configurazione dell'azienda agricola. La prima esecuzione consente inoltre di scaricare circa 13 GB di peso del modello per lavoratore.

L'esecuzione di questo tutorial comporta l'addebito delle istanze di lavoro della GPU che elaborano il job.

Panoramica di

Per completare questo tutorial, segui questi passaggi:

  1. Allestisci la tua fattoria.

  2. Prepara il file di input.

  3. Invia il lavoro di generazione dell'immagine.

  4. Scarica e sfoglia la galleria.

  5. Eliminare le risorse.

Allestisci la tua fattoria

È necessaria una flotta gestita dai servizi con GPU NVIDIA e almeno 32 GB di RAM e una coda con un ambiente conda queue collegato per la lettura dei parametri e dei processi. CondaPackages CondaChannels FLUX.2 Klein 4B si adatta perfettamente a GPU da 16 GB o più grandi (ad esempio, L4 o A10G) grazie all'offload della CPU.

Il modo più veloce per ottenere una farm compatibile è implementare il modello di farm CUDA GitHub, lo stesso CloudFormation modello utilizzato dal pacchetto di inferenza batch vLLM. Una volta raggiunto lo stackCREATE_COMPLETE, configura la CLI di Deadline Cloud per utilizzare la nuova farm:

deadline config set defaults.farm_id FarmId-from-stack-outputs deadline config set defaults.queue_id CUDAQueueId-from-stack-outputs
Nota

Il pacchetto include un ambiente di InstallDeps lavoro che si installa PyTorch e la più recente libreria di diffusori di git in aggiunta all'ambiente conda della coda per ogni sessione, oltre al download di quattro piccoli Google Fonts per la sovrapposizione delle didascalie. Aspettatevi 30-90 secondi di tempo di configurazione aggiuntivo per lavoratore al primo utilizzo, oltre al download del modello alla prima esecuzione. Se la tua flotta funziona in un VPC con restrizioni di rete, devi pre-inserire le dipendenze in un canale AMI o conda personalizzato oppure aprire l'uscita.

Prepara il file di input

L'input è un file JSONL con un oggetto JSON per riga. Ogni riga deve avere un prompt campo o un generated_text campo concatenato dall'output del pacchetto di inferenza batch vLLM:

{"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"}

I campi opzionali per riga includono i campi caption per sovrapporre testo, per sovrascrivere il suffisso style di stile a livello di lavoro, e,, e. font width height steps seed Il pacchetto include lo stesso strumento di creazione di prompt a dipendenza zero del pacchetto batch vLLM. Apri tools/prompt_builder.html per creare file di input, importa un JSONL trascinandolo e aggiungi sostituzioni per prompt.

Il sample_prompts.jsonl file in bundle è una demo di 10 immagini per la campagna dedicata ai prodotti da forno: slogan sui prodotti da forno generati dal vLLM batch inference bundle, con suggerimenti di stile sovrapposti per immagini evocative.

Invia il lavoro di generazione delle immagini

Da inviare con il mittente della GUI
  1. Dalla directory del text_to_image_batch pacchetto, apri il mittente:

    deadline bundle gui-submit .
  2. Scegli il file JSONL di input. Prova sample_prompts.jsonl la demo della campagna dedicata ai prodotti da forno.

  3. Imposta il Prompt Range (ad esempio, 1-10 per i primi 10 prompt) e scegli una directory di output.

  4. Facoltativamente StyleSuffix, modifica Larghezza e Altezza. Lascia Overlay Caption su true se il tuo JSONL ha didascalie o slogan, oppure impostalo su per la pura generazione di immagini. false

  5. Seleziona Invia.

In alternativa, invia con la CLI:

deadline bundle submit . \ --parameter InputFile=$PWD/sample_prompts.jsonl \ --parameter Prompts=1-10 \ --parameter OutputDir=$PWD/output

I ChunkSize parametri Prompts e funzionano allo stesso modo del pacchetto di inferenza batch vLLM, utilizzando la funzionalità di suddivisione delle attività di Deadline Cloud. Per ulteriori informazioni, consulta Suddivisione delle attività per i modelli di lavoro. Il ModelName parametro accetta tutto ciò che la libreria dei diffusori può caricare, inclusi SDXL Turbo e Stable Diffusion 3.5. Per l'elenco completo dei parametri e le impostazioni per altri modelli, consultate la tabella dei parametri nell'esempio README on. GitHub

Scarica e sfoglia la galleria

Per scaricare e sfogliare i risultati
  1. Al termine del processo, esegui il comando di download dalla stessa directory utilizzata al momento dell'invio, in modo che il OutputDir percorso si risolva nella stessa posizione:

    deadline job download-output --job-id job-id
  2. Ogni artefatto atterra in una output/ sottodirectory del percorso che hai impostato. OutputDir I PNG non elaborati sono presentioutput/images/, i metadati combinati sono presenti ed output/gallery.html è un visualizzatore di gallerie statico con ricerca ed esportazione CSV. output/output.jsonl

  3. Se le immagini della galleria non vengono caricate quando le apri gallery.html direttamente, si tratta di una restrizione di sicurezza del browser sugli URL. file:// Servi invece la directory:

    cd OutputDir/output && python3 -m http.server 8080 # open http://localhost:8080/gallery.html

Catena da inferenza batch vLLM

Il flusso classico abbina questo pacchetto al pacchetto di inferenza batch vLLM:

  1. Genera testo con il pacchetto di inferenza batch vLLM: slogan, didascalie, descrizioni delle scene o testo alternativo. output.jsonlL'output generated_text è composto da un campo per riga. Per informazioni, consulta Esegui l'inferenza LLM in batch con vLLM.

  2. (Facoltativo) Apritools/prompt_builder.html, inseriscioutput.jsonl, aggiungi o modifica didascalie, stili o descrizioni visive per prompt ed esporta nuovamente.

  3. Invia questo pacchetto con il codice JSONL come. InputFile Lo script per attività viene utilizzato generated_text automaticamente come didascalia di sovrapposizione.

Quando una riga contiene sia generated_text uno slogan che l'LLM originaleprompt, lo script del task tenta di estrarre l'oggetto dalla richiesta e di utilizzarlo come suggerimento visivo per il modello di diffusione, perché gli slogan sono spesso troppo astratti per dare al modello un soggetto concreto. Il lavoratore registra la fonte del prompt visivo per attività in modo da poter individuare errori di estrazione.

Eliminazione

Per evitare addebiti continui, pulisci le risorse che hai creato per questo tutorial:

Per ripulire le risorse del tutorial
  1. Se hai distribuito il CloudFormation modello di farm CUDA, elimina lo CloudFormation stack dalla CloudFormation console.

  2. Se hai utilizzato una farm esistente e hai creato una flotta di GPU appositamente per questo tutorial, interrompi o elimina quella flotta. Se hai utilizzato una flotta condivisa preesistente, lasciala al suo posto.

  3. Rimuovi i file di output locali se non ti servono più.

Le seguenti risorse forniscono informazioni aggiuntive: