speculative decoding を有効にしただけでは高速経路にならない
llama.cpp の b11404 は 2026 年 10 月 5 日公開の事前リリースである。対応する pull request #29869 は、Metal の行列積に狭い対象の経路を加えた。speculative decoding が下書きトークンを検証するとき、またはバッチ処理で稼働中の系列が少ないとき、活性化テンソルの行数が少数になることがある。この観測が対象であり、speculative decoding を有効にすれば全ての Apple デバイスやモデルが速くなる、という意味ではない。
作者の説明では、従来の経路は活性化行が増えるほど処理量が増える行列ベクトル型の経路だった。新しい経路は 8×8 の simdgroup 行列タイルを用い、複数行で同じ重みの復号を共有する。短い検証バッチで大きな行列行列ディスパッチを使わずに、重み復号の重複を減らせる場合がある。
- 1下書きトークンまたは少数の稼働系列
- 2src1 の活性化行
- 1適格なデバイス + 適格なレイアウト + 行数の閾値
- 2少数行 Metal MMA 経路
- 1いずれかの条件不成立
- 2既存のディスパッチ経路
- 1固定した検証条件
- 2一つの記録済み環境で正しさと時間を比較
この図は仕組みを読むための概念図であり、特定モデルのプロファイルではない。PR にある測定は、M3 Ultra、macOS の版、モデル、量子化、比較元を固定した作者自身の測定である。閾値が置かれた理由を理解する材料にはなるが、別の GPU、モデル、ドライバ、ビルド、プロンプト、下書きモデルについての独立ベンチマークではない。
検証は生成ステップを減らす前に計算を増やす
2024年1月19日公開のMedusa v1は関連するスケジューリングの考え方を示す。追加の生成headが継続候補を提案し、tree attentionで候補を処理してからprefixを採用する。3.1.2節は候補を増やす効果と検証計算の増加のトレードオフを説明している。これは検証の仕事量を考えるための系譜で、b11404がMedusaを実装した証拠でも、両者の性能結果が移る根拠でもない。2026年10月の変更が扱うのはbackend演算であり、候補生成アルゴリズムには別途、採用率とoverheadがある。
行数は条件の一つに過ぎない
実装は複数の性質から経路を決める。活性化テンソルは F32 で転置されておらず、連続したストライド条件を満たし、第二次元の行数が型ごとの最小値から 16 行の範囲に入る必要がある。重み側も対応する浮動小数点または量子化 ggml 型で、K 次元とレイアウトがその型のステップ条件を満たす必要がある。バッチ形状の値にも上限があり、Metal の function constant として渡される。
デバイス条件も同じ重さを持つ。この変更は tensor API を使わない Apple GPU family 7 以降でこの経路を選ぶ。PR では M3 Ultra の測定を基に、F32 は 6 行、F16/Q4_K/Q5_0/Q5_1 は 3 行、その他の対応型は 2 行を選択閾値としている。この数値はこの版の選択方針であって、持ち運べるハードウェア法則ではない。新しい Apple GPU は既定で異なる capability の経路を選ぶことがある。デバイス、コンパイル済みバイナリ、テンソルレイアウトが条件を満たさなければ、実装済みの別経路へ進む。この記事が追加したフォールバックではない。
この変更は、同じ形状の残差を加える行列積を、そのグラフ条件が満たされる場合に融合することも許す。全ての残差加算が融合されるとは考えないこと。追加されたテストは、選んだ行数、重み型、レイアウト、バッチ関係、グラフ順序を対象にする。全てのモデルグラフ、Metal ドライバ、エンドツーエンドの配信の正しさまでは証明しない。
配信判断を変える前に、一つだけ比較条件を設計する
次は一つのローカル環境でこの分岐が関係するかを判断する、独自の未実行 N=1 演習である。インストール手順、ダウンロード手順、性能結果ではない。
- 何も動かす前に manifest を書く。release
b11404、merge commita3a1c4747fdc0dcad40b3946108b89375d9a7d0e、解決済みバイナリの digest、macOS 版、Apple GPU family/capability の観測、build flags、モデル revision、重み型、下書き設定、prompt の形状、稼働系列数、timeout を記録する。入力は合成かつ非機密に保つ。 - この版の2〜16行の範囲内と範囲外の条件を一つずつ作り、明示したdraft/batch設定で行数を変える。各条件の中で、前回観測したrelease b11401とb11404を、モデル、prompt、行数設定、出力上限、並行数を固定して比較する。比較前に両buildのdigestを解決して記録する。適切なローカル観測を得るまで、期待する経路は unknown と記録する。release tag から推定しない。
- 別途許可されたローカル実行では、計時前に正しさの判定を決める。完了状態、生成トークンの比較方針、デバイス/runtime の診断、上限付きの経過時間サンプルを記録する。作者の報告は許容誤差の仕様ではない。浮動小数点比較の許容誤差は結果を見る前に選び、manifest に残す。
- artifact identity が異なる、デバイス/capability を確定できない、レイアウト条件を観測できない、出力比較が失敗する、プロセスが異常終了する、timeout になる場合は停止し、診断境界を残す。モデル、ドライバ、backend、行数を置き換えて、棄却された条件の結果だと呼ばない。
この演習にはローカル計算機の時間、電力、モデル保存領域、運用者の注意が必要になる。README は Metal を Apple Silicon 向け backend として挙げているが、特定のバイナリ、weights license、下書き設定が自分の用途に適することまでは示さない。リポジトリ本体は MIT license だが、選ぶモデル weights とダウンロード artifact には別の条件がある。security policy は信頼できないモデルの隔離と、信頼できないネットワークへ server 機能を公開しないことを勧めている。どの資料も、この事前リリースをセキュリティ認証にはしない。
「speculation は速い」より小さい判断に保つ
b11404 が示すのは、事前リリースの実装と、maintainer によるテスト/測定報告である。この書庫でのエンドツーエンド速度向上、一般的な Metal 性能保証、全ての Apple GPU との互換性、speculative decoding の下書きモデルの品質を示すものではない。実務上の問いは、固定した workload が、この記録済みの Metal 構成で対象となる少数行演算を作り、計測前に決めた正しさの規則を保てるかである。
この問いは、x86 の K-tail 形状条件や、router のプロセス framingとは別である。2024年のMedusaは検証の仕事量が費用になる理由を説明する。このMetalディスパッチ条件を裏付けるのは、版を固定した2026年のPRと実装だけだ。調査窓は2026年9月5日15:35 JST〜10月5日15:35 JST。
MENTAL MODEL / 考える順序
発表から、自分の判断へ。
発表の主張と、論文・公式ドキュメントの条件を並べて読む。
出典
公開日は資料の日付、確認日は内容を参照した日です。コミュニティの観測は公式の確定事項と区別します。