ArtificialGuyBR

Home / Blog / Training LoRAs

Entrena tu primer LoRA gratis: datos, captions, ajustes

Guía para entrenar tu primer LoRA gratis: dataset, captioning WD14/BLIP y los hiperparámetros clave. Flujos en Colab y local.

8 sources cited Training LoRAs

Entrena tu primer LoRA gratis: datos, captions, ajustes

TL;DR

  • Reúne 20 imágenes o más de tu sujeto, con ángulos, distancias e iluminación variados.
  • Automatiza el etiquetado con WD14 Tagger para entrenamiento por palabras clave, o el captioning con BLIP para prompts en lenguaje natural. Ambos disponibles en los notebooks gratuitos de Colab de hollowstrawberry.
  • Configura learning rates de 1e-4 para el UNet y 1e-5 para los codificadores de texto; entrena 8 a 12 epochs; usa ahorros de memoria para SDXL como --gradient_checkpointing y --cache_latents.
  • Empieza gratis con el Lora Trainer de Colab de hollowstrawberry, o corre kohya-ss/sd-scripts en local con tu propia GPU.

Introducción

Low-Rank Adaptation (LoRA) afina modelos de difusión inyectando matrices de pesos pequeñas y entrenables en las capas existentes, mientras mantiene los pesos originales congelados. El resultado es un archivo portátil que intercambias entre proyectos para inyectar un rostro, un estilo o un concepto específico. El bajo coste computacional de LoRA permite usar GPU de consumo o notebooks gratuitos de Colab; kohya-ss ofrece un pipeline local completo.

Esta guía recorre las tres fases que determinan el éxito: preparar tu dataset, etiquetarlo correctamente y ajustar la configuración de entrenamiento.


Fase 1: Preparación del dataset

Un LoRA entrenado con un dataset descuidado produce un modelo descuidado. La regla práctica de la comunidad: al menos 20 imágenes, con variedad de ángulo, distancia y contexto.

Qué incluir

Para LoRAs de personaje: primeros planos de rostro, tomas de cuerpo completo, imágenes recortadas con contexto. Para LoRAs de estilo: varía la composición y mantén el estilo consistente. Los LoRAs por trigger word necesitan el concepto desde varios puntos de vista.

La comunidad recomienda distancias variadas respecto al objetivo, mencionando explícitamente primeros planos de rostro junto a imágenes de cuerpo completo para que el modelo aprenda el sujeto a varias escalas. El entrenamiento estilo DreamBooth (tokens de clase, no captions) se beneficia de un conjunto enfocado en un solo sujeto (Civitai 7).

Dónde recopilar imágenes

Imágenes: Pixiv, Danbooru, Safebooru, Google, Reddit, fotografía propia. El Dataset Maker de hollowstrawberry scrapea Gelbooru, filtra etiquetas y deduplica con FiftyOne, todo en el navegador, sin GPU local (hollowstrawberry/kohya‑colab; hollowstrawberry/stable-diffusion-guide).

Organización de archivos

Directorio único, sin subcarpetas. DreamBooth: token de clase en el nombre de carpeta. Fine-tuning: metadatos JSON por subconjunto.


Fase 2: Captioning

Tus captions determinan lo que el LoRA aprende. Dos herramientas automatizadas dominan este espacio y sirven a paradigmas de entrenamiento distintos.

WD14 Tagger: etiquetas por palabras clave para DreamBooth

WD14 Tagger genera etiquetas separadas por comas con puntuación de confianza. Estándar para entrenamiento estilo DreamBooth.

Script: finetune/tag_images_by_wd14_tagger.py en kohya-ss/sd-scripts. Usa --onnx para velocidad. Umbral por defecto 0.35. Banderas clave: --remove_underscore, --character_tags_first, --always_first_tags.

Salida: un .txt por imagen, p. ej., 1girl, long_hair, blue_eyes, wearing_crown, holding_sword.

