跳到内容

可重复性

为了追求性能,vLLM 默认不保证结果的可重复性。若要获得可重复的结果:

示例: examples/features/batch_invariance/reproducibility_offline.py

警告

设置 VLLM_ENABLE_V1_MULTIPROCESSING=0 会改变用户代码(即构建 LLM 类的代码)的随机状态。

注意

即使进行了上述设置,vLLM 也仅在相同硬件和相同 vLLM 版本下提供可重复性。

设置全局种子

vLLM 中的 seed 参数用于控制各种随机数生成器的随机状态。

如果提供了特定的种子值,randomnp.randomtorch.manual_seed 的随机状态将相应地进行设置。

默认行为

在 V1 中,seed 参数默认为 0,这会设置每个工作进程 (worker) 的随机状态,因此即使 temperature > 0,每次 vLLM 运行的结果也会保持一致。

在 V1 中无法取消指定种子,因为不同工作进程需要采样相同的输出以支持投机解码 (speculative decoding) 等工作流。更多信息请参阅: Pull Request #17929

注意

用户代码(即构建 LLM 类的代码)中的随机状态仅在工作进程与用户代码在同一进程中运行时(即 VLLM_ENABLE_V1_MULTIPROCESSING=0)才会被 vLLM 更新。

默认情况下,VLLM_ENABLE_V1_MULTIPROCESSING=1,因此你可以放心使用 vLLM,而不必担心意外导致后续依赖随机状态的操作变得确定性。