[Bug]: Host memory is not reducing after the model is loaded into Intel XPU

这是在 Intel XPU 上使用 vLLM 加载模型后,主机内存(host RAM)没有被释放的报错。通常发生在 vllm serve 启动加载权重、量化或 mmap 行为与预期不一致时,优先排查启动命令、模型加载方式与是否使用静态量化权重。

快速结论:这是在 Intel XPU 上使用 vLLM 加载模型后,主机内存(host RAM)没有被释放的报错。通常发生在 vllm serve 启动加载权重、量化或 mmap 行为与预期不一致时,优先排查启动命令、模型加载方式与是否使用静态量化权重。

适用环境:Ubuntu 24.04.4 LTS(x86_64)、Python 3.12.3、PyTorch 2.12.0+xpu(编译 XPU 20250302)、Intel Arc Pro B70 Graphics(另有 B60 复现)、vLLM XPU kernels 0.1.11.1、oneAPI/SYCL 2025.3.3、Level Zero 1.28.2。

最快修复方案:暂无确认的一步修复方案。Issue 中维护者用相同 compose 测试未复现同等量级的内存增长,因此该问题在讨论中并未给出明确的一步修复命令。

注意事项:XPU 本身会比 CUDA 使用略多的 host RAM,维护者在 CUDA 5090D 上观测约 10 GB、4×B60 上约 15 GB,属于“差异合理”范围;若你的增长远超这个量级,才更可能是异常。此外,静态量化 FP8 模型(Qwen/Qwen3.6-35B-A3B-FP8)也未减少 host 内存,说明该现象不一定由量化方式导致。

问题场景

用户在 Intel XPU 服务器上通过 Docker Compose 启动 vllm serve,将模型加载到 Intel XPU 后,发现主机内存并未回落到预期水平,持续占用甚至吃满全部 64 GB RAM 及 swap 空间。讨论中曾尝试改用已静态量化为 FP8 的模型检查点,host 内存依然没有下降。

报错原文

[Bug]: Host memory is not reducing after the model is loaded into Intel XPU

原因分析

可能原因包括:

  • XPU 路径下的权重加载/量化流程在 host 侧保留了额外的中间副本,加载完成后未释放。
  • mmap 或内存映射行为与 CUDA 路径不同,导致 host 页缓存/匿名内存被长期占用(讨论中有人引用了 llama.cpp 的相关 commit)。
  • 容器(Docker)与宿主之间的内存统计差异,或 compose 配置中的挂载/共享内存参数放大了 host 占用。
  • 静态 FP8 量化并未绕过该问题,说明问题更可能在 XPU 后端加载/内存管理本身,而非量化转换阶段。

注意:以上均为讨论中提出的可能方向,Issue 关闭时并未给出确认的根因。

环境排查

  • 确认 Python 版本(示例为 3.12.3)与 vLLM / vLLM XPU kernels 版本(示例为 0.1.11.1)。
  • 确认 PyTorch 是否为 XPU 构建(示例为 2.12.0+xpu),以及 XPU runtime 版本(示例为 20250302)。
  • 确认 Intel GPU 型号与驱动:Level Zero loader 1.28.2、driver 26.18.38308.1-0、IGC 2.34.4、libigdgmm 22.10.0。
  • 确认启动方式:vllm serve 完整命令,以及 docker run / compose 中的 shm-size、内存限制、挂载参数。
  • 确认加载的模型 checkpoint 是否为静态量化(如 FP8),并对比不同模型的 host 内存曲线。
  • 用 python collect_env.py 输出环境,便于与维护者环境对齐(Issue 中提供了该脚本链接)。

解决步骤

  1. 先在宿主机用 htop / free -h 记录 vllm serve 启动前的 baseline 内存。
  2. 启动 vllm serve,等待模型完全加载,记录服务就绪后的 host 内存与 swap 使用量,确认增长量级(维护者参考值:CUDA 5090D 约 10 GB,4×B60 约 15 GB)。
  3. 收集并分享 python collect_env.py 输出,以及完整的 vllm serve 命令和 Docker Compose 文件,以便复现。
  4. 可优先尝试:改用已静态量化的 FP8 检查点(如 Qwen/Qwen3.6-35B-A3B-FP8)观察是否变化。Issue 中该尝试未带来 host 内存下降,因此并非确认有效的修复手段。
  5. 关注 Issue 引用中提到的 llama.cpp 相关 commit(关于 XPU host 内存的改动),核对你的 vLLM / XPU 依赖是否已包含对应修复。
  6. 若怀疑 mmap/页缓存行为,可在受控环境中对比关闭相关 mmap 选项或调整加载方式后的 host 内存曲线,并记录差异(此步骤为排查方向,非 Issue 已验证方案)。

验证方法

在模型加载完成、服务可正常响应推理请求后,用 htop / free -h 观察 host RAM 与 swap 是否回落到可接受水平(可参考维护者约 10–15 GB 的量级),而不是持续吃满内存或大量使用 swap。若与维护者环境差异仍然明显,应保留前后对比截图继续在 Issue 中反馈。

参考来源

vllm-project/vllm #50269

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 26267

发表回复

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