Sign In

La Piedra filosofal : Haz el Chekpoint que se te Antoje en 5 Minutos

La Piedra filosofal : Haz el Chekpoint que se te Antoje en 5 Minutos

El título del artículo es bastante ridículo, pero viene del hecho de que los modelos más descargados de este sitio se crearon usando la piedra filosofal, ¡y hoy planeo enseñártela, querido lector!

El proceso es tan sencillo como la alquimia. Tomas X sustancias y las mezclas con Y sustancias de forma tal que obtienes Z sustancia. De esta manera, puedes crear el modelo que desees, recordando y utilizando las propiedades algebraicas de los tensores que crean nuestras sustancias.

Dada la introducción, vayamos a una explicación más práctica. ¿Nunca te preguntaste cómo hacen los checkpoints? ¿Cómo mejoran esos checkpoints? ¿Cómo se logra tal hazaña milagrosa que me convertirá en el alquimista más reconocido de Babilonia?

Bueno, hay muchas respuestas, y al igual que en la alquimia, hay más rumores e información falsa que caminos acertados.

  • ¿Acaso dijiste que nuestros principios son falsos? ¡Cómo te atreves a decir tal barbaridad, pagano y embustero!

Bueno, la realidad es que no son falsos, la palabra más exacta sería: costosos. Los conocimientos, libros y fórmulas accesibles son los más costosos e inaccesibles. Básicamente, los alquimistas te dicen:

  • "¡Ey muchacho, ¿quieres hacer oro? Aquí tienes la fórmula, pero recuerda, sin este laboratorio que me costó 100 camellos, te resultará imposible hacerlo!"

Así que el populacho mata su ilusión tan pronto se entera de la locura. Claramente, nadie está dispuesto a pagar tantos camellos para simplemente intentar cumplir su sueño, pudiendo fallar tranquilamente en el proceso.

Ahí está la trampa. Lo cierto es que la mayoría de los alquimistas que se jactan de tener el mejor laboratorio de toda la tierra, en realidad no son más que embusteros cuyo verdadero laboratorio es un cuarto con una pequeña piedra filosofal que les da lo que piden.

¡Y hoy, mis amigos, estoy aquí para abrirles los ojos al nuevo mundo, al mundo de la alquimia!

Básicamente, el proceso es el siguiente:

  • ¿Quieres crear un modelo de SD? Pues ten un servidor de 50,000 dólares.

  • ¡Claro que no tengo ese dinero!

  • Pues entonces, ¿quieres editar el modelo existente? Pues ve y descarga 50,000 imágenes y procésalas en Colab durante un mes entero o simplemente paga una computadora de 2,000 dólares.

  • ¡Pero por supuesto que no tengo el tiempo o las ganas de pagar esa cantidad!

  • Entonces, lo lamento, es imposible que entres en el mundo de los alquimistas.

  • ¡Pero es mi sueño, señor!

Así que es tu sueño, pues déjame darte mi magnus opus. Ahí está el secreto para hacer un checkpoint con Colab gratuito, jovencito:

Y magnus opus era muy largo, pero básicamente todo se resumía en la siguiente oración: usa Loras para afectar los tensores del checkpoint base y así podrás hacer tu modelo en 10 minutos (lo que lleva hacer un Lora).

  • ¡Pero eso no es hacer un checkpoint, embustero!

Podría decirse que no, no obstante, nadie aquí hace checkpoints, ya que nadie tiene un servidor de 50,000 dólares dedicado a eso. Por lo tanto, podríamos decir que lo que los alquimistas hoy en día llaman hacer un checkpoint es simplemente editar el original o editar la edición de la edición de la revisión de la copia del tercer manuscrito del original. Por lo tanto, ya que nadie entrena modelos desde cero en esta comunidad, podemos decir que hacer fine-tuning o "edición" a un checkpoint es hacer un checkpoint, o al menos eso es lo que el lenguaje popular nos ha llevado a decir.

