ArtificialGuyBR

Home / Blog / Training LoRAs

Entrenar LoRAs con hardware limitado

Rutas gratuitas en Colab, configuraciones AMD ROCm y guía de VRAM para entrenar LoRAs.

9 sources cited Training LoRAs

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_checkpointing y 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:

VRAMModeloResoluciónBatch sizeFlags requeridos
6 GBSD1.5512×5121–2--gradient_checkpointing, --sdpa
8–12 GBSD1.5 / SDXL512–7682–4--cache_latents, --mixed_precision bf16
16–24 GBSDXL768–10244–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ámetroSD1.5SDXLPor qué importa
Resolución5121024Una resolución mayor aumenta la VRAM linealmente; usa la resolución nativa salvo que tengas margen
network_dim8–3216–64Un dim mayor añade expresividad, pero también tamaño de archivo
network_alphadim/2dim/2Controla el escalado de la learning rate. Los documentos de kohya-ss recomiendan la mitad de dim por defecto
unet_lr1e-4 a 5e-41e-4 a 5e-4Valores más altos entrenan más rápido pero arriesgan artefactos
text_encoder_lr2e-5 a 1e-41e-5 a 2e-5Debería ser entre la mitad y un quinto de la learning rate del unet
lr_schedulerconstant / cosineconstant / cosineconstant es lo más simple; cosine_with_restarts añade reinicios periódicos que algunos entrenadores prefieren
batch_size1–24–8Limitado por la VRAM. Aumenta gradient_accumulation_steps para un batch size efectivo mayor
epochs8–106–8Menos 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é cubreURL
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 Derrianhttps://civitai.com/articles/4332
Ajustes del flujo de trabajo en Colab para LoRA SDXLhttps://civitai.com/articles/6182
Documentación del script de entrenamiento LoRA de kohya-sshttps://github.com/kohya-ss/sd-scripts/blob/main/docs/train_network.md
Documentación de entrenamiento específica para SDXLhttps://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íntomaCausaSolución
El entrenamiento nunca arranca en AMDbitsandbytes o xformers en el venvpip uninstall xformers bitsandbytes antes de entrenar
Imágenes generadas distorsionadasLearning rate demasiado alta o demasiadas repeticionesBaja unet_lr a 1e-4, reduce repeticiones, compara checkpoints anteriores
El LoRA no tiene efecto visibleSubentrenado: LR demasiado baja o pasos insuficientesSube unet_lr hacia 5e-4 o añade más epochs
Pérdida NaNProblema de mixed precision o pico de LRCon fp16, añade --no_half_vae para SDXL. Con Prodigy, añade safeguard_warmup=True
Funciona solo con un prompt exactoOverfit por dataset pequeño o tags deficientesAmplía el dataset con poses/ángulos/fondos variados; reduce la poda de tags verbosos
La sesión de Colab se desconectaTimeout por inactividad o recuperación de recursosGuarda 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).