Entrenar LoRAs con hardware limitado
Rutas gratuitas en Colab, configuraciones AMD ROCm y guía de VRAM para entrenar LoRAs.
On this page
- TL;DR
- ¿Qué significa "hardware limitado" para el entrenamiento de LoRA?
- ¿Puedo entrenar un LoRA gratis en Google Colab?
- ¿Alguien validó el entrenamiento de LoRAs en GPUs AMD?
- ¿Qué niveles de VRAM existen y qué puede entrenar cada uno?
- ¿Qué ajustes debo elegir para mi nivel de hardware?
- ¿Para cuántos pasos debo entrenar?
- Fuentes
- Errores comunes y soluciones
- Preguntas frecuentes
Entrenar LoRAs con hardware limitado
Entrenar un LoRA con hardware limitado significa elegir entre tres rutas: la nube para potencia bruta con límites de tiempo, AMD para permanencia con costo de configuración, o local con control acotado por la VRAM. Esta guía mapea lo que cada nivel realmente soporta.
TL;DR
- Colab gratuito: Usa GPUs en la nube por unas horas. Usa la guía de datasets de LoRA para preparar los datos y entrena a costo cero.
- AMD ROCm: Entrena localmente en RX 6800 XT o superior. Desinstala bitsandbytes y xformers primero; si no, los scripts no arrancan.
- Niveles de VRAM local: 6 GB para SD1.5 a 512×512. 12 GB desbloquean SDXL. 24 GB dan libertad total. Activa
--gradient_checkpointingy mixed precision.
¿Qué significa "hardware limitado" para el entrenamiento de LoRA?
El hardware es limitado cuando la VRAM —no el tiempo de cómputo— es la restricción determinante. La documentación de kohya-ss señala que el entrenamiento de LoRA en SDXL "requiere mucha VRAM" y que "incluso con 24GB de VRAM, puedes quedarte sin memoria según la configuración" (fuente). Lo que se siente "limitado" depende del modelo base: SD1.5 entrena a 512×512, mientras que SDXL usa 1024×1024 por defecto. Para instrucciones detalladas paso a paso, consulta el flujo de trabajo de entrenamiento kohya-ss.
¿Puedo entrenar un LoRA gratis en Google Colab?
Google Colab da acceso gratuito a GPUs en la nube (~20 horas/semana, reportado por la comunidad). Usa dos notebooks: la guía de datasets para extraer imágenes y curar tags, y luego el notebook XL Trainer para el entrenamiento con kohya-ss. Un usuario de la comunidad reportó ~10 horas totales de extremo a extremo para un LoRA SDXL, con la mayor parte del tiempo en la preparación del dataset (fuente). Con Colab Pro A100, un entrenamiento individual tarda menos de 30 minutos. Guarda cada epoch en el plan gratuito: hay desconexiones por presión de inactividad. Usa --lowram cuando la RAM es menor que la VRAM.
¿Alguien validó el entrenamiento de LoRAs en GPUs AMD?
Una configuración AMD usa los LoRA Easy Training Scripts de Derrian en Ubuntu 24.02 con ROCm 6.2 y Python 3.10.14. El autor reporta un LoRA de alta calidad en ~40 minutos en una RX 6900XT (70 imágenes, 8 epochs, optimizador CAME) (fuente). Esto es competitivo con GPUs de gama media en la nube, aunque la configuración tomó bastante más tiempo.
Crítico: desinstala bitsandbytes y xformers antes de entrenar. Si cualquiera de los dos está presente, los scripts no arrancan (fuente). El optimizador CAME está en custom_scheduler/LoraEasyCustomOptimizer/came.py (fuente). Instala Python 3.10.14 con pyenv (Ubuntu 24.02 trae 3.12). Usa PyTorch con el índice de ROCm: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.1 (fuente).
¿Qué niveles de VRAM existen y qué puede entrenar cada uno?
Los documentos de kohya-ss no publican una tabla de VRAM vs. batch size, pero parámetros confirmados por reportes de la comunidad dan esto:
| VRAM | Modelo | Resolución | Batch size | Flags requeridos |
|---|---|---|---|---|
| 6 GB | SD1.5 | 512×512 | 1–2 | --gradient_checkpointing, --sdpa |
| 8–12 GB | SD1.5 / SDXL | 512–768 | 2–4 | --cache_latents, --mixed_precision bf16 |
| 16–24 GB | SDXL | 768–1024 | 4–8 | --cache_text_encoder_outputs, --mixed_precision bf16 |
Cada flag que ahorra memoria tiene un costo: --gradient_checkpointing reduce la VRAM a cambio de un entrenamiento más lento. --cache_latents desactiva las augmentations de imagen. --cache_text_encoder_outputs elimina el cómputo del text encoder y requiere --network_train_unet_only para mantener válido el entrenamiento. Cada ajuste es un compromiso de recursos, no una optimización gratis.
¿Qué ajustes debo elegir para mi nivel de hardware?
Los parámetros centrales de entrenamiento siguen la misma lógica en todas las rutas. La tabla consolida valores recomendados:
| Parámetro | SD1.5 | SDXL | Por qué importa |
|---|---|---|---|
| Resolución | 512 | 1024 | Una resolución mayor aumenta la VRAM linealmente; usa la resolución nativa salvo que tengas margen |
| network_dim | 8–32 | 16–64 | Un dim mayor añade expresividad, pero también tamaño de archivo |
| network_alpha | dim/2 | dim/2 | Controla el escalado de la learning rate. Los documentos de kohya-ss recomiendan la mitad de dim por defecto |
| unet_lr | 1e-4 a 5e-4 | 1e-4 a 5e-4 | Valores más altos entrenan más rápido pero arriesgan artefactos |
| text_encoder_lr | 2e-5 a 1e-4 | 1e-5 a 2e-5 | Debería ser entre la mitad y un quinto de la learning rate del unet |
| lr_scheduler | constant / cosine | constant / cosine | constant es lo más simple; cosine_with_restarts añade reinicios periódicos que algunos entrenadores prefieren |
| batch_size | 1–2 | 4–8 | Limitado por la VRAM. Aumenta gradient_accumulation_steps para un batch size efectivo mayor |
| epochs | 8–10 | 6–8 | Menos repeticiones y más epochs dan más control fino. Guarda cada epoch para comparar checkpoints |
Cuando la VRAM está justa, AdamW8bit es el optimizador más común. Prodigy ajusta la learning rate automáticamente (en torno a 1.0) pero no puede combinarse con LoRA+. Adafactor se describe como "incluso más eficiente en memoria", pero requiere una configuración más cuidadosa.
¿Para cuántos pasos debo entrenar?
Flujos de trabajo probados por la comunidad convergen en 250–1000 pasos totales. La fórmula:
(imágenes × repeticiones × epochs) ÷ batch_size = pasos totales
Ejemplos para SDXL: 10 imágenes × 10 repeticiones × 10 epochs ÷ 2 batch = 500 pasos. 100 imágenes × 1 repetición × 10 epochs ÷ 4 batch = 250 pasos. SD1.5 normalmente necesita aproximadamente el doble de repeticiones para alcanzar un número de pasos comparable (fuente).
Pocos pasos dejan el LoRA subentrenado y no produce ningún efecto visible. Demasiados pasos arriesgan distorsión. Los estilos pueden necesitar más epochs con learning rates más bajos que los personajes. Guarda cada epoch y luego elige el mejor checkpoint a ojo.
Fuentes
| Qué cubre | URL |
|---|---|
| Guía completa de entrenamiento LoRA (dataset, ajustes, pruebas) | https://civitai.com/articles/4 |
| Configuración AMD ROCm 6.2 para los scripts de entrenamiento de Derrian | https://civitai.com/articles/4332 |
| Ajustes del flujo de trabajo en Colab para LoRA SDXL | https://civitai.com/articles/6182 |
| Documentación del script de entrenamiento LoRA de kohya-ss | https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_network.md |
| Documentación de entrenamiento específica para SDXL | https://github.com/kohya-ss/sd-scripts/blob/main/docs/sdxl_train_network.md |
| Opciones avanzadas de entrenamiento (caché, optimizadores, VRAM) | https://github.com/kohya-ss/sd-scripts/blob/main/docs/train_network_advanced.md |
| Instalación oficial de PyTorch (soporte de plataforma ROCm) | https://pytorch.org/get-started/locally/ |
| Repositorio backend de Derrian (optimizador CAME) | https://github.com/derrian-distro/LoRA_Easy_Training_scripts_Backend |
| GUI kohya_ss (integración con Colab) | https://github.com/bmaltais/kohya_ss |
PUT 87*:: Para un diagnóstico sistemático más allá de esta tabla, consulta el flujo de trabajo de depuración de entrenamiento LoRA y la guía de comparación de optimizadores.
Errores comunes y soluciones
| Síntoma | Causa | Solución |
|---|---|---|
| El entrenamiento nunca arranca en AMD | bitsandbytes o xformers en el venv | pip uninstall xformers bitsandbytes antes de entrenar |
| Imágenes generadas distorsionadas | Learning rate demasiado alta o demasiadas repeticiones | Baja unet_lr a 1e-4, reduce repeticiones, compara checkpoints anteriores |
| El LoRA no tiene efecto visible | Subentrenado: LR demasiado baja o pasos insuficientes | Sube unet_lr hacia 5e-4 o añade más epochs |
| Pérdida NaN | Problema de mixed precision o pico de LR | Con fp16, añade --no_half_vae para SDXL. Con Prodigy, añade safeguard_warmup=True |
| Funciona solo con un prompt exacto | Overfit por dataset pequeño o tags deficientes | Amplía el dataset con poses/ángulos/fondos variados; reduce la poda de tags verbosos |
| La sesión de Colab se desconecta | Timeout por inactividad o recuperación de recursos | Guarda cada epoch. Usa --lowram si la RAM < VRAM |
Para un diagnóstico sistemático más allá de esta tabla, consulta el flujo de trabajo de depuración de entrenamiento LoRA y la guía de comparación de optimizadores.
Preguntas frecuentes
¿Cuánta VRAM necesito para entrenar un LoRA localmente? 6 GB es el mínimo para SD1.5 a 512×512 con batch size 1 y gradient checkpointing. Para SDXL a 1024×1024, presupuesta 12–24 GB según el batch size y si haces caché de latents y de salidas del text encoder (fuente).
¿Puedo entrenar LoRAs en una GPU AMD sin cómputo en la nube? Sí. Los scripts de Derrian en ROCm 6.2 con Ubuntu 24.02 están validados en RX 6800 XT y superior. Un usuario reporta ~40 minutos por LoRA en una RX 6900XT (70 imágenes, 8 epochs). La configuración requiere Python 3.10.14 y desinstalar bitsandbytes/xformers (fuente).
¿Cuántas imágenes necesito para un LoRA de personaje? 5 imágenes producen un resultado usable pero limitado. 20–50 imágenes con poses, ángulos y ropa variados generalizan bastante mejor. Incluye al menos dos ejemplos de cada pose, ángulo y fondo que quieras que el modelo reproduzca (fuente).
¿Cuál es la diferencia entre LoRAs subentrenados, sobreentrenados y overfit? Los LoRAs subentrenados ignoran el concepto aprendido, normalmente por una learning rate demasiado baja o muy pocos pasos. Los LoRAs sobreentrenados generan artefactos distorsionados, por una learning rate demasiado alta. Los LoRAs overfit funcionan solo con prompts muy específicos y se niegan a generalizar, normalmente por un dataset demasiado pequeño o mal tageado (fuente).
¿Debería usar LoRA o LoCon en mi primera ejecución? LoRA funciona en la mayoría de los casos. LoCon añade más capas de aprendizaje y puede beneficiar específicamente el entrenamiento de estilos de arte. Para personajes y uso general, empieza con LoRA (fuente).
¿Necesita network_dim ser grande para buenos resultados? No. Un dim mayor aumenta la capacidad, pero también el tamaño de archivo, sin mejora de calidad garantizada. Dim 16 con alpha 8 produce un archivo de ~18 MB y es una línea base muy usada (fuente, kohya-ss).
¿Por qué el entrenamiento SDXL exige tanta más VRAM? La arquitectura U-Net más grande de SDXL y sus dual text encoders consumen sustancialmente más memoria que SD1.5. Los documentos de kohya-ss recomiendan gradient checkpointing, caché de latents y mixed precision específicamente para gestionar esto (fuente).