# 【vMaker Edge AI專欄 #23】 邊緣端小語言模型崛起,開發板跟上了嗎?
作者:Jack OmniXRI, 2024/11/15
![vMaker_EdgeAI_23_Fig00](https://hackmd.io/_uploads/By690s4Myg.jpg)
2022年底 OpenAI 推出 ChatGPT 後,各大廠紛紛推出自己的大語言模型(Large Language Models, LLM),讓電腦也能像人類一樣地自然問答。不過一開始的模型參數量都非常驚人,高達數千億個,如 GPT3 就有 1750 億(簡寫成175B), GPT3.5 更高達 2000億(200B),因此推論時需要消耗非常巨大的算力、記憶體及電力,所以只能依靠雲端伺服器才能完成。經過這兩年的發展,大語言模型已從數千億個參數漸漸演進到只需數十億到數億個參數就能有不錯的表現,目前不成文約定多半稱70億(7B)個參數以下的模型為小語言模型(Small Language Models, SLM)[1]。而同時邊緣裝置的算力也從數 TOPS@INT8 (每秒運算一兆次八位元整數)提升至數十TOPS,讓邊緣裝置在不連網的情況下也能獨立完成 SLM 的推論工作。
目前可以獨運行LLM的邊緣裝置大致上可分為桌機筆電(AI PC /NB)[2] [3]、行動通訊裝置(AI Phone / Tablet)[4]、單板微電腦(Single Board Computer,SBC / Microprocessor Unit, MPU)及單晶片(Micro Controller Unit, MCU)等不同等級硬體。其中前兩項由於有較強的算力、較多的記憶體及充足的電力供應,因此運行 7B 及以上 LLM 比較沒問題,而後兩項隨硬體配置不同,可能就需要輔助推論加速單元(Neural Processing Unit, NPU / Deep Learning Accelerator, DLA)或者更小的模型或者更好的優化處理或者容許更慢的反應速度。
本文重點將放在後兩者,以下就幫大家盤點一下常見的19個廠商提供的37種小語言模型,16種 MCU / MPU / SoC 等級 LLM 開發板解決方案,讓大家未來在開發相關應用時能有更多選擇。
## 1.常見小語言模型(SLM)及參數量
目前有非常多的大語言模型可供對話及文字領域使用,很多供應商會提供不同參數量的模型以滿足不同場域所需推論精確度及運行裝置的算力及記憶體限制。以下將參數量小於70億(7B)的小語言模型整理如 Table 1 所示。
為什麼通常會使用 7B 模型作為大、小語言模型不成文的分界呢?主要原因和記憶體有很大關連。若原始模型訓練時參數是浮點數32位元(FP32),則一個7B的模型就要使用 $4*7*10^{9}$ Byte 來儲存,即 28 GByte。相信大部份的手機/桌機都沒這麼多的記憶體,所以通常推論時會將參數量化到8或4位元整數,如此就能讓記憶體需求降至 7G 或 3.5G Byte。當然這裡還沒有考慮推論過程中計算所需記憶體,通常還需要二到三倍的記憶體。綜合上述,當模型參數量減少,除可減輕記憶體需求外,計算量也會大幅減少,提高推論速度。
Table 1 常見小語言模型(參數量小於等於8B)。(OmniXRI整理製作, 2024/11/15)
| 供應商 | 模型名稱 | 參數量(十億) |
|:-----:| :-----: | :-----: |
| Alibaba | Qwen 1.5 | 0.5B/1.8B/4B/7B |
| | Qwen 2.0 | 0.5B/1.5B/7B |
| | Qwen 2.5 | 0.5B/1.5B/3B/7B |
| Anthropic | Glaude-3 Sonnet | 6.1B |
| AMD | OLMo | 1B |
| Apple | OpenELM | 0.27B/0.45B/1.1B/3B |
| EleutherAI | GPT-J | 6B |
| | GPT-Neo | 1.3B |
| | GPT-NeoX | 2.7B |
| | Pythia | 0.07B/0.16B/0.41B/1B/1.4B/2.8B |
| Flcon | Falcon-7B | 7B |
| Google | Gemma | 7B |
| | Gemma 2 | 2B |
| | Gemini Nano-1 | 1.8B |
| | Gemini Nano-2 | 3.25B |
| | Gemini 1.5 Flash | ?B |
| Hugging Face | Distilled BERT | 0.066B |
| | SmolLM-135M | 0.135B/0.36B/1.7B |
| META | Llama 1 | 7B |
| | Llama 2 | 7B |
| | Llama 3 | 8B |
| | MobileLLM | 0.125B/0.35B/0.6B/1B/1.5B |
| Microsoft | Phi-1 | 1.3B |
| | Phi-2 | 2.7B |
| | Phi-3-mini | 3.8B |
| | Phi-3-small | 7B |
| Mistral | Mistral-7B | 7.3B |
| MosaicML | MPT-7B | 7B |
| OpenAI | GPT-4o | 0.8B |
| OpenBMB | MiniCPM | 1B/2B |
| | MiniCPM3 | 4B |
| Shlab | InternLM2 | 7B |
| Stability AI | StableLM | 3B/7B |
| | StableLM 2 | 1.6B |
| THUDM | ChatGLM3 | 6B |
| TinyLlama | TinyLllama | 0.5B/1.1B |
| NARLabs | TAIDE-LX | 7B |
**註:依英文字母順序排列**
## 2.常見運行小語言硬體裝置及系統架構
一般要運行上述小語言模型,AI PC & AI Phone 較能滿足記憶體需求,通常也會搭配 GPU / NPU(DLA) 來加速推論,但對於 MPU 甚至 MCU 來說,即便搭載 NPU 還是顯得非常吃力。不過即便 MPU / MCU 等級的解決方案目前表現可能還不盡理想,但其低功耗、體積小、平價、易於開發的特性還是很令人期待。
去(2023)年隨著 SLM 開始成形,於是陸續有多家公司推出能運行 SLM 的邊緣裝置概念機。而這些裝置中,如果採 MCU 架構的,由於算力及記憶體不足,通常不在裝置上運算,會搭配 WiFi / LTE 及 API 來呼叫雲端 LLM 服務。而走 MPU 架構的,通常會搭配 1G 到 8G Byte 的記憶體,甚至有些還有內建 NPU ,如此便有機會獨立運行而不需依靠雲端服務。以下就分別依不同類型的系統結構來介紹相關裝置及基本配置。
### 2.1.單晶片(MCU)等級開發板
目前常見的32位元 MCU 多半是 Arm Cortex-M 及 RISC-V 架構,通常僅搭配數 MByte 的 Flash 及 數百 KByte 的 SRAM。少數 MCU 會搭配向量運算指令或 Micro NPU 來提高 AI 推論能力,但通常仍遠遠不夠,所以會選擇一個可上網的晶片搭配雲端 LLM 服務來串接裝置。
* Seeed, **SenseCAP Watcher** [5]
- 這是一款雙晶片的開發套件,ESP32-S3負責控制及通訊,HX6538負責執行影像、聲音及感測器類信號 AI 推論,另具備有攝影機模組、圓形顯示器、麥克風、喇叭、電池,另有保留擴充感測器接口(I2C/UART)。 LLM 推論部份需搭配雲端服務。
- ESP32-S3, 240MHz, 8MB PSRAM, 32MB Flash, WiFi / BLE 5
- Himax HX6538, Arm Cortex-M55 @150MHz x1 + @400MHz x1 + MicroNPU Ethos-U55 (64MAC/clock) @400MHz x1, 2MB SRAM, 16MB Flash
* Arm, MicroNPU **Ethos-U85** [6]
- 目前市售 MCU 已有部份搭配 Ethos-U55/U65,但其架構及算力仍不滿足 LLM 推論需求。Ethos-U85 IP 推出後,已可成功運行 tinyLlama 2 (125M) ,但目前僅有 FPGA 模擬版本展出,相關實體晶片預計 2025 年初會有廠商推出。
- 256 GOP/sec up to 4 TOPs at 1 GHz
- Scales from 128 to 2048 MACs
- 32 MHz, 512 MAC, ~8 Tokens/sec
![vMaker_EdgeAI_23_Fig01](https://hackmd.io/_uploads/rJ7L8M4fJl.jpg)
Fig. 1 單晶片(MCU)等級 LLM 開發板。(OmniXRI整理製作, 2024/11/15)
### 2.2.微處理器(MPU/SoC)等級開發板
一般來說常見 32/64 位元微處理器(MPU)有 Arm Cortex X / A / R 系列及 RISC-V 兩大陣營。有些廠商甚至會把很多影像處理、壓縮解壓縮、無線通訊、繪圖處理、數位信號處理等功能整合在同一顆晶片中,稱為系統級晶片(System on Chip, SoC),而手機晶片及單板微電腦(SBC)主晶片就是最常見的應用例。
### 2.2.1.行動通訊裝置型
此類裝置採用 MPU / SoC 做為主晶片,可支援 WiFi 或 4G/5G LTE 通訊,會採用 API 呼叫雲端 LLM 服務,其作法很像手機在運行 APP,只是將外觀體積作到很小,容易隨身攜帶。
* Humane, **AI Pin** [7]
- Qualcomm Snapdragon(?), 2.1GHz with Accelerator, 4GB LPDDR4, 32GB eMMC, FDD-LTE/TDD-LTE/WiFi 5/BLE 5.1
* Rabbit, **R1** [8]
- MediaTek Helio P35(Arm Cortex-A53 x8), 2.3GHz, 4GB LPDDR4, 128GB eMMC, 2.4/5 GHz WiFi / BLE 5.0 / 4G LTE
* M5Stack, **LLM Module** [9]
- AxeraTech AX630C(Arm Cortex-A53 x2), 1.2GHz, 4GB LPDDR4, 32GB eMMC
- Wake world(KWS), Speech recognition(ASR), Large Language Molde(LLM), Text-to-Speech(TTS)
![vMaker_EdgeAI_23_Fig02](https://hackmd.io/_uploads/rJWkE74zJe.jpg)
Fig. 2 行動通訊裝置型 LLM 開發板。(OmniXRI整理製作, 2024/11/15)
### 2.2.2.類樹莓派型開發板
樹莓派是最多人使用的單板微電腦,現已發展至第五代,因此也有許多廠商設計出類似的開發板。目前 CPU 使用的是 Arm Cortex-A 系列 64位元架構,可使用多核心及 Arm NEON 指令集來提升運算速度作為 AI 推論使用,不過可惜地是內建的 GPU 並無法提供 AI 加速使用。
為了讓樹莓派在有限的 CPU 算力及記憶體下也能運行 SLM 推論,大致上會有以下幾種解決方案。
1. 使用更小的模型,如 1B 以下。(請參考 Table 1)
2. 採用更有效率的推論平台及函式庫。
- ollama[10]
- llama.cpp[11]
- picoLLM[12]
- RKLLM[13]
3. 增加額外的 AI 加速推論硬體。
- 目前 Pi 5 外加的 AI Kit(Hailo-8L @13TOPS) / AI HAT(Hailo-8 @26TOPS)並不支援 LLM 應用,要等 Hailo-10H 才有支援。
以下為第四代及第五代的基本技術規格。
* Raspberry, **Pi 4** [14]
- Boardcom BCM2711, Arm Cortex-A72 x4, 1.5GHz, GPU VideoCore Ⅵ 500MHz, 1/2/4/8 GB LPDDR4 2133MHz, SD Solt
* Rapsberry, **Pi 5** [15]
- Boardcom BCM2712, Arm Cortex-A77 x4, 2.4GHz, GPU VideoCore Ⅶ 800MHz, 1/2/4/8 GB LPDDR4 4167MHz, SD Slot, PCIe 2.0
Useful Sensors 是由 TinyML 大神 Pete Warden 創立,曾於2023年十月推出網路集資開源專案「AI in a Box」,期望有更多開發者一起加入 LLM 應用。之後又推出「Torre」雙螢幕即時翻譯系統,雖然並未開源,但其作法仍具有很不錯的參考價值。
* Useful Sensors, **AI in a Box** [16] [17]
- 硬體部份採用 Radxa ROCK 5A SBC,本身專注軟體開發。
- Rockchip RK3588S, Cortex-A76 x4, 2.2GHz, Cortex-A55 x4, 1.8GHz, GPU Arm Mali-G610, VPU, NPU 6TOPS, 4 / 8 GB LPDDR4, MicroSD Slot
* Useful Sensors, Torre + Moonshine [18]
- Torre 硬體規格不明,採雙面螢幕作為即時翻譯,搭配 Moonshine 輕量語音轉文字模型使用。
另一家類樹莓派開發板公司「香橙派(Orange Pi)」亦採用 Rockchip 3588S方案,此開發板自帶 NPU 加速,同時亦可使用 RKLLM[13] 運行多種小語言模型,較樹莓派有更好的推論效能表現。
* Orange Pie, **5 Pro** [19]
- Rockchip RK3588S, Arm Cortex-A76 x4, 2.4GHz, Cortex-A55 x4, 1.8GHz, GPU Arm Mali-G610, VPU, NPU(6TOPS@INT8), 4/8/16 GByte RAM, eMMC Socket
一般小型開發板作業系統多半都是執行 Liunx (Debian, Ubuntu等) 居多,而 LattePanda 是少數可同時運行(二選一) Windows 和 Linux 的開發板。這裡可使用 llama.cpp[11] 來完成 SLM 相關應用開發。由於 CPU 是採用 Intel 方案,所以亦可使用 OpenVINO 來開發。
* LattePanda, ** 3 Delta 864** [20]
- Inte Celeron N5105, Qual cores, 2.0 ~ 2.9 GHz, GPU UHD Graphics, 8GB DDR4, 64GB eMMC
- 使用 llama.cpp 可以運行 Phi-2, Llama2-7B, ChatGL2-6B等 SLM 模型。
- 另外 Sigma / 2 Alpha 864s 系列亦可運行 SLM
另外還有兩款產品,採用了算豐(Sophon)的解決方案,除八核心 Arm Cortex-A CPU外,還自帶不同算力的 TPU(即NPU),有助於 SLM 推論效能的表現。
* T-Firefly, **AIBOX-1684X** [21]
- Sophon BM1684X, Arm Cortex-A53 x8, 2.3GHz, TPU(32TOPS@INT8), 8/12/16 GB RAM, 32/64/128 GB eMMC
* Radxa, **Fogwise Airbox** [22]
- Sophon SG2300x, Arm Cortex-A53 x8, 2.3GHz, TPU(24TOPS@INT8), 16GB RAM, 64GB eMMC
![vMaker_EdgeAI_23_Fig03](https://hackmd.io/_uploads/HyBRoFEGyx.jpg)
Fig. 3 類樹莓派型 LLM 開發板。(OmniXRI整理製作, 2024/11/15)
### 2.2.3.Nvidia Jetson Orin 開發板
NVIDIA 在 AI 領域提供了完整解決方案,尤其 GPU 更是提供了強大的算力。在小型開發板及單板微電腦領域目前 Jetson Orin[23] 算是最常見的系列,主要包括 Orin Nano, Orin NX 及 AGX Orin 模組及單板微電腦,其外觀如Fig. 4 左上圖示,重要規格比較如 Table 2 所示。
Tabel 2 NVIDIA Jetson Orin 系列基本規格[23]
| Item | Nano 4GB | Nano 8GB | NX 8GB | NX 16GB | AGX 32GB | AGX 64GB |
| :------: | :------: | :------: | :------: | :------: | :------: | :------: |
| CPU| Cortex-A78AE x6 | Cortex-A78AE x6 | Cortex-A78AE x6 | Cortex-A78AE x8 | Cortex-A78AE x8 | Cortex-A78AE x12 |
| CPU Freq. | 1.5GHz | 1.5GHz | 2.0GHz | 2.0GHz | 2.2GHz | 2.2GHz |
| CUDA Core | 512 | 1024 | 1024 | 1024 | 1792 | 2048 |
| Tensor Core | 16 | 32 | 32 | 32 | 56 | 64 |
| DLA | -- | -- | 1 | 2 | 2 | 2 |
| AI TOPS | 20 | 40 | 70 | 100 | 200 | 275 |
目前 Nvidia 不同等級的 Orin 可以支援的模型大小也有所不同,Nano 8GB 只能支援 7B 以下, NX 32GB 則可支援 30B 以下,而 AGX 64GB 則可支援 70B 以下模型。當然如果以高性能機器跑小模型則會有更快的輸出效能。另外為了能讓不同的硬體有更好的運行效能,這裡還提供了三種小語言模型套件,包括 NanoLLM[24], TensorRT-LLM[25] 及 Small LLM[26]。Orin AGX 和 Nano 運行 SLM 的效能差異[26]可參考 Fig. 4 右下圖示。
![vMaker_EdgeAI_23_Fig04](https://hackmd.io/_uploads/rJGynY4zJl.jpg)
Fig. 4 Nvidia Jetson Orin 系列 LLM 開發板及運行效能示意圖 。(OmniXRI整理製作, 2024/11/15)
## 小結
目前雖已有部份 MCU / MPU / SoC 加上 NPU 獨立運行 SLM,但其對話理解能力、反應速度及回覆正確性相較於雲端大型 LLM 仍有待加強。若使用在車內、自助資訊服務台、智慧物聯網裝置等有限對話內容的服務上,再搭配上擷取增強生成(Retrieval-Augmented Generation, RAG)技術,只根據提供的少量文件回答特定答案,相信隨著模型繼續縮小,硬體推論能繼續提升,裝置單價繼續降低,則小型離線式小語言模型推論裝置就會開始普及,讓機器不再冷冰冰,也可以使用像人類一樣地對話來操作。
## 參考文獻
[1] 陸向陽,【產業觀察】大廠、新創競逐小型語言模型(SLM)技術市場
https://makerpro.cc/2024/08/small-language-model-slm-technology-trend-observation/
[2] 楊亦誠,輕薄型筆電OK!利用OpenVINO部署Phi-3.5「全家餐」
https://makerpro.cc/2024/09/use-openvino-deploy-phi-3-5/
[3] 許哲豪,【vMaker Edge AI專欄 #18】從Computex 2024看邊緣智慧明日之星NPU
https://omnixri.blogspot.com/2024/06/vmaker-edge-ai-18computex-2024npu.html
[4] 許哲豪,【vMaker Edge AI專欄 #15】 從MWC 2024看AI手機未來發展
https://omnixri.blogspot.com/2024/03/vmaker-edge-ai-15-mwc-2024ai.html
[5] Seeed Studio, SenseCAP Watcher
https://www.seeedstudio.com/watcher
https://wiki.seeedstudio.com/watcher/
[6] ARM, MicroNPU Ethos-U85
https://www.arm.com/products/silicon-ip-cpu/ethos/ethos-u85
https://youtu.be/aVkGnmheVzY
[7] Humane, AI Pin
https://humane.com/
[8] Rabbit, R1
https://www.rabbit.tech/rabbit-r1
[9] M5Stack, LLM Module(AX630C)
https://docs.m5stack.com/en/module/Module-llm
[10] ollama, Get up and running with large language models
https://ollama.com/
https://github.com/ollama/ollama/tree/main
[11] Github - ggerganov, llama.cpp
https://github.com/ggerganov/llama.cpp
[12] Github - Picovoice, picoLLM
https://github.com/Picovoice/picollm
[13] Github - Airockchip, rknn-llm (RKLLM)
https://github.com/airockchip/rknn-llm
[14] Raspberry, Pi 4
https://www.raspberrypi.com/products/raspberry-pi-4-model-b/
[15] Raspberry , Pi 5
https://www.raspberrypi.com/products/raspberry-pi-5/
[16] Useful Sensors, AI in a box
https://www.crowdsupply.com/useful-sensors/ai-in-a-box
[17] Jean-Luc Aufranc, AI in a box offline LLM solution leverages Rockchip RK3588S’ NPU (Crowdfunding)
https://www.cnx-software.com/2023/09/21/ai-in-a-box-offline-llm-solution-rockchip-rk3588s-npu/
[18] Useful Sensors, AI in a Box / Moonshine
https://www.usefulsensors.com/
[19] Orange Pi, 5 Pro
http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-Pro.html
[20] LattePanda 3 Delta 864
https://www.dfrobot.com/product-2594.html
https://www.lattepanda.com/blog-323137.html
[21] T-Firefly, AIBOX-1684X
https://www.t-firefly.com/product/industry/aibox1684x
[22] Radxa, Fogwise AirBox
https://radxa.com/products/fogwise/airbox/
[23] NVIDIA, NVIDIA Jetson Orin
https://www.nvidia.com/zh-tw/autonomous-machines/embedded-systems/jetson-orin/
[24] NVIDIA, Jetson AI Lab - NanoLLM - Optimized LLM Inference
https://www.jetson-ai-lab.com/tutorial_nano-llm.html
[25] NVIDIA, Jetson AI Lab - TensorRT-LLM for Jetson
https://www.jetson-ai-lab.com/tensorrt_llm.html
[26] NVIDIA, Jetson AI Lab - Tutorial - Small Language Models (SLM)
https://www.jetson-ai-lab.com/tutorial_slm.html
## 延伸閱讀
[A] Jean-Luc Aufranc, picoLLM is a cross-platform, on-device LLM inference engine
https://www.cnx-software.com/2024/05/29/picollm-is-a-cross-platform-on-device-llm-inference-engine/
[B] MJRoBot (Marcelo Rovai), EdgeAI Made Ease - Small Language Models (SLMs) (Pi 5)
https://www.hackster.io/mjrobot/edgeai-made-ease-small-language-models-slms-060337
[C] Jean-Luc Aufranc (CNXSoft), Rockchip RKLLM toolkit released for NPU-accelerated large language models on RK3588, RK3588S, RK3576 SoCs
https://www.cnx-software.com/2024/07/15/rockchip-rkllm-toolkit-npu-accelerated-large-language-models-rk3588-rk3588s-rk3576/
[D] Github - DaveBben, esp32-llm
https://github.com/DaveBben/esp32-llm
[E] DFRobot, Top10 LLM SBCs (NVIDIA, LattePanda, Raspberry Pi,etc) and Al Sensors with Guides and Tutorials
https://www.dfrobot.com/blog-13515.html
**本文同步發表在[【台灣自造者 vMaker】](https://vmaker.tw/archives/category/%e5%b0%88%e6%ac%84/jack-omnixri)**
---
OmniXRI 整理製作,歡迎點贊、收藏、訂閱、留言、分享
###### tags: `vMaker` `Edge AI`