Un LLM de 28,9 millones de parámetros se ejecuta localmente en ESP32-S3 a 9 tokens/s

Slava S. (slvDev) ha optimizado un LLM de 28,9 millones de parámetros que se ejecuta localmente en una placa de desarrollo ESP32-S3 a unos 9 tokens/s mientras genera texto o, más exactamente, escribe relatos cortos.

En el pasado hemos escrito sobre LLM y ESP32, pero normalmente las placas se utilizan como pasarelas de bajo consumo para interactuar con LLM en línea alojados en potentes servidores de centros de datos. Entre esos productos o proyectos se incluyen el módulo de chat inteligente HiWonderLLM, el framework ESP-Claw o el ESP32 Agent Dev Kit. El proyecto «esp32-ai» de Slava es bastante diferente, ya que todo se ejecuta en el microcontrolador ESP32-S3.

Esto no funcionará en todos los ESP32-S3, ya que necesitarás suficiente memoria y almacenamiento para guardar el archivo del modelo de 14,9 MB (cuantización de 4 bits), y Slava probó su demo en una placa ESP32-S3 de unos 8 dólares con 512 KB de SRAM + 8 MB de SPRAM y 16 MB de flash conectada a una pequeña pantalla I2C para mostrar relatos cortos.

Dave Bennett ya hizo algo similar con el proyecto ESP32-LLM, pero solo se basaba en un modelo de 260K parámetros, muy lejos del modelo de 28,9 millones de parámetros utilizado en este proyecto. El truco consistió en dejar de poner el modelo en la «memoria rápida» (los 512 KB de SRAM), ya que la mayoría de los parámetros de un modelo de lenguaje se encuentran en una tabla de embeddings con unos 25 millones de filas, que pueden leerse desde la flash lenta. Así, solo las pocas filas que necesita cada token, unas 450 bytes, deben cargarse y procesarse en la SRAM.

Slava explica que la idea proviene de los Per-Layer Embeddings de Google utilizados en Gemma 3n y Gemma 4. Así es como se distribuye la memoria en el ESP32-S3:

Esto es más una hazaña de ingeniería que un proyecto de LLM útil, ya que el modelo se entrenó con TinyStories para escribir relatos cortos y sencillos. No responderá preguntas, seguirá instrucciones, escribirá código ni hará nada de lo que cabría esperar de un LLM típico. Aquí tienes una demo a continuación.

Encontrarás el código fuente, las instrucciones y más detalles sobre los resultados en GitHub; también puedes encontrar algunos datos adicionales en Reddit, y en el vídeo de abajo si prefieres una explicación visual de cómo funciona todo.

Vía Tom’s Hardware

Traducido del artículo en inglés «28.9M-parameter LLM runs locally on ESP32-S3 at 9 tokens/s» de Jean-Luc Aufranc (CNXSoft).

Salir de la versión móvil