跳到内容

可复现性

为了性能考虑,vLLM 默认不保证结果的可复现性。要获得可复现的结果

  • 在离线模式下,您可以设置 VLLM_ENABLE_V1_MULTIPROCESSING=0 使调度确定性,或者启用 批次不变性 使输出对调度不敏感。
  • 在在线模式下,您只能启用 批次不变性

示例: examples/offline_inference/reproducibility.py

警告

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

注意

即使有上述设置,vLLM 仅在同一硬件和同一 vLLM 版本上运行时提供可复现性。

设置全局种子

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

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

默认行为

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

在 V1 中,无法取消指定种子,因为像投机性解码这样的工作流需要不同的 worker 采样相同的输出。更多信息请参阅: Pull Request #17929

注意

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

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