
在Armv9-A架构中,Arm 可伸缩矩阵扩展 2 (Scalable Matrix Extension 2,简称 SME2)是一套先进的 CPU 指令,旨在加速矩阵密集型计算。这项新的 Arm 技术旨在帮助移动开发人员直接在CPU上运行高级AI模型,提高性能和效率,而无需对他们的应用进行任何更改。
SME2构建在之前提供的SME扩展基础之上,该扩展引入了矩阵操作和流式向量,通过增加对多向量数据处理指令的加速和支持、从多向量加载和存储以及多向量预测机制的支持来扩展。
Arm 的 AI 和开发者平台与服务副总裁 Alex Spinelli 表示,尽管 SME2 的性能优势已经在最新的iOS设备和苹果M4系列芯片上可用,但它们很快也将被扩展到 Android 设备。
矩阵工作流程对于实时移动推理任务至关重要,如图像和语言处理以及语音生成。Arm 表示,特别是,在支持 SME2 和不支持 SME2 的工作流程之间的比较显示出了显著的改进:
在启用了 SME2 硬件上,谷歌的 Gemma 3 模型提供了 6 倍更快的聊天响应,并且可以在不到一秒的时间内,在单个 CPU 核心上开始总结多达 800 个单词。
同样,在运行 3.8B 参数 Phi-3 Mini 模型的 vivo X200 Pro 旗舰智能手机上,对于提示处理的测量速度提高了2.6倍。
为了帮助开发人员利用 SME2,Arm 提供了一个名为KleidiAI的库,该库集成在谷歌的 XNNPACK 中。XNNPACK 为多个机器学习和 AI 框架提供支持,包括阿里巴巴的 MNN、谷歌的 LiteRT、微软的 ONNX Runtime 和 llama.cpp。
当启用了 SME2 并且兼容时,XNNPACK 会自动通过 KleidiAI 将矩阵密集型操作路由到 SME2 这样开发人员就可以直接受益,而无需对应用程序逻辑或基础设施进行更改。
KleidiAI 的设计使其可以轻松集成到 C 和 C++代码库中,这得益于其基于微内核的架构。
在 Arm 的术语中,微内核指的是“以几乎最小的软件数量来以高性能加速给定的 ML 操作符”,例如打包或矩阵乘法。解释为什么微内核不仅仅是一个函数的关键细节是,每个微内核只处理输出张量的一部分,从而使得完整的操作可以跨多个线程分发。
此外,KleidiAI 还有其他受到开发人员欢迎的功能,包括它不依赖外部依赖项、不使用动态内存或需要内存管理,以及高度模块化的设计,其中每个微内核是一个独立的库,仅由 .c
和 .h
文件组成。
为了帮助开发人员利用 SME2, Arm 发布了额外的资源,展示了使用 LiteRT、MNN、PyTorch 和其他支持框架的基于 LLM 的应用程序的真实示例。
原文链接:
评论