Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Genere imágenes por lotes con un modelo de difusión
En este tutorial se explica cómo generar imágenes por lotes de alto rendimiento en un archivo JSONL de indicaciones mediante un modelo de difusión. El paquete de trabajo por lotes de conversión de texto a imágenes se envía a una flota de GPU de la granja de GitHub
Cada línea seleccionada en el JSONL se convierte en una tarea de generación. El programador distribuye las tareas entre los trabajadores de la GPU disponibles, y cada uno de ellos carga la canalización de difusión una vez y la reutiliza para cada tarea que ejecuta. Cuando una línea contiene un campo o un caption generated_text campo encadenado a partir del resultado del paquete de inferencia por lotes de vLLM, el trabajo compone el texto sobre la imagen generada en forma de tipografía nítida. Las líneas sin subtítulos producen imágenes puras, por lo que el paquete funciona igual de bien que un generador de lotes de texto a imagen sin formato.
Tiempo estimado: 30 a 60 minutos, incluida la configuración de la granja. La primera ejecución también descarga alrededor de 13 GB de pesos de modelo por trabajador.
La ejecución de este tutorial implica gastos para las instancias de trabajo de la GPU que procesan el trabajo.
Descripción general de
Para completar este tutorial, sigue estos pasos:
-
Configura tu granja.
-
Prepara el archivo de entrada.
-
Envíe el trabajo de generación de imágenes.
-
Descarga y navega por la galería.
-
Eliminación de recursos.
Configura tu granja
Necesitas una flota gestionada por servicios con GPU NVIDIA y al menos 32 GB de RAM, y una cola con un entorno de colas integrado que lea y ejecute los parámetros. CondaPackages CondaChannels FLUX.2 El Klein 4B se adapta cómodamente a GPU de 16 GB o más (por ejemplo, L4 o A10G) gracias a la descarga de CPU.
La forma más rápida de conseguir una granja compatible es implementar la plantilla de granja CUDA GitHubCREATE_COMPLETE, configure la CLI de Deadline Cloud para usar la nueva granja:
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
nota
El paquete incluye un entorno de InstallDeps trabajo en el que se instala PyTorch y se instala la biblioteca de difusores más reciente de git además del entorno conda de Queue en cada sesión, además de descargar cuatro pequeñas fuentes de Google para superponer los subtítulos. Espera entre 30 y 90 segundos de tiempo adicional de configuración por trabajador la primera vez que lo utilices, más la descarga del modelo la primera vez que lo ejecutes. Si su flota se ejecuta en una VPC con acceso restringido a la red, debe preagrupar las dependencias en un canal AMI o conda personalizado, o bien abrir la salida.
Prepara el archivo de entrada
La entrada es un archivo JSONL con un objeto JSON por línea. Cada línea debe tener un prompt campo o un generated_text campo encadenado a partir del resultado del paquete de inferencia por lotes de 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"}
Los campos opcionales por línea incluyen, caption para superponer texto, style para anular el sufijo de estilo del nivel de trabajo, y,, y. font width height steps seed El paquete incluye la misma herramienta de creación de avisos sin dependencia que el paquete por lotes de vLLM. tools/prompt_builder.htmlÁbrelo para crear archivos de entrada, importar un JSONL arrastrándolo y soltándolo y añadiendo anulaciones por mensaje.
El sample_prompts.jsonl archivo incluido es una demostración de una campaña de panadería de 10 imágenes: lemas de panadería generados por el paquete de inferencia por lotes de vLLM, con sugerencias de estilo superpuestas para crear imágenes evocadoras.
Envía el trabajo de generación de imágenes
Para enviar con el remitente de la GUI
-
Desde el directorio del
text_to_image_batchpaquete, abre el remitente:deadline bundle gui-submit . -
Elige tu archivo JSONL de entrada. Prueba la demo
sample_prompts.jsonlde la campaña de panadería. -
Establezca el rango de mensajes (por ejemplo,
1-10para los 10 primeros mensajes) y seleccione un directorio de salida. -
Si lo desea StyleSuffix, ajuste la anchura y la altura. Deja el subtítulo superpuesto como tal
truesi tu JSONL tiene subtítulos o lemas, o configúralo para que solo genere imágenes.false -
Seleccione Enviar.
Si lo prefiere, envíelo con la CLI:
deadline bundle submit . \ --parameter InputFile=$PWD/sample_prompts.jsonl \ --parameter Prompts=1-10 \ --parameter OutputDir=$PWD/output
ChunkSizeLos parámetros Prompts y funcionan de la misma manera que en el paquete de inferencia por lotes de vLLM, mediante la función de fragmentación de tareas de Deadline Cloud. Para obtener más información, consulte Fragmentación de tareas para plantillas de trabajo. El ModelName parámetro acepta todo lo que pueda cargar la biblioteca de difusores, incluidos SDXL Turbo y Stable Diffusion 3.5. Para ver la lista completa de parámetros y los ajustes de otros modelos, consulta la tabla de parámetros en el archivo README de ejemplo, en. GitHub
Descarga y navega por la galería
Para descargar y explorar los resultados
-
Una vez finalizado el trabajo, ejecuta el comando de descarga desde el mismo directorio que utilizaste en el momento del envío para que la
OutputDirruta termine en el mismo lugar:deadline job download-output --job-idjob-id -
Cada artefacto cae en un
output/subdirectorio de la ruta que hayas establecido.OutputDirLos archivos PNG sin procesar están incluidosoutput/images/, los metadatos combinados están incluidos youtput/gallery.htmles un visor de galería estático con búsqueda y exportación a CSV.output/output.jsonl -
Si las imágenes de la galería no se cargan cuando las abres
gallery.htmldirectamente, se trata de una restricción de seguridad del navegador para lasfile://URL. En su lugar, publica el directorio:cdOutputDir/output && python3 -m http.server 8080 # open http://localhost:8080/gallery.html
Cadena a partir de la inferencia por lotes de VLLM
El flujo clásico empareja este paquete con el paquete de inferencia por lotes de vLLM:
-
Genere texto con el paquete de inferencia por lotes de vLLM: lemas, subtítulos, descripciones de escenas o texto alternativo. El resultado es con un campo por línea.
output.jsonlgenerated_textConsulte Ejecute la inferencia de LLM por lotes con vLLM. -
(Opcional) Abra
tools/prompt_builder.html, coloqueoutput.jsonl, añada o edite subtítulos, estilos o descripciones visuales por mensaje y vuelva a exportar. -
Envíe este paquete con el JSONL como.
InputFileEl script por tarea se utiliza automáticamentegenerated_textcomo subtítulo superpuesto.
Cuando una línea contiene tanto un generated_text eslogan como el LLM originalprompt, el script de la tarea intenta sacar el asunto de la solicitud y usarlo como guía visual para el modelo de difusión, ya que los lemas suelen ser demasiado abstractos para dar al modelo un tema concreto. El trabajador registra el origen de las indicaciones visuales por tarea para que puedas detectar las extracciones incorrectas.
Limpieza
Para evitar cargos continuos, limpia los recursos que creaste para este tutorial:
Para limpiar los recursos del tutorial
-
Si implementó la CloudFormation plantilla de granja de CUDA, elimine la CloudFormation pila de la CloudFormation consola.
-
Si usaste una granja existente y creaste una flota de GPU específicamente para este tutorial, detiene o elimina esa flota. Si usaste una flota compartida preexistente, déjala en su lugar.
-
Elimine los archivos de salida locales si ya no los necesita.
Recursos relacionados
Los siguientes recursos proporcionan información adicional: