Align the Inference results of the verl and vLLM frameworks on Ascend devices(zh)

在昇腾设备上对齐 verl 和 vLLM 两个框架下的推理结果。

Last updated: 11/17/2025.

这是一份在昇腾设备上对齐 verl 和 vLLM 两个框架下推理结果的教程(目的是确保两个框架在相同输入下产生一致的推理输出,以便更好地比较和集成)。

环境变量配置

在多卡通信情况下:

  • HCCL 通信下(默认场景):

    • export CLOSE_MATMUL_K_SHIFT=1

    • export ATB_MATMUL_SHUFFLE_K_ENABLE=0

    • export HCCL_DETERMINISTIC=”true”

    • export VLLM_ENABLE_V1_MULTIPROCESSING=0

  • LCCL 通信下(通过 export HCCL_OP_EXPANSION_MODE=”AIV” 使能):

    • export CLOSE_MATMUL_K_SHIFT=1

    • export ATB_MATMUL_SHUFFLE_K_ENABLE=0

    • export LCCL_DETERMINISTIC=1

    • export ATB_LLM_LCOC_ENABLE=0

    • export VLLM_ENABLE_V1_MULTIPROCESSING=0

在单卡无通信情况下:

  • HCCL 和 LCCL 通信下:

    • export CLOSE_MATMUL_K_SHIFT=1

    • export ATB_MATMUL_SHUFFLE_K_ENABLE=0

    • export VLLM_ENABLE_V1_MULTIPROCESSING=0

vLLM 初始化参数

需要对 SamplingParams 参数里单独设置 seed(种子值,用于控制随机性以确保可重复性),保持 vLLM 和 verl 推理结果的一致性(这有助于调试和验证模型在不同框架下的行为是否匹配),举例修改如下(以下是 YAML 格式的示例配置):

sampling_params = SamplingParams(n=1,
                                 logprobs=0,  # can be set to 0 and let actor to recompute
                                 max_tokens=config.response_length,
                                 repetition_penalty=config.get("repetition_penalty", 1.0),
                                 seed=1234)