Por Canuto  

Un proyecto alojado en GitHub llevó un transformer real, de tipo decoder-only y con cerca de 25.000 parámetros, a una Commodore 64 sin modificar. El experimento no busca competir con los grandes modelos actuales, sino demostrar que la arquitectura base de los chatbots modernos puede funcionar incluso en una máquina de 1982, aunque lo haga a una velocidad extrema de un minuto por token.
***

  • Soul Player C64 ejecuta un transformer real en una Commodore 64 de 1 MHz sin modificar.
  • El modelo usa 2 capas, atención causal multi-head, softmax real y unos 25.000 parámetros int8.
  • El sistema cabe en un disquete, pero tarda cerca de 60 segundos por token en hardware real.


La idea de ejecutar inteligencia artificial moderna sobre hardware antiguo suele sonar a experimento imposible. Sin embargo, un proyecto publicado en GitHub demuestra que un transformer real, de tipo decoder-only, puede correr en una Commodore 64 original, una computadora de 1982 con procesador de 1 MHz y recursos de memoria muy limitados.

El proyecto se llama Soul Player C64 y fue desarrollado por gizmo64k. Según la descripción del repositorio, se trata de un transformer de 2 capas implementado en ensamblador 6502/6510 escrito a mano, capaz de generar texto en una Commodore 64 sin modificar, cargado desde disquete y con un tamaño que aún deja espacio libre en el medio de almacenamiento.

Más allá del componente nostálgico, el experimento también funciona como demostración técnica. En la práctica, intenta probar que la arquitectura central detrás de sistemas como ChatGPT, Claude y Gemini no depende exclusivamente de centros de datos masivos, aunque sí requiera recortes drásticos cuando se la traslada a una máquina doméstica de hace más de cuatro décadas.

El modelo es pequeño y sus limitaciones son explícitas. El propio repositorio advierte que no es inteligente, que generará frases rotas y que ese es precisamente el punto: confirmar que la arquitectura funciona incluso a una escala extrema, con apenas cerca de 25.000 parámetros, frente a modelos actuales que operan con órdenes de magnitud inmensamente superiores.

Cómo está construido el transformer para Commodore 64

La arquitectura usa 2 capas, 4 cabezas de atención con 8 dimensiones por cabeza, embeddings de 32 dimensiones y una red feed-forward con 64 unidades ocultas. El vocabulario es de 128 tokens, que incluye 4 especiales, 34 caracteres y signos de puntuación, además de 90 fusiones BPE.

Todo el sistema trabaja con pesos cuantizados a int8 y activaciones de punto fijo Q8.8 sobre int16. También emplea RMSNorm real, atención causal multi-head real y softmax real. En otras palabras, no se trata de una simulación conceptual o de una simplificación extrema del mecanismo, sino de una implementación funcional de varios bloques esenciales de un transformer moderno.

El repositorio detalla que el avance decisivo llegó al corregir la normalización de los puntajes del softmax. Desplazar los puntajes de atención 14 bits en lugar de 17 permitió que una tabla de búsqueda exp de 128 entradas tuviera suficiente rango dinámico para producir pesos de atención útiles. Antes de esa corrección, la atención era casi uniforme en todas las posiciones, lo que dejaba al modelo prácticamente ciego.

Esa observación es importante porque muestra un problema clásico al adaptar redes neuronales a hardware restringido: no basta con reducir tamaño y precisión. También hay que preservar señales numéricas clave, ya que un pequeño error de escala puede volver inservible una arquitectura que, en teoría, estaba bien diseñada.

Rendimiento, memoria y límites prácticos

La Commodore 64 no fue diseñada para cargas de trabajo de inteligencia artificial. Por eso, uno de los datos más llamativos del proyecto es su velocidad: alrededor de 60 segundos por token en hardware real. Una respuesta completa puede tardar varios minutos, mientras el borde de la pantalla parpadea para indicar que el sistema sigue procesando.

El modelo ocupa unos 25 KB de pesos, y el mapa de memoria expuesto por el repositorio muestra una distribución ajustada. El código y las tablas del tokenizador usan cerca de 6 KB, los pesos ocupan 25,3 KB, los búferes de activación unos 5,8 KB y el resto se reparte entre tokens, entrada, scratch y regiones reservadas para E/S de componentes como VIC-II, SID y CIA.

El sistema decodifica de forma voraz mediante argmax y dispone de una ventana de contexto de 20 tokens. Eso limita fuertemente la complejidad de las interacciones. El propio proyecto recomienda escribir mensajes cortos en minúsculas, ya que las mayúsculas se convierten en tokens desconocidos.

