M4 Apple Neural Engineの内部、パート1:リバースエンジニアリング
概要
- 本シリーズは**maderix(人間)とClaude Opus 4.6(AI)**による協働研究の記録
- **Apple Neural Engine(ANE)**のリバースエンジニアリングと独自ベンチマーク手法の解説
- CoreMLを介さずANEを直接操作する方法の発見と実証
- ANEの内部アーキテクチャや真の性能に迫る分析
- 本記事は三部作の第1部、ANEの仕組みと直接制御方法に焦点
人間とAIによるシステム研究の新しい形
- 本シリーズでは**「we」がmaderix(人間)とClaude Opus 4.6(AI)**のペアを指す
- 人間の直感とAIの論理的分析を組み合わせた共同開発体制
- システム研究における人間–AI協働の新しい自然なスタイルの提案
- 一方が設計者(直感担当)、もう一方が**エンジニア(実装・分析担当)**という役割分担
- 本取り組みの出発点は「AppleのNeural Engineでモデルを訓練できるか?」という素朴な疑問
Apple Neural Engine(ANE)のブラックボックス性
- AppleはANEのISAやアーキテクチャを公開していない
- 直接プログラムできず、CoreML経由でしか操作できない制約
- CoreMLが抽象化・最適化層として機能し、ハードウェアの挙動を把握困難に
- 公式情報の欠如によりリバースエンジニアリングを決意
ANEのリバースエンジニアリング手法
- CoreMLからIOKitカーネルドライバまでのソフトウェアスタックを徹底解析
- CoreML非依存でANE上でプログラムをコンパイル・実行する方法の発見
- バイナリフォーマットの解析、真のピーク性能の測定
- 推論専用設計のチップでニューラルネット訓練に成功
既存リソースと本研究の独自性
- hollance/neural-engine:ANEの挙動・性能・命令体系のコミュニティドキュメント
- mdaiter/ane:ANECompilerやIOKitのリバースエンジニアリング
- eiln/ane:ANE用Linuxドライバ(Asahi Linuxプロジェクト)
- apple/ml-ane-transformers:Apple公式のANE最適化Transformer実装
- 本研究の独自成果
- CoreMLなしで_M4の_ANEClient APIに直接アクセス
- MILコンパイルパスの解明
- CoreMLオーバーヘッドを排除した真のスループット測定
- ANE上でのモデル訓練
ANEのソフトウェアスタックとAPI発見
- AppleNeuralEngine.framework内の40以上の非公開クラスを特定
- 例:_ANEClient, _ANEModel, _ANERequest, _ANEIOSurfaceObject, _ANEInMemoryModel
- ANEClientクラスを使うことでCoreMLを迂回した直接制御が可能
- IOSurfaceによるI/OでGPUとのゼロコピー転送も理論上可能
- 127リクエストの同時実行キューを持ち、高スループット設計
MILとE5バイナリ、ANEの計算モデル
- MIL(Machine Learning Intermediate Language):型付きSSA表現で可読性高い
- ANEのテンソルレイアウト:NCDHW+Interleave(例:[1, 1024, 1, 1024])
- ANECompilerはMILからE5バイナリ(FlatBuffer構造)を生成
- E5バイナリはパラメータ化された計算グラフの記述であり、計算自体の詳細ではない
- ANEは固定機能プリミティブ(畳み込み・行列積・要素単位計算)をテンソル記述でパラメータ化
訓練用途のためのインメモリコンパイル
- _ANEInMemoryModelDescriptorでMILテキストをメモリから直接コンパイル可能
- milTextは**NSData(UTF-8バイト)**で渡す
- weightsはNSDictionaryで渡す
- 内部的に一時ディレクトリ利用、書き込み権限が必要
- Apple内部でも**Desctiptor(スペルミス)**など非公開APIに痕跡
M4 ANEのハードウェア特性
- 16コア、127キュー深度、独立DVFS、ハードパワーゲーティング
- IOKitのIOReportLegendで独立電源管理・適応クロッキング・多様なトリガーを確認
- ANECompiler.frameworkから主要サポート演算を特定
- Conv(畳み込み)が主力プリミティブ
- 1×1畳み込みでmatmulより高スループット(詳細は第2部で解説)
データ転送とキャッシュ機構
- IOSurfaceによるデータ転送でGPU↔ANEゼロコピーの可能性
- E5バイナリキャッシュで初回コンパイル20–40ms、再利用高速
- 推論では有効だが、訓練では頻繁な再コンパイルが課題
未解明・今後の課題
- ANEコアのマイクロアーキテクチャとISA
- グラフ内演算へのコア割当て方式
- クロック周波数とDVFS挙動
- ハードウェアパフォーマンスカウンタの有無
- SRAMトポロジー(バンク構成など)
次回予告とリソース
- 第2部:ベンチマーク結果、SRAM性能限界、畳み込みvs行列積、Appleの公称性能値の検証
- 第3部:Apple非推奨のANE上でのニューラルネット訓練の実践
- コード公開:github.com/maderix/ANE の ane/ ディレクトリ(M4 Mac Mini, macOS 15.xで検証済み)