AI Toolkit LoRA Training Guides

Guía de entrenamiento LoRA FLUX.2 [dev] con Ostris AI Toolkit

Este artículo explica paso a paso cómo afinar FLUX.2 [dev] con LoRA usando Ostris AI Toolkit. Aprenderás qué hace único a FLUX.2, cómo su dual transformer y el text encoder afectan el rank LoRA y el uso de VRAM, y cómo diseñar datasets y configuraciones que funcionen desde GPUs de 24GB hasta H100/H200, tanto localmente como en la nube.

Train Diffusion Models with Ostris AI Toolkit

Desplázate horizontalmente para ver el formulario completo

Ostris AI ToolkitOstrisAI-Toolkit

New Training Job

Job

Model

Quantization

Target

Save

Training

Datasets

Dataset 1

Sample

Entrenar una LoRA en FLUX.2 [dev] es muy diferente a entrenar modelos SD antiguos. El Entrenamiento LoRA FLUX.2-dev requiere entender que FLUX.2 [dev] combina un enorme transformador de flujo rectificado con 32B parámetros, un codificador de texto Mistral de 24B y un autoencoder de alta calidad, manejando texto-a-imagen y edición de imágenes en un solo checkpoint. Esta guía abarca:

  • Qué hace especial a FLUX.2 [dev]
  • Cómo estas decisiones de diseño afectan el entrenamiento LoRA
  • Cómo configurar AI Toolkit para diferentes niveles de hardware
  • Cómo configurar datasets, triggers y parámetros para obtener el estilo / personaje / comportamiento de edición que deseas

Este artículo es parte de la serie de entrenamiento LoRA de AI Toolkit. Si eres nuevo en Ostris AI Toolkit, comienza con la visión general del entrenamiento LoRA de AI Toolkit antes de profundizar en cómo entrenar una LoRA para FLUX.2-dev.

Tabla de contenidos


1. Entendiendo FLUX.2 [dev] para entrenamiento LoRA

Antes de tocar los controles, ayuda entender qué estás afinando.

1.1 Arquitectura de alto nivel

De la tarjeta oficial del modelo FLUX.2-dev y el anuncio de Black Forest Labs:

  • Modelo base

    FLUX.2 [dev] es un transformador de flujo rectificado de 32B parámetros (un modelo de flujo latente estilo DiT) entrenado desde cero, no una continuación de FLUX.1. Combina generación texto-a-imagen y edición de imágenes (imagen única y multi-referencia) en un solo checkpoint.

  • Codificador de texto

    FLUX.2 [dev] usa Mistral Small 3.1 / 3.2 – 24B como codificador de texto vision-language. Son otros 24B parámetros sobre los 32B del DiT. Con precisión normal, esto solo consume una parte enorme de VRAM y juega un rol central en el comportamiento del modelo.

  • Autoencoder (VAE)

    El modelo usa un nuevo AutoencoderKLFlux2 con 32 canales latentes (FLUX.1 usaba 16). Está diseñado para edición de alta resolución y preservación de texturas finas, por eso FLUX.2 puede hacer ediciones nítidas de 1024×1024.

  • Generación + edición unificada

    La misma arquitectura maneja texto-a-imagen puro, edición de imagen única y edición multi-referencia (hasta ~10 imágenes de referencia). No hay una rama separada "solo edición"; todo es una sola red.

  • Guidance destilado

    FLUX.2 [dev] es un modelo guidance-destilado: no hay guidance clásico libre de clasificador con pasadas separadas "condicional" e "incondicional". El "guidance" está incorporado en una sola pasada forward.

Lo que esto significa para LoRA:

  1. El transformador central es enorme.

    Debido a que FLUX.2 [dev] usa un transformador fusionado de alta capacidad, el rango LoRA debe elegirse cuidadosamente. Rangos muy bajos (4–8) pueden apenas mover la aguja. La presión de VRAM está dominada por el transformador y el codificador de texto.

  2. El codificador de texto es pesado y central para el comportamiento.

    El VLM Mistral de ~24B es responsable de cómo se entienden los prompts y cómo se interpretan las instrucciones de edición.

  3. Los mismos pesos manejan T2I y edición.

    Si empujas demasiado una LoRA, arriesgas cambiar tanto el comportamiento de texto-a-imagen como de edición de imagen.

  4. El guidance es especial porque el modelo es guidance-destilado.

    Normalmente entrenas con guidance_scale = 1. Durante inferencia usarás guidance_scale alrededor de 2–4.


