跳到主要内容

针对边缘优化的 LLM

· 阅读需 4 分钟
Meet Patel
Meet Patel
MLE @ Synaptics

在自然语言处理领域不断发展的今天,LLM(大语言模型)和 SLM(小语言模型)已成为从聊天机器人到文本补全等各种应用的强大工具。使用 Astra Machina 开发套件在嵌入式系统上运行 Llama.cpp 为部署本地化、高效的 AI 解决方案开辟了新的可能性,特别适合边缘计算环境。在本博客中,您将了解在 Astra Machina 开发套件上实现 llama.cpp 的高级方法,使设备能够直接运行高级 LLM 功能。

Llama.cpp 使得在边缘设备或各种本地硬件上运行 Llama 和其他支持的模型变得简单得多。其轻量级设计经过优化,无需强大的 GPU 或云基础设施即可部署。通过使用 CPU 推理,Llama.cpp 使模型能够高效运行。它还支持在 GPU 上运行。开发人员可以利用 OpenCL 在 Machina 的 GPU 上运行它。

image

在 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.gguf4941 MB~10.09 令牌/秒
tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf1916 MB~2.90 令牌/秒
gemma-2b-it-q4_k_m.gguf42515 MB~4.97 令牌/秒
gemma-2b-it-q4_k_m.gguf12491 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 内进行时,一切都会更高效地运行。

延伸阅读

对于那些渴望进一步探索的人,这里有一些详细的、循序渐进的教程来指导您完成整个过程。