一つの確保処理が誤った形状の次元に依存することがある

2026年10月4日の llama.cpp 事前リリース b11390 は、n_expert >> n_ubatch の条件で起きる CUDA MMQ のメモリ障害修正を記している。紐づく pull request #29941 は09:15 UTCに作成され、12:10 UTCにマージされて、commit dd266785 になった。作者は、特定の大きなテンソル構成で CUDA の不正なメモリアクセスが起きたと説明する。これは事前リリースに付随する保守者の報告であり、CVE、セキュリティ評価、すべての mixture-of-experts モデルに同じ障害があるという証拠ではない。

仕組みの範囲は狭い。MMQ は一時的な q8_1 ストレージを必要とする。密なレイアウトでは、最大タイル幅を一つのテンソル次元で上限付けられる。pull request によれば、MoE のレイアウトでは、代わりに expert 数を反映する次元が必要になる。変更前の確保処理は ne11 から計算したパディングを足していたが、commit dd266785 は ne12 を使う。expert 数が物理的なマイクロバッチよりはるかに大きいと、古い上限では一時確保が不足し、CUDA kernel が確保外のメモリへアクセスし得る。

  1. 1固定した MoE テンソル形状: n_expert、n_ubatch、量子化、バックエンド
  2. 2一時 q8_1 バッファの確保
  1. 1正しいレイアウトの次元
  2. 2十分なタイル幅のパディング
  3. 3MMQ kernel の観測
  1. 1CUDA の不正メモリアクセス、タイムアウト、記録との不一致
  2. 2検証を停止
  3. 3診断用の証跡を保存
順序と役割を、ひとつずつ分けて考える

これは n_expert が万能の安全スイッチになるという意味ではない。正確なテンソルレイアウト、有効 expert 数、量子化の型、GPU の compute capability、CUDA runtime、ビルド済み artifact、モデル、バッチ形状によって、この経路が関係するかどうか自体が決まる。同じ pull request は、条件が非常に特異的で再現用テンソルも大きいため、test-backend-ops.cpp にテストを追加しなかったと述べている。リリースタグだけでこの検証範囲の不足を埋めることはできない。

配備経路を変える前に、一つの隔離した観測を設計する

次は独自の、未実行の N=1 検証設計である。コマンド列、確認済みの再現手順、ソフトウェアの導入やモデルのダウンロードの推奨ではない。

  1. 意図した失敗境界を一つの記録にする。b11390、commit dd266785c2595775001c1c714bd9d92b3ef34cde、解決済み artifact digest、CUDA driver/runtime、GPU 型番と compute capability、正確な MoE model revision、量子化、n_expert、n_ubatch、その他の tensor dimension、request shape、短い timeout を残す。隔離した host で行い、機密でない合成 input だけを使う。
  2. 専任の operator に、その一つの local process の開始と停止だけを許可する。production credential、network listener、tool execution、共有 model cache、顧客データへのアクセスは与えない。repository の MIT license は code の条件を示すもので、選択した model weight、dataset、driver component を使う権利は示さない。
  3. 将来、別途許可された実行では、artifact identity、記録、exit status、CUDA error text、elapsed time、上限を決めた diagnostic log を取得する。正常終了は、この一件の記録済み条件で観測した障害が出なかったことを意味するにすぎない。throughput、memory efficiency、正しさ、別の形状への適用範囲を示すものではない。
  4. 不正メモリアクセスの報告、watchdog timeout、device reset、artifact mismatch、記録の欠落が起きたら直ちに停止する。この consumer ではその構成を利用不可とし、一度に一条件だけを変えて診断する。別 backend で再試行したり、別 model に置き換えたり、元の境界が消えるまで workload を黙って下げたりしない。

費用は local GPU time、電力、operator time、一時 storage、隔離 machine の中断可能性である。実行前に時間と log size の上限を決める。この設計に paid API は不要だが、費用見積りも実行結果もここでは作っていない。

修正名より小さい範囲に主張を保つ

b11390 の release と merge は、project がこの一行の次元修正を含む prerelease を出したことを示す。exploitability、CVE の付番、一般的な CUDA の security property、すべての MoE model との互換性、latency 改善を示すものではない。現在の CUDA source と repository security policy は日付のない運用資料であり、直近の release 根拠ではない。code と project の境界を特定するためだけに読んだ。

このノートに必要な2024〜2025年の歴史資料はない。広い CUDA や MoE の年表では、この確保判断を説明できない。関係する系譜は10月4日の pull request、merge、prerelease から始まる。別の境界については、関連する parser 固有の structured-output 検証例 と local decision endpoint の検証例 を参照する。どちらも GPU memory behavior を評価するものではない。

MENTAL MODEL / 考える順序

発表から、自分の判断へ。

一次資料

発表の主張と、論文・公式ドキュメントの条件を並べて読む。

出典

公開日は資料の日付、確認日は内容を参照した日です。コミュニティの観測は公式の確定事項と区別します。

01
llama.cpp b11390 prerelease公開: 2026-10-04 · 確認: 2026-10-04
02
llama.cpp pull request #29941公開: 2026-10-04 · 確認: 2026-10-04
03
llama.cpp commit dd266785公開: 2026-10-04 · 確認: 2026-10-04
04
llama.cpp CUDA backend source公開: 不明 · 確認: 2026-10-04
05
llama.cpp MIT license公開: 不明 · 確認: 2026-10-04
06
llama.cpp security policy公開: 不明 · 確認: 2026-10-04
このブラウザ内に保存します。