Apple Neural Engine上でトランスフォーマーをトレーニング - ANE GitHub

Revolutionary: Training Transformers Directly on Apple Neural Engine

AppleのNeural Engine(ANE)はM4チップで15.8 TFLOPSの推論性能を提供しますが、トレーニングは?公式には不可能です。これまで。

画期的な進歩:純粋なANEトレーニング

ANE Trainingは、リバースエンジニアリングされたプライベートAPIを使用して、ANEハードウェア上でフルトランスフォーマートレーニングループ(前方パスおよび後方パス)を直接実行するゼロからの実装です。CoreMLトレーニングAPIなし。Metalシェーダーなし。GPUフォールバックなし。純粋なANE計算。

現在のベンチマーク(M4, dim=768, seq=512): - 9.3 ms/ステップ - 11.2% ANE利用率(1.78 TFLOPS持続) - トレーニングステップあたり6回のANEカーネルディスパッチ

アーキテクチャの詳細

システムはトレーニングステップあたり6つの特殊化されたANEカーネルを調整します:

カーネル 機能 主要イノベーション
kFwdAttn RMSNorm + QKV + SDPA 前方タップがCPU再計算を回避
kFwdFFN SwiGLU FFN ANE RMSNorm融合
kFFNBwd FFN後方 チャネルファーストレイアウト
kSdpaBwd1/2 SDPA後方 Wo^T融合でカーネル数を削減
kQKVb QKV後方 GCD非同期cblasオーバーラップ

CPUが扱うのは: RMSNorm後方、残差、損失、dW蓄積(Accelerate cblas)、Adam更新のみ。

重要な最適化

  1. チャネルファーストレイアウト - ANE IOSurface [1,C,1,S]に適合し、転置オーバーヘッドを排除
  2. vDSP RMSNorm - 10倍高速化(6.7ms → 0.7ms)
  3. ANE RMSNorm融合 - 前方カーネルに組み込み
  4. 遅延cblas - 最大ANE/CPUオーバーラップ
  5. exec()再起動 - 119コンパイル制限を回避

性能進化: 33.5ms → 9.3msの体系的最適化による。

数分で開始

# macOS 15+ Apple Silicon必須
xcrun clang -O2 -framework Foundation -framework IOSurface \
-framework CoreML -framework Accelerate -ldl -lobjc \
-o train_large training/train_large.m

./train_large

システムフレームワーク以外の依存関係ゼロ

ファイル構造のハイライト

  • api_exploration.m - プライベートAPI発見
  • inmem_bench.m - ANEディスパッチ遅延
  • sram_probe.m - SRAM帯域幅探求
  • training/train_large.m - 本番単層トレーナー

制限とロードマップ

✅ 分解による因果マスキング ✅ 勾配蓄積/チェックポイント ✅ Adamオプティマイザ

🔄 多層パイプライン 🔄 実トークン化データセット 🔄 フルモデルトレーニング

法的注意

研究/教育目的で未文書APIのランタイム内省を使用(DMCA §1201(f))。Appleの独自コードは含まれていません。

2.1k stars, 362 forks - Apple Silicon ML革命に参加:https://github.com/maderix/ANE

この記事を共有