ANE の実現可能性:等価な変換と測定可能な 10 倍目標
調査日:2026-09-20。ハードウェア:M3 Max、40 コア GPU、128 GiB。本書は仮説と数学的な限界を記述するものであり、新しい実測の高速化の主張ではありません。出発点は元の Laya の重みと、より高速な MLX FP16 ランタイムです。エンジニアリング実験と計測が、以下の出発点の観測を上書きするかもしれません。
最良の最初の実験は、トランスフォーマー全体の固定シェイプでチャネル優先の書き直しと、それに続く実行計画の検査です。最も妥当な桁違いの目標は、モデルが有用なレイテンシと精度を保つことを条件に、完了した意思決定あたりのエネルギーです。Core ML の計算ユニット設定を変えるだけでは、Neural Engine がモデルを実行したことの十分な証拠にはなりません。
後続のエンジニアリング実験がその書き直しを実装し、実測の速度/エネルギーレポートが現在その結果を記録しています。非圧縮の候補は効率を改善しますが、10 倍の目標は満たしていません。以下の仮説と元の分母は研究記録として保持されています。実測の性能主張には、後者のコンパイル済み MLX 比較を使ってください。
最適化の前に目標を定義する
同じ入力、チェックポイント、精度ポリシー、完了した意思決定の数に対して、次を定義します:
t = elapsed time / completed decisions
P = average measured power over that same interval
E = integrated energy / completed decisions = P × t
S = t_MLX / t_candidate speed gain
R = P_MLX / P_candidate power reduction factor
S × R = E_MLX / E_candidate energy efficiency gain
この恒等式では、レイテンシパーセンタイルではなくブロック平均レイテンシを使ってください。P50 と P95 は別々に報告します。5 分の 1 の電力で 2 倍高速な結果は、10 倍のエネルギー改善です。半分の速度の結果は、同じ 10 倍のエネルギー改善を達成するために 20 倍の電力削減を必要とします。速度にすでに計算済みのエネルギー改善を掛けると、経過時間を二重計上します。
電力テストには 2 種類あります:
- 飽和した逐次推論:実際のスループット、レイテンシ、意思決定あたりのジュールを測定します。低電力だが遅い候補が自動的に効率的とは限りません。
- 等しい提供負荷、たとえば同じ Snake の tick レート:両方の候補が締め切り内に同じ処理を終えなければなりません。平均電力、区間の総エネルギー、締め切りの超過、完了した意思決定を報告します。より長く眠ることや処理を落とすことは最適化ではありません。
測定された電力の領域を記録してください。CPU + GPU + ANE のテレメトリは、必ずしもマシン全体やバッテリーの電力ではなく、そのようにラベル付けしてはなりません。生のエネルギーと、使える場合はペアのアイドル差し引き後エネルギーを報告します。負荷マイナスアイドルがノイズに近いときは、黙ってクランプして巨大な比率を報告するのではなく、不確かさを保ってください。トークン化、入力コピー、CPU フォールバック、後処理は、エンドポイントの会計境界の内側に保ちます。
出発点の証拠と分母
現在の多言語 MLX ベンチマークは、単一の 91 トークン質問を 7.870 ms P50 / 9.870 ms P95 と測定しています。英語 MLX ベンチマークは 93 トークン質問を 13.334 / 13.734 ms と測定しています。これらはエンドツーエンドの predict 計測であり、モデルのロードとウォームアップを除きます。新しい比較は、ワークロードが許す場合はオプトインの compile とプロンプトキャッシュ設定を含め、適用可能な最強の MLX 経路を再実行しなければなりません。過去の eager 結果は恒久的な分母ではありません。
既存の Core ML 多言語エクスポートは、CPU + GPU で 11.277 ms P50、ALL で 78.037 ms、CPU + NE で 81.336 ms を測定しています。後者の計画は 1,318 の CPU 優先演算を記録し、NE 優先演算はありません。24 の SDPA 演算はデバイスメタデータが不明です。これは NE 実行の主張を何も確立しません。計画は多くの演算を NE-対応として挙げていますが、これは NE-優先とは異なります。Apple は計算計画のデバイス使用を想定されたデバイス使用として説明しており、したがって好都合な計画であっても実行時プロファイリングや観測可能な NE 活動によって裏付けられるべきです。
既存の FP16 回帰ゲートは、100% のフィクスチャ argmax 一致、有限で決定論的な出力、較正確率とアクション確率における最大 0.02 の絶対ドリフトです。これは小さなコーパスに対する変換忠実性のチェックです。一般的なタスク精度、Snake の能力、圧縮モデルの品質を証明するものではありません。
等価なグラフ変換
Apple のTransformer デプロイ研究は、4 次元の BC1L アクティベーション、1×1 畳み込み、アテンションのヘッドへの分割、レイアウトコピーの削減を動機づけています。その公開された 10 倍の例は、別のモデル、デバイス、ベースラインであり、ここでの MLX 比較に移すことはできません。それらのレイアウト推奨は、この OS とチップでテストする候補として扱い、現在のハードウェアサポートの完全な契約とはみなしません。
線形射影とゲート付き MLP
X[b,l,i] を既存のアクティベーションとし、U[b,i,0,l] = X[b,l,i] と定義します。線形層について、
Y[b,l,o] = sum_i W[o,i] X[b,l,i] + bias[o]
K[o,i,0,0] = W[o,i]
Conv2D(U,K)[b,o,0,l] = Y[b,l,o]
これは実数値関数を変えずにレイアウトと演算子表現を変えます。そのレイアウトをエンコーダ全体と両方の意思決定ヘッドのトランスフォーマー層にわたって保ってください。各線形層の前後でそれに変換したり戻したりすると、利点が消えることがあります。QKV は単一の D → 3D 畳み込みのままでよく、そのチャネル出力を Q、K、V に分割します。同様に、既存の融合された D → 2I エンコーダ射影を保ち、チャネルを value と gate に分割し、元の正確な GELU を value に適用し、gate を掛け、I → D を射影します。
FP16 では、32 で割り切れるシーケンス幅は、Apple の研究で説明されている 64 バイトの最終軸アラインメントにも整合します。初期シェイプは、短い API フィクスチャで B=1,L=96、コンパクトな Snake で B=3,L=64 です。ここでの 32 の倍数という推奨は、そのバッファモデルに従うものであり、すべてのワークロードを大きな任意の長さにパディングする許可ではありません。Snake は 96 トークンを必要としません。
アテンションと RoPE
各ヘッドについて、Q と V を (B,d,1,L) のまま保ち、K を (B,L,1,d) に転置します。次を計算します:
score[b,k,0,q] = sum_c Q[b,c,0,q] K[b,k,0,c] / sqrt(d)
weight = softmax(score + additive_mask, axis=key)
out[b,c,0,q] = sum_k weight[b,k,0,q] V[b,c,0,k]
この表現ではキー軸は軸 1 です。ヘッド出力はチャネル軸で連結します。これは同じアテンション関数であり、softmax の軸を誤ると黙って変わってしまいます。Apple の参照アテンション実装は、対応する 2 つの 4 次元縮約を示しています。変換された MIL 演算子を検査してください。einsum を書いても、意図したデバイスやロワリングが保証されるわけではありません。
QK の前に、各ヘッドのチャネルペアに RoPE を適用します。チェックポイントの分割半分の規約、元の位置、層ごとの theta を保ってください。この多言語チェックポイントでは、完全 RoPE とローカル RoPE の両方が theta 160000 を使います。すべてのヘッドを連結したものの前半と後半を分割するのは誤りであり、各 64 チャネルのヘッド内で分割します。位置依存の回転は、一般に単一の位置非依存の重み行列に畳み込むことはできません。
ローカル規則は双方向の abs(q-k) <= 64(端点を含む)です。キーのパディングと既存のパディング済みクエリの規則を保ってください。位置依存の定数部分は、固定シェイプに対してトレース前に計算できます。サンプルのパディングを変えると、依然としてキーマスクに影響しなければなりません。数学的な排除を有限の大きな負のマスクに置き換えるのは、元の実装の有限精度の挙動と一致しない限り数値近似です。敵対的入力とパディング入力で検証してください。
LayerNorm は他の正規化と互換ではない
各 (b,l) について、チャネルにわたってのみ縮約します:
mu = mean_c U
v = mean_c (U-mu)^2
normalized = (U-mu) / sqrt(v + epsilon)
output = normalized * gamma + beta
元の epsilon、アフィン順序、母分散、第一層の恒等正規化、正確な GELU、残差順序を保ってください。Apple の参照 LayerNormは異なるアフィン順序を使い、そのDistilBERT アダプタはバイアスを変換して補償しています。そのクラスを直接コピーして Laya の state dict をロードすると、非ゼロのバイアスに対して誤りになります。明示的な元の順序のアフィン式は、ゼロかもしれない gamma で割ることも避けます。
アクティベーションのクランプ、GELU の tanh への切り替え、LayerNorm の RMSNorm への置き換えは関数を変えます。二乗値がオーバーフローする場合、正の再スケーリングは数学的に等価な選択肢です:
normalize(x/a, epsilon/a^2) = normalize(x, epsilon), for a > 0
有限精度の累積には依然としてパリティテストが必要です。FP32 の縮約はコピーや CPU フォールバックを要するかもしれないので、数値挙動を黙って緩めるのではなく、計画を検査してください。
サポートされない処理をモデルの境界へ移す
埋め込みルックアップ、動的マーカー gather、アクションテールが連続した NE 領域を妨げる場合、次の分割で別の候補を作ります:
CPU: tokenizer → selected embedding rows → embedding LayerNorm
NE candidate: all encoder layers → type embedding addition → both heavy head layers
CPU: marker/CLS selection → small scorer → raw-probability features → action head
エンジンをまたぐのはエンドポイントだけです。各層のアテンションや LayerNorm を CPU にオフロードしないでください。多言語の B=1,L=96 では、FP16 の埋め込みテンソルは 147,456 バイト、B=3,L=64 では 294,912 バイトです。これらのコピーと、完全な隠れ状態出力のコピーがあればそれを、エンドツーエンドの計測に含めてください。
多言語のトークンテーブルは 196,608,000 のパラメータを持ちますが、各リクエストはそのトークン行だけを集めます。それを ANE トランスフォーマーサブグラフに送り込む必要はなく、すべての予測でテーブル全体を読むとして数えてはなりません。その LayerNorm は位置依存を持たないため、テーブル行のオフライン事前正規化は実数演算で等価です。丸めと保存精度を変えるかもしれず、独自のパリティチェックを必要とします。アクションヘッドは、温度較正の前の 生の マーカーロジットから確率を受け取ります。その特徴量を公開の較正確率から再構築すると、チェックポイントの挙動が変わります。
10 倍のレイテンシ主張に対する演算の限界
D を隠れ幅、I をゲート付きエンコーダの中間幅、N をエンコーダ層数、H=2 を意思決定ヘッド層数とします。トークンあたりの主要な行列パラメータ数と密な演算は:
A = N(4D^2 + 3DI) + 12HD^2
F_dense(B,L) = 2BLA + 4B(N+H)L^2D
乗算と加算は別々に数えます。これらの式は、正規化、アクティベーション、埋め込み、スコアリング、マスク、コピー、ランタイムのオーバーヘッドを除外します。これはプロファイラではありません。マスクされた局所層であっても、現在の密なアテンション計算をモデル化します。
| チェックポイント | D / I / N | A | FP16 主要行列バイト | B=1,L=96 での密な処理 | 現在の MLX P50 より 10 倍下回るために必要な実効計算量 |
|---|---|---|---|---|---|
| 多言語 | 768 / 1152 / 22 | 124,452,864 | 248.91 MB | 24.574 GFLOP | 0.787 ms 以内に 31.23 TFLOP/s |
| 英語 / typed アーキテクチャ | 1024 / 2624 / 28 | 368,312,320 | 736.62 MB | 71.848 GFLOP | 英語ベースラインを使って 1.333 ms 以内に 53.89 TFLOP/s |
これらは必要とされる達成レートであり、ANE のピーク仕様を主張するものではありません。レイアウトの書き直しはオーバーヘッドを除きますが、それらの密な射影を除くものではありません。ハードウェアはさらに、24 または 30 のアテンション/MLP ブロックの逐次チェーンを実行しなければなりません。
楽観的なストリーミングモデルは、別の条件付きの下限を与えます:
t >= max(F / effective_compute, bytes_from_DRAM / effective_bandwidth)
40 GPU コアの M3 Max は、400 GB/s のユニファイドメモリ帯域で仕様化されています。もし 各主要 FP16 行列がリクエストごとに DRAM から一度取得されるなら、その帯域への完全なアクセスでさえ、多言語で少なくとも 0.622 ms、英語で 1.842 ms かかります。実際の ANE 帯域アクセスはより小さいかもしれず、キャッシュまたは圧縮された重みは仮定を変えます。これは無条件の物理的下限ではありません。非圧縮ストリーミングの下で 10 倍の英語レイテンシが特に要求が厳しい理由と、レイテンシがわずかに改善するだけでもエネルギーの測定が有用である理由を示しています。
エンドツーエンド時間の測定された割合 f が係数 s で改善されるとき、アムダールの法則は S = 1 / (1-f+f/s) を与えます。ある領域を無限に加速しても、元のレイテンシの少なくとも 90% を占めない限り 10 倍には達しません。同様の限界は、意思決定あたりのジュールを目標とする場合、FLOP ではなく測定された エネルギー の割合を使います。最終ヘッドの選択クエリ最適化はモデル演算の数パーセントだけを取り除きます。局所ウィンドウがすべての位置を覆う L<=64 では、局所アテンションのスパース性も無視できます。どちらも信頼できる単独の 10 倍経路を提供しません。
圧縮とアーキテクチャ変更は異なる契約を持つ
| 候補 | 同じ実数値チェックポイント関数か? | 現実的に変えられるもの |
|---|---|---|
| BC1L レイアウト、1×1 射影、静的な位置/マスク、ヘッド分割 | はい(式と入力が保たれる場合) | スケジューリング、局所性、コンパイラの分割、メモリコピー |
| CPU エンドポイント分割、オフライン埋め込み正規化、最終ヘッドの選択クエリ | 実数演算でははい。丸めを検証すること | サポートされない演算、パッケージサイズ、いくつかの未使用の処理 |
| 8/6/4 ビットのパレット化または重み量子化 | 一般にはいいえ | 重みの転送/保存、そしておそらく推論のエネルギー/レイテンシ |
| 学習済みの非ゼロ重みのプルーニングまたは低ランク分解 | 代数的に正確な構造が存在しない限りいいえ | 回復/較正後の行列演算と転送 |
| 早期終了、トークンプルーニング、層数の削減、より狭い生徒モデル | いいえ | 潜在的に大きな節約。新しいモデルと品質契約 |
| 任意の質問間での隠れ状態の再利用 | この双方向エンコーダではいいえ | 無効な近道。文脈的な状態は質問に依存する |
| 同一の全入力回答のキャッシュ | キャッシュヒットでは正確 | ワークロードの特徴。非キャッシュの推論速度ではない |
Apple の現在の最適化の概要は、NE のメモリ/レイテンシの利得のためにパレット化を挙げ、A17 Pro/M4 を伴う新しい W8A8 計算経路を特定しています。その新しいハードウェアの高速化をこの M3 Max に外挿しないでください。量子化性能ガイドも、アクティベーションの逆量子化が CPU/GPU 実行を遅くしうると警告しています。まず NE 常駐のベースラインを取得し、次に敏感な正規化/スコアラーを適宜保ちながら、8 ビットから下へ重みパレット化をテストしてください。
FP16 の重みを 8 ビットまたは 4 ビットに詰めると、メタデータの前に理想的な重み保存比 2 倍または 4 倍が得られます。それは等しいレイテンシ倍率ではありません。逆圧縮、アクティベーションの移動、計算が残ります。プルーニングは、選んだ表現が実際にゼロを活用する場合にのみ実行時に役立ちます。任意のヘッド/層の除去や低ランク切り詰めは、品質回復を必要とし、条件づけなしに元のモデル同一性を保つことはできません。
入力ごとのロジット誤差の限界 ||z'-z||_infinity <= delta に対して、十分な argmax 証明書は top1(z)-top2(z) > 2delta です。同一の正の較正温度 T では、softmax の無限ノルムの Lipschitz 限界は ||p'-p||_infinity <= delta/(2T) を与えます。これらは評価された入力に対する有用な診断であり、量子化の大域的な証明書ではありません。近接マージンと多言語の評価スライスを別々に保ってください。飽和した例は大きなロジット誤差を隠すことがあります。
3 つの実験と受け入れゲート
- 固定シェイプの等価 NE グラフ。 多言語
B=1,L=96,K=4と SnakeB=3,L=64,K=4を、BC1L 射影、正しいヘッド単位 RoPE、明示的アテンション、元の LayerNorm/GELU でエクスポートします。入力配列と個々の層出力を元のグラフと比較します。どの主要な射影とアテンションブロックが NE 優先かを検査し、実際の実行時 NE 活動をチェックします。対応演算数だけでは成功ではありません。対応する最適化された MLX ベースラインを交互のブロックで再実行します。 - 1 つの連続したトランスフォーマーアイランド。 最初のグラフが断片化する場合、埋め込みと小さな最終テールを CPU 境界へ移します。これを、同じ電力測定の下で完全グラフの候補と比較します。完全な予測が、観測された実行間変動を超えてレイテンシやエネルギーを改善する場合にのみ、候補を保持します。すべてのコピーを含めてください。高速な孤立エンコーダでは不十分です。
- 配置が機能した後のエネルギー重視の圧縮。 8 ビットのパレット化をスクリーニングし、次に 6/4 ビットを別々の近似変種としてスクリーニングします。変更されていないフィクスチャゲート、ホールドアウトの choice/score/noul タスク、多言語入力、ほぼ同点、Snake 軌跡を実行します。精度、確率ドリフト、較正を性能とともに公開します。攻撃的な圧縮や蒸留は、学習済みの挙動を変えるなら別名のモデルに属します。
ローンチの主張の前に、同じチェックポイント/入力ハッシュと、交互のベースライン/候補順序を使ってください。コールドコンパイルは除外しますが、別途報告します。ファイナリストごとに少なくとも 5 つの持続ブロックを使い、生のレイテンシ、完了呼び出し、電力サンプルを保持します。候補を通すために緩めることなく、元のフィクスチャ一致と既存の確率許容範囲を要求し、さらに安定した有限の出力と有界のメモリを要求します。長い入力とシェイプ境界の入力を、短い固定シェイプのデモとは別に測定します。
10 倍を宣言するのは、関連する速度、等負荷電力、またはエネルギーの比率が少なくとも 10 であり、その主張を裏付ける不確かさを伴い、かつ述べられたレイテンシとタスク品質の限界を満たす場合に限ります。不確かさの下限が 10 に達しない場合は、測定された比率を報告します。NE 実行が検証された状態でのより小さなエネルギー利得は、依然として有用な証拠です。それは桁違いの結果ではありません。
ドキュメントの出所
必須の Context7 CLI ワークフローを使いました:Core ML Tools を /apple/coremltools に解決し、次にトランスフォーマーの演算子/レイアウトのロワリングと NE 圧縮の挙動を問い合わせました(合計 3 コマンド)。Apple の研究記事、参照ソース、現在の Core ML 最適化ドキュメント、計算計画ドキュメント、上記でリンクしたデバイス仕様を確認しました。モデルの式、パラメータ数、出発点の計測は、このリポジトリとその MLX 姉妹プロジェクトから導出されました。この研究ブランチは競合する GPU/ANE ベンチマークを実行していません。