viernes, 17 de febrero de 2023

Entrenando una IA de codigo abierto


Siempre me ha fascinado la capacidad que tienen muchas personas de realizar laboriosas tareas por las que no reciben ningún pago, tareas no relacionadas con su trabajo remunerado. Hace ya más de 10 años exploraba este tema en mi blog probando yo mismo a escribir un artículo en Wikipedia para concluir que la principal motivación que me llevó a hacerlo era la terrible relación con mi antiguo jefe, su pésima gestión de su equipo de trabajo, la nula motivación que me transmitía, y mi frustración y desmotivación en ese momento en el mercado laboral.
Por suerte para mi salud mental y mi carrera laboral no tuve que soportar mucho más en esa situación, porque mi jefe se jubiló (al fin), y los que le han sucedido han demostrado ser mucho mejores gestores, líderes, y personas en general.
Revisando este texto ahora, una de las conclusiones que saqué es que en un trabajo la vieja estrategia de motivación que llaman “el burro y la zanahoria” no es demasiado efectiva, ya que de esa manera no se consiguen grandes resultados, más bien al contrario.  La motivación de la mayoría de nosotros no funciona con este juego de “recompensa por tu productividad”, sobre todo si se trata de una recompensa monetaria.  Sorprendentemente, los factores que más motivan a las personas para dar lo mejor de sí son, básicamente, estos tres: tener autonomía, desarrollar sus habilidades o maestrías, y tener un objetivo claro.
Todo esto me viene a la mente ahora porque, a pesar de estar mucho más realizado y motivado en mi trabajo actualmente, me he vuelto a descubrir realizando un importante esfuerzo en tareas no remuneradas (disclaimer: por supuesto fuera de mi horario laboral). 


Parece que fue ayer (y prácticamente fue ayer) cuando ChatGPT, el chatbot conversacional de la empresa Open IA, llegó al mundo sorprendiendo por sus impresionantes capacidades de comprender el lenguaje natural, respondernos a muchas dudas, y llevar a cabo muchísimas funciones. El mundo de las IAs se mueve muy rápido, y los gigantes del sector tecnológico, Microsoft con Bing Chat y Google con su asistente Bard ya se han posicionado para dominar este nuevo sector. Pero ha surgido una interesante alternativa, basada en código abierto, que se llamará Open Assistant.

Personalmente tengo la fuerte convicción de que las únicas tecnologías escalables y sostenibles a largo plazo son los modelos libres y abiertos, como por ejemplo los programas Open Source. La naturaleza libre y abierta de los modelos de tecnología permite una mayor participación y colaboración de la comunidad, lo que lleva a una mayor innovación y mejora continua. Los programas Open Source se basan en esta filosofía, ya que el código fuente está disponible para que cualquiera pueda examinarlo, modificarlo y mejorarlo, lo que lleva a una mayor calidad y fiabilidad. Además, los modelos libres y abiertos permiten que la tecnología sea escalable a una mayor escala, ya que no dependen de una única empresa o entidad para su desarrollo y mantenimiento. En lugar de eso, una comunidad de desarrolladores y usuarios puede trabajar juntos para mejorar y mantener el software de forma colaborativa, para identificar y solucionar errores. Esta labor es muy importante para investigadores, empresas, organizaciones, etc. Al ser de código abierto, la responsabilidad de su uso recae en la comunidad, en lugar de una empresa o individuo en particular. Esto fomenta una cultura de responsabilidad colectiva, donde la comunidad se asegurará de que esta IA se utilice de manera ética y responsable. Por otro lado, la comunidad puede contribuir a la IA de manera más amplia y diversa. Al ser de código abierto, es más fácil crear interfaces y aplicaciones que permitan su uso para fines éticos y sociales. Esto puede ayudar a garantizar que la perspectiva de diferentes grupos sea considerada y reflejada en el modelo de IA. Por ejemplo, se podría utilizar la IA para crear chatbots que brinden información sobre derechos humanos, salud pública, o temas similares.
En cualquier caso, a pesar de que personalmente esté convencido de que una alternativa Open Source como Open Assistant vaya a ser muy útil para nosotros, la pregunta es ¿por qué tendría yo (o tú) que colaborar de manera altruista a mejorarla?
Aquí es donde entra la valoración personal de cada uno sobre lo que implica participar en el entrenamiento de una herramienta como ésta. Cada uno se deberá responder a una serie de dudas: si esta herramienta servirá para favorecer el desarrollo de la humanidad, o si por el contrario está favoreciendo a la pérdida de trabajos; si esta IA me puede perjudicar a mí personalmente, o a algunas personas o comunidades cercanas a mí; si algunas compañías privadas se pueden beneficiar de mi esfuerzo altruista (no olvidemos que la característica esencial del Open Source es que está abierto a todos, incluido las empresas privadas con ánimo de lucro); etc. Estamos tratando con tecnologías revolucionarias que a cada uno le pueden afectar de manera diferente.

En mi caso, la reflexión fue corta, ya que estoy convencido que este tipo de herramientas de inteligencia artificial serán una revolución que llevará a un avance importante a la Humanidad, permitiéndonos resolver problemas complejos y abordar desafíos globales, mejorar nuestras vidas, y transformar el mundo de maneras que aún no podemos imaginar. 

Bueno, pues después de esta introspección necesaria, me puse al tajo. La tarea es ambiciosa, la construcción de un dataset de la IA. Para aclarar una duda que suele tener la gente, en realidad no vamos a crear una base de datos de respuestas. La base de conocimiento que estamos ayudando a crear servirá para darle forma a cómo Open Assistant va a dialogar con nosotros en el futuro. El chatbot generalizará todos los inputs de nosotros, los humanos, para poder crear otras respuestas totalmente nuevas en el futuro, cuando sea la propia IA la que esté dialogando con los humanos.

En resumen, mi labor durante todo el tiempo que he dedicado a mejorar el dataset de la IA ha sido realizar una serie de contribuciones:

- Proponer prompts iniciales: proponer preguntas que un humano realizaría a una IA, por ejemplo “¿cuáles son los planetas del Sistema Solar?”

- Valorar el prompt que otro usuario ha hecho (indicar si es de buena calidad, original, no contiene spam o contenido inadecuado, etc.)

- Dar una respuesta al prompt como si fueramos el propio asistente.  Es decir, elaborar una respuesta completa a una pregunta cualquiera, por ejemplo "Dame la receta clásica de una paella valenciana"

- Evaluar la respuesta que otro usuario ha dado, mientras jugaba el rol del asistente.

- Ordenar respuestas del asistente.  Valorar de mejor a peor las diferentes respuestas que otros usuarios han dado.

En definitiva, se trata de que el asistente tenga una buena muestra de ejemplos en nuestro idioma para que luego el asistente se pueda expresar correctamente en español, y que pueda en un futuro responder a nuestras propias cuestiones.

Como decía al principio, he realizado un importante esfuerzo en esta inmensa tarea colaborativa, y lo he realizado de manera altruista, con mucha satisfacción, con un objetivo claro: formar parte de esta revolución. Nunca hemos tenido tan cerca la oportunidad de formar parte de una revolución de la civilización humana, la creación y desarrollo de las inteligencias artificiales. 

Sea a lo que sea a lo que evolucione esto en un futuro, yo podré decir con nostalgia (y espero que satisfacción):

“yo estuve allí”.