2. ¿Qué tipo de FLUX.2 LoRA estás entrenando realmente?

Con FLUX.2 [dev], primero deberías decidir qué quieres que haga el adaptador. El modelo base ya es fuerte en edición multi-referencia y seguimiento de prompts complejos, así que solo necesitas una LoRA cuando quieres algo persistente que el modelo base no puede hacer de forma confiable por sí solo.

Objetivos comunes al entrenar LoRA Flux 2 dev:

  1. LoRA de estilo (T2I + edición)

    Enseñar a FLUX.2 a usar un estilo de pintura específico, gradación de color o look de render cuando un trigger está presente.

  2. LoRA de personaje / identidad

    Modelar una persona específica, avatar, mascota o línea de productos con rostros/características consistentes.

  3. LoRA de objeto / prop / marca

    Capturar productos específicos, logos, props o formas con restricciones estrictas de geometría o marca.

  4. LoRA de instrucción / edición

    Cambiar comportamiento en lugar de estilo: por ejemplo, "convierte cualquier retrato en boceto de acuarela", "crea una versión de plano", o instrucciones de edición estructuradas con pares antes/después.

Saber cuál de estos objetivos persigues ayuda a decidir dataset, rango, Differential Output Preservation y configuraciones de guidance.


3. Detalles específicos de FLUX.2 que cambian la configuración LoRA

3.1 LoRA en un transformador fusionado (escalado de rango)

FLUX.2 [dev] fusiona proyecciones de atención y MLP en matrices muy anchas comparadas con SD1.5/SDXL clásico. Esto significa:

  • Rangos muy bajos (4–8) a menudo se sienten demasiado débiles.
  • Para LoRAs de estilo o personaje en FLUX.2 [dev], rango 32 es un buen valor por defecto cuando VRAM lo permite.
  • Si VRAM es ajustado o el estilo es simple, puedes usar rango 8–16 y menos pasos.
  • Para marcas o identidades extremadamente complejas, rango 32–64 puede ayudar, pero el overfitting se vuelve más probable.

En el FLUX.2 [dev] LoRA entrenamiento, el modelo generalmente se beneficia de rangos algo más altos que modelos antiguos, pero pagas por ello en VRAM y riesgo de overfitting.


3.2 Modelo guidance-destilado: entrenando con guidance_scale = 1

Debido a que FLUX.2 [dev] es guidance-destilado, la intuición usual de Stable Diffusion de "CFG 7–8" no aplica.

  • Entrenamiento: configura guidance_scale = 1.
  • Inferencia: una guidance_scale en el rango 2–4 funciona bien.
    • Valores más bajos (≈2) producen salidas más sueltas y creativas.
    • Valores más altos (≈3.5–4) son más literales y siguen el prompt más de cerca.

3.3 El codificador de texto es enorme (y por qué importa el caching de embeddings)

El Mistral 24B VLM usado como codificador de texto de FLUX.2 no es un módulo secundario pequeño. A precisión normal son alrededor de 24GB de parámetros solo.

En AI Toolkit, los patrones usuales son:

  • Si tu setup de entrenamiento usa una caption fija por imagen y no usas Differential Output Preservation o reescritura de prompts en tiempo real: Activa Cache Text Embeddings para que el toolkit codifique todas las captions una vez y reutilice esos embeddings.
  • Si usas Differential Output Preservation (DOP) o cualquier cosa que modifique prompts cada paso: No puedes cachear embeddings de texto.

El trade-off es simple: cachear embeddings es una gran ganancia para captions estáticas, pero cuando tu entrenamiento depende de cambiar prompts en tiempo de ejecución, debes desactivar el cache.


3.4 Autoencoder y resolución

