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 两个文件,总共 35 行改动(新增 15 行,删除 20 行)。