Capítulo 1: Introducción
¿Qué es ESP32-LLM?
ESP32-LLM es un proyecto que demuestra que es posible ejecutar un Large Language Model (LLM) en un microcontrolador ESP32. Aunque probablemente no sea muy práctico, ¡es un logro técnico sorprendente!
El proyecto logra ejecutar el modelo y generar texto a una velocidad de 19.13 tokens/segundo en un dispositivo que cuesta apenas unos dólares.
El Modelo TinyLlama
El modelo utilizado no es un LLM "grande" en el sentido tradicional. Específicamente:
| Característica | Valor |
|---|---|
| Parámetros | 260K (260,000) |
| Dataset | Tiny Stories |
| Checkpoint | stories260K |
¿Qué son las "Tiny Stories"?
Tiny Stories es un dataset de entrenamiento diseñado específicamente para modelos pequeños. Contiene historias cortas y simples que permiten entrenar modelos con capacidad de generación de texto coherente, pero con requisitos de memoria mucho menores.
¿Por qué funciona en el ESP32?
- Tamaño reducido: 260K parámetros ≈ ~1MB de peso del modelo
- Cuantización: El modelo puede estar cuantizado a int8 o menor
- PSRAM: El ESP32-S3 tiene 2MB de PSRAM externa
La Implementación: Llama2.c
El proyecto utiliza llama2.c de Andrej Karpathy como base, con optimizaciones específicas para el ESP32:
- Uso de ambos cores del ESP32-S3
- Funciones DSP especializadas de Espressif
- Optimización de velocidad de CPU y PSRAM
Siguiente Paso
En el próximo capítulo, veamos el hardware necesario para este proyecto.