FLUX.2 usa un AutoencoderKLFlux2 dedicado diseñado para trabajo 1024×1024+:

  • Usa 32 canales latentes, lo que da mejor detalle y fidelidad de edición que VAEs antiguos de 16 canales, a costo de más VRAM.
  • En la práctica, entrenar LoRAs FLUX.2 a resolución 768–1024 captura la mayoría del beneficio.

Los buckets de resolución de AI Toolkit te permiten listar múltiples resoluciones (por ejemplo [768, 896, 1024]). Las imágenes se redimensionan automáticamente al bucket más cercano.


4. Requisitos de hardware y VRAM para entrenamiento LoRA FLUX.2

FLUX.2 [dev] consume mucha memoria. Las configuraciones de referencia de Diffusers reportan que ejecutar el DiT completo + codificador de texto en bf16 todavía toma alrededor de 62 GB VRAM en un H100. El entrenamiento LoRA es más pesado que inferencia porque también necesitas memoria para gradientes y estados del optimizador.

4.1 Configuraciones recomendadas por nivel de VRAM

Nivel A — GPU 16–24 GB (ej. 4070 Ti, 4080, 4090)

  • Lo que es realista

    En este nivel, el fine-tuning LoRA FLUX 2 dev es posible pero ajustado. Estás principalmente limitado a LoRAs pequeñas de estilo o personajes simples a alrededor de 896–1024 px en el lado largo, con Batch Size = 1 y configuraciones agresivas de ahorro de memoria.

  • Configuraciones clave de UI

    En el panel MODEL: Low VRAM ON y Layer Offloading ON.

    En el panel QUANTIZATION: Transformer en float8 (default) y Text Encoder en float8 (default).

    En el panel TRAINING: Batch Size = 1 y usar Gradient Accumulation si necesitas un batch efectivo más grande.

    En el panel DATASETS: preferir resolución principal de 896–1024.

Nivel B — GPU 32–48 GB (ej. RTX 6000 Ada, A6000, algunos A100)

  • Lo que es realista

    Este es el primer nivel donde AI Toolkit FLUX.2 dev LoRA se siente cómodo. Puedes entrenar LoRAs de estilo y personaje de calidad de producción a 1024×1024, con 20–60+ imágenes y 1000–3000 pasos.

  • Configuraciones clave de UI

    En MODEL: Low VRAM ON por defecto; Layer Offloading OFF a menos que sigas teniendo OOM.

    En QUANTIZATION: ambos en float8 (default).

    En TRAINING: Batch Size = 1–2, Steps ≈ 1000–3000, Learning Rate = 0.0001, Linear Rank = 32 como un buen valor por defecto.

Nivel C — GPU 64–96+ GB (ej. H100, H200 en RunComfy)

  • Lo que es realista

    Aquí finalmente tienes espacio para respirar: 1024×1024 con Batch Size = 2–4, buckets de resolución más grandes o múltiples, y Differential Output Preservation ON por defecto son todos directos.

  • Configuraciones clave de UI

    En MODEL: puedes dejar Low VRAM OFF y Layer Offloading OFF.

    En QUANTIZATION: sigue siendo eficiente mantener ambos en float8 (default).

    En TRAINING: Batch Size = 2–4, Linear Rank = 32–64 y Differential Output Preservation ON.


4.2 AI Toolkit local vs. AI Toolkit en la nube en RunComfy

Puedes ejecutar este flujo de trabajo de FLUX.2 LoRA de dos maneras:


5. Diseñando datasets para FLUX.2 LoRA

5.1 ¿Cuántas imágenes?

De ejemplos FLUX disponibles y entrenamientos LoRA similares:

  • LoRA de estilo simple – alrededor de 15–30 imágenes curadas con estilo consistente usualmente funciona bien.
  • LoRA de personaje / identidad – alrededor de 20–60 imágenes con vistas claras, ángulos variados e iluminación.
  • LoRA de edición / instrucción – a menudo datasets de pares con 50–200 triples (fuente, objetivo, instrucción).

5.2 Estrategia de captioning: lo que no escribes importa

Lo que no describes en la caption está "libre" para que la LoRA lo adjunte a tu trigger.

