找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3781

积分

0

好友

518

主题
发表于 5 小时前 | 查看: 5| 回复: 0

就在最近,技术圈发生了一件颇有意思的事:有人通过逆向工程,揭开了 Apple M4 芯片中 Apple Neural Engine(简称 ANE)的秘密。Ronald Mannak 甚至在社交平台上调侃道:“赶紧读,万一被 Apple 下架了呢。”

这不仅仅是一项技术破解,更像是对 Apple 封闭生态策略的一次直接挑战。为什么这么说?因为 Apple 官方从未公开过 ANE 的工作细节。它没有文档,没有公开的指令集架构(ISA),开发者甚至没有一个直接的编程接口——所有操作都必须经过 CoreML 这一层抽象的“中介”。

其结果就是,硬件本应提供的强劲加速性能,在软件层面被无情地稀释了。

Apple 不愿示人的技术“黑盒”

整个探索源于一个朴素的问题:“我们能在 Apple Neural Engine 上直接训练模型吗?”

按照 Apple 官方的定义,这个问题本身可能就不成立。ANE 是专为模型推理(Inference)而设计的硬件,而非训练。更关键的是,Apple 把这部分技术封锁得严严实实:你想直接编程?没门。你想了解底层架构?更是痴心妄想。

但一位名为 maderix 的研究者(以及他的得力助手 Claude Opus 4.6)并不服气。他们花了数天时间,从 CoreML 的公共 API 一路深挖,穿透 Espresso/E5RT 等私有层,最终触及底层的 IOKit 内核驱动,几乎将整个软件栈翻了个底朝天。

Apple M4 芯片 ANE(H16G)规格表
M4 芯片中的 ANE(代号 H16G)拥有 16 个核心和高达 127 的队列深度,并具备独立的电源管理域。

平心而论,ANE 的硬件设计相当激进。它并非传统的 CPU 或 GPU,而是一个图执行引擎。开发者无需一条条发送指令,只需将整个计算图(例如一个神经网络)提交给它,硬件便会像执行一条原子指令一样,高效地完成整个图的计算。

当然,这一切的前提是:你得有办法直接跟它“对话”。

性能缩水高达4倍:CoreML 的“隐性开销”

这是整个逆向工程中最令人意外的发现之一。

我们通常认为 CoreML 是高效利用 ANE 的“高速公路”。但这次挖掘揭示了一个残酷的现实:对于细粒度的操作而言,CoreML 引入的开销巨大,性能损失可达 2 到 4 倍。

这是什么概念?假设你的模型推理在底层硬件上原本只需 1 毫秒,但经过 CoreML 的一系列抽象层、优化通道和中间处理,最终耗时可能被拉长到 3 至 4 毫秒。

这也解释了为什么业界如此期待传闻中 WWDC 上可能发布的 CoreAI 更新。 现有的软件栈,很大程度上限制了下层硬件的真实潜能。

maderix 团队没有使用 CoreML,而是直接找到了 _ANEClient 这个私有框架作为入口。

Apple CoreML 与 ANE 底层架构流程图
CoreML 只是冰山一角,真正的直通路径在更底层的 AppleNeuralEngine.framework。图中标明了绕过 CoreML 直接进入的入口点。

他们甚至破解了 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(正确应为 Descriptor)。

看来,即便是 Apple 的工程师,在编写私有 API 时也难免会手滑。

通过 IOKit 探测,他们还确认 ANE 拥有独立的 DVFS(动态电压与频率调节)系统。这意味着它能根据实时负载自行调节频率和电压,与 CPU、GPU 的电源管理完全隔离。在空闲状态下,其功耗可以真正降至 0 毫瓦。

不得不说,这块硬件的设计非常精妙。但软件层的过度封闭,无疑锁死了它大半的潜力。

在推理芯片上强行实现“模型训练”

这是整件事最富挑战性的部分。

ANE 从设计初衷上就是一个推理引擎,用于“运行”已训练好的模型,而非“训练”新模型。但当 maderix 团队绕过了 CoreML,获得了底层控制权后,他们决定挑战一下 Apple 划定的禁区。

他们尝试让 ANE 执行神经网络训练中的关键步骤:反向传播。

为了实现这一点,他们必须解决一个棘手的问题:编译速度。传统的编译流程需要将文件写入磁盘,而训练过程的每一步都可能涉及权重更新,频繁的磁盘 I/O 是无法接受的。

他们找到了内存编译的接口 _ANEInMemoryModelDescriptor,试图直接在内存中完成模型的编译与更新。过程当然充满了坎坷(例如发现参数必须是 NSData 类型而非 NSString,又或者发现所谓的“内存编译”依然需要在临时目录写入文件),但最终,他们成功了。

在一个专为推理设计的芯片上,他们强行跑通了神经网络训练流程。 这无疑是对硬件设计边界的一次大胆探索。

“围墙花园”被凿开了一个洞

象征技术突破的芯片概念插画

文章最后,maderix 选择了将相关代码开源。此举的意义远超技术极客的炫技。它尖锐地揭示了一个普遍存在的矛盾:硬件能力飞速进步,但软件抽象层却可能越来越厚重,成为性能瓶颈。

ANE 的硬件能效本应非常出色,但 CoreML 的存在,使得广大开发者难以触及这份本属于硬件的性能。2-4 倍的开销,对于移动端和边缘计算等对延迟极其敏感的场景而言,影响可能是决定性的。

现在,这堵封闭的墙被凿开了一个洞。当然,这可能会引起 Apple 的注意。像 _ANEClient 这类私有 API,随时可能在未来的 macOS 版本中被修改或封禁。

但有一点是确定的:如果你想知道硬件能力的真实上限,永远不能完全依赖官方提供的、带有“中间商”的抽象层。 有时,深入的逆向工程和底层探索是揭示真相的唯一途径。

呈现未来科技感的笔记本电脑概念图

至于被逆向解析出的 E5 二进制格式细节,以及那个神秘的 127 队列深度究竟能带来多高的并发性能?那将是第二部分和第三部分的故事了。

这件事,远未结束。对于致力于人工智能硬件加速和边缘计算的开发者而言,此类探索提供了宝贵的洞见,也引发了关于硬件开放性与软件效率的更深层思考。你可以在技术社区如云栈社区智能 & 数据 & 云板块找到更多相关的深度讨论。

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




上一篇:苹果M5 Pro/Max芯片发布,MacBook Pro与Studio Display XDR详解
下一篇:AI加速时代,架构师如何从流程守门人转向系统秩序维护者
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-5 20:34 , Processed in 0.678372 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表