Cómo entrenar un LORA para ser parte de una AI

Como habrán visto en los Links de Viernes, cada tanto estoy creando alguna imagen de AI donde el personaje en cuestión soy yo (ego? nah! son las fotos que tengo para entrenar!).

No es que los modelos de Inteligencia Artificial estén entrenados con mi imagen, es que yo creo un "LORA" y aquí te voy a explicar cómo hacerlo.

Explicación sencilla para los que no quieran leer demasiado:

Un LORA es un pequeño módulo que uno puede entrenar con una colección de imágenes propias y asociarlo a un modelo ya existente de AI, esto permite que en unos 20 minutos tengas a tu personaje, estilo o cosa incorporada al modelo y poder crear imágenes AI incluyéndolo.

Preparar el material

Antes que nada hay que preparar unas 10 a 20 imágenes para que un LORA tenga suficiente de dónde sacar, en mi caso usé lo obvio, fotos mías porque las tengo de las vacaciones, así que busqué unas 20 de los últimos años y las recorté para que mi rostro estuviera bien claro y no se mezclara con otras personas.

Luego las recorté a 1024x1024, el tamaño usual en el entrenamiento de los modelos de AI y recomendado para los de buena calidad, por cada imagen agregué un archivo de texto con la descripción. No es que esa estrictamente necesario, pero en muchos lugares, para entrenar, se recomienda que el caption lo arme uno mismo y detalle lo que hay en la foto, en otros tantos pasan con otro modelo por encima para generarlo automáticamente

Hay muchas recomendaciones para los datasets, algunos hasta limpian la imagen dejando sólo al sujeto y borrando el fondo, como era mi primer intento ni siquiera me molesté en hacerlo 😁

Entrenar

No tengo ni el GPU potente ni la paciencia para entrenar un modelo en mi PC, lo siento, si buscan eso hay otros tutoriales para hacerlo.

Considerando que el costo de usar un sistema ya armado por un tercero y sus GPUs es de un dólar por LORA ¿Para qué cuernos me voy a volver loco esperando horas y horas y quemando mi notebook?

Así que pasé a la opción online, hacerlo en alguno de los tantos servicios que te alquilan minutos de sus GPU para poder entrenar sin tener que reinventar la rueda. 

Si bien soy fan de hacer todo en casa las limitaciones tecnológicas hacen conveniente este camino.

Primero probé con el entrenador de Flux, iba a crear un LORA para ese modelo y la página para hacerlo es extremadamente sencilla.

El proceso requiere que subas las imágenes, setees la palabra clave (usé fabiomb) con la que invocarás el LORA y setear algunos parámetros (opcionales) para refinar el proceso, agregar más pasos, etc. Yo entrené el mío con 1000 pasos.

El resultado fue genial y estuve usándolo mucho, pero el precio no tanto. Fal.ai es la empresa que creó el modelo Flux, pero al mismo tiempo es el más saladito de los productos, así que para hacer 1000 iteraciones te cobra unos USD 5, seguro que había algo más barato que eso.

Bueno, entré a Replicate, que es uno de los tantos sitios donde podés entrenar y usar modelos libres y tenían el proceso para hacer el entrenamiento para Flux.

El proceso me costó USD 1, un quinto! Y el resultado fue similar.

En ambos casos lo ideal es tener una cuenta en Hugginface para que te suba automáticamente el LORA generado, hay que habilitarle un token para que pueda hacerlo, nada difícil, en dos clicks lo tenés configurado (recuerden crear el repositorio primero).

El proceso de entrenamiento me llevó, en ambos casos, entre 20 y 25 minutos, también probé entrenar otro para SDXL, el modelo que usaba antes, usando este proceso, también en Replicate.

Usando el LORA

Ahora tenemos un lindo archivito .safetensors, pero hay que usarlo en algún lado. En el mismo fal.ai tenemos dónde, con copiar la url de hugginface (la de descarga) ya se puede incorporar cualquier LORA, y es lo primero que usé. La velocidad de estar creando imágenes en los servidores de otro es incomparable.

El único problema de esto es el costo, a razón de USD 0.035 por megapixel (en promedio), por lo que si estás en un día muy creativo es fácil quemar todo el presupuesto (permiten cargar de a diez dólares acumulables y no mes a mes, eso es genial).

Se puede hacer lo mismo en Replicate, simplemente se paga en la medida que se usa. Aquí un ejemplo.

Pero ¿Y si lo quiero usar en mi PC? Ahora que ya no tengo que entrenar porque ya lo tengo hecho ¿Podría hacerlo? Apenas tengo 6GB de VRAM y eso ya es una alerta de "va a ser lento", pero lo intenté!

En vez de usar ComfyUI que me estaba dando algunos dolores de cabeza pasé a Forge, Forge está bastante bueno, es una versión "mejorada" del Stable Diffusion original, misma interfaz, pero con todas las mejoras que le hacían falta. Entre ellas poder sumar modelos como Flux sin tener que instalar nada extra ni hacer configuraciones pesadas.

Sólo bajando los modelos y luego de algunas pruebas logré hacerlo funcionar, primero sólo el modelo Flux-dev para probar que estuviese todo ok.

Para poder ejecutarlo con 6GB usé el modelo nf4, que está cuantizado y es más pequeño, esto permite que ande mejor en poca RAM, y el resultado fue óptimo.

Luego incorporé el LORA de mi carita para ver si salía algo decente y, luego de varios intentos y reiniciadas, funcionó!

