大家都在讨论大模型需要多少张显卡时,开发者 slvDev 已经悄悄把一个 2890 万参数的语言模型,塞进了一块售价仅约 8 美元的 ESP32-S3 微控制器里。
作为边缘 AI 的爱好者,我在 slvDev 原版项目的基础上进行了深度改造,将其从 MicroPython 环境迁移到了更底层的 ESP-IDF 框架,并成功让它学会了“说中文”。今天,我把这个名为 ESP32-AI-IDF 的中文改造版分享给大家。
站在巨人的肩膀上:从英文到中文的跨越
slvDev 的原版项目非常惊艳,但主要支持英文和 MicroPython。为了追求更极致的性能和更灵活的开发体验,我将其重构到了 ESP-IDF 环境。
为了让模型“听懂”中文,我引入了 Hugging Face 上的 TinyStoriesZh 中文数据集进行训练。大家可以直接下载这份测试数据:
wget https://hf-mirror.com/datasets/52AI/TinyStoriesZh/resolve/main/TinyStories_all_data_zh_2M.tar.gz?download=true
性能实测与双语言支持
在实际测试中,这个运行在 ESP32-S3 上的中文模型,生成速度大约在 3 token/s。虽然绝对速度不快,但在一个微控制器上实现本地 AI 交互,这已经迈出了关键一步。
当然,项目也保留了英文环境的支持。如果你更习惯英文,只需替换模型文件和 vocab.h_en 词表即可无缝切换。
核心训练参数公开(避坑指南)
项目自带了训练好的模型,但我也非常鼓励大家自己动手训练。以下是我使用的原始项目参数,如果你也想复现,可以直接参考:
python train.py --arm ple \
--d-model 96 \
--n-layers 6 \
--n-heads 4 \
--ffn-hidden 66 \
--ple-dim 128 \
--vocab 4096 \
--steps 4000
⚠️ 几个避坑的关键参数:
--ffn-hidden 66:必须与原始项目严格匹配,这是模型能在 ESP32 上跑起来的最核心参数!
--d-model 96 与 --ple-dim 128:同样是匹配原始项目的关键维度。
--vocab 4096:这里我替换成了中文分词器。
测试效果

需要用putty 串口查看中文

欢迎来玩
代码我已经全部开源,或者一起探讨边缘 AI 的更多可能!
1万+



被折叠的 条评论
为什么被折叠?



