事情很有意思。

就在这两天,有人把 M4 芯片里的 Apple Neural Engine(ANE)给逆向工程了。

Ronald Mannak 甚至在 X 上调侃:“赶紧读,万一被 Apple 下架了呢。”

image

这不仅仅是一次技术破解,更是一场对 Apple “黑盒”策略的打脸。

为什么这么说?因为 Apple 官方根本不想让你知道 ANE 是怎么工作的。没有文档,没有指令集架构(ISA),甚至连直接编程的接口都没给——所有的操作都必须经过 CoreML 这一层“中间商”。

结果就是,所谓的硬件加速,被软件层狠狠地砍了一刀。

Apple 不想让你看到的“黑盒”

一切始于一个简单的问题:能不能在 Apple Neural Engine 上训练模型?

按 Apple 的官方逻辑,这问题就不成立。ANE 是为推理设计的,不是给你做训练的。而且 Apple 把这东西封得死死的:你想编程?没门。你想看底层架构?做梦。

但 maderix(也就是这次的主角,一个人加一个 Claude Opus 4.6)不信邪。

他们花了好几天时间,从 CoreML 一路扒到底层的 IOKit 内核驱动,把整个软件栈翻了个底朝天。

image

这就是 M4 的 ANE(代号 H16G)。16 个核心,127 个队列深度,独立的电源管理。

说实话,这东西的硬件设计挺激进的。它不是 CPU,也不是 GPU,而是一个图执行引擎。你不需要一条条发指令,只需要把整个神经网络图扔进去,硬件就会像执行一条原子指令一样跑完。

但这有个前提:你得能跟它对话。

性能缩水 4 倍,CoreML 的“智商税”

这是最让人意外的发现。

我们总以为 CoreML 是通往 ANE 的“高速公路”,但这次逆向工程揭露了一个残酷事实:CoreML 对于小操作来说,简直就是个收费站。

数据显示,CoreML 对小操作增加了 2-4 倍的开销

什么概念?你的模型推理本来只需要 1 毫秒,结果 CoreML 的各种抽象层、优化通道和中间处理,硬生生给拖到了 3-4 毫秒。

这就解释了为什么 WWDC 传闻中的 CoreAI 更新这么重要。 现有的软件栈,根本喂不饱这头硬件猛兽。

maderix 没用 CoreML,而是直接找到了 _ANEClient 这个私有 API。

image

看这张图,CoreML 只是冰山一角。真正的直通车道在下面:AppleNeuralEngine.framework。

他们甚至破解了 ANE 的编译格式。CoreML 传给 ANE 的不是 ONNX,而是一种叫 MIL 的中间语言,最后编译成 E5 二进制

更有意思的是,一个 1024×1024 的矩阵乘法,编译出来的 E5 文件只有 2688 字节。128×128 的也是 2680 字节。

这说明什么?ANE 根本不是在跑“代码”,而是在配置硬件单元。 E5 文件更像是一份“接线图”,告诉硬件把哪些固定的计算单元连起来。

38 TOPS 的水分与“拼写错误”

Apple 宣传 M4 的 ANE 算力是 38 TOPS。

这个数字看看就好。

maderix 的测试发现,如果你想跑出这个峰值性能,必须绕过 CoreML。而且,卷积运算比矩阵乘法快 3 倍。如果你用错误的方式调用,性能直接打折。

还有一个挺逗的细节。

在逆向 Apple 内部代码时,他们发现了一个类名里夹着个拼写错误:Desctiptor。

哪怕是 Apple 的工程师,写私有 API 时也会手滑啊。

通过 IOKit 探测,他们还发现 ANE 有独立的 DVFS(动态电压频率调节)。这意味着它能根据负载自己调节频率和电压,跟 CPU、GPU 的电源域完全隔开。

一旦空闲,功耗直接归零,真的是 0 毫瓦。

老实讲,这硬件设计得确实漂亮。但软件层面的封闭,让它的潜力被锁死了一大半。

在推理芯片上强行“训练”

这是整件事最疯狂的部分。

ANE 本来是设计用来做推理的,也就是“跑模型”,而不是“练模型”。但 maderix 既然已经绕过了 CoreML,拿到了底层控制权,他们决定干点 Apple 明令禁止的事。

他们让 ANE 跑起了反向传播。

为了做到这点,他们必须解决一个麻烦:编译太慢。普通编译要写文件到磁盘,跑训练每一步都要更新权重,这谁受得了?

他们找到了内存编译的接口 _ANEInMemoryModelDescriptor,直接在内存里搞定。

虽然过程中踩了无数坑(比如参数必须是 NSData 不能是 NSString,比如内存编译其实还是要在临时目录写个文件……),但他们最后做到了。

在一个只为了推理而生的芯片上,强行跑通了神经网络训练。

围墙花园的墙,被凿了个洞

image

文章最后,maderix 把代码开源了。

这事儿的意义不仅仅是技术极客的炫技。它暴露了一个核心矛盾:硬件越来越强,软件层却越来越厚。

ANE 的硬件效率高得惊人,但 CoreML 的存在,让开发者实际上用不到这份性能。2-4 倍的开销,对于边缘计算这种毫秒必争的场景,简直是灾难。

现在,墙被凿开了一个洞。

image

但这会不会引起 Apple 的注意?_ANEClient 这种私有 API,随时可能在下一个 macOS 版本里被封掉。

不过,有一点是肯定的:如果你想知道硬件的真实极限,永远别指望官方的“中间商”。

image

至于那个被逆向出来的 E5 二进制格式,以及那个神秘的 127 队列深度到底能跑多快?那是 Part 2 和 Part 3 的故事了。

这事儿还没完。

参考链接:
https://x.com/ronaldmannak/status/2028560995875168292