En promedio me lleva 1:30 minutos crear cada imagen, depende cuán caliente esté el GPU, usa no sólo los 6GB de VRAM sino unos 30GB de RAM normal, es una bestia lo que consume, así que recomiendo usarlo en una PC desktop con mejor refrigeración, mejor GPU y más RAM (lo mío es una notebook!).

Pero me he divertido mucho, también recomiendo bajar los VAE que usa Flux (ae.safetensors y clip_l.safetensors) para que interprete mejor el prompt.

Para efectos prácticos, y si quiero velocidad, prefiero usar el LORA dentro de Fal.ai porque es MUCHO más rápido, cuesta unos centavos, es cierto, pero la diferencia es fenomenal y no me da comprar una placa H100 de USD 40.000 para tener ese rendimiento, jeje.

Aquí les dejo galería de ejemplos para que vean los variados resultados, no se vayan a tocar demasiado con algunos, y si lo hacen, a mucha honra 😂

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

  • Hugo MdQ     09/09/2024 - 11:10:50

    Impresionantes resultados, te digo que a la de trenzas le doy una oportunidad!
    Justo ayer estaba buscando para hacerlo en local. Tengo un ryzen 5600g con una 3060 con 12gb de vram, y 32gb de RAM. No es ideal, pero si es para jugar no quiero pagar realmente por el uso. Incluso había creado el set de fotos (con mi cara, obbbvio) para entrenarlo.

    Voy a probar con ComfyUI y flux-dev a ver cómo me va, al menos ya tengo la punta para arrancar, gracias!.

    • Fabio Baccaglioni     09/09/2024 - 11:13:55

      para flux probá con Forge que te va a resultar mejor para configurar más rápido y sin tener que armar workflows, al menos hasta que le encuentres la vuelta.

      Con esa VRAM resolvés el 90% de mis problemas 😁, como sólo tengo la mitad se morfa mucho de mis 40GB de RAM, y queda medio boba la PC, pero Forge hace un muy buen manejo de memoria en ese sentido

  • Jorge Gastón     09/09/2024 - 11:35:58

    Muy bueno Fabio!
    Sí, con Forge ya descarté a todo el resto que usaba antes, como ComfyUI, A1111, etc.
    Hice una inversión fuerte en mi fierro (14900K + 4090 + 128 GB RAM), pero a cambio estoy ahorrando mucho dinero de generación en terceros.
    Aprendiendo y mirando como si fuera la prehistoria mis primeras pruebas en 2022 usando Dall-E 2.

    Hace tiempo que estoy por entrenar mi propio LORA, y ahí sí voy a pagar, no tiene sentido tener la 4090 calentando como horno durante horas si puedo hacerlo en minutos pagando unos dolaritos. :D

    • Fabio Baccaglioni     09/09/2024 - 11:47:18

      además, son apenas 20 minutos del GPU de otro y 1 dólar, no es algo que sea caro, es barato y luego sacudís la 4090 generando lo que se te cante Guiño

  • Danbat     09/09/2024 - 11:58:09

    ¿Tuviste que hacer algún ajuste con las manos o salieron bien? El de la guitarra está impecable, encima no recuerdo si tenías una o es un efecto Mandela que tengo.

    • Fabio Baccaglioni     09/09/2024 - 12:58:30

      nada, el modelo Flux es así, el LORA lo entrené sólo con mi cara, así que cero problema

  • Alejandro     09/09/2024 - 12:00:33

    Muy buenas las imágenes generadas!:D
    He notado que muchas imagenes por IA el gran problema esta en los dedos. Es lo que siempre suelen fallar.
    Supongo en los proximo años, con CPUs mas potentes y mas memoria de forma estandar, sera menos costoso hacer imagenes IA de forma local.
    Seguramente el proximo paso sera hacer peliculas integramente con IA sin que se noten que son de esa forma

    • Jorge Gastón     10/09/2024 - 16:29:11

      Flux casi casi lo tiene solucionado.
      Y si falla tirás un par de generaciones nuevas y el error desaparece.

  • Ezequiel     09/09/2024 - 15:41:16

    Muy buena guía y sobre todo el resultado!
    Sin dudas vas a tener que darle uso a las imágenes de la hermana de Fabio ya sea con trenzas o en el gim porque ahí seguro levanta el rating jaja

    • morcipunk     09/09/2024 - 18:42:06

      fabiola.com.ar

      • Fabio Baccaglioni     10/09/2024 - 00:10:59

        me encanta que aflore vuestra ambigüedad sexual, todo me indica que si fuese alto trabuco me entrarían todos, les gusta la manija, eh! 😁

  • Dario     10/09/2024 - 12:03:07

    Se puede entrenar en vez de una cara con el logo de una empresa?
    De manera que genere lo que yo quiero con el logo?

    • Jorge Gastón     10/09/2024 - 16:34:09


      https://www.youtube.com/watch?v=csR_iT1viIQ

      • Dario     10/09/2024 - 17:05:42

        No le quedó bien el logo. El producto si.

  • Hugo MdQ     10/09/2024 - 13:11:41

    Acabo de probar APOB.AI, no es la misma calidad, pero le tiras una sola foto y da resultados de este tipo:

    • Fabio Baccaglioni     11/09/2024 - 00:05:11

      hacer eso, usando una sola imagen, es bastante más sencillo (es otro proceso) y no adapta tanto expresiones y combinaciones locas, pero está bueno también

  • MaguiST     10/09/2024 - 13:39:38

    Oh, milord, qué bien da también como milady! :D

  • Pablo     11/09/2024 - 11:13:35

    Ya lo dije en otros comentarios. Fabio hace un año es una IA. El verdadero se recluye en Bariloche.

    Pd: a Fabiola musculosa toda

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.