vllm [Bug]:尽管在PR #1395中修复了问题,但RAM OOM错误仍然导致480GB MoE模型加载失败,

mwkjh3gx  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(31)

当前环境信息如下:

  • PyTorch版本:2.1.2+cu121
  • 是否为调试构建:False
  • 用于构建PyTorch的CUDA版本:12.1
  • 是否使用ROCm构建PyTorch:N/A
  • 操作系统:Ubuntu 22.04.3 LTS(x86_64)
  • GCC版本:(Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
  • Clang版本:14.0.0-1ubuntu1.1
  • CMake版本:3.26.2
  • Libc版本:glibc-2.35
  • Python版本:3.9.18(主, Sep 11 2023, 13:41:44) [GCC 11.2.0] (64-bit runtime)
  • Python平台:Linux-5.4.119-19-0009.11-x86_64-with-glibc2.35
  • 是否可用CUDA:是
  • CUDA运行时版本:12.3.107
  • CUDA模块加载设置:懒加载
  • GPU模型和配置:
    GPU 0:NVIDIA A800-SXM4-80GB
    GPU 1:NVIDIA A800-SXM4-80GB
    GPU 2:NVIDIA A800-SXM4-80GB
    GPU 3:NVIDIA A800-SXM4-80GB
    GPU 4:NVIDIA A800-SXM4-80GB
    GPU 5:NVIDIA A800-SXM4-80GB
    GPU 6:NVIDIA A800-SXM4-80GB
    GPU 7:NVIDIA A800-SXM4-80GB
  • Nvidia驱动版本:470.182.03
  • cuDNN版本:可能为以下之一:
    /usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.0.0
    /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.9.7
    /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.9.7
    HIP运行时版本:N/A
    MIOpen运行时版本:N/A
    NV# = 遍历一组绑定的 # NVLinks 连接

🐛 描述bug

我在一台拥有8 * A800(80GB) GPUs和1.8TB内存的服务器上运行以下命令:

python -m vllm.entrypoints.openai.api_server --model /mnt/llm_dataset/models/xverse_model/moe/moe24b-v112-276b/  --dtype auto --api-key xxx
 --trust-remote-code -tp 8 --port 8001

我注意到vLLM最初将模型加载到8个A800 GPUs中,每个GPU平均消耗约64GB内存,而没有预先分配内存。随后,我观察到DRAM内存不断增加,直到发生内存不足(OOM)错误。请参阅下面的截图以获取详细信息。

然后,我了解到通过设置 --max-parallel-loading-workers 参数可以降低RAM OOM的风险。但是,当我设置 --max-parallel-loading-workers 1 时,遇到了以下错误:

NotImplementedError: max_concurrent_workers is not supported yet.

#2588
我注意到PR #1395已经解决了RAM OOM问题,但为什么在加载一个480GB MoE模型时,即使有8tp和1.8TB的内存,我还是会遇到OOM错误?

rryofs0p

rryofs0p1#

你好,@hxer7963。如果我的数学计算正确的话,我认为你不能在一个8x80GB的GPU上装载一个未量化的480GB模型。8 * 80 = 640GB可用内存,而使用BF16格式的模型权重将占用2 * 480 = 960GB,这远远超过了可用内存。也许如果你使用GPTQ进行8位或4位量化,你可以装载这个模型。
此外,我建议你尝试升级vLLM,因为你现在使用的是0.4.0版本。

相关问题