Para una LoRA de estilo, normalmente quieres:

  • Captions que describan qué hay en la imagen (persona, pose, escena, objetos).
  • Captions que no describan pinceladas, colores, medio o estilo de composición.

Para una LoRA de personaje:

  • Usa un trigger corto y único (ej. midnight_tarot) y una palabra de clase (person, woman, man, character, etc.).
  • Las captions pueden ser cosas como [trigger] a woman standing in a market, [trigger] a close-up portrait of a woman in a red jacket, etc.

5.3 Differential Output Preservation (DOP)

Differential Output Preservation es una estrategia de regularización usada en AI Toolkit que compara:

  • La salida del modelo base sin LoRA, y
  • La salida con la LoRA activa,

y penaliza a la LoRA por cambiar cosas cuando no hay trigger presente.

En la práctica:

  • Eliges una palabra trigger (por ejemplo midnight_tarot) y una clase de preservación (por ejemplo photo).
  • Las captions se escriben usando un placeholder [trigger].

En tiempo de entrenamiento, AI Toolkit genera internamente dos versiones de cada caption:

  • midnight_tarot a woman sitting on a park bench... – esta ruta entrena la LoRA.
  • photo a woman sitting on a park bench... – esta ruta enseña al modelo qué hacer cuando el trigger está ausente.

6. Paso a paso: configurar entrenamiento LoRA FLUX.2 [dev] en AI Toolkit

6.1 Configuración inicial única

6.2 Prepara tu dataset en el Toolkit

  • Reúne imágenes para tu tipo de LoRA elegido (estilo, personaje, objeto, instrucción).
  • Colócalas en una carpeta dentro del directorio de datasets de AI Toolkit, por ejemplo: /ai-toolkit/datasets/flux2_midnight_tarot/
  • Añade archivos de caption .txt con el mismo nombre base que cada imagen.
  • Usa [trigger] en las captions donde debe aparecer tu palabra trigger.

6.3 Crear un nuevo trabajo de entrenamiento

En la UI de AI Toolkit, crea un nuevo trabajo y configura cada panel como sigue.

6.3.1 Panel JOB – nombre, GPU y palabra trigger

En el panel JOB:

  • Training Name

    Elige cualquier nombre descriptivo, por ejemplo flux2_midnight_tarot_v1.

  • GPU ID

    En una instalación local esto selecciona tu GPU física (típicamente 0 para máquina de una sola GPU).

    En el AI Toolkit en la nube en RunComfy, déjalo por defecto.

  • Trigger Word

    Configura esto al token real que quieres escribir en prompts, por ejemplo midnight_tarot.


6.3.2 Paneles MODEL & QUANTIZATION – modelo base FLUX.2 y precisión

En el panel MODEL:

  • Model Architecture

    Elige la arquitectura FLUX.2.

  • Name or Path

    Este es el Hugging Face model id para el checkpoint base, por ejemplo: black-forest-labs/FLUX.2-dev.

    FLUX.2 [dev] es un modelo Hugging Face con puerta, así que debes aceptar su licencia y configurar HF_TOKEN en un archivo .env.

  • Low VRAM

    ON en Nivel A y a menudo Nivel B.

    OFF en Nivel C (H100/H200).

  • Layer Offloading

    Activa esto en Nivel A.

    En Nivel B y C normalmente OFF.

En el panel QUANTIZATION:

  • Transformer

    float8 (default) en Nivel B y C.

  • Text Encoder

    float8 (default) para que el codificador de texto Mistral 24B corra en FP8.


6.3.3 Panel TARGET – configuración de red LoRA

En el panel TARGET:

  • Target Type

    Configura Target Type a LoRA.

  • Linear Rank

    Usa Linear Rank 32 como un buen valor por defecto para FLUX.2, ya que el transformador fusionado se beneficia de rangos algo más altos.


6.3.4 Paneles TRAINING & SAVE – hiperparámetros centrales y manejo del codificador de texto

