Construir con IA

Compilar la CPU de NES en los pesos de un modelo de lenguaje Qwen3.5

Un nuevo proyecto compila directamente la CPU 6502 del Nintendo Entertainment System en los parámetros de un modelo estándar Qwen3.5, permitiendo ejecutar juegos sin necesidad de entrenamiento.

Un cartucho vintage de NES insertado en un cubo translúcido de conexiones neuronales brillantes.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

El desarrollador David Breunig ha lanzado nesformer, un proyecto que compila la CPU 6502 del Nintendo Entertainment System directamente en los pesos de un modelo de lenguaje estándar Qwen3.5. Publicado a finales de octubre de 2026, este trabajo demuestra que un gran modelo de lenguaje puede ejecutar código binario tratando su estado interno como memoria de máquina, en lugar de aprender comportamientos a partir de datos.

Qué ocurrió

El proyecto se basa en trabajos anteriores llamados Qwenputer, que compilaban arquitecturas más simples como CHIP-8 y RISC-V en Qwen3.5-4B. Nesformer avanza esto al dirigirse al procesador MOS 6502, el corazón de la NES. En lugar de entrenar el modelo con grabaciones de jugabilidad o código ensamblador, Breunig utilizó un compilador para calcular cada uno de los pesos del checkpoint. El modelo resultante es un checkpoint estándar de Hugging Face que se carga con Qwen3_5ForCausalLM.from_pretrained y no requiere código personalizado para su inicialización.

El repositorio incluye una interfaz de línea de comandos que permite a los usuarios ejecutar ROMs de NES. Al ejecutarse, el modelo genera una secuencia de tokens que representa el registro de ejecución de la CPU. Un programa host separado gestiona el hardware periférico, como la Unidad de Procesamiento de Imágenes (PPU) para gráficos y las entradas del controlador. El sistema ejecuta con éxito ROMs de prueba como Thwaite y Full Game, produciendo una salida perfecta cuadro por cuadro que coincide con los emuladores tradicionales. También soporta Super Mario Bros., siempre que el usuario proporcione el archivo ROM.

Cómo funciona

El mecanismo central depende de la arquitectura Gated DeltaNet dentro del modelo Qwen3.5. En esta configuración, la matriz de estado interno del modelo funciona como la memoria de acceso aleatorio (RAM) de la computadora. Cada fila en la matriz de estado de 128x128 actúa como una celda de memoria. Mediante el uso de claves y consultas one-hot, el modelo puede sobrescribir filas específicas para escribir datos o leerlas para recuperar valores. Esto permite que los 2 KB de RAM de trabajo, los 32 KB de ROM de programa y los registros de la CPU residan completamente dentro de los pesos y el estado del modelo.

El proceso de compilación mapea las puertas lógicas y los códigos de operación (opcodes) del 6502 a las capas del modelo. El circuito abarca siete capas Gated DeltaNet. La primera capa ancla el contador de programa y almacena las banderas, mientras que las capas subsiguientes gestionan la obtención de instrucciones, la decodificación de direcciones y las operaciones aritméticas. La última capa predice el siguiente token en la traza de ejecución. Dado que los pesos se calculan matemáticamente a partir del diseño del circuito, son dispersos: de 466,6 millones de parámetros, solo 9,3 millones son distintos de cero, lo que permite comprimir el checkpoint a tan solo 3,3 MB.

El programa host gestiona todo lo externo a la CPU. Inyecta tokens para interrupciones no enmascarables (NMI) durante el vblank y proporciona datos de entrada cuando la CPU lee desde los registros de E/S. Para gestionar la velocidad, el host detecta bucles inactivos donde la CPU espera el vblank y omite las iteraciones redundantes, avanzando el reloj directamente al siguiente evento. Esta optimización reduce significativamente el número de tokens, aunque el sistema aún funciona aproximadamente entre 150 y 290 veces más lento que el hardware real.

Detalles clave

  • El modelo utiliza la arquitectura Qwen3.5-4B con 7 capas Gated DeltaNet y un tamaño oculto de 768.
  • Solo 9,3 millones de los 466,6 millones de parámetros son distintos de cero, resultando en un checkpoint comprimido de 3,3 MB.
  • El sistema soporta cartuchos NROM (mapper iNES 0), pero aún no soporta mappers de cambio de banco como MMC1 o MMC3.
  • La velocidad de ejecución varía desde 10 tokens por segundo con transformers estándar hasta 1.650 tokens por segundo con un motor compilado con numba.
  • El programa host gestiona el renderizado de la PPU y la entrada del controlador, inyectando los tokens necesarios en el contexto del modelo.
  • Los opcodes no oficiales y los saltos a la RAM hacen que la emulación se detenga, ya que el circuito solo implementa instrucciones oficiales del 6502.

Por qué importa

Para ingenieros e investigadores de IA, nesformer ofrece un ejemplo concreto de cómo los internos de los transformers pueden reutilizarse para computación determinista. Desafía la suposición de que los modelos grandes deben entrenarse con vastos conjuntos de datos para realizar tareas complejas. Al compilar lógica directamente en los pesos, los desarrolladores pueden crear modelos que garanticen comportamientos específicos, ofreciendo un camino hacia sistemas de IA más verificables y transparentes. Este enfoque separa la parte de "pensamiento" del modelo de la gestión del "estado", aclarando cómo los mecanismos de atención pueden imitar el acceso a la memoria.

Para los desarrolladores de software interesados en la emulación, este proyecto destaca los compromisos entre precisión y rendimiento. Si bien el modelo produce resultados bit-perfectos para los juegos compatibles, la sobrecarga computacional es inmensa en comparación con la emulación tradicional. Sin embargo, la capacidad de ejecutar código ejecutable dentro de un checkpoint LLM estándar abre nuevas vías para integrar lógica de software heredada en pipelines de IA modernos sin requerir intérpretes externos o máquinas virtuales.

Qué puedes hacer

  • Instala las dependencias requeridas, incluyendo torch>=2.6 y transformers>=5.22, para ejecutar el checkpoint con bibliotecas estándar.
  • Usa la bandera --show en la CLI para renderizar cuadros de juego directamente en tu terminal si esta soporta color de 24 bits.
  • Ejecuta el comando check para comparar la salida del modelo contra una implementación de CPU de referencia y verificar la corrección.
  • Proporciona tus propios archivos .nes NROM, como Donkey Kong o Excitebike, para probar la compatibilidad con diferentes juegos.
  • Experimenta con la opción de script --buttons para automatizar las entradas del controlador y probar secuencias específicas de juego.
  • Explora el archivo nesformer/spec.py para entender las familias de tokens y cómo se codifica cada instrucción de la CPU.
  • #ai engineering
  • #llm internals
  • #emulation
  • #qwen
  • #compilers

Herramientas de la Tienda de Bytechap

$89

DocBento

Gestión documental autoalojada que lee cada escaneo y responde con citas de página.

Demo en vivo
$79

WorkBento

Suite de RR. HH. y gestión del entorno laboral impulsada por IA que puedes alojar tú mismo.

Demo en vivo

Seguir leyendo

Todos los artículos