22 puntos por GN⁺ 2025-12-30 | 2 comentarios | Compartir por WhatsApp
  • Z80-μLM es un modelo ultracompacto de inteligencia artificial conversacional que funciona sobre un procesador Z80 de 1976 (4 MHz, 64 KB de RAM)
  • Aplica entrenamiento consciente de cuantización (QAT) para realizar generación de texto a nivel de caracteres usando solo pesos de 2 bits y operaciones enteras de 16 bits
  • Todo el motor de inferencia, los pesos y la UI de chat están incluidos dentro de un archivo ejecutable .COM de unos 40 KB
  • Usa codificación hash de trigramas para convertir la entrada en 128 buckets, generando respuestas robustas ante errores tipográficos o cambios en el orden de las palabras
  • No puede comprender contexto complejo, pero destaca como un modelo de IA experimental que funciona incluso en un entorno limitado de 8 bits

Resumen del proyecto

  • Z80-μLM es un modelo de lenguaje ultrapequeño capaz de ejecutarse en entornos de retrocomputación
    • Funciona en una CPU Z80 con 64 KB de RAM y genera respuestas conversacionales a nivel de caracteres
    • El tamaño total, incluyendo modelo, código de inferencia y UI, es de unos 40 KB
  • La pregunta central del proyecto fue: “¿qué tan pequeño puede hacerse sin perder personalidad?”, y también permite despliegue self-hosted
  • No alcanza el nivel de una prueba de Turing, pero está pensado para entretener al usuario con conversaciones simples

Incluye dos ejemplos

  • tinychat

    • Un chatbot simple entrenado con datos de preguntas y respuestas cotidianas
      • Ofrece respuestas cortas y con personalidad para saludos, presentaciones y conversación general
      • Ej.: “hello” → “HI”, “are you a robot” → “YES”, “do you dream” → “MAYBE”
  • guess

    • Un modelo en formato de juego de 20 Questions
      • Conoce un tema secreto y responde con YES/NO/MAYBE
      • Si el usuario acierta la respuesta, muestra “WIN”
  • Los datos de entrenamiento pueden generarse usando Ollama o la API de Claude, e incluye una herramienta de balanceo de distribución de clases

Funciones principales

  • Codificación hash de trigramas: hace hash del texto de entrada en 128 buckets, tolerando errores tipográficos y siendo independiente del orden de las palabras
  • Cuantización de pesos de 2 bits: cada peso toma un valor de {-2, -1, 0, +1}, con 4 almacenados por byte
  • Inferencia entera de 16 bits: usa la aritmética de 16 bits del Z80
  • Archivo .COM de ~40 KB: adecuado para el Transient Program Area (TPA) de CP/M
  • Generación autorregresiva: genera la salida carácter por carácter
  • Sin operaciones de punto flotante, usa escalado de punto fijo
  • Soporta modo interactivo: se ejecuta con el comando CHAT

Forma de interacción

  • El modelo no “entiende” la entrada, pero reacciona según la forma (shape) de la entrada
    • La frase de entrada se transforma en 128 buckets de trigramas, conservando similitud semántica
    • Por ejemplo, “hello there” y “there hello” se procesan con la misma estructura de buckets
  • Le cuesta distinguir oraciones largas o dependientes del orden
  • El significado de las respuestas cortas

    • Incluso respuestas de 1 o 2 palabras pueden expresar matices inesperados
      • OK: aceptación neutral
      • WHY?: cuestiona la pregunta
      • R U?: duda sobre la existencia
      • MAYBE: incertidumbre
      • AM I?: pregunta reflexiva
    • Estas respuestas breves invitan al usuario a inferir el contexto

Fortalezas y limitaciones

  • Fortalezas
    • Respuestas consistentes de tipo clasificatorio para entradas cortas
    • Resiste bien errores tipográficos, reformulación y cambios en el orden de palabras
    • Expresa personalidad a través de la elección de vocabulario
    • Puede ejecutarse incluso en hardware limitado de 8 bits
  • Limitaciones
    • No puede generar oraciones nuevas
    • No puede seguir contexto de múltiples turnos
    • No comprende la gramática
    • No alcanza un nivel de inteligencia general

Arquitectura

  • Capa de entrada: 128 buckets de consulta + 128 buckets de contexto
  • Capa oculta: configuración de ejemplo 256 → 192 → 128
  • Capa de salida: 1 neurona por cada carácter del conjunto de caracteres
  • Función de activación: ReLU
  • Restricciones de cuantización

    • El Z80 es una CPU de 8 bits, pero realiza acumulación y activación usando pares de registros de 16 bits (HL, DE, BC)
    • Los pesos se almacenan de 4 en 1 byte (en unidades de 2 bits)
    • El acumulador de 16 bits evita overflow al sumar 256 entradas
    • Debido a los pesos de 2 bits, la capacidad de expresión es limitada y sin QAT pueden aparecer resultados de entrenamiento inestables
  • Bucle interno del Z80

    • El núcleo de la inferencia es un bucle de multiplicar-acumular (MAC)
      • Desempaqueta los pesos y suma o resta al acumulador (ACC) según valores de -2, -1, 0 o +1
      • Después de calcular cada capa, realiza un desplazamiento a la derecha de 2 bits para evitar overflow
    • El proceso completo de inferencia repite unas 100 mil operaciones por cada carácter

Licencia

  • Se puede elegir entre MIT o Apache-2.0

