Después de una larga espera de 8 horas, finalmente se completó el entrenamiento.

¿Cuál fue el resultado de afinar el modelo FLUX 1-dev 12B en DGX Spark (basado en ARM) con solo 90W de bajo consumo?

Hoy compararé los adaptadores LoRA generados en 250, 500, 750 y 1000 pasos, y hablaré sobre lo que descubrí en el 'Honey Spot' de aprendizaje.


1. Entorno y condiciones de prueba



  • Modelo base: FLUX 1-dev (12B)

  • Conjunto de datos: 40 imágenes fotorealistas de personas (1024x1024)

  • Método de muestreo: dpmpp_2m, euler

  • Hardware: DGX Spark (120GB de memoria unificada)

  • Puntos de control de LoRA: 250, 500, 750, 1000 pasos

2. Comparación de resultados por pasos (La Batalla de Pasos)

Se generaron imágenes fotorealistas con personas para probar la coherencia.

🥉 Paso 250: "¿Tú... quién eres?" (Subajuste)

  • Resultado: La atmósfera es similar a la del sujeto de aprendizaje, pero si se pregunta "¿Es la misma persona?", hay dudas. Falta la sutileza en los detalles faciales.

  • Velocidad: La velocidad de creación fue la más rápida (menos de 100 segundos), pero no era la calidad que deseábamos.

  • Diagnóstico: Subajuste. El modelo aún no ha absorbido las características de los datos lo suficiente.

🥈 Paso 500: "¡Oh! Eres tú!" (Buen ajuste)

  • Resultado: Todos pueden ver que es esa persona que ha sido entrenada. Finalmente, sentí que LoRA está funcionando correctamente.

  • Particularidad: A veces, si se cambian las expresiones, parece otra persona, pero en general muestra una gran coherencia.

  • Diagnóstico: Entrada en la zona de aprendizaje adecuado. A partir de este punto, parece que se puede utilizar en la práctica con el conjunto de datos de 40 imágenes.

🥇 Paso 750: "La estética de la estabilidad" (Estable)

  • Resultado: No hay mucha diferencia con 500 pasos, pero se siente un poco más estable. Las características del personaje se mantienen bien en diversas poses.

  • Diagnóstico: En continuidad con los 500 pasos, se siente 'maduro'.

🏅 Paso 1000: "Perfecto, pero... demasiado perfecto" (Riesgo de sobreajuste)

  • Resultado: Coherencia del 100%. Es tan natural que es difícil distinguirlo del original incluso en una prueba a ciegas.

  • Problema: Si se solicita una 'expresión enojada' o 'expresión sexy' que no estaba en los datos de entrenamiento, la coherencia de la persona se rompe.

  • Diagnóstico: En los límites del sobreajuste. El modelo ha memorizado demasiado los datos de entrenamiento ("Esta persona con esta expresión"), y el potencial de generalización ha comenzado a disminuir.

3. Misterios técnicos y análisis



Descubrí dos cuestiones técnicas interesantes (o desconcertantes) durante el proceso de prueba.

1) ¿El archivo LoRA tiene 5GB?

Los cuatro archivos LoRA generados tenían un tamaño de 5GB cada uno. Normalmente, los adaptadores LoRA deben tener un tamaño de decenas a cientos de MB.

Análisis:

Al principio pensé: “¿Se ha guardado el estado del optimizador o todo el codificador de texto junto a ellos?” Sin embargo,
cuando se aplica un LoRA de rango 256 a todas las capas en un modelo de 12B de FLUX, el número de parámetros de LoRA podría llegar a varios GB.
En otras palabras, no se puede aplicar la intuición de que 'LoRA son decenas a cientos de MB' según el estándar de SD1.5,
en modelos grandes, el rango y el alcance de LoRA están directamente relacionados con el tamaño.
La próxima vez, planeo reducir el network_dim a un nivel de 64 a 128 y volver a equilibrar tamaño y rendimiento.

2) Disminución de la velocidad de creación (97~130 segundos)

El tiempo de creación aumentó en comparación con antes de aplicar LoRA.

Análisis:

  1. Causa estructural: LoRA realiza operaciones al agregar pesos básicos ($W$) a los pesos aprendidos ($B \times A$), lo que aumenta la carga de cálculo.

  2. Cuello de botella: Debido al diseño del script de entrenamiento, el codificador de texto T5XXL sigue una estructura de almacenamiento en caché y envío a CPU, por lo que se sospecha que puede haber ocurrencias de viaje de ida y vuelta entre CPU y GPU en la tubería de inferencia.
    Sin embargo, aún no he podido confirmar completamente esto a nivel de código, por lo que en el próximo experimento:

  3. Forzaré todos los TE a CUDA

  4. y cuando cambie la estrategia de caché,
    planeo comparar cómo cambia la velocidad de creación y la calidad.

4. Conclusión: en busca del 'Honey Spot'

La conclusión obtenida de esta larga odisea de 8 horas es clara. "No siempre es mejor entrenar mucho."

  1. Intervalo óptimo: Con un conjunto de datos de 40 imágenes, el intervalo de 400 a 600 pasos parece ser el 'honey spot' que captura tanto el 'valor por dinero' como la 'calidad'. 1000 pasos no solo son una pérdida de tiempo, sino que también puede comprometer la flexibilidad.

  2. Importancia de los datos: Si solo se aprende una expresión específica, se convierte en un 'robot de expresión' que solo puede hacer esa expresión. Es mucho más importante incluir diversas perspectivas y expresiones al configurar el conjunto de datos que simplemente aumentar el número de pasos.

  3. Potencial de DGX Spark: Aunque tomó 8 horas y hubo problemas de configuración, el hecho de haber afinado un modelo de 12B con solo 90W de potencia es inspirador.

Por supuesto, este honey spot (rango de 400 a 600 pasos)
surge bajo condiciones bastante específicas de "40 imágenes de datos / FLUX 1-dev / esta configuración de LoRA".
Sin embargo, basándome en esta experiencia,

  • Primero, explorar un rango de pasos adecuado en proporción a la cantidad de datos
  • y dentro de ese rango, almacenar de manera precisa y buscar el punto óptimo es el enfoque que he aprendido.

5. Próximos pasos

El objetivo del próximo experimento está claro.

  • Optimización: Investigar si forzar la asignación de todos los codificadores de texto (TE) a CUDA es una intención del diseño del script de LoRA de FLUX (grande T5XXL guardado en caché y enviado a CPU para ahorrar VRAM)

  • Dieta LoRA: Comparar el tamaño/calidad/coherencia al reducir network_dim de 256 a 128 y luego a 64.

  • Ajuste preciso: Encontrar el mejor modelo sin llegar a 1000 pasos, dividiendo finamente el rango de 400 a 600 pasos (Guardar cada 50 pasos)

  • Introducir subtítulos en el conjunto de datos de entrenamiento:

    • Comparar 40 imágenes de la misma persona con subtítulos añadidos y sin,
    • analizando desde la perspectiva de “diversidad de expresiones/posiciones vs sobreajuste”.

La investigación en IA de bajo consumo y alta eficiencia continúa. ¡En la próxima publicación volveré con un LoRA que ha tenido éxito en la dieta!