BLIP: captions en lenguaje natural para fine-tuning

BLIP genera frases: "A girl with long purple hair stands in a garden holding a sword." Adecuado para fine-tuning sobre descripciones, no tokens de clase.

Limpieza manual

Revisa las salidas. Elimina identificaciones erróneas, estandariza nombres (holding_sword, no holding_sword, holding weapon), asegura que las trigger words abran las líneas de etiquetas. Usa caption_prefix/caption_suffix en .toml para modificadores de calidad globales como masterpiece, best quality,.


Fase 3: Configuración de entrenamiento

Dataset listo y etiquetado: ahora configura.

Línea de comandos base (SD 1.5)

accelerate launch --num_cpu_threads_per_process 1 train_network.py \
--pretrained_model_name_or_path="<path to SD model>" \
--dataset_config="my_dataset_config.toml" \
--output_dir="<output>" --output_name="my_lora" \
--save_model_as=safetensors --network_module=networks.lora \
--network_dim=16 --network_alpha=1 --learning_rate=1e-4 \
--optimizer_type="AdamW8bit" --lr_scheduler="constant" \
--sdpa --max_train_epochs=10 --save_every_n_epochs=1 \
--mixed_precision="fp16" --gradient_checkpointing

SDXL: sdxl_train_network.py con network_dim=32, network_alpha=16, learning rates separados para codificadores de texto (--text_encoder_lr1/--text_encoder_lr2), bf16, --cache_text_encoder_outputs + --cache_latents (kohya‑ss sdxl_train_network.md).

Ajustes que importan

Learning rate — 1e-4 estándar. Demasiado bajo (1e-6) = débil; demasiado alto (1e-2) = artefactos. Docs de Kohya: "relatively higher values (e.g., 1e-4 to 1e-3) often used." Learning rate del codificador de texto ≈ 1e-5 para evitar sobreajuste (kohya-ss train_network.md).

Epochs — 8 a 12. Por debajo de 8 = débil; por encima de 12 = rinde decreciente/sobreajuste. num_repeats en .toml multiplica el tamaño efectivo del dataset.

network_dim / network_alpha — rango de network_dim de 4 a 128. Inicio: 16 (SD 1.5), 32 (SDXL). Mayor = más detalle, archivo más grande. network_alpha ≈ la mitad de network_dim; igual al dim imita el antiguo LoRA.

Optimizer — AdamW8bit (8-bit mediante bitsandbytes) reduce a la mitad la memoria. Alternativas: Lion, DAdaptation, Adafactor (docs de Kohya-ss).

Mixed precision + gradient checkpointing — --mixed_precision="bf16" (SDXL) o "fp16" (SD 1.5) reduce a la mitad la VRAM. --gradient_checkpointing cambia velocidad por VRAM. SDXL: --cache_latents + --cache_text_encoder_outputs; el caché del codificador de texto fuerza --network_train_unet_only.

Multi-LoRA — LoRA Stack de ComfyUI (comfyroll). Fuerza: ~0.6 en múltiple, 0.7–0.8 en single. Se admiten fuerzas negativas (Civitai 6831).


Entornos de entrenamiento gratuitos

Notebooks de Colab de hollowstrawberry

Notebooks listos: Dataset Maker, Lora Trainer, XL Lora Trainer. GPU T4 gratuitas; XL soporta A100 cuando está disponible. Persistencia en Google Drive.

Dataset Maker: scrape de Gelbooru → deduplicar con FiftyOne → etiquetado WD14 → caption BLIP → un clic a Lora Trainer.

Civitai 1591 (guía SDXL de malcolmrey) señala que SDXL necesita más VRAM de la que la mayoría tiene en local; Colab en la nube o GPU de pago (RunPod) es lo pragmático. T4 gratuita sigue siendo la entrada más barata.

Local: kohya-ss/sd-scripts