También hay restricciones en el tipo de texto admitido. El modelo entiende letras minúsculas, espacios y signos como punto, coma, admiración, interrogación, apóstrofo, dos puntos, punto y coma y guion. Este recorte ayuda a reducir el vocabulario y a mantener el sistema dentro de los márgenes de memoria y cómputo que permite la máquina.

Entrenamiento, cuantización y herramientas del proyecto

Uno de los aspectos más interesantes es que Soul Player C64 no solo ejecuta un modelo precompilado. También permite entrenar nuevas versiones. Para ello, el usuario puede crear un corpus de intercambios cortos con el formato <SEP>input<SEP>response<SEP> y lanzar el entrenamiento con Python, usando dependencias como NumPy y Torch.

De acuerdo con la explicación técnica del repositorio, el entrenamiento utiliza QAT, o entrenamiento consciente de cuantización. Durante ese proceso, los pesos pasan por FakeQuantI8, con escalado float continuo y estimación de gradiente straight-through. La intención es que el modelo aprenda a sobrevivir a la pérdida de precisión que luego impondrá la exportación al formato final de la Commodore 64.

La discrepancia deliberada entre la escala continua del entrenamiento y la rejilla de desplazamientos en potencia de 2 que se usa al exportar funciona como una especie de ruido implícito. Según el proyecto, esto obliga al modelo a aprender márgenes de logits más amplios, capaces de resistir mejor la cuantización final.

El entrenamiento también incluye suavizado de etiquetas de 0,15, cuantización falsa de sesgos y una evaluación periódica del forward pass entero real cada 500 épocas. El mejor checkpoint no se selecciona por pérdida float, sino por la calidad de la salida int8, es decir, por lo que realmente producirá el C64.

Ese detalle subraya la lógica completa del proyecto. No se optimiza para lucir bien en una GPU moderna, sino para comportarse correctamente bajo las limitaciones exactas del hardware de destino. En esa línea, el repositorio incluye herramientas para chatear localmente con la misma aritmética entera del C64, además de una batería de unas 90 pruebas para verificar la cadena completa, desde la referencia float hasta las rutinas en ensamblador 6502/6510.

Por qué este proyecto importa más allá de la nostalgia

En un momento en que la conversación sobre IA suele girar alrededor de modelos cada vez más grandes, centros de datos especializados y costos energéticos crecientes, Soul Player C64 ofrece una perspectiva opuesta. No plantea una alternativa comercial a los grandes modelos, pero sí recuerda que la comprensión de una arquitectura también pasa por reducirla, diseccionarla y hacerla funcionar en condiciones extremas.

Ese valor pedagógico es considerable. Para estudiantes, ingenieros y entusiastas del hardware, ver un transformer implementado a mano en ensamblador 6502 ayuda a entender con más claridad cómo operan componentes como la atención, la normalización o la cuantización. La escala reducida vuelve visibles piezas que en sistemas modernos quedan escondidas bajo capas de abstracción.

También hay una lectura cultural. La Commodore 64 fue una de las computadoras domésticas más icónicas de su tiempo, y convertirla en soporte para una IA conversacional mínima establece un puente simbólico entre dos eras de la computación. El resultado no es un asistente útil en términos prácticos, pero sí una demostración poderosa de continuidad tecnológica.

La fuente describe el proyecto con una frase que resume bien ese espíritu: el futuro volvió por el pasado. En este caso, ese regreso toma la forma de una IA contemplativa, lenta y defectuosa, pero lo bastante funcional como para demostrar que incluso una máquina de 1982 puede ejecutar, a su propia escala, la lógica fundamental de los modelos que hoy dominan la conversación tecnológica.

Para ejecutarlo, basta cargar el archivo soulplayer.d64 en un emulador como VICE y escribir LOAD “SOULPLAYER”,8,1 seguido de RUN. También es posible grabar la imagen en un disquete 1541 real y usarla directamente en hardware original. Es una propuesta técnica, lúdica y casi arqueológica, pero también una señal de hasta dónde puede llegar la creatividad cuando la inteligencia artificial se cruza con la computación retro.


Imagen original de DiarioBitcoin, creada con inteligencia artificial, de uso libre, licenciada bajo Dominio Público.

Este artículo fue escrito por un redactor de contenido de IA y revisado por un editor humano para garantizar calidad y precisión.


ADVERTENCIA: DiarioBitcoin ofrece contenido informativo y educativo sobre diversos temas, incluyendo criptomonedas, IA, tecnología y regulaciones. No brindamos asesoramiento financiero. Las inversiones en criptoactivos son de alto riesgo y pueden no ser adecuadas para todos. Investigue, consulte a un experto y verifique la legislación aplicable antes de invertir. Podría perder todo su capital.

Suscríbete a nuestro boletín