En el panel Training:

  • Batch Size

    Usa 1 en GPUs de 24–48GB.

    Usa 2 en GPUs de 64GB+ como H100/H200.

  • Gradient Accumulation

    Comienza con 1.

    Aumenta a 2–4 si VRAM es ajustado.

  • Steps

    Como línea base:

    • LoRA de estilo, 15–30 imágenes: 800–2000 pasos.
    • LoRA de personaje, 30–60 imágenes: 1000–2500 pasos.
    • LoRA de instrucción/edición con 100+ ejemplos: 1500–3000 pasos.
  • Optimizer

    Usa un optimizador de 8 bits como AdamW8Bit.

  • Learning Rate

    Comienza con 0.0001.

    Si ves overshooting o muestras inestables, baja a 0.00005.

  • Weight Decay

    Mantén 0.0001.

  • Timestep Type
    • weighted usa el schedule optimizado para FLUX de AI Toolkit y es el valor recomendado por defecto.
    • sigmoid se concentra aún más en el medio del schedule.
  • Timestep Bias
    • Balanced mantiene ambas regiones representadas y es la opción más segura.
  • Loss Type
    • Mantén Mean Squared Error.
  • EMA

    Deja Use EMA OFF para LoRAs.

  • Text Encoder Optimizations
    • Si no usas Differential Output Preservation y tus captions son estáticas:
      • Cache Text Embeddings: ON
      • Unload TE: OFF
    • Si usas DOP o algo que cambia prompts cada batch:
      • Ambos OFF.

En el panel SAVE:

  • Data Type

    BF16.

  • Save Every y Max Step Saves to Keep

    Usa valores por defecto como Save Every = 250 pasos y Max Step Saves = 4.


6.3.5 Regularization & Advanced – Differential Output Preservation y Differential Guidance

Panel Regularization – Differential Output Preservation (DOP)

Si quieres preservar el comportamiento del modelo base cuando tu trigger no está presente, activa Differential Output Preservation.

En el panel Regularization:

  • Differential Output Preservation ON.
  • Trigger en la misma palabra trigger, ej. midnight_tarot.
  • Preservation Class en una palabra neutral como photo.

En la sección Training → Text Encoder Optimizations:

  • Con DOP ON: Cache Text Embeddings OFF y Unload TE OFF.

Panel Advanced – Differential Guidance

En el panel Advanced:

  • Do Differential Guidance – activa un objetivo de entrenamiento experimental que exagera la brecha entre la predicción del modelo y el ground-truth.
  • Differential Guidance Scale – controla qué tan fuerte es ese "overshoot".

Recomendaciones prácticas

  • Para la mayoría de LoRAs FLUX.2, es seguro activar Do Differential Guidance ON con una Differential Guidance Scale de 3.
  • Si las muestras tempranas se ven inestables, baja la Scale a 2 o 1 o reduce el Learning Rate.

6.3.6 Panel DATASETS – adjuntar datasets y cachear latents

En el panel DATASETS, haz clic en Add Dataset.

Para una LoRA simple de estilo o personaje:

  • Target Dataset

    Elige el dataset que creaste antes, ej. flux2_midnight_tarot.

  • Default Caption

    Si no creaste archivos .txt por imagen, ingresa un valor por defecto como: [trigger] a portrait of a person

  • Caption Dropout Rate

    Un valor alrededor de 0.05 es un buen valor por defecto cuando Cache Text Embeddings está OFF.

    Si activas Cache Text Embeddings ON, configura esto a 0.

  • Settings → Cache Latents

    ON. El VAE codificará cada imagen de entrenamiento una vez.

  • Settings → Is Regularization

    OFF para tu dataset principal.

  • Resolutions
    • En 16–24GB: comienza con 768 y opcionalmente 896.
    • En 32–48GB: usa [768, 896, 1024].
    • En 64GB+: puedes añadir un bucket algo más alto.
  • Augmentations (X/Y flip)

    El flip horizontal puede ser útil para algunas LoRAs de estilo pero a menudo es cuestionable para rostros.


6.4 Configuración de muestreo de vista previa

