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

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を嫌う理由があるんだよね。