vLLM 两节点分布式部署下,/v1/completions 接口带 logprobs 参数会无限卡死 (Hang)

问题描述

大家好,我在使用 vLLM 多节点 API 服务时遇到了一个非常稳定复现的死锁/卡死问题。

当我向 /v1/completions 接口发送普通的文本生成请求时,即使 prompt 非常长,双节点的 GPU 也能正常快速返回结果。

但是,只要在请求参数中加上 logprobs,API 请求就会永远挂起(Hang)。此时GPU的利用率一直维持在0.

vllm 部署指令:(Qwen3-30B模型)

 vllm serve --model $MODEL_PATH \
    --served-model-name $MODEL_NAME \
    --tensor-parallel-size 8 \
    --pipeline-parallel-size 2 \
    --distributed-executor-backend ray \
    --trust-remote-code \
    --host 0.0.0.0 \
    --port 8000 \
    --gpu-memory-utilization 0.75 \
    --max-num-seqs 128 \
    --max-num-batched-tokens 8192 \
    --max-model-len 4096 

请求方式 (不使用logprobs, 能快速返回结果)

curl -s -X POST http://127.0.0.1:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'$MODEL_NAME'",
    "prompt": "How are you? What is your name?",
    "max_tokens": 1024
  }'

请求方式(包含logprobs, hang)

curl -s -X POST http://127.0.0.1:8000/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'$MODEL_NAME'",
    "prompt": "How are you? What is your name?",
    "logprobs":1,
    "max_tokens": 1024
  }'

环境信息:

  1. ray == 2.51.1
  2. vllm == 0.17.1
  3. torch == 2.10
  4. CUDA =12.8
  5. 2台 H100*8,已经启动了ray cluster.

根据目前的数据源,没有明确提到“多节点 + pipeline parallel + tensor parallel + Ray + logprobs”组合下 logprobs 请求导致死锁/卡死的官方已知问题或修复方案。但有类似多节点、Ray、pipeline parallel 相关的死锁、卡死、请求挂起等问题被多次报告,尤其是在复杂并行配置下(如 tensor-parallel-size > 1 且 pipeline-parallel-size > 1),经常出现请求卡住、GPU 利用率为 0 的现象,且通常与 Ray 的分布式通信、NCCL 配置、placement group 资源分配等有关【见issue 30180issue 37001issue 4135distributed troubleshooting】。

目前没有数据源显示 logprobs 参数在单节点或无 pipeline-parallel 时必然会 hang,也没有官方 workaround。建议排查方向包括:1)尝试降低并行度(如仅 tensor-parallel 或仅 pipeline-parallel),2)切换分布式后端为 mp 而非 ray,3)升级或降级 vllm/ray 版本,4)开启 NCCL_DEBUG=TRACE、VLLM_LOGGING_LEVEL=DEBUG 等环境变量收集详细日志辅助定位【见troubleshooting】。如仍无法解决,建议在官方 issue 区补充详细日志反馈。

需要更详细的排查建议或日志分析方法吗?

Sources:

Hint: Mention @RunLLM in the post for followups.

如果我降级vllm的版本, 我是否还能部署deepseek这样的新模型?

How did you solve it? Sorry can’t speak Chinese