過去1週間、M5 Max 128GB上でQwen3.5-397Bをより速く動かそうと試行錯誤していました。Dan Woods'(@danveloper)の元となるベースラインは、M3 Maxで4.36 tok/sでした。M5 Maxでは、より良いハードウェアのおかげで、開始時点からすでに10.61 tok/sでした。私の最適化によって20.34 tok/sまで押し上げ、ソフトウェアだけで約2倍、Dan'sの元の結果に対しては4.67倍になりました。
ハードウェア: MacBook Pro M5 Max、128GBユニファイドメモリ、40コアGPU
モデル設定: Qwen3.5-397B-A17B、Q3-GGUF experts(Unsloth IQ3_XXS/IQ4_XS 混合精度)、Q8_0 embedding、Q6_K LM head。Decode: 20.34 tok/s。Prefill: 5.52 tok/s。モデルはディスク上で209GBで、RAMの128GBの4倍です——すべてSSDからストリーミングされます。
実際の実行結果のスクリーンショットを以下に示します。ページキャッシュが温まると、個々のトークンが20+ tok/sに到達しているのが見て取れます!
手法: 私は、もともとDan Woodsによって開発されたオートリサーチループの手法 github.com/danveloper/flash-moe を使用し、それをClaude Code(Anthropic)で動かして、M5 Max上で実験を体系的に実行・評価しました。各実験は次に進む前に結果とともに記録し、回帰を検出するためにパープレキシティのしきい値による自動品質ゲートを行いました。人間-AIの協業:私は研究を指揮し、ハードウェアを用意し、すべての科学的判断を行いました。Claude Codeは私の指示の下で実装・ベンチマークを実施しました。これにより、数週間ではなく数日で36件の実験をカバーできました。完全な論文PDFはリポジトリにあります。
ベースにしたもの: Dan Woodsのオリジナルflash-moe論文 github.com/danveloper/flash-moe とAnemllのフォーク github.com/Anemll/flash-moe. Apple Silicon上でSSDストリーミングによりQwen3.5-397Bを動かすための、純粋なC/Metal推論エンジンです。Anemllフォークでは、これらの結果に不可欠だったQ3-GGUF expert対応が追加されています。私の取り組みは、その上にさらにMetalレベルの最適化を加えています。
オートリサーチの過程で分かったことの1つは、ある壁を突破するたびに別の壁が現れる、という点でした。まずSSD I/Oがボトルネックになり、次にGPUエンコードのオーバーヘッド、さらに投影カーネルへと続きます。典型的な“シフトするボトルネック”問題です。
実際にスコアを動かしたもの:
- 16 IOスレッド + cache-io-split=4。各expertの重みファイルを1つの連続したチャンクとして読み込むのではなく、4並列のページアライン読み出しに分割して、異なるSSDチャネルを同時にヒットさせます。これはすでにエンジンに組み込まれており、有効化するだけで済みました。+1.5 tok/s
- 時間的(temporal)expert予測。トークン間のルーティング相関が27%あることを発見。SSD読み出しとGPU計算をオーバーラップ。+4.3 tok/s
- Q3-GGUF experts(Unsloth IQ3_XXS/IQ4_XS)。ペイロードが小さく、そして驚くほどQ3が“ちょうど良い”ポイントであることが判明しました。4-bitよりもパープレキシティが良い(5.58 vs 5.62)一方で、サイズは23%小さい。Unslothは、どの層をより強く圧縮し、どの層をより高い精度で残すかを賢く選ぶため、期待するほど3-bitからの品質低下が起きません。+2.3 tok/s
- CMD2事前エンコードにより、層ごとの提出ギャップを30μs削減。+0.44 tok/s
- 結合(fused)Q/K/V投影カーネル。入力ベクトルを3回ではなく1回だけ読み取る(Metal GPU最適化)。+0.76 tok/s
- CMD2事前エンコードを、全てのフルアテンション層に拡張。+0.47 tok/s
注:一部の最適化は相互作用するため、増加分は完全に加算されません。
失敗したもの(78%破棄率):
- 1-bit QJL quantization、パープレキシティ5647、致命的
- 三値(ternary)2-bit、重みの84%がスパース化され、モデルが崩壊
- K=3のexpertルーティング、品質が崩壊
- クロス層予測、命中率0%
- NAXオフロード、タイルパディングのオーバーヘッドが得られた利益を相殺
- 2-bit MLX experts。単独では速いが、パープレキシティが悪化(5.71 vs 5.58)。また、Q3に時間的予測を適用すると速度面で優位性がなくなった
率直な限界:
- 単一のハードウェアプラットフォームでの結果であり、一般化されない可能性がある
- この規模でのQ3量子化は、長文生成で目に見えて劣化する。残念ながら、短いタスクでは出力品質が許容範囲だったものの、長い応答ではアーティファクトが出た。品質はパープレキシティのみで評価し、MMLUやGPQAのような標準化ベンチマークではない
- これは速度研究のプロジェクトであり、生産品質を主張するものではない
今後の予定: 驚くべき発見が1つあります。AppleのNeural Engine(ANE)は、ずっと完全にアイドル状態で、電力0Wでした。つまり未使用のまま38 TOPSの計算能力がありました。問題は、MoE推論では動的に有効化するexpertを決める必要があり、ANEは静的に事前コンパイルされたグラフでしか機能しないことです。ただしバッチのプリフィルにはチャンスがあるかもしれません。完全な分析は論文にあります。
論文 + リリース: https://github.com/iluvclubs/flash-moe/releases/tag/v1.0
X/Twitter: DrPhoto
読んでくれてありがとうございます。質問には喜んで答えます。
もし誰かがさらなる最適化のアイデアを持っていたら、ぜひ聞かせてください。特にANEの機会は、あまり掘り下げられていないように感じます。
[link] [comments]




