M4チップのAppleニューラルエンジン内部、パート1:リバースエンジニアリング
Apple
研究者らは、M4チップに搭載されたAppleニューラルエンジン(ANE)をリバースエンジニアリングし、Core MLをバイパスしてニューラルネットワークプログラムを直接コンパイル・実行することに成功しました。その結果、ANEの実際のピーク性能はアップルが主張する38 TOPSよりも低いことが判明し、また、推論専用に設計されたチップ上でモデルのトレーニングにも成功しました。
この記事では、著者らがM4チップに搭載されたApple Neural Engine(ANE)をリバースエンジニアリングし、Core MLを迂回してハードウェアを直接操作する方法について詳述しています。彼らはCore MLからIOKitカーネルドライバまでのソフトウェアスタック全体を調査し、Core MLを使わずにANE上でプログラムをコンパイル、実行する方法を発見し、バイナリ形式の謎を解明しました。実際のピーク性能を測定したところ、Appleが宣伝する「38 TOPS」は誤解を招くものであることが判明しました。最終的に、彼らは推論専用に設計されたチップ上でニューラルネットワークのトレーニングに成功しました。ANEはGPUでもCPUでもなく、コンパイルされたニューラルネットワークを単一の原子的操作として実行する計算グラフエンジンです。彼らはメソッドスウィズリングとバイナリ解析を用いて、AppleNeuralEngine.framework内の40以上のプライベートクラスを発見しました。その中には、コンパイル-ロード-実行パイプラインへの直接アクセスを可能にする_ANEClientも含まれます。また、モデルの記述にはMIL言語が使用され、バイナリ形式E5はFlatBuffersファイルであり、従来のマシンコードではなく、固定のハードウェアプリミティブをパラメータ化するものであることも発見しました。さらに、_ANEInMemoryModelDescriptorを使用してメモリ内でモデルをコンパイルする方法を見つけましたが、それでも一時ディレクトリに書き込む必要があります。M4のANEは16コア、キュー深度127、独立した動的電圧周波数スケーリング(DVFS)を備えています。
出典: Habr — хаб ML —
原文
