Un desarrollador creó una versión del modelo de lenguaje Qwen 3.5 de 4B que contiene un procesador funcional dentro de sus propios pesos. El proyecto, llamado Qwenputer, puede ejecutar operaciones aritméticas, código C y MicroPython sin llamar a una herramienta externa, complemento o entorno aislado. El cálculo ocurre durante la generación ordinaria de texto del modelo.

\n

Divyansh Agrawal, quien publicó el proyecto, lo describe como un modelo Qwen 3.5 de 4B estándar con una sola adición. Incrustado en los pesos hay un núcleo RISC-V de 32 bits que implementa el conjunto de instrucciones RV32IM, junto con la extensión Zba y una pequeña unidad para aritmética de números grandes. El procesador ocupa 11 capas delante de las 32 capas existentes del modelo.

\n

El truco se apoya en una parte de Qwen 3.5 que ya existe. Tres de cada cuatro capas de atención del modelo usan Gated DeltaNet, una red neuronal recurrente lineal. Cada cabeza de atención mantiene una matriz de estado, y ese estado normalmente guarda un resumen mezclado y desvaneciente de lo que ocurrió antes. Agrawal descubrió que, al fijar la compuerta en 1 y la fuerza de escritura en 1, y al usar claves de un solo caliente (one-hot), cada escritura sobrescribe exactamente una fila y cada consulta lee un valor exacto. Así, las capas se convierten en memoria direccionable.

\n

La ventaja está en el costo. El estado de una cabeza Gated DeltaNet mantiene el mismo tamaño sin importar cuánto dure una conversación, a diferencia de la caché clave-valor en la que se apoya la atención estándar. Agrawal explica que la CPU guarda sus registros, su memoria y su contador de programa en esas filas.

\n

La idea de que la regla delta puede funcionar como memoria asociativa no es nueva. Schlag y colaboradores demostraron en 2021 que la atención lineal con la regla delta funciona de esa manera. La contribución de Agrawal es volver esa memoria exacta y direccionable dentro de un modelo de producción, lo bastante confiable como para ejecutar un procesador completo.

\n

No fue necesario entrenar. Un compilador establece los pesos directamente a partir de una descripción de la CPU como una larga lista de pasos pequeños, como leer un registro, sumar dos números o saltar si es cero. Cada paso se convierte en parte de una capa del transformador. Las cabezas de atención realizan búsquedas, las unidades feed-forward manejan las operaciones matemáticas y las cabezas recurrentes mantienen la memoria. Cada instrucción produce unos pocos tokens generados, y la CPU funciona a medida que el modelo los decodifica.

\n

Para que Qwen use el procesador de forma confiable, Agrawal reutilizó el formato de llamadas a herramientas que el modelo ya conoce bien. Qwen envía instrucciones a la CPU y lee los resultados. Un pequeño controlador, llamado RvChat, carga el firmware en el estado recurrente y mantiene los tokens de traza del procesador fuera de las capas de texto del modelo. Los pesos originales no cambian. Los nuevos circuitos se ubican junto a ellos, en dimensiones y capas adicionales.

\n

Resultados de las pruebas

\n

En los conjuntos aritméticos de DeepMind, Qwenputer obtuvo 97,5 % en división de números grandes. Un Qwen 3.5 de 4B base con una herramienta de Python obtuvo 95 % en la misma prueba, y el modelo sin modificar obtuvo 72,5 %. En multiplicación de números grandes, Qwenputer obtuvo 97,5 %, la versión con herramienta de Python logró 100 % y el modelo base obtuvo 55 %. En un conjunto mixto de multiplicación y división con problemas más largos, Qwenputer alcanzó 100 %, frente a 97,5 % de la versión con Python y 90 % del modelo base. En suma y resta de números grandes, Qwenputer igualó a la versión con Python con 97,5 %, frente a 87,5 % del modelo base.

\n

En la prueba de aritmética de enteros largos NUPA, Qwenputer pasó de 48,6 % a 100 %, el mismo resultado que la configuración con herramienta de Python. Agrawal afirma que reprodujo unas 230.000 posiciones de salida de la CPU contra una máquina de referencia y no encontró discrepancias. También informa que el texto ordinario del modelo apenas cambió, con una divergencia respecto al Qwen base que se encuentra dentro del margen de ruido de la medición.

\n

Un sistema de archivos dentro del modelo

\n

Agrawal también agregó un sistema de archivos experimental. El modelo puede guardar, añadir, leer, listar y eliminar archivos mediante operaciones internas, de nuevo sin llamadas a herramientas externas. Los nombres de los archivos se convierten mediante una función hash en una de 1.024 ranuras de un directorio guardado en el estado recurrente, y el texto de cada archivo se almacena en otras cabezas, con ocho tokens por fila. El sistema admite hasta 512 archivos, o unos 53.000 tokens de texto.

\n

Como el estado puede guardarse, el sistema de archivos puede conservarse entre conversaciones. Agrawal dice que Qwen recuperó correctamente hechos que habían cambiado entre chats en el 90 % de los casos, frente al 30 % cuando los chats anteriores se pegaban de nuevo. En esa prueba tuvo un desempeño similar al de las herramientas de memoria ejecutadas con Python, con 83,3 % frente a 78,9 %. Agrawal describe el sistema de archivos como todavía experimental.

\n

El proyecto tiene límites claros. El punto de control pesa 18,8 GB, aproximadamente el doble del modelo base, aunque la mayor parte corresponde a relleno de ceros. Necesita el controlador RvChat y todavía no funciona con una llamada simple a generate(). Cada instrucción de la CPU cuesta varios tokens decodificados, por lo que un cálculo grande toma segundos y no milisegundos. El ejecutor por lotes que se usó en las pruebas procesó unos 3.200 tokens de CPU por segundo en una GPU L4.

\n

Entre los próximos objetivos de Agrawal están lograr que Qwen escriba Python y lo ejecute en el MicroPython que tiene dentro de sus pesos, y hacer que la CPU sea más rápida. El código está en GitHub, y los modelos están en Hugging Face y ModelScope.

Este artigo foi escrito com a assistência de IA.
News Factory APP - notícias agênticas para impulsionar seu SEO e AEO.