Parámetros de entrenamiento de LoRA de FLUX.1
Preparación de datos, subtítulos, tasa de aprendizaje, dim y alpha de red, y VRAM para entrenar LoRAs de FLUX.1 en GPUs de 12GB–24GB.
On this page
- TL;DR
- ¿Es un UNet o un transformador?
- ¿Cuántas imágenes necesitas para un LoRA de Flux?
- Preparación del conjunto de datos y agrupación por proporción
- Subtítulos para los LoRA de Flux
- ¿Qué dimensión de red y alfa debes usar para un LoRA de Flux?
- ¿Qué tasa de aprendizaje para el entrenamiento de LoRA de Flux?
- ¿Usa Flux LoRA entrenamiento clip_skip, min_snr_gamma o noise_offset?
- ¿Cuánta VRAM necesitas para entrenar un LoRA de Flux?
- Tamaño de batch, repeticiones y pasos
- Errores comunes y soluciones
- Preguntas frecuentes
Parámetros de entrenamiento de LoRA de FLUX.1: la configuración que importa
FLUX.1 es un modelo de difusión por paso de flujo con 12 mil millones de parámetros, dos codificadores de texto (CLIP-L, T5-XXL) y un AutoEncoder dedicado en vez de un VAE (diffusers, kohya). Esta guía cubre los parámetros de entrenamiento de LoRA de FLUX.1 que importan en Kohya-ss, SimpleTuner y ai-toolkit.
TL;DR
- Empieza por rango 16, alfa 16, LR 1e-4, AdamW8bit, bf16 — los valores por defecto de ai-toolkit para Flux; evita los rangos 64–128 en el modelo de 12B.
- Soltar los hábitos de la época de SD.
clip_skip,min_snr_gammaynoise_offsetno son parámetros nativos de Kohya para Flux (documentación de Flux de Kohya). - Presupuesta la VRAM. Flux necesita unos 50 GB de RAM del sistema para cuantificar al arrancar y 9–30 GB de VRAM según la cuantificación (SimpleTuner); usa
--blocks_to_swap,--cache_text_encoder_outputsy--gradient_checkpointing.
¿Es un UNet o un transformador?
Flux es un transformador de difusión, no un UNet (diffusers, kohya). Los nombres de parámetros de SD como "learning rate del unet" y clip_skip no se asignan a Flux. Como modelo de diferenciación por paso de flujo, Flux usa --timestep_sampling (recomendado flux_shift), --model_prediction_type (recomendado raw) y --guidance_scale (1.0 para entrenamiento de desarrollo; 3.5 es para inferencia), siguiendo la guía de Flux de Kohya. ai-toolkit refleja esto con noise_scheduler: "flowmatch" (configuración).
¿Cuántas imágenes necesitas para un LoRA de Flux?
Las guías de la práctica recomiendan 10–50 imágenes para Flux (20–30 para estilos, 10–20 para personajes), pero esos datos son reportados por la comunidad; ninguna documentación del entrenador fija una cantidad por tipo. El único límite documentado es estructural: el tamaño mínimo del conjunto de datos es train_batch_size * gradient_accumulation_steps, y además debe ser mayor que vae_batch_size. Debajo de ese valor, la ejecución se detiene con "no images detected in dataset".
La calidad de la imagen importa más para Flux que para SD. SimpleTuner advierte que Flux "absorberá los artefactos de tus imágenes _primero_, y luego aprenderá el concepto/sujeto" — las marcas de agua y los artefactos de compresión corrompen el resultado más rápido que en un modelo más pequeño.
Preparación del conjunto de datos y agrupación por proporción
El agrupamiento por proporción de aspecto agrupa imágenes por resolución para que el entrenador pueda agrupar imágenes de la misma forma. En Kohya, el tamaño de paso de resolución por defecto es 64 píxeles (bucket_reso_steps = 64), y max_bucket_reso/min_bucket_reso deben ser divisibles por él (documentación de configuración de Kohya); SDXL requiere múltiplos de 32 (documentos avanzados). El estilo de recorte es configurable (center/random en SimpleTuner, random_crop en Kohya) — "center crop by default" es una opción, no una regla.
No siempre necesitas recortar previamente. ai-toolkit indica "You do not need to crop/resize your images" — reduce automáticamente el tamaño y hace el agrupamiento. Flux es nativo de 1024 píxeles, y el ejemplo de ai-toolkit entrena en resolution: [512, 768, 1024] ("flux enjoys multiple resolutions", configuración). Kohya admite lo mismo mediante varios bloques [[datasets]] (§6.7 de la documentación de Flux).
Subtítulos para los LoRA de Flux
Los archivos de subtítulo son archivos .txt hermanos de cada imagen. ai-toolkit admite un token [trigger] reemplazado por el trigger_word de la configuración, y incluye caption_dropout_rate: 0.05 en su ejemplo de Flux. Kohya expone shuffle_caption, keep_tokens y caption_tag_dropout_rate por subconjunto (configuración TOML).
Subtítulo todo lo que no quieres que aprenda elLoRA (medio, encuadre, fondo), y deja sin subtítulo solo lo que debe vincular la palabra desencadenante. Flux "no es muy diverso" con subtítulos cortos y similares, así que SimpleTuner recomienda subtítulos de validación más largos y descriptivos. Consulta nuestra guía de subtítulos para difusión LoRA para más información.
¿Qué dimensión de red y alfa debes usar para un LoRA de Flux?
| Valor | Ejemplo de Flux de Kohya | Ejemplo de ai-toolkit | Rango común | Fuente |
|---|---|---|---|---|
network_dim / linear (rango) | 16 | 16 | 4–128 | train_network.md de Kohya, configuración de ai-toolkit |
network_alpha / linear_alpha | 1 | 16 | ≈ la mitad de la dimensión, o igual a la dimensión | train_network.md de Kohya, configuración de ai-toolkit |
| Tasa de aprendizaje | 1e-4 | 1e-4 | Inferior a SD; 1e-3 "asre", 1e-5 "no hace nada" | SimpleTuner FLUX.md |
| Optimizador | AdamW8bit | adamw8bit | AdamW8bit (eficiente en memoria, ampliamente usado) | train_network.md de Kohya |
| Precisión mixta | fp16/bf16 | bf16 | bf16 recomendado para Flux | SimpleTuner FLUX.md |
Ambos controles existen por la descomposición de rango: LoRA inyecta matrices entrenables $A$ y $B$, por lo que la actualización es $\Delta W = BA$ con rango $r \ll \min(d,k)$, y el artículo de LoRA escala $\Delta W x$ por $1/r$ para mantener estable la actualización al crecer $r$. Los entrenadores generalizan esto a alpha (escala por $\alpha/r$), así que el valor por defecto de Kohya (alfa=1, dim=16) y el de ai-toolkit (alfa=16, dim=16) difieren 16× en fuerza efectiva; no son intercambiables. Kohya recomienda alfa "about half the value of network_dim".
Para un modelo de 12B, mantén el rango pequeño. SimpleTuner indica "Try a smaller network first (rank-1, rank-4) … Ranks as large as 64 through 128 might be undesirable on a 12B model." --lora_rank=4 también reduce el uso de VRAM.
¿Qué tasa de aprendizaje para el entrenamiento de LoRA de Flux?
Usa 1e-4 como punto de partida y mantén el valor por debajo del rango de SD. SimpleTuner informa que en un modelo de 12B "LoRA at 1e-3 might totally roast the thing. LoRA at 1e-5 does nearly nothing." (La razón por la que un modelo de 12B prefiere tasas más bajas no está documentada; trátala como empírica.) Kohya divide la tasa con --text_encoder_lr 1e-4 1e-5 al entrenar codificadores de texto; ai-toolkit fija train_text_encoder: false y usa steps: 2000 (500–4000 es un buen rango).
¿Usa Flux LoRA entrenamiento clip_skip, min_snr_gamma o noise_offset?
No, no como parámetros nativos de Kohya para Flux. La guía de Flux de Kohya incluye --clip_skip en "Incompatible/Deprecated Arguments": "These are Stable Diffusion-specific arguments and are not used in FLUX.1 training." Su lista específica de Flux cubre --guidance_scale, --timestep_sampling, --sigmoid_scale, --model_prediction_type y --discrete_flow_shift; ni --min_snr_gamma ni --noise_offset aparecen.
Esa omisión encaja con la teoría: Min-SNR pesa los tiempos de paso por relación señal-ruido y noise_offset corrige un sesgo del valor medio de DDPM, ambas técnicas de ruido gaussiano de DDPM, no de proceso de difusión. El peso de pérdida de Flux usa --weighting_scheme, --logit_mean, --logit_std y --mode_scale. Si los flags heredados afectan una ejecución de Flux no está documentado; trata con escepticismo los efectos reportados por la comunidad. Consulta nuestra guía de ajuste de entrenamiento de LoRA de SDXL.
¿Cuánta VRAM necesitas para entrenar un LoRA de Flux?
Flux consume mucha memoria por dos motivos y el límite es tu tarjeta; consulta nuestra requisitos de VRAM por modelo para ver qué cabe en 8, 12, 16 y 24GB. SimpleTuner indica "quantising the model at startup requires about 50GB of system memory," y diffusers coincide en que "requires ~50GB of RAM/VRAM to load all the modeling components". La VRAM de GPU para un LoRA de rango 16 se escala según la cuantificación:
| Cuantificación | VRAM aprox. | Fuente |
|---|---|---|
| Ninguna (bf16/fp16 base) | ~30 GB | SimpleTuner FLUX.md |
| int8 + bf16 | ~18 GB | SimpleTuner FLUX.md |
| int4 + bf16 | ~13 GB | SimpleTuner FLUX.md |
| NF4 / int2 + bf16 | ~9 GB | SimpleTuner FLUX.md |
SimpleTuner llama "the absolute minimum … a single 3080 10G" y "a realistic minimum … a single 3090 or V100." La tabla por tarjeta de Kohya mapea 24 GB (batch 2), 16 GB (batch 1 + --blocks_to_swap), 12 GB (--blocks_to_swap 16 + AdamW de 8 bits), 10 GB (--blocks_to_swap 22 + T5-XXL fp8) y 8 GB (--blocks_to_swap 28 + T5-XXL fp8). Un RTX 3060 de 12 GB a 512 es trabajable según lo reportado por la comunidad.
Técnicas de reducción de VRAM que funcionan con Flux
--blocks_to_swapintercambia bloques del transformador entre CPU y GPU (hasta 35 para Flux); no se puede combinar con--cpu_offload_checkpointing(Kohya).--cache_text_encoder_outputs/--cache_latentsprecomiendo las salidas del codificador/AE; cachear las salidas del codificador de texto desactiva el LoRA del codificador de texto, así que añade--network_train_unet_only(documentos de Kohya para SDXL).--gradient_checkpointing— SimpleTuner: se lo configuras como verdadero "in practically every situation on every device".--fp8_basecarga Flux, CLIP-L y T5-XXL en FP8; "training results may vary" (Kohya).- Byses de aleteo (diffusers v0.33+, SimpleTuner) reducen la VRAM, pero son mutuamente excluyentes con
--enable_model_cpu_offload(SimpleTuner). gradient_accumulation_stepssimula un batch más grande sin VRAM extra (batch efectivo =train_batch_size × grad_accum, Kohya) con costo lineal de tiempo de ejecución (SimpleTuner).
Tamaño de batch, repeticiones y pasos
Mantiene train_batch_size en 1 para conjuntos de datos pequeños (SimpleTuner). num_repeats multiplica el tamaño efectivo del conjunto de datos (20 imágenes × 5 repeticiones se comportan como 100) y es el corrige documentado cuando el conjunto de datos es demasiado pequeño para empezar. El agrupamiento restringe el agrupamiento: las imágenes de dimensiones diferentes no pueden compartir un batch, así que conteos impares de grupo atenúan el beneficio de batches más grandes. Para acumulación de gradiente en Flux, SimpleTuner corrigió la orientación anterior: "Previous guidance was to avoid these with bf16 training since they would degrade the model. Further testing showed this is not necessarily the case for Flux." Su receta de menor VRAM (≈9 GB) usa NF4-bnb, Lion 8-bit paged, 512 píxeles, batch 1 y cero acumulación.
Errores comunes y soluciones
| Síntoma | Causa | Solución |
|---|---|---|
| "no images detected in dataset" | Conjunto de datos más pequeño que batch × grad_accum o vae_batch | Aumenta repeats, o baja batch/acum (SimpleTuner) |
| SIGKILL tras descargar los codificadores de texto | RAM de sistema insuficiente (~50 GB) para cuantificar Flux | Usa --base_model_precision=bf16 o --quantize_via=accelerator; añade memoria de sistema (SimpleTuner) |
| OOM al arrancar en tarjetas ≤16 GB | Cuantificar en GPU agota la VRAM | Añade --quantize_via=cpu (SimpleTuner) |
| LoRA del codificador de texto no entrena | --cache_text_encoder_outputs lo desactiva | Quita la caché o añade --network_train_unet_only (documentos de Kohya para SDXL) |
| Artefactos de cuadrícula cuadrada en muestras | Entrenamiento excesivo, LR demasiado alto, proporciones extrañas | Baja el LR, selecciona los datos y evita proporciones extremas (SimpleTuner) |
| Colapso de modelo NF4 | Optimizador Lion + inestabilidad NF4 | Cambia a variantes de AdamW; añade --max_grad_norm=0.01 (SimpleTuner) |
voluptuous.error.MultipleInvalid: required key not provided | Opción TOML ausente o mal escrita | Añade la opción que nombra el camino de error (documentación de configuración de Kohya) |
Preguntas frecuentes
¿Qué dimensión de red y alfa debes usar para un LoRA de Flux?
Empieza por rango 16 con alfa 16 (por defecto de ai-toolkit) o alfa 1 (por defecto de Kohya). Las dos no son intercambiables: alfa escala la actualización por α/r, así que 16/16 de ai-toolkit y 1/16 de Kohya difieren 16× en fuerza efectiva (Kohya, ai-toolkit). Para un modelo de 12B, prefiere rangos pequeños; SimpleTuner sugiere primero rango 1 o 4, y advierte que los rangos 64–128 "might be undesirable".
¿Usa Flux LoRA entrenamiento clip_skip?
No. La guía de Flux de Kohya incluye --clip_skip como incompatible: "These are Stable Diffusion-specific arguments and are not used in FLUX.1 training." Flux usa CLIP-L y T5-XXL, y su script de entrenamiento no consume ese flag.
¿Es un UNet o un transformador Flux?
Flux es un transformador de difusión, no un UNet. diffusers lo llama "based on diffusion transformers", y Kohya anota su "Transformer-based architecture". El componente entrenable es el transformador (bloques MMDiT), así que la terminología de "learning rate del unet" de SD no aplica.
¿Cuánta VRAM necesito para entrenar un LoRA de Flux?
Planifica unos 50 GB de RAM del sistema para cuantificar al arrancar, más 9–30 GB de VRAM de GPU según la cuantificación (SimpleTuner). El mínimo absoluto es un 3080 de 10 GB; el mínimo real, un 3090 o V100. Kohya asigna tarjetas de 24/16/12/10/8 GB a valores específicos de --blocks_to_swap y T5-XXL fp8.
¿Qué tasa de aprendizaje para el entrenamiento de LoRA de Flux?
Usa 1e-4 como referencia y mantén el valor por debajo de los de la época de SD. SimpleTuner informa que en el modelo de 12B "LoRA at 1e-3 might totally roast the thing. LoRA at 1e-5 does nearly nothing." AdamW8bit es el optimizador común; bf16 es la precisión mixta recomendada.
¿Funciona min_snr_gamma o noise_offset en Flux?
No están en la lista de parámetros específicos de Kohya. Ambos son técnicas de DDPM/SNR — Min-SNR pesa los tiempos de paso por SNR, noise_offset corrige un sesgo del valor medio de DDPM. Flux es de proceso de difusión por paso de flujo, así que usa --weighting_scheme y --timestep_sampling; su efecto si se pasan a Flux no está documentado.
¿Puedo entrenar un LoRA de Flux con 12 GB de VRAM?
Sí, con compensaciones. La receta de 12 GB de Kohya usa --blocks_to_swap 16 + AdamW de 8 bits; la configuración más baja de SimpleTuner (NF4, 512 píxeles, batch 1) apunta a ~9 GB. Un RTX 3060 de 12 GB a 512 píxeles es trabajable según lo reportado por la comunidad. Espera entrenamiento más lento y sin reserva de batch.
¿Necesito recortar las imágenes para entrenar un LoRA de Flux?
No siempre. ai-toolkit reduce el tamaño y hace el agrupamiento automáticamente: "You do not need to crop/resize your images." La configuración de Kohya fija el paso de grupo por defecto en 64 píxeles, con crop_style en center o random. El recorte manual a dimensiones exactas del grupo es opcional, útil solo para evitar sorpresas del recorte automático.
¿Qué es el proceso de difusión por paso de flujo en el entrenamiento de Flux?
El proceso de difusión por paso de flujo es el objetivo de entrenamiento de Flux, usado en vez del ruido gaussiano para eliminar. Aparece en ai-toolkit como noise_scheduler: "flowmatch"; en Kohya como --timestep_sampling flux_shift y --model_prediction_type raw. Cambia qué parámetros de peso de pérdida y tiempos de paso aplican.