Skip to content

可重现性

出于性能考虑,vLLM 默认不保证结果的可重现性。要实现可重现的结果:

  • 在离线模式下,您可以设置 VLLM_ENABLE_V1_MULTIPROCESSING=0,这会使调度确定化, 或者启用 批处理不变性 以使输出不受调度影响。
  • 在在线模式下,您只能启用 批处理不变性

示例: examples/offline_inference/reproducibility.py

Warning

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

Note

即使在上述设置下,vLLM 仅在相同硬件和相同 vLLM 版本上运行时才提供可重现性。

设置全局种子

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

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

默认行为

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

对于 V1 来说,无法取消指定种子,因为不同工作进程需要产生相同的输出,以支持诸如推测解码等工作流程。更多信息请参见: Pull Request #17929

Note

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

默认情况下,VLLM_ENABLE_V1_MULTIPROCESSING=1,因此您可以使用 vLLM 而不必担心意外地对依赖随机状态的后续操作进行确定化。