概要
- 本シリーズは 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で検証済み)