

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
<a name="tutorial-text-to-image-batch"></a>

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 ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch) Deadline Cloud. El modelo predeterminado es [ FLUX.2 Klein 4B en Hugging Face](https://huggingface.co/black-forest-labs/FLUX.2-klein-4B), que tiene licencia para Apache 2.0, no está cerrado, se divide en 4 pasos y necesita aproximadamente 13 GB de RAM de vídeo (VRAM).

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
<a name="tutorial-t2i-overview"></a>

Para completar este tutorial, sigue estos pasos:

1. Configura tu granja.

1. Prepara el archivo de entrada.

1. Envíe el trabajo de generación de imágenes.

1. Descarga y navega por la galería.

1. Eliminación de recursos.

## Configura tu granja
<a name="tutorial-t2i-setup"></a>

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 GitHub](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/cloudformation/farm_templates/cuda_farm), que es la misma CloudFormation plantilla que utiliza el paquete de inferencia por lotes de vLLM. Cuando llegue la pila`CREATE_COMPLETE`, configure la CLI de Deadline Cloud para usar la nueva granja:

```
deadline config set defaults.farm_id {{FarmId-from-stack-outputs}}
deadline config set defaults.queue_id {{CUDAQueueId-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
<a name="tutorial-t2i-input"></a>

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
<a name="tutorial-t2i-submit"></a>

**Para enviar con el remitente de la GUI**

1. Desde el directorio del `text_to_image_batch` paquete, abre el remitente:

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

1. Elige tu archivo JSONL de entrada. Prueba la demo `sample_prompts.jsonl` de la campaña de panadería.

1. Establezca ** el rango de mensajes ** (por ejemplo, `1-10` para los 10 primeros mensajes) y seleccione un directorio de salida.

1. Si lo desea ** StyleSuffix**, ajuste la ** anchura y ** ** la altura. ** Deja el subtítulo ** superpuesto ** como tal `true` si tu JSONL tiene subtítulos o lemas, o configúralo para que solo genere imágenes. `false`

1. 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
```

`ChunkSize`Los 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](build-job-bundle-chunking.md). 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 ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch#parameters)

## Descarga y navega por la galería
<a name="tutorial-t2i-results"></a>

**Para descargar y explorar los resultados**

1. 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 `OutputDir` ruta termine en el mismo lugar:

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

1. Cada artefacto cae en un `output/` subdirectorio de la ruta que hayas establecido. `OutputDir` Los archivos PNG sin procesar están incluidos`output/images/`, los metadatos combinados están incluidos y `output/gallery.html` es un visor de galería estático con búsqueda y exportación a CSV. `output/output.jsonl`

1. Si las imágenes de la galería no se cargan cuando las abres `gallery.html` directamente, se trata de una restricción de seguridad del navegador para las `file://` URL. En su lugar, publica el directorio:

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

## Cadena a partir de la inferencia por lotes de VLLM
<a name="tutorial-t2i-chaining"></a>

El flujo clásico empareja este paquete con el paquete de inferencia por lotes de vLLM:

1. 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.jsonl` `generated_text` Consulte [Ejecute la inferencia de LLM por lotes con vLLM](tutorial-vllm-batch.md).

1. (Opcional) Abra`tools/prompt_builder.html`, coloque`output.jsonl`, añada o edite subtítulos, estilos o descripciones visuales por mensaje y vuelva a exportar.

1. Envíe este paquete con el JSONL como. `InputFile` El script por tarea se utiliza automáticamente `generated_text` como subtítulo superpuesto.

Cuando una línea contiene tanto un `generated_text` eslogan como el LLM original`prompt`, 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
<a name="tutorial-t2i-cleanup"></a>

Para evitar cargos continuos, limpia los recursos que creaste para este tutorial:

**Para limpiar los recursos del tutorial**

1. Si implementó la CloudFormation plantilla de granja de CUDA, elimine la CloudFormation pila de la CloudFormation consola.

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

1. Elimine los archivos de salida locales si ya no los necesita.

## Recursos relacionados
<a name="tutorial-t2i-related"></a>

Los siguientes recursos proporcionan información adicional:
+ [Ejemplo de código fuente en GitHub ](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/text_to_image_batch)
+ [Ejecute la inferencia de LLM por lotes con vLLM](tutorial-vllm-batch.md)
+ [Fragmentación de tareas para plantillas de trabajo](build-job-bundle-chunking.md)
+ [FLUX.2 Perfeccionamiento y generación de imágenes de Klein LoRa](flux2-klein-lora.md)
+ [Documentación sobre los difusores Hugging Face ](https://huggingface.co/docs/diffusers)