En el panel SAMPLE:

  • Sample Every

    Sample Every = 250 pasos.

  • Sampler

    Usa el sampler recomendado por tu plantilla FLUX.2.

  • Width / Height

    Elige una resolución que coincida con tus buckets de entrenamiento, ej. 768×768 o 768×1024.

  • Guidance Scale

    guidance_scale = 1 para vistas previas de entrenamiento.

  • Sample Steps

    Alrededor de 25 pasos suelen ser suficientes para monitoreo.

  • Seed / Walk Seed

    Fija una semilla (ej. 42) para comparaciones consistentes.

  • Prompts

    Añade 2–4 prompts representativos.


7. Depurar resultados LoRA FLUX.2 y mejorar calidad

7.1 "GatedRepoError / 401 al descargar FLUX.2-dev"

Si ves un error como:

GatedRepoError (401): Cannot access gated repo ... black-forest-labs/FLUX.2-dev ...

Usualmente significa que el modelo base FLUX.2-dev es un repo Hugging Face con puerta y el entrenador no puede descargarlo sin autenticación.

Solución (aprobación de acceso única + token):

  1. Aceptar términos del modelo / obtener acceso (una sola vez)
    • Inicia sesión en Hugging Face.
    • Abre https://huggingface.co/black-forest-labs/FLUX.2-dev
    • Haz clic en Agree and access repository.
  2. Crear un token de acceso de Hugging Face
    • Abre https://huggingface.co/settings/tokens
    • Haz clic en New token
    • Configura el rol del token a Read
  3. Añadir el token en la configuración del entrenador
    • Abre la página Settings del entrenador.
    • Encuentra Hugging Face Token.
    • Pega tu token hf_... y guarda.
  4. Reiniciar el trabajo

7.2 "Nada cambia después de 1000+ pasos"

Lista de verificación:

  1. ¿La LoRA se está aplicando realmente en el muestreo?

    Asegúrate de que la LoRA está adjunta al modelo base FLUX.2 correcto.

  2. Linear Rank muy bajo para el transformador fusionado

    Si configuraste Linear Rank solo a 4–8, el efecto puede ser muy pequeño. Prueba Linear Rank = 16–32.

  3. Learning Rate muy bajo

    Comienza con 0.0001.

  4. Las captions describen el estilo en lugar del contenido

    Si cada caption dice algo como "watercolor, soft pastel strokes...", no queda nada para el trigger.


7.3 "Mi LoRA sobrescribió el modelo base"

Síntomas:

  • Incluso sin trigger, las salidas ya se ven como tu estilo LoRA.

Soluciones:

  1. Activar Differential Output Preservation

    Configura trigger y clase de preservación como se describió arriba.

  2. Reducir pasos de entrenamiento

    Para muchas LoRAs de estilo en rango 32, 800–1500 pasos son suficientes.

  3. Bajar rango o Learning Rate

    Prueba Linear Rank = 16 y Learning Rate = 0.000075 con DOP activo.


7.4 "CUDA sin memoria" o entrenamiento trabado

Plan de supervivencia usual:

  1. Bajar resolución

    De 1024 → 896 o 768 en el lado largo.

  2. Activar/aumentar gradient checkpointing y accumulation
  3. Cuantización agresiva

    FP8 o incluso 4-bit para el transformador.

  4. Usar caching de latents

    Activa Cache Latents.

  5. En VRAM muy ajustado, evitar DOP

    En su lugar:

    • Dataset pequeño y balanceado.
    • Menos pasos de entrenamiento con parada temprana.
  6. Mover el trabajo a GPU más grande

    Migra el mismo trabajo de AI Toolkit a las plantillas H100/H200 de RunComfy.


8. Usando tu FLUX.2 LoRA en inferencia

Una vez que el entrenamiento está completo, puedes usar tu FLUX.2 LoRA de dos maneras simples:

  • Model playground – abre el FLUX.2 LoRA playground y pega la URL de tu LoRA entrenada.
  • Flujos de trabajo ComfyUI – inicia una instancia de ComfyUI y carga un flujo de trabajo como Flux 2 Dev, añade tu LoRA en el nodo LoRA loader.

Más guías de entrenamiento LoRA de AI Toolkit

Ready to start training?