El desarrollador Vyacheslav Serbov, que utiliza el seudónimo de slvDev, demostrado Generación de texto completamente local en un microcontrolador ESP32-S3. El modelo de lenguaje resultante contiene 28,9 millones de parámetros y produce aproximadamente 9,9 tokens por segundo sin acceder a un servidor ni a otros recursos informáticos externos. Los relatos breves generados se muestran en una pantalla OLED conectada.
proyecto esp32-ai Probado en un módulo ESP32-S3 N16R8 con 512 KB de SRAM integrada, 8 MB de PSRAM y 16 MB de memoria flash. El modelo cuantizado de 4 bits ocupa 14,9 MB. El repositorio contiene el código fuente del entorno de ejecución en C, herramientas de entrenamiento y cuantización, firmware, pruebas y scripts para cargarlo en la placa.
Los 28,9 millones de parámetros declarados no deben compararse directamente con el número de parámetros de los LLM de escritorio convencionales. Según informe detallado del desarrolladorEl modelo consta de un núcleo computacional denso con aproximadamente 559 000 parámetros, una capa de salida con 3,1 millones de parámetros y una tabla de representaciones vectoriales por capas con aproximadamente 25 millones de parámetros. Esta última constituye la mayor parte del tamaño formal del modelo, pero no se procesa por completo al generar cada token.
El modelo se almacena en tres niveles de memoria. Los datos a los que se accede con mayor frecuencia residen en la SRAM interna, la capa de salida, la caché KV y los búferes temporales residen en la PSRAM, y la tabla de 25 millones de elementos reside en la memoria flash y es accesible mediante el mapeo del espacio de direcciones. De cada token, solo se leen aproximadamente seis filas, lo que suma un total de aproximadamente 450 bytes.
Este dispositivo se basa en la tecnología Per-Layer Embeddings utilizada por Google en el Gemma 3n. Según Documentación de GoogleLos parámetros PLE se pueden almacenar fuera de la memoria de trabajo del modelo y agregarse al proceso de inferencia a medida que se procesan las capas individuales. En esp32-ai, este enfoque se extiende a la jerarquía de memoria del microcontrolador, donde la SRAM rápida es particularmente limitada.
La primera versión correcta del entorno de ejecución basado en C generaba solo 0,57 tokens por segundo. Tras ubicar la capa de salida en la PSRAM, cambiar a activaciones de ocho bits, distribuir el cálculo entre dos núcleos Xtensa LX7 y realizar otras optimizaciones, la latencia se redujo a 94,9 ms por paso del modelo. El rendimiento final medido alcanzó los 9,88 tokens por segundo, considerando todo el proceso de generación. La principal limitación ahora era el ancho de banda de la PSRAM al leer la capa de salida.
El modelo fue entrenado con un conjunto de datos sintéticos. Pequeñas historiasConsiste en historias sencillas en inglés con un vocabulario limitado. Por lo tanto, puede completar oraciones y componer historias cortas y coherentes, pero no está diseñado para responder preguntas, seguir instrucciones, programar ni reproducir información factual. El desarrollador considera este trabajo principalmente como una demostración de la ubicación eficiente del modelo en la memoria del microcontrolador, más que como un chatbot autónomo listo para usar.
En la documentación actual, el autor enfatiza específicamente que esp32-ai es un desarrollo independiente. Proyectos llama2.c El trabajo de Andrej Karpathy y el lanzamiento anterior del modelo número 260 en el ESP32-S3 se proporcionan únicamente como guías y ejemplos de trabajos previos: el código, los puntos de control y la metodología no se han tomado directamente de ellos. El código fuente de esp32-ai Distribuido bajo la licencia MIT..
Fuente: linux.org.ru
