Mac 本地跑大模型别指望 NPU:M1 的 ANE 被逆向了个遍,内存读带宽只有 GPU 的一半
想拿 Mac 的 NPU 跑本地大模型的可以先缓一缓。一位维护过 Apple Neural Engine 逆向 Linux 驱动(eiln/ane,527 星)的作者,8 月 10 日发了篇 5000 多字的分析,把 M1 的 ANE 从计算单元、数据流、调度器到内存结构整个拆了一遍,这篇在 9 月 12 日冲上 Hacker News 228 分。他的结论很直接:ANE 的架构太「有主见」,撑不起一个通用加速器平台。
算力其实不弱:16 个计算核,每核 128 条 FP16 乘加通道(跑 int8 是 256 条),合计 2048 条并行乘加;不过累加器是 Q16.16 定点,在 2 的 15 次方就饱和;tanh 这类激活靠 33 个 FP16 查表加线性插值实现。
真正的瓶颈在搬数据。作者实测同一颗 M3 上,ANE 读 kernel 的 DMA 带宽是 37.99 GB/s,读 tile 是 59.08 GB/s,而 GPU 的读带宽是 77.70 GB/s;更麻烦的是这两路 DMA 的时间是相加的——请求一次发一个,而不是并行重叠。
M5 把 ANE 核直接折进 GPU 核里,作者认为这标志着独立 NPU 的「终局开端」,同时提到连 macOS 自己主要也只拿 ANE 干 Finder 里生成放大预览图这类活。
为什么这决定本地推理体验:自回归解码每个 token 都要把模型权重整份搬一遍,是典型的带宽瓶颈,谁的内存读带宽高谁快,跟峰值算力关系不大;而 ANE 的数据流是照 2017 年 CNN 那种可预测复用模式设计的。
这是第三方逆向工程,不是苹果官方文档;关键实验做在 M1,带宽数字测在 M3;文章 8 月 10 日就发了,这次热度来自 9 月 12 日的 HN 讨论,不是当天新闻。
我的判断:挑本地推理硬件时别被「NPU 多少 TOPS」带偏,先看内存带宽和搬运是不是瓶颈;反过来说,如果你的负载是 CNN 这类非自回归推理,ANE 依然便宜省电,它只是不适合跑大模型解码。
你选 Mac 本地 AI 方案时,先看算力还是先看内存带宽?
