深入剖析M4芯片中的苹果神经引擎,第一部分:逆向工程
Apple
研究人员对M4芯片中的苹果神经引擎(ANE)进行了逆向工程,绕过了Core ML,直接编译并运行神经网络程序。他们发现该神经引擎的真实峰值性能低于苹果宣称的38 TOPS(每秒万亿次操作),并成功在该芯片上训练了一个模型,而该芯片本仅设计用于推理。
文章详细介绍了作者如何对M4芯片中的苹果神经引擎(ANE)进行逆向工程,绕过了Core ML直接与硬件打交道。他们探索了从Core ML到IOKit内核驱动程序的整个软件栈,发现了如何在不用Core ML的情况下编译和执行ANE上的程序,并揭开了二进制格式的神秘面纱。他们测量了实际的峰值性能,发现苹果宣传的“38 TOPS”具有误导性。最终,他们成功地在专为推理设计的芯片上训练了一个神经网络。ANE不是GPU或CPU;它是一个计算图引擎,将编译好的神经网络作为一个单一的原子操作来执行。他们利用方法调配和二进制分析,在AppleNeuralEngine.framework中发现了超过40个私有类,其中包括_ANEClient,它允许直接访问编译-加载-执行流水线。他们还发现,模型是使用MIL语言来描述的,而二进制格式E5是一个FlatBuffers文件,它参数化了固定的硬件原语,而不是存储传统的机器代码。他们找到了一种使用_ANEInMemoryModelDescriptor在内存中编译模型的方法,尽管它仍然会写入一个临时目录。M4中的ANE有16个核心,队列深度为127,并具有独立的动态电压和频率调节(DVFS)。
来源: Habr — хаб ML —
原文
