Acelerador FPGA de código abierto ejecuta LLMs modernos con una cadena de herramientas completa
El proyecto openTPU publica un diseño completo de acelerador de IA en un solo repositorio, capaz de ejecutar modelos como Qwen3 y LFM2.5 en una tarjeta FPGA Kintex-7 con simulación bit-exact.
Traducido automáticamente del original en inglés.
El usuario de GitHub FeSens ha lanzado openTPU, un acelerador de IA de código abierto que incluye su propia descripción de hardware, conjunto de instrucciones, simulador, compilador y perfilador en un único repositorio. Publicado el 6 de octubre de 2026, el proyecto demuestra que los grandes modelos de lenguaje modernos pueden ejecutarse eficientemente en matrices de puertas programables en campo (FPGA) utilizando una pila de software y hardware totalmente transparente.
Qué ha ocurrido
El proyecto openTPU responde a dos preguntas fundamentales sobre el estado actual del diseño de hardware para IA: hasta dónde pueden llegar los agentes autónomos en el diseño de hardware y si pueden construir los propios chips que ejecutan su inferencia. Todo el acelerador está contenido en un pequeño monorepo, lo que permite a los desarrolladores leer el código de principio a fin. Esto incluye el diseño de hardware en SystemVerilog, la definición del conjunto de instrucciones, un simulador bit-exact, un lenguaje de kernel con su compilador y el software host necesario para controlar una tarjeta PCIe física.
El diseño ha sido probado en una tarjeta Inspur YPCB-00338, que cuenta con un FPGA Xilinx Kintex-7 xc7k480t y dos canales de memoria DDR3. Ejecuta con éxito diez modelos modernos con sus pesos reales, produciendo tokens que coinciden con la salida del simulador bit por bit. El proyecto ofrece benchmarks detallados para modelos como LFM2.5-230M, Qwen3-0.6B, Qwen3.5-0.8B, Gemma 4 E2B, LFM2-2.6B, SmolLM3-3B, Phi-4-mini, así como Qwen3.5-2B y 4B. Estas pruebas cubren tanto esquemas de cuantización int8 como de 4 bits, mostrando velocidades de decodificación que van desde 3,75 tokens por segundo para los modelos más grandes hasta 85,8 tokens por segundo para los más pequeños.
Una actualización significativa, denominada Build B, mejoró el rendimiento de decodificación entre un 8% y un 9% para varios modelos en comparación con las imágenes de producción anteriores. Esta versión también aumentó la utilización del ancho de banda de DRAM a entre el 91% y el 94% de la velocidad pico de DDR3-1066. El sistema admite modelos de mezcla de expertos (mixture-of-experts) más grandes que la memoria de 4 GiB de la tarjeta mediante la transmisión de expertos desde el almacenamiento host, manteniendo la precisión bit-exact con el simulador incluso durante estas operaciones complejas.
Cómo funciona
La arquitectura es deliberadamente simple para garantizar la transparencia y facilitar la depuración. Un secuenciador emite una instrucción por ciclo a varias unidades especializadas: un motor DMA para el movimiento de datos, una unidad matricial para la multiplicación de pesos int8 transmitida desde DRAM, una unidad vectorial para cálculos fp32 y un cuantizador para convertir los resultados de vuelta a int8. No hay cachés ni mecanismos de planificación ocultos. Cada movimiento de datos se define explícitamente como una instrucción, lo que significa que un registro de ejecución revela exactamente dónde se gastan los ciclos.
Los desarrolladores escriben kernels en un lenguaje similar a Python llamado ol, que utiliza decoradores como @ol.jit para compilar operaciones de alto nivel al conjunto de instrucciones personalizado. El compilador gestiona los layouts, el direccionamiento de bucles afines y la fusión. Las instrucciones resultantes se ejecutan en el FPGA o se verifican contra el simulador ISA basado en Python. Dado que el simulador y el diseño de hardware RTL (Register Transfer Level) procesan los mismos bits, se comprueban mediante pruebas para asegurar la consistencia. Esto permite a los desarrolladores prototipar y depurar en un portátil antes de desplegar en el hardware físico.
El sistema incluye un perfilador llamado Lens, que registra ejecuciones desde el RTL, el simulador o la tarjeta y las muestra en un navegador. Lens proporciona un modelo roofline, una línea de tiempo y tablas por instrucción, coloreando cada ciclo para mostrar si una unidad está ocupada, esperando a la DRAM o esperando otra instrucción. Esta visibilidad ayuda a los ingenieros a comprender los cuellos de botella de rendimiento, como los límites del ancho de banda de DRAM, que actualmente restringen la velocidad de decodificación al 82-85% del pico teórico.
Detalles clave
- El proyecto se ejecuta en un FPGA Xilinx Kintex-7 xc7k480t con dos canales DDR3, alcanzando un ancho de banda pico de hasta 17,1 GB/s.
- Los benchmarks muestran velocidades de decodificación desde 3,75 tok/s para Qwen3.5-4B hasta 85,8 tok/s para LFM2.5-230M con cuantización de 4 bits.
- El sistema admite pesos de 4 bits utilizando valores FP4 con escalas de bloque de dos niveles, reduciendo los bytes por token aproximadamente en un tercio.
- Los modelos de mezcla de expertos como LFM2.5-8B-A1B se ejecutan transmitiendo expertos desde el almacenamiento host, logrando 10,6 tok/s con una tasa de acierto de ranura del 98,5%.
- Todas las configuraciones coinciden con el simulador token por token, garantizando la reproducibilidad bit-exact entre la simulación de software y la ejecución en hardware.
- La sobrecarga del software host es mínima, añadiendo solo de 0,17 a 0,30 ms por token en sistemas optimizados, manteniendo el acelerador mayormente independiente.
Por qué importa
Para ingenieros de software y profesionales de ML, openTPU desmitifica la caja negra de los aceleradores de IA. Al proporcionar una pila completa desde kernels en Python hasta RTL en SystemVerilog, ofrece una oportunidad rara de entender cómo las multiplicaciones matriciales y los mecanismos de atención se traducen en movimientos físicos de cables y ciclos de reloj. Este nivel de transparencia es invaluable con fines educativos y para desarrolladores que necesitan optimizar modelos para restricciones de hardware específicas sin depender de herramientas propietarias.
El proyecto también destaca los límites prácticos de la inferencia basada en FPGAs actuales. Los benchmarks detallados muestran que el rendimiento de decodificación está fuertemente limitado por el ancho de banda de DRAM más que por la potencia de cómputo. Esta perspectiva guía a los ingenieros hacia la optimización de patrones de acceso a memoria y estrategias de cuantización, en lugar de simplemente aumentar el throughput computacional. La capacidad de ejecutar modelos modernos como Qwen3 y Gemma 4 en hardware relativamente antiguo como el Kintex-7 sugiere que un diseño eficiente de software y arquitectura puede extender la vida útil de la infraestructura existente.
Además, la integración de agentes de IA en el proceso de diseño, sugerida por el enfoque "auto-arch-tournament", apunta a un futuro donde el propio diseño de hardware podría automatizarse. El hecho de que el sistema pueda construir y ejecutar el chip que realiza sus propios bucles de inferencia crea un entorno de desarrollo de bucle cerrado que podría acelerar la innovación en hardware especializado para IA.
Qué puedes hacer
- Instala el paquete openTPU vía pip y ejecuta el simulador ISA en tu portátil para probar modelos como LFM2.5-230M sin necesidad de hardware.
- Estudia la documentación del conjunto de instrucciones en
docs/isa.mdpara comprender las operaciones de bajo nivel que impulsan el acelerador. - Utiliza el perfilador Lens para visualizar registros de ejecución e identificar cuellos de botella de DRAM en tus propias implementaciones de kernel.
- Experimenta con esquemas de cuantización de 4 bits para mejorar las velocidades de decodificación, teniendo en cuenta los compromisos en perplejidad reportados en la documentación de cuantización.
- Si dispones de una tarjeta PCIe compatible con Kintex-7, compila el bitstream y cárgalo vía JTAG para ejecutar inferencia en tiempo real con
otpu-chat. - Contribuye al proyecto explorando el directorio
rtl/y ayudando a mejorar los márgenes de temporización y la eficiencia de área en futuras versiones.



