出来事の日付:2026年11月9日。

教育目的のオープンソースプロジェクトが、小規模な動作するエンジンに6時間を超える解説動画と80ページ以上の手書きノートを組み合わせ、大規模言語モデルの推論の仕組みを開発者が順を追って学べるようにしている。samir-vllmという名前のリポジトリは、プロンプトを受け取ってからGPU上でトークンを生成するまでに何が起きるかに焦点を当てている。

エンジンはC++とCUDAで書かれ、パラメータ数10億のLlama 3.2モデルの推論処理を実装している。教材では、モデルの重みの読み込み、Transformerの構成要素の実行、プロンプトの処理、それに続くトークンの生成を扱う。後半の講義では、プリフィル、デコード、キーバリューキャッシュ、静的バッチ処理、連続バッチ処理といった運用上の課題へと進む。

このプロジェクトは、本番用の推論基盤をそのまま置き換えるものとしてではなく、学習用システムとして意図的に機能を絞っている。設定されたモデルの次元数と2,048トークンのコンテキスト長は固定されている。こうした範囲を限定した設計により、学習者は汎用的なモデル提供システムの幅広い複雑さに向き合わずに、具体的なコードベースでメモリ管理やスケジューリングの判断を調べられる。

実装の中でも詳しく扱われているのが、ページ方式のキーバリューキャッシュだ。キャッシュの既定値は128 MiBで、コマンドラインオプションで変更できる。受け入れ制御では、モデルの16層にわたり16トークン単位のページを使い、各リクエストの処理済みプレフィックスが最大になった場合を収容できるだけの容量を予約する。物理ページは必要になった時点でのみ割り当てられ、それとは別の受け入れ枠によって、実行中のリクエストが完了までに必要な容量を確保できるようにしている。

申告した容量枠を実行中の処理と同時に確保できないリクエストは、先入れ先出しの順序で待機する。必要な枠がプール全体の容量を超えるリクエストは拒否される。リクエストが早期に完了すると、割り当て済みのページと未使用の枠の両方が解放される。この方針は処理の中断や再計算を避ける一方、リポジトリでは、出力の上限を大きく要求すると、実際には生成が早期に終了する場合でも同時実行数が減り得ると説明している。

エンジンは静的バッチ処理と連続バッチ処理に対応する。デコードの反復の合間にプロンプトを1件ずつプリフィルし、各デコードステップでは、実行中のすべてのシーケンスからそれぞれ1トークンを共有バッファに入れられる。連続バッチ処理は容量が空くと待機中の処理を受け入れるのに対し、静的バッチ処理は現在のグループが完了するまで待つ。ドキュメントはまた、語彙のスコアがほぼ同点の場合、BF16の丸めによって、バッチサイズが異なると貪欲法による出力も変わる可能性があると注意を促している。

ライセンスは資料の種類ごとに分かれている。エンジンのソースコード、テスト、ビルド用ファイルはMIT Licenseで提供される。ノート、スキャン画像、図版、PDFは引き続きすべての権利が留保され、個人的な閲覧や学習は認められるものの、再配布には許可が必要だ。同梱のトークナイザーと別途入手するモデルの重みには、引き続きMetaのLlama 3.2の利用条件が適用され、サードパーティーの構成要素にはそれぞれ固有のライセンスが適用される。

推論を学ぶ開発者にとって、このプロジェクトの主な貢献は説明と実装を結び付けている点にある。スケジューリング、キャッシュ、バッチ処理は説明されるだけでなく、ビルドして調べ、テストできるコンパクトなエンジンの中に具体的な形で示されている。