首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >vLLM 部署 Qwen3-VL-32B-Thinking 模型 reasoning_content 为空问题解决记录

vLLM 部署 Qwen3-VL-32B-Thinking 模型 reasoning_content 为空问题解决记录

原创
作者头像
高老师
发布2025-10-28 11:12:55
发布2025-10-28 11:12:55
3.3K2
举报

vLLM 部署 Qwen3-VL-32B-Thinking 模型 reasoning_content 为空问题解决记录

问题背景

在部署 Qwen3-VL-32B-Thinking 模型时,遇到了 reasoning_content 字段始终为空的问题。尽管模型能够正常生成推理内容,但无法正确分离推理过程和最终答案。

问题现象

  1. 初始错误:启动脚本中缺少 --reasoning-parser 参数的值api_server.py: error: argument --reasoning-parser: expected one argument
  2. 推理内容不分离:虽然模型生成了包含 <think>...</think> 标签的推理内容,但 reasoning_content 字段始终为 null
  3. API 响应格式:推理内容和最终答案混合在 content 字段中,没有正确分离

解决过程

第一步:修复参数错误

问题--reasoning-parser 参数缺少值

代码语言:bash
复制
--reasoning-parser  # 错误:缺少参数值

解决:添加 qwen3 作为参数值

代码语言:bash
复制
--reasoning-parser qwen3

第二步:排查推理内容分离问题

通过测试发现:

  • ✅ 模型正常生成推理内容
  • <think>...</think> 标签完整
  • ✅ API 调用正常工作
  • reasoning_content 字段仍为 null

第三步:发现根本原因

关键发现:Qwen3-VL-32B-Thinking 模型的输出格式实际上遵循 DeepSeek-R1 格式,而不是标准的 Qwen3 格式。

正如文档所述:Qwen3-Thinking-2507 不输出 <think> 起始标记,导致 Qwen3 推理解析器无法解析它,因为它符合 DeepSeek-R1 格式。

第四步:最终解决方案

修改启动脚本:将 --reasoning-parserqwen3 改为 deepseek_r1

代码语言:bash
复制
# 修改前
--reasoning-parser qwen3

# 修改后  
--reasoning-parser deepseek_r1

完整配置

最终的 start.sh 脚本

代码语言:bash
复制
nohup env SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt \
python -m vllm.entrypoints.openai.api_server \
--model /root/.cache/modelscope/hub/models/Qwen/Qwen3-VL-32B-Thinking \
--reasoning-parser deepseek_r1 \
--tensor-parallel-size 8 >log.txt 2>&1 &

API 调用示例

代码语言:bash
复制
curl --location 'localhost:8000/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "/root/.cache/modelscope/hub/models/Qwen/Qwen3-VL-32B-Thinking",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "这张图片里有什么?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://example.com/image.jpg"
            }
          }
        ]
      }
    ],
    "max_tokens": 1024,
    "temperature": 0.7
}'

技术要点

1. vLLM 版本信息

  • 使用版本:vLLM 0.11.0(当前最新稳定版)
  • 支持的推理解析器deepseek_r1, glm45, openai_gptoss, granite, hunyuan_a13b, mistral, qwen3, seed_oss, step3

2. 推理功能特性

  • 默认启用:Qwen3 系列模型的推理功能默认处于启用状态
  • 禁用方法:如需禁用,在 API 请求中传入 enable_thinking=False
  • 格式兼容性:Qwen3-VL-32B-Thinking 使用 DeepSeek-R1 格式而非标准 Qwen3 格式

3. 常见误区

  • ❌ 不需要 --enable-reasoning 参数(该参数在 vLLM 0.11.0 中不存在)
  • ❌ 不能使用 qwen3 解析器(格式不匹配)
  • ✅ 必须使用 deepseek_r1 解析器

故障排查步骤

  1. 检查参数完整性python -m vllm.entrypoints.openai.api_server --help | grep reasoning
  2. 验证服务状态ps aux | grep "vllm.entrypoints.openai.api_server"
  3. 测试 API 响应curl -X POST http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "...", "messages": [...], "max_tokens": 500}'
  4. 检查推理内容分离# 查看 reasoning_content 字段是否不为 null curl ... | jq '.choices[0].message.reasoning_content'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vLLM 部署 Qwen3-VL-32B-Thinking 模型 reasoning_content 为空问题解决记录
    • 问题背景
    • 问题现象
    • 解决过程
      • 第一步:修复参数错误
      • 第二步:排查推理内容分离问题
      • 第三步:发现根本原因
      • 第四步:最终解决方案
    • 完整配置
      • 最终的 start.sh 脚本
      • API 调用示例
    • 技术要点
      • 1. vLLM 版本信息
      • 2. 推理功能特性
      • 3. 常见误区
    • 故障排查步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档