Repo en GitHub (Apache 2.0) — LoRA, LoCon/LyCORIS, textual inversion, fine-tuning. Instala con Python 3.10.x y Git. Entrenamiento CLI. Referencia completa de train_network.py en la documentación.


Errores comunes y soluciones

SíntomaCausaFix
LoRA débil o sin efectoLR demasiado bajo o <8 epochsSube LR hacia 1e-4 o sube epochs a 8+
Imágenes lavadasSin VAE activoActiva VAE; revisa Quicksettings en A1111
La UI se bloquea con LoRAArchivo corruptoVuelve a descargar de Civitai; corrige el modelo base
OOM durante entrenamientoMP/GC desactivadosAñade --mixed_precision="bf16"/"fp16" + --gradient_checkpointing
Codificador de texto LoRA congelado--cache_text_encoder_outputs lo desactivaQuita la bandera o añade --network_train_unet_only
Sobreajuste a fuerza 1.0Potencia completa en uno o LoRAs apiladosReduce a ~0.6 múltiple / ~0.7–0.8 single
Bajo detalle a alta resoluciónnetwork_dim bajo / res altoSube network_dim de 16 a 32+; baja res

FAQ

¿Cuántas imágenes? 20 como mínimo. Primeros planos, cuerpo completo, ángulos variados. Más ayuda; 20 es la base.

¿Qué learning rate? 1e-4 UNet / 1e-5 codificador de texto (kohya-ss train_network.md). Atascado → 2e-4; inestable → 5e-5.

¿Qué son network_dim / network_alpha? network_dim de 4 a 128. 16 (SD 1.5), 32 (SDXL). network_alpha ≈ la mitad de network_dim.

¿Cómo etiquetar? DreamBooth: WD14 Tagger (etiquetas por comas). Fine-tune: BLIP (frases). Ambos en Colab de hollowstrawberry y en scripts de kohya-ss.

¿Entrenamiento gratuito en Colab? Sí. Lora Trainer de hollowstrawberry en T4 gratuita. VRAM de T4 limitada → SDXL funciona con limitaciones de batch/resolución.

¿LoRA vs LoCon? LoRA = estándar. LoCon = más preciso para estilos, necesita a1111-sd-webui-lycoris para cargar en WebUI. kohya-ss entrena LoCon de forma nativa.

¿Fuerza máxima de LoRA? Sin límite duro. La comunidad: ~0.6 múltiple, ~0.7–0.8 single. 1.0 arriesga sobreajuste. De Civitai 60.

¿Cuántos epochs? 8 a 12. <8 = débil; >12 = meseta/sobreajuste. Un epoch = un pase completo del dataset.

¿Uso del tagger WD14? Ejecuta finetune/tag_images_by_wd14_tagger.py con --onnx. Ejemplo de docs: SmilingWolf/wd-swinv2-tagger-v3; por defecto: SmilingWolf/wd-v1-4-convnext-tagger-v2. En Colab de hollowstrawberry.


Lo que queda sin verificar

  • Requisitos exactos de VRAM para entrenamiento LoRA SD 1.5 vs SDXL — las fuentes verificadas confirman que SDXL necesita más VRAM, pero no se dan umbrales concretos en GB.
  • Contenido o precios de RunPod — la fuente 1591 lo menciona pero no indica costes ni specs mínimas.
  • Contenido de la página de modelo de malcolmrey (artículo 7) y de ambas guías de Rentry (lycoris-from-dreambooth & sdxl-lora-training) — URLs confirmadas, cuerpos no accesibles.
  • Si el nivel T4 gratuito de Colab proporciona VRAM suficiente para todo flujo de trabajo SDXL — los notebooks de hollowstrawberry soportan T4, pero la guía de entrenamiento SDXL insinúa que GPU en la nube de pago es lo pragmático.
  • Cadenas de error reales de primeros intentos de entrenamiento fallidos — no aparecieron en las fuentes verificadas.