跳转到主要内容
博客

使用 ExecuTorch 和 KleidiAI 将生成式 AI 带给大众

主要收获

  • ExecuTorch 0.7 现已默认启用 KleidiAI,可在 Arm CPU 上实现自动加速,无需任何集成工作。
  • 生成式 AI 现可在数百万现有设备上高效运行,包括 3-5 年的智能手机和 Raspberry Pi 5,这得益于 Arm CPU 的 SDOT 和 I8MM 等功能。
  • 设备端用例,例如私人语音助手、消息摘要以及本地代码/生成式 AI 副驾驶现已成为可能,无需云端,也无需消耗大量电池。

Arm 最近的 SME2 公告 强调了 Arm KleidiAI 作为 AI 加速层在推动 Arm 上下一波 AI 浪潮中的日益重要的作用。通过嵌入到广泛使用的边缘 AI 框架,如 XNNPackMediaPipeMNNONNX Runtime 甚至 llama.cpp 中,KleidiAI 已在无需开发人员修改代码的情况下实现了 显著的性能改进。这一基础直接促成了即将发布的 ExecuTorch 0.7 Beta 版,其中 KleidiAI 将默认启用,为基于最新 Arm CPU 架构的设备以及大量基于早期世代的现有手机带来自动加速。

Android 和跨平台开发者,无论是第一方还是第三方,都可以通过 ExecuTorch 和 XNNPack 立即访问 KleidiAI AI 性能优化。结果是什么?更快的模型启动、更低的延迟、更小的内存占用——并且没有集成障碍。以前需要自定义调优的功能现在是开箱即用的性能。这种效率不仅为最新的高端设备,而且为更广泛的硬件解锁了新的可能性。

当我们考虑在移动设备上运行生成式 AI (GenAI) 时,很容易想象配备强大 CPU、GPU 和 NPU 的最新旗舰智能手机。但是,如果我们告诉您 GenAI 体验(例如运行大型语言模型 (LLM))也可以带到 3、4 甚至 5 年前的设备上呢?甚至带到 Raspberry Pi 5 上呢?

好吧,这现在不仅仅是一个愿景,而是一个实际的现实——这要归功于 Arm SDOT CPU 功能,该功能自 2015 年以来已在 Arm CPU 中提供。

什么是 SDOT?

SDOT(有符号点积)指令在 Armv8.2 架构及后续 CPU 中引入,可以高效地对 8 位有符号整数向量执行点积运算。下图展示了 Arm CPU 上可用的一条此类 SDOT 指令的行为。

如上图所示,该指令产生四个 32 位整数输出,每个输出都是左侧(LHS)和右侧(RHS)向量寄存器中对应组的四个 int8 元素点积的结果。

当使用 Int8 或更低位精度格式(如 Int4)时,此指令可用于加速矩阵乘法例程——这是每个 LLM 核心计算工作负载。这些操作通常涉及左侧矩阵的单个行与右侧矩阵的对应列之间的多次点积。

SDOT 指令已在各种设备上得到广泛支持,为生成式 AI 用例触达更广泛的智能手机用户打开了大门。截至今天,大约 30 亿基于 Arm 的设备中的 Arm CPU 都包含此功能——为大多数用户提供了强大的设备端生成式 AI 体验。事实上,所有设备中 72% 现在都支持此指令。

得益于 ExecuTorch,我们现在能够让 Llama 3.2 等模型在大多数 Android 设备以及 Raspberry Pi 5 等边缘设备上高效运行。

KleidiAI + ExecuTorch:整合一切

去年针对量化 Llama 3.2 1B 的发布,ExecuTorch 和 KleidiAI 团队合作,利用 armv8.6 架构及后续版本中可用的 I8MM 功能,为 Arm CPU 上的 Int4 矩阵乘法提供了优化。正如之前的一篇博文中强调的,与非 KleidiAI 内核相比,带有 KleidiAI 的 ExecuTorch 在 Galaxy S24+ 上的预填充性能提高了 20% 以上。这意味着在预填充阶段每秒处理超过 350 个 token,在解码阶段每秒处理超过 40 个 token。这种性能水平足以仅使用 Arm CPU 实现设备端任务,例如摘要未读消息,并提供流畅的用户体验。举例来说,摘要大约 50 条未读消息通常涉及处理大约 600 个 token。

今年,ExecuTorch 和 KleidiAI 团队专注于通过利用 SDOT 指令来优化 Int4 矩阵乘法性能,旨在扩大其采用范围。
👉 查看 XNNPack PR

虽然仅使用 SDOT 扩展的 Arm CPU 上的 LLM 性能可能无法与最新的旗舰智能手机匹敌,但它仍然能够为设备端生成式 AI 提供令人印象深刻的功能。事实上,在许多情况下,解码阶段的速度比人类平均阅读速度还要快——这表明即使是较旧的 Arm CPU 也能支持实用且有意义的生成式 AI 用例。

例如,结合语音转文本和文本转语音模型,这种本地 LLM 能够创建一个完全离线的私有智能助手,消除了数据隐私问题,同时仍然提供丰富的基于语音的交互。这样的设备可以无缝地与您的连接设备进行交互,确保用户对其数据感到安心。

运行 Llama 3.2 1B 的另一个引人注目的用例是本地文本编辑器中的上下文感知文本补全。当您打字时,模型会提供智能的实时建议,以简化写作或编码工作流程——所有这些都无需互联网连接。

这些只是几个例子,它们只是设备端生成式 AI 可能性的冰山一角。

结论:人人享有生成式 AI

凭借 SDOT、KleidiAI 和 ExecuTorch 的结合力量,我们正在突破可能性的边界——将生成式 AI 带出高端旗舰设备,并在数十亿已在使用的基于 Arm 的设备上实现可访问性。

现在轮到你了——我们很高兴看到你将创造出什么。为了帮助你入门,请查看 Arm 的学习路径,它旨在指导你使用 ExecuTorch 和 KleidiAI 开发自己的 LLM 应用程序。