pegainfer-project/pegainfer の最新コミット ca25b80(2026-10-26)は、リクエストごとに指定される乱数シード(seed)をフロントエンドからエンジンまでそのまま 전달するように変更した。従来は vLLM 互換ブリッジの convert_sampling がシードを破棄して常に None に固定しており、temperature が 0 より大きくシードが付いたリクエストは 'per-request seed is not supported yet' というメッセージで拒否されていた。今回のパッチはその拒否条件を取り除き、シード値をそのまま渡す。
pegainfer は PyTorch を使わず純粋な Rust と CUDA で書かれた LLM 推論エンジンで、OpenAI 互換 API を提供し、Qwen3 から Kimi-K2 までのモデルを提供する。シードが塞がれていた理由は、サンプリング層である kern がリクエスト単位のシードを読み取っていなかったためである。コミットメッセージによれば、kern(pegainfer-project/kern#66)はサンプリングカーネルで行(row)ごとに Philox 乱数シードを適用し、kern-serve はリクエストが与えたシードを自身のフィル(fill)として渡す。コミットは JinYan Su 名義で署名された。
ただし、再現性が保証される範囲はエンジンが定める範囲に狭まった。SamplingParams::seed のドキュメントは、固定シードが常に同じトークンを生成すると述べる代わりに、エンジンのサンプリングが他の要素に依存しない場合、または同じバッチ構造(batch layout)である場合にのみ同一になると記した。つまり、すべてのエンジンに対して約束していたバッチ独立性は、もはや文書化された保証ではない。さらに、temperature が 0 の貪欲(greedy)リクエストでは、シードは min_p とともに None にまとめられ、何の効果も持たない。変更範囲は sampler.rs と vllm/wire.rs の 2 ファイルだけで、総計 35 行の変更(15 行の追加、20 行の削除)にすぎない。