Actualmente, los actores clave de la IA se pueden dividir en dos grupos principales: los partidarios de la IA de código abierto y los partidarios de la IA cerrada.
Curiosamente, uno de los mayores defensores de la IA cerrada es la propia OpenAI, que no publica el código fuente de sus modelos, sólo proporciona acceso a ellos. Generalmente argumentan que sería demasiado peligroso publicar estos modelos, por lo que es necesario un control centralizado, al igual que ocurre con la energía nuclear. Obviamente, este argumento tiene fundamento, pero no es difícil ver los intereses empresariales detrás de la decisión. Si el código fuente de ChatGPT estuviera disponible para todos, ¿quién pagaría por el servicio?
Por el contrario, los partidarios de la IA de código abierto, como Meta (Facebook), creen que la IA cerrada obstaculiza el progreso y que la IA de código abierto es la dirección correcta. Por supuesto, aquí también vale la pena ver los aspectos comerciales. Para Meta, el modelo de IA no es el producto principal. Para ellos, la IA es sólo una herramienta y compartir el modelo no supone una desventaja empresarial. Al contrario, proporciona una ventaja comercial, ya que Meta puede utilizar posteriormente los desarrollos de la comunidad. Sin embargo, también existe un pequeño problema con este modelo. No es verdaderamente de código abierto.
Un modelo de IA es esencialmente una enorme ecuación matemática con parámetros ajustables. Estos parámetros se establecen durante el proceso de formación. Siempre que una empresa habla de IA de código abierto, significa que estos parámetros son de libre acceso para que cualquiera pueda ejecutar el modelo en su máquina. ¡Pero no es completamente de código abierto!
En el caso de la IA, la formación es análoga a la construcción de programas tradicionales. En base a esto, los parámetros del modelo representan el archivo binario. Entonces, cuando Meta, X (Twitter) u otras compañías abren el código fuente de su modelo, en realidad solo están revelando el resultado.
Entonces lo que obtenemos es una parametrización de arquitectura fija. Si queremos cambiar o mejorar algo en la arquitectura, por ejemplo, usar una arquitectura Mamba en lugar de una arquitectura Transformer, necesitaríamos volver a entrenar el modelo, lo cual no podemos hacer sin el conjunto de entrenamiento. Por lo tanto, estos modelos sólo pueden perfeccionarse, no desarrollarse más.
Los llamados modelos de código abierto no son verdaderamente de código abierto, ya que la arquitectura es fija. Estos modelos sólo se pueden perfeccionar, pero no desarrollar más, ya que eso requeriría también el conjunto de entrenamiento. ¡La verdadera IA de código abierto consta tanto del modelo como del conjunto de entrenamiento!
Los modelos de IA de “código abierto” suelen ser productos de grandes empresas. Esto es comprensible, ya que entrenar un modelo grande requiere una enorme cantidad de capacidad computacional y, en consecuencia, mucho dinero. Sólo las grandes empresas tienen esos recursos, razón por la cual el desarrollo de la IA está centralizado.
Así como la tecnología blockchain en forma de Bitcoin creó la posibilidad de dinero descentralizado, también nos permite crear una IA verdaderamente de código abierto que sea propiedad de la comunidad en lugar de una empresa.
Este artículo es un concepto sobre cómo se podría desarrollar una IA verdaderamente de código abierto e impulsada por la comunidad utilizando la tecnología blockchain.
Como mencioné anteriormente, la base de una IA verdaderamente de código abierto es un conjunto de datos abiertos. El conjunto de datos es en realidad el recurso más valioso. En el caso de ChatGPT, por ejemplo, el modelo de lenguaje se entrenó en bases de datos disponibles públicamente (por ejemplo, Common Crawl) y luego se ajustó con asistencia humana (RLHF) en una fase posterior. Este ajuste es extremadamente costoso debido al trabajo humano involucrado, pero es lo que le da a ChatGPT su fortaleza. La arquitectura en sí es (presumiblemente) un transformador general o una versión modificada del mismo, la Mezcla de Expertos, lo que significa múltiples transformadores en paralelo. El punto clave es que la arquitectura no es especial. Lo que hace que ChatGPT (y cualquier otro modelo) sea único es el buen conjunto de datos. Esto es lo que le da al modelo su poder.
Un conjunto de datos de entrenamiento de IA suele tener un tamaño de varios terabytes, y lo que se puede o no incluir en dicho conjunto de datos puede variar según el grupo y la cultura. La elección de los datos es muy importante, ya que determinará, por ejemplo, la "personalidad" de un modelo de lenguaje grande. Han estallado varios escándalos importantes porque los modelos de IA de grandes empresas (Google, Microsoft, etc.) se comportaron de manera racista. Esto se debe a una selección inadecuada del conjunto de datos. Dado que los requisitos para el conjunto de datos pueden variar según la cultura, pueden ser necesarias varias bifurcaciones. Las soluciones de almacenamiento descentralizadas y dirigidas a contenidos, como IPFS o Ethereum Swarm, son ideales para almacenar grandes conjuntos de datos versionados y de múltiples bifurcaciones. Estas soluciones de almacenamiento funcionan de manera similar al sistema de control de versiones GIT, donde los archivos individuales se pueden abordar con un hash generado a partir del contenido. En tales sistemas, las bifurcaciones se pueden crear de forma económica porque solo es necesario almacenar los cambios y la parte común de los dos conjuntos de datos se almacena en una sola instancia.
Una vez que tengamos los conjuntos de datos adecuados, podemos continuar con el entrenamiento del modelo.
Como se mencionó en la introducción, un modelo de IA es esencialmente una ecuación matemática gigantesca con numerosos parámetros libres. En general, es cierto que cuantos más parámetros libres tiene un modelo, más "inteligente" es, por lo que el número de parámetros suele indicarse en el nombre del modelo. Por ejemplo, el modelo llma-2-7b significa que la arquitectura del modelo es llma-2 y tiene 7 mil millones de parámetros. Durante el entrenamiento, estos parámetros se configuran utilizando el conjunto de datos para que el modelo proporcione la salida especificada para la entrada dada. Para el entrenamiento se utiliza la retropropagación, que encuentra los parámetros más adecuados con la ayuda de derivadas parciales.
Durante el entrenamiento, el conjunto de datos se divide en lotes. En cada paso, un lote determinado proporciona los parámetros de entrada y salida, y la retropropagación se utiliza para calcular cómo se deben modificar los parámetros del modelo para calcular con precisión la salida dada a partir de la entrada dada. Este proceso debe repetirse varias veces en el conjunto de datos dado hasta que el modelo alcance la precisión deseada. La precisión se puede comprobar con el conjunto de datos de prueba.
Las grandes empresas llevan a cabo capacitaciones en clústeres masivos de GPU porque la capacitación requiere una enorme capacidad computacional. En un sistema descentralizado, un desafío adicional es que los nodos individuales no son confiables, ¡y siempre hay un costo asociado con la falta de confiabilidad! Esta falta de confiabilidad es la razón por la cual Bitcoin tiene el consumo de energía de un país pequeño. Bitcoin utiliza el consenso de Prueba de Trabajo, donde la capacidad computacional reemplaza la confiabilidad. En lugar de confiar en nodos individuales, confiamos en que los nodos bien intencionados poseen más capacidad computacional que los maliciosos en la red. Afortunadamente, existen otros mecanismos de consenso, como el Proof of Stake utilizado por Ethereum, donde el dinero apostado garantiza nuestra confiabilidad en lugar de capacidad computacional. En este caso, no hay necesidad de una gran capacidad computacional, lo que resulta en una demanda de energía y un impacto ambiental significativamente menores.
En la formación descentralizada, se necesita algún mecanismo para reemplazar la confianza entre el nodo de formación y el solicitante. Una posible solución es que el nodo de capacitación cree un registro de todo el proceso de capacitación y un tercero, un nodo validador, verifique aleatoriamente el registro en ciertos puntos. Si el nodo validador encuentra que la capacitación es satisfactoria, el nodo de capacitación recibe el pago ofrecido. El validador no puede verificar todo el registro, ya que eso significaría rehacer todos los cálculos y los requisitos computacionales de la validación serían iguales a los del entrenamiento.
Otra opción es la solución optimista, donde asumimos que el nodo realizó el cálculo correctamente y proporcionamos un período de desafío durante el cual cualquiera puede demostrar lo contrario. En este caso, el nodo que realiza el cálculo apuesta una cantidad mayor (penalización) y el nodo que solicita el cálculo también apuesta una cantidad (recompensa). El nodo realiza el cálculo y luego publica el resultado. A esto le sigue el período de desafío (por ejemplo, 1 día). Si alguien encuentra un error en el cálculo con comprobaciones aleatorias durante este período y lo publica, recibe la penalización impuesta por el nodo informático y el solicitante recupera su recompensa. Si nadie puede demostrar que el cálculo es incorrecto durante el período del desafío, el nodo informático recibe la recompensa.
Existe una variante de pruebas de conocimiento cero llamada zkSNARK, que también es adecuada para verificar que alguien ha realizado un cálculo. La principal ventaja de este método es que la verificación se puede realizar de forma económica, pero generar la prueba es una tarea computacional intensiva. Dado que este método es muy costoso incluso para cálculos más simples, requeriría significativamente más recursos computacionales para el entrenamiento de IA que el entrenamiento en sí, por lo que probablemente no podamos usarlo para este propósito en este momento. Sin embargo, zkML es un área de investigación activa y es posible que en el futuro el tercero pueda ser reemplazado por un contrato inteligente que verifique el SNARK.
De lo anterior, queda claro que existen varias soluciones para verificar los cálculos. En base a esto, veamos cómo se construiría nuestro sistema de apoyo a la capacitación descentralizado basado en blockchain.
En este sistema, los conjuntos de datos son propiedad de la comunidad a través de DAO. La DAO decide qué datos se pueden incluir en el conjunto de datos. Si un grupo de miembros no está de acuerdo con la decisión, pueden separarse de la DAO y formar una nueva DAO, donde bifurcan el conjunto de datos existente y continúan construyéndolo de forma independiente. Por tanto, la DAO se bifurca junto con el conjunto de datos. Dado que el conjunto de datos se almacena en un almacenamiento descentralizado dirigido a contenido (por ejemplo, Ethereum Swarm), la bifurcación no es costosa. El almacenamiento del conjunto de datos está financiado por la comunidad.
El proceso de formación también está controlado por un DAO. A través de DAO, los nodos de capacitación que deseen vender su capacidad computacional sobrante pueden registrarse. Para postularse, deben apostar en un contrato inteligente. Si un nodo intenta hacer trampa durante el cálculo, perderá esta apuesta.
El solicitante selecciona el conjunto de datos y el modelo que desea entrenar y luego ofrece una recompensa. La oferta es pública, por lo que cualquier nodo de formación puede postularse para realizar la tarea. El nodo de capacitación crea un registro completo del proceso de capacitación, donde cada entrada corresponde a la capacitación de un lote. La entrada incluye la entrada, la salida, la matriz de ponderación y todos los parámetros relevantes (por ejemplo, la semilla aleatoria utilizada por la capa de abandono para seleccionar los datos que se eliminarán). Por tanto, todo el cálculo se puede reproducir basándose en el registro.
Como se mencionó anteriormente, se pueden utilizar varios métodos para verificar el cálculo. El más simple es el enfoque optimista. En este caso, el solicitante coloca la recompensa en un contrato inteligente y el nodo de formación publica el registro de formación. Después de la publicación, se dispone de un período de tiempo específico (por ejemplo, 1 día) para verificar el cálculo. Si durante este tiempo el solicitante o cualquier otra persona presenta pruebas de que un paso en particular es incorrecto, el nodo de entrenamiento pierde su participación y el solicitante recupera la recompensa. En este caso, el nodo que envía la prueba correcta recibe la apuesta, lo que incentiva a todos a validar los cálculos. Si nadie presenta dicha prueba, el nodo de entrenamiento recibe la recompensa una vez transcurrido el tiempo.
En pocas palabras, así es como funciona el sistema. Por supuesto, surgen algunas preguntas.
El modelo de negocio del sistema es el mismo que el de la mayoría de las soluciones gratuitas y de código abierto, como el modelo de negocio de Linux. Si una empresa necesita un modelo y no tiene ningún problema en que sea gratuito y de código abierto, es mucho más rentable invertir en él que entrenar su propio modelo. Imaginemos que 10 empresas necesitan el mismo modelo lingüístico. Si no les importa que el modelo sea abierto, es mucho más económico que cada uno pague 1/10 del costo de capacitación en lugar de que cada uno pague el monto total. Lo mismo se aplica a los conjuntos de datos que forman la base del entrenamiento. Incluso se pueden crear campañas de crowdfunding para modelos de formación, donde los futuros usuarios del modelo puedan contribuir a su desarrollo.
Dado que los precios en un sistema de este tipo están regulados por el mercado, es difícil dar una respuesta definitiva. Depende de cuánta capacidad computacional gratuita esté disponible para los usuarios. Ya hemos visto el poder de la comunidad con Bitcoin. La capacidad computacional de la red Bitcoin supera a la de cualquier supercomputadora. Los proveedores de la nube necesitan generar ganancias, mientras que en un sistema descentralizado como este, los usuarios ofrecen su capacidad computacional adicional. Por ejemplo, alguien con un PC gaming potente puede ofrecer su capacidad sobrante cuando no esté jugando. En este caso, si el servicio genera algo más que la energía utilizada, ya merece la pena para el usuario. Además, hay una gran cantidad de energía desperdiciada en el mundo que no se puede utilizar por medios tradicionales. Un ejemplo de esto es la energía térmica producida por los volcanes. Estos lugares normalmente no cuentan con una red eléctrica establecida, lo que los hace inadecuados para generar electricidad utilizable. Ya hay startups que utilizan esta energía para la minería de Bitcoin. ¿Por qué no utilizarlo para la "minería de inteligencia"? Dado que en este caso la energía es prácticamente gratuita, sólo es necesario cubrir el coste del hardware. Así, es evidente que hay muchos factores que podrían hacer que la formación en un sistema tan descentralizado sea mucho más económica que en la nube.
En el caso de ejecutar modelos de IA, la privacidad es una cuestión muy importante. Naturalmente, los grandes proveedores de servicios garantizan que manejan nuestros datos de forma confidencial, pero ¿podemos estar seguros de que nadie escucha nuestras conversaciones con ChatGPT? Existen métodos (por ejemplo, cifrado homomórfico) que permiten a los servidores realizar cálculos sobre datos cifrados, pero conllevan elevados gastos generales. La solución más segura es ejecutar los modelos localmente. Afortunadamente, el hardware es cada vez más potente y ya existen soluciones de hardware especializadas para ejecutar IA. Los propios modelos también están mejorando significativamente. Las investigaciones muestran que, en muchos casos, el rendimiento no se degrada mucho incluso después de la cuantificación, incluso en casos extremos en los que sólo se utilizan 1,5 bits para representar los pesos. Esta última solución es particularmente prometedora porque elimina la multiplicación, que es la operación más costosa. Así, en el futuro, gracias al desarrollo de modelos y hardware, es probable que ejecutemos modelos que superen el nivel humano a nivel local. Además, podemos personalizar estos modelos a nuestro gusto con soluciones como LoRA.
Otra dirección muy prometedora es la generación aumentada por recuperación (RAG). Esto significa que el "conocimiento léxico" se almacena en una base de datos vectorial y nuestro modelo de lenguaje recopila el contexto apropiado de esta base de datos para la pregunta dada. Esto es muy similar a cómo funcionamos los humanos. Es evidente que nadie memoriza un léxico completo. Cuando se hace una pregunta, basta con saber dónde encontrar los conocimientos necesarios. Al leer e interpretar las entradas relevantes, podemos proporcionar una respuesta coherente. Esta solución tiene numerosas ventajas. Por un lado, es suficiente un modelo más pequeño, que es más fácil de ejecutar localmente, y por otro lado, se pueden minimizar las alucinaciones, un problema importante en los modelos de lenguaje. Además, el conocimiento del modelo se puede ampliar fácilmente sin necesidad de volver a capacitarlo, simplemente agregando nuevos conocimientos a la base de datos de vectores. Ethereum Swarm es una solución ideal para crear una base de datos vectorial de este tipo, ya que no solo es un motor de almacenamiento descentralizado sino también una solución de comunicación. Por ejemplo, la mensajería grupal se puede implementar a través de Swarm, lo que permite la creación de una base de datos vectorial distribuida simple. El nodo publica la consulta de búsqueda y los demás nodos responden devolviendo el conocimiento relacionado.
La idea de LLM OS proviene de Andrej Karpathy, que publicó en Twitter. LLM OS es un sistema operativo hipotético centrado en un modelo de lenguaje grande. En nuestro sistema distribuido basado en blockchain, podemos considerarlo como un agente que se ejecuta en el nodo de un usuario. Este agente puede comunicarse con otros agentes y herramientas tradicionales de Software 1.0. Estos pueden incluir una calculadora, un intérprete de Python o incluso controlar un robot físico, un automóvil o una casa inteligente. En nuestro sistema, el sistema de archivos está representado por Swarm y la base de datos vectorial creada sobre Swarm, donde se puede acceder al conocimiento común. Todo el sistema (el colectivo de agentes) puede verse como una forma de inteligencia colectiva.
Creo que en el futuro la inteligencia artificial pasará a formar parte de nuestra vida diaria, de forma mucho más integral que ahora. ¡La IA se convertirá en parte de nosotros! En lugar de teléfonos móviles, usaremos gafas inteligentes con cámaras que graban todo y micrófonos que escuchan todo. Mantendremos diálogos continuos con nuestros modelos de lenguaje que se ejecutan localmente y otros agentes, que se adaptarán a nuestras necesidades con el tiempo mediante ajustes. Pero estos agentes no sólo se comunicarán con nosotros sino también entre sí, utilizando constantemente el conocimiento colectivo producido por toda la comunidad. Este sistema organizará a la humanidad en una forma de inteligencia colectiva, lo cual es algo muy significativo. No es aceptable que esta inteligencia colectiva pase a ser propiedad de una única empresa o entidad. ¡Es por eso que necesitamos los sistemas descritos anteriormente, o similares!