Por lo tanto, si hacer un checkpoint es editarlo y editarlo es modificar los tensores para obtener un resultado, entonces toda la alquimia de Babilonia se resume a encontrar la manera de modificar los tensores de la forma más barata posible. Y ahí está la piedra filosofal, es decir, los Loras.

Imaginándonos los checkpoints como la X hacia donde buscamos llegar y el mapa del tesoro como el modelo base, entonces hay dos maneras de dibujar esa X en el modelo base:

Una es escribirla, y para eso debemos reentrenar el modelo haciendo que escriba en el mapa la ubicación exacta de la X. No obstante, eso es asquerosamente costoso computacionalmente, ya que tenemos que abrir el mapa, comprenderlo, entenderlo y luego ir con una regla buscando dónde está la X del tesoro en función de la escala del mapa que se esté usando. Esto es lo que se conoce como el fine-tuning tradicional, cosa prácticamente no usada por los alquimistas de Babilonia.

La otra opción es más simple. Agarramos un pedazo de papel nuevo y le escribimos una X. Es decir, hacemos un Lora. Luego agarramos ese cacho de papel y nuestra piedra filosofal, delicadamente, abrimos el mapa del tesoro. Después de un manotazo violento, empotramos la X del tesoro arriba del mapa y le empezamos a pegar con la piedra filosofal hasta que la X quede pegada al mapa, ¡y voilà! Tenemos el mapa del tesoro con X.

  • ¡Pero embustero, si haces eso, solo tendrás un mapa inútil con una X inútil, cuyo significado es una vil mentira! ¡No hay ningún tesoro debajo de esa X!

Ahí está el secreto de los alquimistas de Babilonia. ¡Nosotros no vendemos el tesoro, solo vendemos el mapa del tesoro!

  • ¡Ah! ¡Son tus mismas palabras las que te traicionan! ¡Ves cómo lo admite! ¡Es un mentiroso, una rata despreciable, un embustero!

Podría ser... o podría no serlo, ya que yo vendí el mapa del tesoro. Es cuestión de cada cliente ver si logra encontrar el tesoro con el mismo.

  • ¡Por supuesto que nunca lo hará! Si es un mapa inútil lo que diste, ¡mentiroso!

Ah, ahí está el segundo secreto de los alquimistas de Babilonia: ¡nunca digas cuál es el tesoro que oculta el mapa que vendes! De esta forma, en el camino hacia la X de nuestro explorador, la primera piedra brillante que se cruce en la zona donde la X se aloja será el tan preciado tesoro que el mapa indicaba.

  • ...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Para hacer esto prácticamente lo que hacemos a usar es un scrip de Kyoo, básicamente por que es el mas sencillo de usar , pese a que obliga saber un poquito de programación, no obstante la guiá sera imágenes, así que solo haz lo que hacen las imágenes siguiente proceso:

1- Se descarga un Modelo Base, el quieras que cumpla esta condiciones

---Es un Chekpoint

---Contiene Vae (Sino da error, es cuestion de probar, el error es algo como Head is to Large)

Como obtengo los links? (Clik izquierdo --> Copiar enlace --> Pegamos en url)

2-Se descargan las dependencias y los Loras. Cada Lora actuara como un punto de influencia de a donde queremos ir, es decir la X del mapa, por ejemplo un estilo de pixel art, un estilo de acuarela, un estilo anime, un estilo realista, un estilo de payasos chiquitos tocano la guitarra mientras cantan:

El formato es:

# !wget [LINK] -O [Nombre De Archivo].safetensors (NO hace falta poner el verdaero, es inventado)

En este caso tenes hasta 4 Loras ya armados, solo tenrias que cambiar el link del Lora por el que te guste. Si queres usar Menos podes borrar la linia y si queres mas solo tenes que copiar y pegar y agregar la linia y verificar cambiar el nombre del archivo a otro para que no se sobrescriban los modelos.

3-Se Aplica el Scrip. Para solo hay que cambiar los Loras , en funcion de la cantidad real que descargate, l chekpoint se hace automaticamente. Hay intruciones, cualquier cosa pregunta, en este caso s usan 4 Loras, por lo que hay 4 linias donde se guardan los archivos y 4 ratios.

