Devotd Github
新着推論・サービング

pegainfer-project/pegainfer — リクエストごとのシード(seed)の传递

pegainfer-project/pegainfer は、リクエストで指定された乱数シード(seed)を破棄せず、そのままサンプリングエンジンまで渡すようにフロントエンドを変更した。

リポジトリ情報pegainfer-project/pegainfer ↗

pegainfer-project/pegainfer は、リクエストで指定された乱数シード(seed)を破棄せず、そのままサンプリングエンジンまで渡すようにフロントエンドを変更した。

GitHub の説明: Pure Rust + CUDA LLM inference engine — no PyTorch, OpenAI-compatible, serves Qwen3 to Kimi-K2

スター
★ 722
フォーク
116
言語
Rust
ライセンス
Apache-2.0
最新リリース
v0.1.1
原文を見る ↗GitHub で見る ↗

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 行の削除)にすぎない。