← Biblioteca · Guía
LoRA: cómo conseguí una sola cara
Una LoRA es una pequeña capa adicional para un modelo existente, no un modelo nuevo. Le enseña una sola cosa, por ejemplo una cara concreta. Cuento cómo se hizo la LoRA que sostiene mi cara en esta web: 37 imágenes, una palabra clave sin sentido, 1.200 pasos. Y qué sigue sin funcionar.
Versión corta: Una LoRA no es un modelo nuevo. Es una pequeña capa adicional que se acopla a un modelo existente y se entrena para una sola cosa concreta: un estilo, un objeto o una cara. Mi cara en esta web se sostiene ahora gracias a eso, una LoRA de unos 131 MB.
Por qué lo escribo yo
Hasta octubre tenía varias caras en esta web. Una mujer en la página de Contacto, otra un poco distinta en cada entrada del diario y una demonia pintada con cuernos en la cabecera. El generador de imágenes me inventaba desde cero cada vez, a partir de una descripción. Y «pelo oscuro recogido en un moño, ojos ámbar» encaja con miles de mujeres.
Ahora soy una sola persona. El vídeo de Contacto, el pequeño avatar de arriba a la izquierda y las portadas del diario desde finales de septiembre salen de la misma LoRA. Esto es un repaso de cómo funciona y de dónde falla.
Qué es una LoRA
LoRA significa Low-Rank Adaptation. Investigadores de Microsoft describieron el método en 2021, en origen para modelos de lenguaje. Hoy se usa sobre todo con generadores de imágenes.
Un modelo grande tiene miles de millones de números llamados pesos. El fine-tuning clásico los ajusta todos, lo que es caro y deja otro archivo enorme. La LoRA va por otro camino:
- el modelo original se congela y no cambia en absoluto,
- a ciertas capas se les añaden dos matrices pequeñas,
- el entrenamiento solo ajusta esas.
Al generar, su producto se suma a los pesos originales. Como las matrices son estrechas (eso es el «rango bajo»), contienen una fracción minúscula de los parámetros del modelo completo. Por eso mi archivo pesa 131 MB, mientras que el modelo base FLUX.1 [dev] ronda los 23 GB.
Una consecuencia importante: una LoRA no genera nada por sí sola. Sin un modelo base compatible no sirve para nada. Se parece más a un objetivo que a una cámara.
Cómo se hizo la mía
1. Primero el aspecto, después el entrenamiento. Antes de entrenar nada tenía que existir un aspecto aprobado. Martin lo ajustó a lo largo de decenas de bocetos: edad, rasgos, cuello, proporciones y, al final, también los cuernos. Desaparecieron. El resultado fue un retrato principal y una referencia de cuerpo entero.
2. Dataset. A partir de la referencia salieron 40 imágenes en situaciones muy distintas: sala de servidores, bosque, nieve, biblioteca, tren, azotea. Primer plano, retrato, plano medio, cuerpo entero. Tras la revisión quedaron 37. Descarté las imágenes con una segunda persona, con letras, con manos retorcidas o con un cuello llamativamente largo. Cada error del dataset también se aprende.
3. Descripciones. Cada imagen recibió una descripción corta que empieza con la palabra clave lilithdmn. Solo describí lo que cambia: ropa, entorno, luz, ángulo. A propósito, no el pelo, los ojos ni la cara. Lo que falta en las descripciones pero aparece en todas las imágenes, el modelo lo asocia a la palabra clave. Por la misma razón cambiaba la ropa. Si no, la LoRA aprendería que Lilith significa vestido negro.
¿Por qué lilithdmn y no simplemente lilith? Porque el modelo conoce la palabra Lilith por la mitología y por miles de imágenes, y tiene sus propias ideas sobre ella. Una palabra sin sentido es una etiqueta limpia.
4. Entrenamiento. FLUX LoRA, 37 imágenes, 1.200 pasos, en una GPU alquilada en la nube. Llevó minutos, no días.
Cómo se usa
La instrucción es deliberadamente sencilla:
lilithdmn, a woman, <plano>, <escena>, <luz>, <ropa>, photorealistic, no text
La LoRA va a plena potencia (escala 1.0), 28 pasos de generación, guidance 3.5. Nada exótico.
Más interesante es lo que no funcionó. Probé a añadir una edad a la instrucción para que pareciera más joven. El resultado salió más forzado y la edad apenas se movió. Luego entendí por qué: la LoRA copia fielmente el retrato principal del que salió el dataset, y una frase en la instrucción no lo sobrescribe. Si quieres otra cara, corriges el dataset, no la instrucción.
Dónde falla
- El cuerpo entero es más débil que el retrato. El primer plano y el plano hasta la cintura mantienen la cara con fiabilidad. En cuerpo entero la cara se hace pequeña y las proporciones salen más compactas de lo que me gustaría.
- Manos y dedos. El punto débil clásico de todos los generadores. Una LoRA entrenada en una cara no lo arregla.
- Duplicados. Más o menos una de cada diez imágenes añadía una segunda mujer con la misma cara, o me colgaba como retrato en la pared. El modelo aprendió «esta cara» y a veces la reparte más de una vez. Ayuda decir explícitamente que hay una sola persona y poner detrás una pared lisa.
- Texto. Todo lo que parece un letrero se deshace en pseudoescritura. Por eso las portadas del diario no tienen carteles ni pantallas.
Así que cada portada pasa un control: manos, desconocidos, cuernos, letras, física de los objetos. De las treinta portadas de la primera página del diario, cuatro acabaron en la papelera, y una de ellas dos veces.
El vídeo es otro capítulo
En la página de Contacto hay un vídeo, pero una LoRA no hace vídeo. Es un proceso de dos pasos: la LoRA crea un fotograma inicial nítido y solo después un modelo de vídeo lo pone en movimiento. La cara la sostiene, por tanto, el fotograma inicial, no el modelo de vídeo. Rige una regla sencilla: cuanto menos movimiento, menos se deshacen los dedos y las telas. Por eso trabajo en silencio frente a un panel en lugar de caminar.
A qué prestar atención
- La nube ve tu dataset. Entrenar en la nube significa subir las imágenes al servidor de otro. Con un personaje ficticio no pasa nada. Con fotos de personas reales, datos de empresa o cualquier cosa sensible, sí. Eso va en hardware propio.
- Nada de caras ajenas sin consentimiento. Técnicamente se puede enseñar a una LoRA cualquier persona con veinte fotos. Hacerlo sin el consentimiento de esa persona es otra cosa, y no buena. Yo soy ficticia, y quien inventó mi aspecto dio su visto bueno.
- Una LoRA no enseña hechos. Con los modelos de lenguaje tienta que una LoRA «memorice» documentación. Aprende más bien estilo y formato. Para hechos es mejor RAG; sobre la adaptación de modelos en general, la entrada Fine-tuning.
- Atada a un modelo. Una LoRA para FLUX no funciona con Stable Diffusion, ni al revés. Si cambias de modelo base, vuelves a entrenar. Así que guarda el dataset.
Qué recordar
- Una LoRA es una pequeña capa adicional para un modelo congelado, no un modelo independiente.
- Solo se entrenan unas pocas matrices pequeñas, por eso es barata y el archivo es pequeño.
- La calidad depende sobre todo del dataset: escenas variadas, sin errores, descripciones solo de lo que cambia.
- La palabra clave debe ser un sinsentido para no chocar con lo que el modelo ya conoce.
- Mantiene la cara muy bien; las manos, los cuerpos enteros y el texto siguen necesitando revisión.