¡Hola a todos! Hoy les traigo información detallada sobre cómo optimizar el entrenamiento de IA con una placa de video de gama media. En mi caso, uso una GTX 1660ti con 6GB de VRAM, que si bien no es la más potente, puede dar buenos resultados con los ajustes adecuados.
Cuando comencé a usar Stable Diffusion 1.5, el entrenamiento de un LoRA me llevaba casi 12 horas. Esto me llevó a investigar cómo aprovechar al máximo los 6GB de VRAM durante el entrenamiento.
Después de muchas pruebas, llegué a algunas configuraciones óptimas para mi GTX 1660ti. Aquí están mis parámetros recomendados:
1. Para resolution 512x512:
- Batch size: 2
- Gradient accumulation steps (gas): 4
- Learning rate: 1e-4 a 2e-4
2. Para resolution 768x768:
- Batch size: 1
- Gradient accumulation steps (gas): 8
- Learning rate: 8e-5 a 1.5e-4
3. Para resolution 1024x1024:
- Batch size: 1
- Gradient accumulation steps (gas): 16
- Learning rate: 5e-5 a 1e-4
Ahora, vamos a profundizar en cómo estos parámetros afectan el rendimiento:
Batch size y Gradient Accumulation:
Al aumentar el batch size, reducimos el noise en las gradient estimates, lo que permite usar un learning rate más alto. Sin embargo, con nuestra GTX 1660ti, estamos limitados por la VRAM. Aquí es donde entra el gradient accumulation.
Por ejemplo, en resolution 512x512, usar un batch size de 2 con gas de 4 simula un batch size efectivo de 8. Esto nos permite aumentar el learning rate sin saturar la VRAM. En resoluciones más altas, compensamos el menor batch size con un gas mayor.
Comparación de rendimiento:
1. Resolution 512x512 vs 768x768:
- Tiempo de entrenamiento: 512x512 es aproximadamente un 40% más rápido.
- Calidad del modelo: 768x768 tiende a capturar más detalles, pero la diferencia no siempre es significativa.
- Recomendación: Si el tiempo es crucial, usa 512x512. Si buscas más detalle y tienes tiempo, opta por 768x768.
2. Learning rate alto vs bajo:
- Learning rate alto (ej. 2e-4 en 512x512): Convergencia más rápida, pero riesgo de overfitting.
- Learning rate bajo (ej. 1e-4 en 512x512): Convergencia más lenta, pero generalmente más estable.
- Recomendación: Comienza con un learning rate medio y ajusta según los resultados.
3. Gradient Accumulation alto vs bajo:
- Gas alto (ej. 16 en 1024x1024): Permite trabajar con resoluciones altas, pero aumenta el tiempo de entrenamiento.
- Gas bajo (ej. 4 en 512x512): Entrenamiento más rápido, pero limitado a resoluciones más bajas.
- Recomendación: Ajusta el gas según la resolution que necesites.
Optimización adicional:
1. Precision: Usar precision "fp16" en lugar de "fp32" puede ahorrar VRAM sin una pérdida significativa de calidad.
2. Clip skip: Experimentar con clip skip 2 puede mejorar los resultados en algunos casos.
3. Scheduler: Probar diferentes schedulers como cosine_with_restarts puede optimizar el learning rate a lo largo del entrenamiento.
Recuerda que estos parámetros son un punto de partida. Cada dataset y objetivo de entrenamiento puede requerir ajustes finos. Te animo a experimentar y encontrar la configuración óptima para tus necesidades específicas.
Con estos ajustes, logré reducir mis tiempos de entrenamiento a un 20-25% del original, manteniendo una calidad comparable o incluso superior en mis modelos.
Espero que esta información les sea útil para sacar el máximo provecho de su GTX 1660ti o placas similares. ¡Éxitos en sus proyectos de IA!