技术博文:重新逆向解析苹果神经引擎地址:eiln.github.io/posts/ane.html Apple Neural Engine(ANE)是苹果芯片中专门处理机器学习计算的硬件。早期神经网络以卷积神经网络(CNN)为主:模型权重能够长时间留在片上,反复作用于不同图像区域,数据复用规律非常稳定。现代 Transformer,尤其是大语言模型逐 token 解码时,却往往需要为每个 token 重新读取大量权重,更依赖内存带宽。文章通过逆向 M1 ANE,解释这种工作负载变化为什么会让原本高效的专用架构显得力不从心。
“三年前,我停止了对 Apple Neural Engine 逆向驱动的开发,因为当时意识到 ANE 并没有那么实用。它的架构倾向性太强,难以围绕它建立通用加速平台;即使 Linux 驱动开放了硬件接口,也无法扩大它能够处理的工作负载范围。
随着苹果把“大语言模型性能”作为新一代芯片的重点,并将相关神经网络计算能力更紧密地整合进 GPU,独立 NPU 似乎开始走向终点。因此,作者决定回到 M1 ANE,把三年前没有完成的逆向工作继续做完。
三年前的目标是让算子能够在 ANE 上运行;这一次,目标则是完整描绘它的计算、数据通路、调度、存储和执行模型。因为这些内部设计揭示了苹果在 2017 年首次把机器学习能力固化进芯片时,对工作负载作出了哪些假设,也反映了计算需求如何从 CNN 时代转向今天以 GPU 承担 Transformer 的时代。”

