Creando una IA en casa (( Akili ))


ulikes

Miembro muy activo
Noder
Muy buenas noderos, llevo un tiempo por el foro, asomándome como los vagos, un par de veces de vez en cuando….. y bueno ahora que empezó el calorcillo del verano, me piqué con las dichosas IAs (Inteligencias Artificiales para los perdidos) y me dije, ¿Por qué no crear una IA desde 0?, ¿se podrá en un PC de andar por casa? Y me lie la manta a la cabeza para responder la pregunta.

No quiero entrar en muchos detalles técnicos, ya que pretendo solo explicaros el proyecto. Pero no es tomar un modelo ya disponible y reentrenarlo o instalarlo en local, para eso ya hay multitud de programas y facilidades… Pinokio y muchos más….

Para crear a Akili (así he llamado a la bebé IA), hay que entender que hay que tener claro que son muchas fases, muchos errores y bloqueos (no os imagináis cuanto tira de recursos la cabrona, cuando está procesando, entrenando etc..) y bueno como yo no dispongo de los recursos de OpenAi, Alibaba , Microsoft y compañía (de momento jajaja) toca tirar de optimizaciones puras. Pero para no aburriros os resumiré un poc las fases y sus retos.

1ro- Para que Akili aprenda a hablar, hay que alimentarla de datos, eso es texto, mucho texto, tanto texto, que me descargue la wikipedia en castellano, una vez descomprimida, casi 18 gigas. Y una vez con eso, tocaba limpiar los datos, para que solo quede el texto plano, sin símbolos, etiquetas HTML, etc… así que tuve que tirar de scripts presentes, modificarlos y adaptarlos para finalmente obtener un archivo plano de 9gb (se le quitó toda la morralla), pero darle a Akili 9 gigas del tirón, es como darle a un bebé un toro cocinado para que se lo coma de una vez… matas a la criatura fijo…. En este caso bloqueas el ordenador del tiron… asi que hubo que trocear esos 9 gigas en archivos de unos 100mb, y dejar el 99 % en una carpeta de entrenamiento y un 1% en otra carpeta para evaluación (así el modelo podrá comparar lo aprendido con los datos de validación que no conoce)

2do- El entrenamiento que es un coñazo, pero es la parte más importante, me obligaba continuamente a estar modificando los script para cambiar y afinar parámetros, por lo que me cansé y cree una GUI (vamos una aplicación de escritorio más o menos centralizada que me permite modificar y monitorear el entrenamiento) quizás esta sea la parte de la que mas estoy orgulloso, así cuando lance la versión BETA o la 1.0 podré darle a la peña una aplicación de escritorio que podrán usar para seguir entrenando a Akili o lo que quieran.

3ro- Inicialmente Akili será una IA conversacional vamos un LLM tipo chatgpt, Llama etc.. pero la idea es que si puedo afinarla y la peña quiere y puede colaborar, se pueda escalar e ir creciendo el modelo. Vamos que ya sé que no es la primera IA OPEN SOURCE del mundo, pero es la mía jajaja, en abierto sin “Black Box” ni ostias.

Deciros que no puedo entrenarla con mil gráficas ni leches, que soy pobre jajaja, así que la entreno con un equipo con 32gb de RAM, I5, y dos graficas RTX3060 Ti de 8gb. Vamos que tuve que configurar al entrenador de Akili con la opción de trabajo en paralelo, para distribuir la carga entre las gráficas (entretenido)

Solo deciros que hice un primer entrenamiento con pocos datos, para no petar el ordenador y no morirme de aburrimiento, y Akili, aun no sabe coordinar bien, pero ya dice sus primeras gilipolleces, ahora que empecé el entrenamiento con la wikipedia, espero que al menos aprenda a expresarse, ya os mantendré al tanto. Si tenéis preguntas, hacerlas e intentaré responderlas. Un Saludo noderos.

Os pongo un par de capturas del GUI para entrenamiento. Y las primeras palabras de Akili (entrenada con pocos megas de texto –Eran las pruebas preliminares-)

 

ulikes

