CUDA out of memory

用户在使用 vLLM 部署 Qwen3-VL-235B 模型,处理多图片、长序列、多轮对话输入时触发 OOM。环境为 8×H100 80GB,运行 Ubuntu 24.04,PyTorch 2.10.0+cu129,CUDA 12.9。

CUDA out of memory

CUDA out of memory

快速结论:该报错出现在运行 Qwen3-VL-235B 模型处理多图长多轮输入时,VRAM 耗尽导致训练或推理中断。优先排查是否使用了 --decode-context-parallel-size 2 参数,以及多模态编码器张量并行模式 --mm-encoder-tp-mode 的设置,并尝试升级到包含 #34246 修复的版本。

问题场景

用户在使用 vLLM 部署 Qwen3-VL-235B 模型,处理多图片、长序列、多轮对话输入时触发 OOM。环境为 8×H100 80GB,运行 Ubuntu 24.04,PyTorch 2.10.0+cu129,CUDA 12.9。

报错原文

CUDA out of memory. Tried to allocate ... MiB (GPU 0; ... GiB total capacity; ... GiB already allocated; ... GiB free; ... GiB reserved in total by PyTorch)

原因分析

可能原因:Qwen3-VL-235B 在进行多模态掩码(masked_scatter_)操作时,底层实现会创建大量临时副本,尤其是在处理大尺寸图像嵌入和长上下文时,导致 VRAM 超出可用范围。Issue 中开发者确认,masked_scatter_ 操作是常见的高内存占用环节。

环境排查

  • GPU 型号与数量:NVIDIA H100 80GB HBM3 ×8
  • CUDA 版本:12.9
  • PyTorch 版本:2.10.0+cu129
  • vLLM 版本:检查是否已合入 #34246
  • 启动参数:检查是否设置了 --decode-context-parallel-size 2--mm-encoder-tp-mode--gpu-memory-utilization

解决步骤

  1. 尝试关闭 CUDA 图优化:添加启动参数 --enforce-eager。Issue 中此步无效,但可优先尝试。
  2. 移除 decode_context_parallel:删除 --decode-context-parallel-size 2 参数。可尝试此选项。
  3. 调整多模态编码器张量并行模式:如果使用 --mm-encoder-tp-mode data,尝试改为 --mm-encoder-tp-mode weights(可配合降低 --gpu-memory-utilization,例如从 0.93 降至 0.91)。
  4. 升级 vLLM 版本至包含 #34246 修复:该 PR 将 masked_scatter_ 替换为直接索引(index_put),显著降低内存占用。Issue 中用户验证后 OOM 问题被解决。
  5. 缩小测试输入规模:使用较小的 Qwen3-VL 变体进行调试,以确认是否为多模态掩码逻辑导致的内存问题。

验证方法

使用原始测试脚本(多图长多轮输入)重新执行,观察是否在相同位置再次出现 CUDA out of memory 报错。如果不再报错且能正常运行,则问题已解决。

参考来源

vllm-project/vllm #38257

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 13712

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注