针对边缘优化的 LLM
在自然语言处理领域不断发展的今天,LLM(大语言模型)和 SLM(小语言模型)已成为从聊天机器人到文本补全等各种应用的强大工具。使用 Astra Machina 开发套件在嵌入式系统上运行 Llama.cpp 为部署本地化、高效的 AI 解决方案开辟了新的可能性,特别适合边缘计算环境。在本博客中,您将了解在 Astra Machina 开发套件上实现 llama.cpp 的高级方法,使设备能够直接运行高级 LLM 功能。
Llama.cpp 使得在边缘设备或各种本地硬件上运行 Llama 和其他支持的模型变得简单得多。其轻量级设计经过优化,无需强大的 GPU 或云基础设施即可部署。通过使用 CPU 推理,Llama.cpp 使模型能够高效运行。它还支持在 GPU 上运行。开发人员可以利用 OpenCL 在 Machina 的 GPU 上运行它。

在 Machina 上本地编译 llama.cpp 二进制文件
您可以在 Machina 开发板上本 地构建二进制文件,因为我们的 OOBE(开箱即用)镜像 v1.2.0 及以上版本支持所需的包和编译器。
您也可以通过在主机器上设置交叉编译环境来进行交叉编译。这包括获取与 Astra Machina 架构匹配的交叉工具链。您可以从这里下载 Astra 的预构建工具链。
获得预构建工具链后,在主机器上设置 Poky 构建环境。这包括集成工具链和配置构建设置,以确保生成的二进制文件与 SL1680 处理器兼容。
在 Machina 上部署 llama.cpp
准备好二进制文件后,下一阶段涉及将其部署到 Machina 开发板上。SL1680 处理器可以轻松在 CPU 上运行二进制文件。开发人员可能需要采用优化措施来更高效地在我们的 GPU 上管理工作负载。
您还需要从 HuggingFace 下载 gguf 格式的模型到 Machina 开发板。GGUF 是一种二进制格式,设计用于快速加载和保存模型,实现高效推理。
我们评估了 llama.cpp 系列中各种模型的性能。指标总结如下表:
| 模型 | 线程数 | 内存使用 | 评估时间(令牌/秒) |
|---|---|---|---|
| tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | 4 | 941 MB | ~10.09 令牌/秒 |
| tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf | 1 | 916 MB | ~2.90 令牌/秒 |
| gemma-2b-it-q4_k_m.gguf | 4 | 2515 MB | ~4.97 令牌/秒 |
| gemma-2b-it-q4_k_m.gguf | 1 | 2491 MB | ~1.33 令牌/秒 |
观察结果
在嵌入式系统上部署 llama.cpp 等高级 AI 模型展示了边缘计算在语言处理方面的巨大潜力。利用 Astra Machina 开发套件上 SL1680 处理器的强大功能,您现在可以直接在设备上运行复杂的语言模型,无需依赖云基础设施。这实现了低延迟和增强隐私的实时自然语言理解和生成,特别适合在连接性或云依赖可能受限的环境中需要高效、本地 AI 能力的应用。
- 对于边缘设备,建议使用较小版本的模型,如 TinyLlama,因为它们比 LLaMA2 等较大模型需要更少的计算能力。这些较小的模型更适合硬件资源有限的设备。
- 在测试中,Q4_K_M 量化方案在准确性和推理速度之间提供了最佳平衡。可以说 Q4_K_M 在没有显著降低准确性的情况下提供了最佳结果。
- Astra Machina 有 4GB RAM,其中约 3.5GB 可用。模型应加载在可用 RAM 内,以防止推理期间的内存交换,因为这可能导致严重延迟。确保模型适合物理内存对于维持实时性能至关重要,因为当所有操作都在 RAM 内进行时,一切都会更高效地运行。
延伸阅读
对于那些渴望进一步探索的人,这里有一些详细的、循序渐进的教程来指导您完成整个过程。