Miembro muy activo
Noder
Buenas Noderos y vagos del mundo en general… quería simplemente actualizaros un poco el trabajo con Akili (La IA que estoy creando), si recordáis, os comenté que para entrenarla y que aprendiera el castellano, eran necesarios muchos dataset de texto…. Y a ser posible de calidad. Pues ya sabéis que me descargué la wikipedia en español y tuve que limpiarla y darle el formato necesario.

Eso se transformo en 9 gb de datos que para que Akili (y mi PC) no se atragántaran, se dividió en unos 900 y pico archivos de 100mb, y esos a su vez en “trocitos” más pequeños, el resultado es que Akili se tiene que “comer” 1583560 trozos. Y eso en teoría unas cuantas veces, solo para que sus neuronas, vayan “asociando palabras y aprendiendo conceptos” ese proceso es el más lento y pesado. Pero lo cierto es que al ser tanto texto, quizás no necesite ni siquiera llegar a terminar de “comerse” la wikipedia, cuando las métricas muestren que el aprendizaje está paralelo (será señal de que ya sabe asociar palabras y demás y de que se está estancando el aprendizaje). De momento lo que interesa es que suba la velocidad del aprendizaje poco a poco y baje la línea de perdida en el entrenamiento (señal de que cada vez se le escapan menos cosas)

No podéis imaginar que frustrante era al principio cuando muchos parámetros no estaban bien configurados o se te pasaba algo, ver que después de horas y días de entrenamiento no obtenías una “Shit” (MIERDA), o se te bloqueaba el PC y debías empezar de 0… eso me ha pasado varias veces, y ya sabéis, a males mayores soluciones de pobres jejeje.

El Panel de entrenamiento estaba configurado para que cada 5000 “trozos de carne” realizara una copia, ¿el problema? Que para que Akili se zampara esos 5000, debía pasar horas y horas, y me sucedió un par de veces, que el sistema ajustaba sus pesos y velocidad, y te desbordaba el PC al crear valores muy altos, y claro, vuelta a empezar tirándote de los pelos (en mi caso no, soy calvito hermoso); ¿solución de pobre? Configurar las copias cada 1000 trozos de carne, con eso resto unos minutos de procesamiento y aprendizaje mientras crea las copias, pero no pierdes en caso de error 5000 pasos. Por otro lado se configuró internamente al modelo, para que realice una evaluación preliminar de valores, antes de aplicarlos, así en caso de que esa evaluación muestre que los “números” se disparan (lo que da valores casi infinitos, que el PC no puede procesar), no los aplique y los vuelva a ajustar. Todo soluciones aprendidas a base de ostias, pero que queréis que os cuente, esto es España, y aquí no se leen manuales, nos dan una escopeta y nos liamos a tiros y ya luego si se atasca, leeremos el manual para ver que pasó.

Bueno no me enrollo más solo deciros que Akili, hasta ahora solo ha tenido tiempo de comerse 10000 trocitos de carne,,, del millón 583 mil 560 trozos jjjj. Pero este Menda, ya la alimenta sin muchas interrupciones (que soy padre primerizo)

Os dejo una captura, con algunas graficas para que podáis ver el avance y el reto… La gráfica global es la que se ve en la parte de abajo, ahí podéis ver que Akili era muy tonta al principio, empezó en 10,85 (nivel bruta como un arado) de un máximo teórico de 11 (tonta del culo, sin remedio) y el ideal es que llegue a 0 (nivel Einstein), pero vamos solo es un nivel teórico, si llega a 2 ya será la ostia.. de momento en las casi 10.000 “comidas ya va bajando su nivel de “analfabetismo”, es normal que fluctué arriba y abajo, siempre que la tendencia sea a la baja, está bien.

Las otras graficas son solo parciales de los últimos 1.000 trocitos, interesante puede ser ver que la velocidad de aprendizaje va subiendo (línea roja de puntos arriba a la derecha) esa velocidad hay que controlarla, porque si se acelera, seguro que al final se la pega, es como enseñarle la play a un crío y que el crío te diga que sí, que ya es un “máquina” sin nunca haberla tocado.. jajaja.

Bueno Noderos del mundo, ya os iré contando,,,,, buen verano.