#Para agregar un Lora hay que seguir la siguiente regla
#Se agrega un NUMERO en el --ratios POR LORA ==> 5 LORAS, 5 NUMEROS RATIOS ==> --ratios 1 1 1 1 1
#Se agrega una carpeta de descarga por  /content/[Nombre De Archivo].safetensors "\" <--Este indica que el codigo continua en la linia de abajo, si ejas un espacio vacio y no pones esto da error

Asegúrate de que haya un espacio después del \ al final de cada línea para separar correctamente los modelos--> Suele ser muy tiquismiqui esto.

Si no te conectate a GPU, Tendras este error y no podras hacerlo:

---El Lora se guarda en una de las carpetas del programa:

~~~~

Fucion de Loras;

Errores comunes, para la función de Loras se deben usar Loras de dimensiones idénticas, en general todos los Loras tienen las mismas dimensiones, así que no sera tan difícil, acá te ayudo a identificar cual es el que falla para sacarlo o remplazarlo:

Cuando anda el Modelo se guarda:

Y luego de unos segundo figurara:

~~~~~~~~~~~~

Dado que los chekpoints son muy pesados, es proferible no seguir consumiendo secion con la dsecarga lenta y subirlo a hugginface.

Lo unico complicado es obtener el Token y recordar que default viene en formato (SOLO LECTURA) Y Queremos el formato (ESCRIBIBLE)

~~~

~~~~~

Financial assistance: Hello everyone!

This is Tomas Agilar speaking, and I'm thrilled to have the opportunity to share my work and passion with all of you. If you enjoy what I do and would like to support me, there are a few ways you can do so:

~~~~~

Abrir en Gato

Abrir en Colab

Dudo que te sirva pero...

Aquí está la descripción de cada argumento agregado al ArgumentParser en la función setup_parser():

--v2: Argumento opcional que indica si se debe cargar un modelo de difusión estable de la versión 2.x. Si se proporciona este argumento en la línea de comandos, se establecerá como True. Este argumento no requiere un valor adicional.

--save_precision: Argumento opcional que especifica la precisión de guardado al fusionar modelos. Las opciones válidas son None (ninguna precisión específica), "float", "fp16" y "bf16". El valor predeterminado es None. Para utilizar este argumento, se debe proporcionar un valor adicional después de especificar el argumento en la línea de comandos, por ejemplo: --save_precision float.

--precision: Argumento opcional que especifica la precisión de fusión de modelos. Las opciones válidas son "float", "fp16" y "bf16". El valor predeterminado es "float". Para utilizar este argumento, se debe proporcionar un valor adicional después de especificar el argumento en la línea de comandos, por ejemplo: --precision fp16.

--sd_model: Argumento opcional que especifica el modelo de difusión estable a cargar. Puede ser un archivo ckpt o safetensors. Si se omite este argumento, se realizará la fusión de modelos LoRA. Para utilizar este argumento, se debe proporcionar un valor adicional después de especificar el argumento en la línea de comandos, por ejemplo: --sd_model model.ckpt.

--save_to: Argumento opcional que especifica el nombre del archivo de destino para guardar. Puede ser un archivo ckpt o safetensors. Si se omite este argumento, se utilizará el valor predeterminado. Para utilizar este argumento, se debe proporcionar un valor adicional después de especificar el argumento en la línea de comandos, por ejemplo: --save_to merged_model.ckpt.

--models: Argumento opcional que especifica los modelos LoRA a fusionar. Puede ser una lista de archivos ckpt o safetensors. Para utilizar este argumento, se deben proporcionar uno o más valores adicionales después de especificar el argumento en la línea de comandos, por ejemplo: --models model1.ckpt model2.ckpt.

--ratios: Argumento opcional que especifica las proporciones para cada modelo LoRA en la fusión. Debe ser una lista de valores numéricos. Para utilizar este argumento, se deben proporcionar uno o más valores adicionales después de especificar el argumento en la línea de comandos, por ejemplo: --ratios 0.5 0.5.

7

Comments