ハクソク

世界を動かす技術を、日本語で。

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で検証済み)

Hackerたちの意見

この記事は明らかに人間(とAI)が書いたもので、いくつかの「LLMらしさ」が見受けられるけど、全体的にはすごく情報量が多くて楽しめたよ! :) 記事には自分たちのGithubリポジトリへのリンクもあるよね: https://github.com/maderix/ANE
もうすぐ1年くらいで、たくさんの人が毎日LLMとやり取りするようになって、そのスタイルが人間の話し方や書き方に逆に影響を与えるようになると思う。
それに、Prior Artのセクションは、各行に「ドキュメント化する」とか「洞察を提供する」とか「確認する」みたいな無駄な動詞が繰り返し出てきてる。これ、間違いなくAIが書いた部分があるよね。
パート2にはベンチマークが載ってるよ: https://maderix.substack.com/p/inside-the-m4-apple-neural-en... 6.6 FLOPS/Wで、使ってないときは完全にオフにできるから、アイドル時は0Wだよ。
> このシリーズを通して、「私たち」はmaderix(人間)とClaude Opus 4.6(Anthropic製)がペアで作業していることを指します。リバースエンジニアリング、ベンチマーク、トレーニングコードは共同で開発されました。 なるほど、「共同で」ね。なんでこんな雰囲気でコーディングされた分析を信じられるの? 私はこの分野の専門家じゃないから、Opusが私たち二人を騙してないってどうやって確認するの? LLMは専門家をも騙すような説得力のあるデタラメを書くからね。この内容の各事実を手動で確認したの? 疑わしいな。免責事項をありがとう、読まなくて済んだよ。
Claudeは悪いベンチマークを隠すのが得意だから、明らかに勝っているところだけを見せてくるよ。記事の中にも変なベンチマークがいくつかあるのが見える。
人間も昔から説得力のあるデタラメを無限に書いてきたし、LLMが登場する前から、偽の論文や捏造された結果は学術界で増え続けていたんだ。意図的な詐欺だけを数えると、再現性の危機は科学、特に医学や心理学の研究にも影響を与えている。人間はリバースエンジニアリングをする際に間違いや仮定をすることもあるから、結果を検証したりテストしたりするためには、常にもっと多くのエンジニアが必要だよ。
私はXcodeチームで何年も働いていて、Appleがこの手のことを難しくするためにどれだけの努力をしているか知ってる。あなたが素晴らしい仕事をしたことを伝えたかったし、次の第3弾を楽しみにしてるよ。
>私はXcodeチームで何年も働いてたけど、どうしてコンソールを切り離して別のウィンドウに移動できなくなったの?
最近のニュースでは、AppleがCore MLフレームワークを更新版に置き換えるらしいよ。それによって、サードパーティのLLMをアプリに統合しやすくなるみたい。 > 会社はCore AIという新しいフレームワークを含む、いくつかのソフトウェアベースのAIアップグレードも計画している。長年存在しているCore MLをもう少しモダンなものに置き換えるつもりなんだって。 https://www.bloomberg.com/news/newsletters/2026-03-01/apple-...
ANEのソースコードがMLXチームにも公開されてないなんて、マジでありえないよね。Awni(MLXプロジェクトの責任者)がAppleを辞めた理由の一つかもしれない。
iOSのオートコンプリートが、バージョンごとにどんどん悪化してるのをなんとかしてほしいな。
この情報の基本的な部分は、Asahi LinuxからベアメタルでアクセスしたM1/M2 ANEのドキュメントで既に知ってたけど、確認できてさらに深く探求されてるのを見るのは嬉しいね。OPによると、非常に大きな行列の積に関しては、CoreMLは低レベルインターフェースと比べてほとんどオーバーヘッドがないみたいだから、ローカルAIフレームワークでのANEのサポートには十分な余地がありそう。デコードは一般的にメモリ帯域幅に制限されるけど、コンテキストが非常に大きくない限り、ANEは特別な扱いが必要(ここで説明されているように、行列の積から1x1の畳み込みに変換するのはメモリ帯域幅を無駄にするし、INT8/FP16にデクオンタイズするのも同様)だから、明確な利点とは言えないかもね。
これ、私もやっちゃうことあるけど、ここにある他のコメントは「〜はどうなの?」みたいなのばっかりだね。
誰か、オープンソースソフトウェアでこれらのニューラルエンジンがいつ動き出すのか教えてくれない?普段はlightgbmやsklearn、xgboostみたいなPythonのMLライブラリを使ってるし、大きな相関行列や共分散にはnumpyも使ってる。これらの操作は加速されてるの?ベンチマークを簡単に取る方法はある?C関数っぽいベンチマークはたくさん見るけど、今の仕事では高レベルのライブラリに依存してるから、Appleのハードウェアでどれだけ性能が良いか分からないし、use_aneみたいなフラグがなければ、むしろ良くなると思っちゃう。もちろん、chatgptがIntel Macと新しいAppleシリコンをベンチマークすることを勧めてきたけど、ありがとうchatgpt、だからこそ人々はAIを嫌う理由があるんだよね。