在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的觸控式螢幕使用者介面。