
Editor’s Note
XピックアップFlintの約200 tok/s、未マージMetal最適化と測定条件を整理
Prince Canuma氏は日本時間10月24日、RecursiveのFlintがMLX-VLMの開発ブランチを使い、M3 UltraとM5 Ultraで約200 tok/sに達したと投稿した。ローカル推論として目を引く速さだが、これは製品の確定性能ではなく、22GB級の4ビット量子化版と未マージのMetal最適化を使った実務家の暫定観測だ。しかも投稿だけでは、単一要求の生成速度か、複数要求を合算した処理量かが分からない。ここを分けないと、同じ「tok/s」でも意味が変わる。
変わるのは、Flint向けの実行経路
Flintは正確には総パラメータ39.8B、1トークン当たり約2.5Bを使うテキストMoEモデルで、コードベース調査、バグ修正、実装、テスト、複数ターンのツール利用を想定する。BF16本体とApple Silicon向け量子化版は別に提供されており、比較時にはチェックポイントとランタイムの明記が欠かせない。モデルカードで用途と構成を確認できる。
MLX-VLMのPR #2569は、MoEの専門家射影・集約、ルーティング、正規化、バッチ注意マスクをMetalカーネルやmx.compileのグラフで融合し、通常のprefill/decode経路から自動利用する変更だ。一方、学習、CPU、カスタムモジュール、paged expertsは従来経路のまま。10月25日確認時点でPRはOpenで、未マージだった。v0.7.10のリリース情報にはFlintのネイティブBF16対応があるが、この融合最適化は含まれない。安定版で「Flintが動く」ことと、開発ブランチで速くなることは別だ。
約200 tok/sを、現行PRの数字と比べる
現行PRに載るM3 Ultraの比較条件は、MLX 0.32.4、22.392GBの4-bit/group-64版、入力1,024トークン、batch 1、出力64トークン。decodeは115.5から124.2 tok/sへ7.6%上がった。これは投稿の約200 tok/sと同一条件ではなく、単一要求の測定として約200を裏付ける数字でもない。
もう一方の新しい測定機は、投稿にあるM5 UltraではなくM5 Maxだ。CLIは150.5から151.2 tok/s、常駐サーバーの単一要求は162.8から170.8 tok/s。PR自身もデスクトップ測定は変動が大きく、小差を一般的な高速化の証拠にはできないと注意している。投稿時に使われたPRのリビジョンも不明で、現在のPR本文が10月23日時点と同じとは限らない。
数字の見え方が最も変わるのはバッチだ。PRのbatch 2にある195.2 tok/sは複数要求の合計で、batch 8の501.7 tok/sも1要求当たりでは約62.7 tok/sとなる。また「256K」の検証は4GiBの注意マスク単体であり、256KコンテキストのFlint全体を走らせた試験ではない。約200という一行を実用判断へつなぐなら、機種、量子化、入力長、batch、CLI/サーバー、単一要求か合計かをセットで見る必要がある。
比較の基準はあるが、直接の追試ではない
RecursiveはFlintの紹介で、別エンジン・短いコンテキストという条件のもと、M4 Proで125 tok/s超、64GB RTX Sparkで150 tok/s超という公称値を示している。機材も実行系も違うため、これは比較の目安にはなっても、今回の約200 tok/sを直接検証する材料ではない。
ここが面白いのは、未マージ最適化で速度の余地が見えたことと同時に、ローカルAIの性能表記が「モデル名とチップ名」だけでは足りないと分かる点だ。私たちはベンチマークを実行していない。現時点では、約200 tok/sを再現済みの製品性能ではなく、条件の開示と追試を待つ有望な観測として受け取るのがよさそうだ。
参考資料
- Introducing Flint
- perf(flint): fuse MoE, normalization and batched attention masks #2569
- RecursiveSI/flint README.md
- Blaizzy/mlx-vlm Releases


