在4美元的微控制器上实现流水线并行:拆分42M模型
这个开源项目展示了如何在两个ESP32-S3微控制器上以流水线方式运行Llama架构的大型语言模型,突破了单个芯片的内存限制,支持高达42M参数的模型。这是首个在ESP32级硬件上实现多芯片流水线LLM推理的项目,采用INT4量化和UART通信,速度约为0.5-1.4 tok/s。
近日,一个名为“ESP-32-s3-Story-maker-LLM”的开源项目引起了嵌入式AI社区的关注。该项目成功地在两个ESP32-S3微控制器上实现了Llama架构大语言模型的流水线并行推理,使得总参数量高达42M,突破了单个ESP32-S3芯片16MB闪存和8MB PSRAM的限制。
该项目由开发者harmansingh4163-ai创建,核心思路是将LLM的层拆分到两个芯片上。权重采用INT4量化(组内共享32个scale),存储在内存映射的闪存分区中,完全不占用RAM。计算时,激活值保持INT8精度,使用整数精确的组内点积,并且每个矩阵乘法行被分配到芯片的两个LX7核心上并行计算。两个芯片之间通过UART连接,传输速率为460800 bps,数据帧格式为A5 5A | cmd | len | payload | CRC16,每次token的往返数据量约1.2KB,仅占单token处理时间的3%左右。
为了确保可靠性,项目进行了严格的验证:所有可测试的组件都在硬件之前通过了测试,前向传播与NumPy参考结果的误差在3e-7以内;拆分后的流水线模型与完整模型位精确匹配;UART协议经过模糊测试,能正确忽略噪声并拒绝CRC错误的帧。与现有的ESP32 LLM移植项目相比,该项目在参数量和输出质量上有了显著提升:单个ESP32-S3运行15M参数模型时,速度约1.4 tok/s,能生成多段落故事;而双板方案则有望在42M参数模型上达到约0.5 tok/s,生成更连贯的情节。
使用该项目需要一定的硬件和软件基础:单板模式需要一块具有16MB闪存和8MB PSRAM的ESP32-S3,双板模式则需要两块这样的开发板和三根杜邦线。开发者提供了详细的步骤,包括模型下载、量化、闪存写入、固件编译和硬件连接。项目支持通过串口进行交互,用户可以输入提示词生成故事,并通过命令调整温度、top-p采样、生成长度等参数。未来计划包括在实测硬件上运行42M模型、利用PIE SIMD指令加速矩阵乘法,以及开发无需PC的触摸屏用户界面。