2 comentarios

 
GN⁺ 2025-12-30
Comentarios de Hacker News
  • Es el momento perfecto. Metí un terminal VT100 (para ejecutar un agente de programación), un emulador de Z80 y un puente serial para programar una máquina CP/M dentro de un juego hecho con Unreal Engine
    captura de pantalla
    No esperaba que alguien publicara algo que encajara tan perfectamente. Es una coincidencia realmente extraña, pero increíble
    • Parece que los dos tuvimos telepatía
      Yo hice un emulador de CP/M e IDE basado en navegador: lockboot.github.io/desktop
      De hecho iba a publicar eso, pero me fui por una madriguera de conejo mientras buscaba una “demo genial”
    • El libro Connections: Alternative History of Technology de James Burke trata muy bien este tipo de conexiones fortuitas
    • Interesante, aunque me da pena no poder ver imgur
  • Me encanta. Le di estrella en GitHub de inmediato
    Yo escribí un MLP en Fortran IV para una máquina de tarjetas perforadas de los años 60 (proyecto Xortran)
    Aunque no tenía mecanismo de atención y el contexto estaba limitado a los trigramas de la última oración, la interacción era bastante buena
    Si algo así hubiera sido posible incluso en hardware de los 60, la ciencia ficción y la ciencia de esa época habrían sido totalmente distintas
    • Este tipo de proyectos son realmente fascinantes. Se siente como ver un camino que no se tomó
      En modo conspiranoico, una de las razones por las que las empresas de IA están comprando RAM a gran escala parece ser para que la gente no se dé cuenta de que esto se parece mucho a la revolución de las computadoras personales
      Yo uso una máquina con 1 TB de RAM y, con agentes personalizados, rinde mejor que modelos comerciales. Es personal, segura y no está monetizada
  • Yo también lo pienso seguido. ¿Qué sería un “LLM de funcionalidad mínima”? O sea, un modelo capaz de mantener una conversación simple
    Y la siguiente pregunta es si se podría hacer un modelo pequeño que aprenda mientras consulta datos externos
    Si se pudiera crear un modelo diminuto que aprenda en tiempo real, eso sería básicamente tener un asistente personal completamente local
    • Esto es casi lo mismo que la idea del “cognitive core” de Karpathy
      Un modelo muy pequeño, con casi nada de conocimiento enciclopédico, pero con capacidades básicas de razonamiento y uso de herramientas
      tuit de referencia
    • Si esta tecnología hubiera existido en los 90, tal vez ya habrían existido LLM básicos
      Si hubiera sido así, siento que el mundo actual sería completamente diferente
    • RWKV es interesante de ver: rwkv.com
      Es un caso de estudio experimental de “qué habría pasado si los RNN hubieran sido adecuados para los LLM”
      Es absurdamente rápido en CPU
    • Hay un LLM que alguien hizo dentro de Minecraft, y maneja conversaciones simples con 5 millones de pesos de 8 bits
      Eso sí, parece difícil que pueda aprovechar bien una ventana de contexto grande
  • Es una broma sobre que las empresas de IA van a comprar todos los chips Z80 y subirles el precio
    • Ya es demasiado tarde. El inventario se agotó el año pasado
  • Si a un modelo se le enseñara una clave secreta (passphrase) y el usuario tuviera que adivinarla haciendo preguntas,
    me pregunto si, al acceder a los pesos del modelo, sería posible inferir esa clave al revés, o si solo se podría acceder a ella por medio de preguntas
    • Esa pregunta me recordó este paper: Planting Undetectable Backdoors in Machine Learning Models
      Trata sobre cómo insertar puertas traseras indetectables que por fuera parecen funcionar normalmente
    • Cuanto más pequeño sea el modelo, más fácil será extraer esos secretos analizando los pesos
      En general, esto entra dentro del problema de la “interpretabilidad”
  • Si hubiera existido el código adecuado y la infraestructura de entrenamiento necesaria, ELIZA también habría sido mucho más potente
    • ELIZA originalmente corría en un mainframe IBM 7094 de los años 60
      Tenía una arquitectura de palabras de 32K×36 bits y no soportaba operaciones a nivel de byte
      Si se intentara mover tal cual un ejecutable de Z80 de 40 KB, habría sido bastante justo
      Pero como la mayoría son pesos de 2 bits, quizá sí habría sido posible
      En hardware posterior, especialmente el Z80 de 1976, habría habido mucho más margen
  • Yo también diseñé y construí mi propia computadora Z80. Actualmente tiene 32 KB de ROM y 32 KB de RAM
    Pienso ampliarla en la siguiente versión, así que definitivamente quiero intentarlo
    • Últimamente el precio de la RAM está demasiado alto
  • Si procesa toda la entrada de una sola vez como embedding, esto parece una arquitectura MLP, ni Transformer ni RNN
  • Habría estado bueno que los viejos RPG de entrada libre tuvieran un fuzzy matcher así
    En esa época solo funcionaban con coincidencias exactas de palabras clave, así que se sentía raro
    Probablemente el último juego de ese estilo fue Wizardry 8 en 2001
  • Gran trabajo. ¿Cuál sería el cronograma estimado para llegar a AGI?
    • Probablemente a principios de abril
    • Debe estar a la vuelta de la esquina
 
crawler 2025-12-30

Me parece realmente increíble poder ejecutar tecnología de punta en hardware del pasado.

Cuando aparezca una AGI en el futuro, ¿será posible hacerla correr si reunimos toda la potencia de cómputo que existe ahora mismo en la Tierra?