vllm AWQ量化内存使用 ``` AWQ量化内存使用 ```

ni65a41a  于 6个月前  发布在  其他
关注(0)|答案(4)|浏览(45)

你好!首先,非常感谢你在这个推理引擎上所做的工作!

我遇到了一个问题:我已经使用AutoAWQ对模型进行了量化。然而,无论是Mistral指令模型还是其AWQ量化版本,它们似乎都使用了大约相同的GPU内存。而我原本预期AWQ量化版本使用的内存会少得多。

这是使用Mistral模型的GPU内存情况:

这是使用AWQ量化Mistral模型的GPU内存情况:

在运行entrypoints/openai/api_server.py时,我主要使用了默认参数,除了--max-model-len 24000--enforce-eager。起初我认为vllm由于--gpu-memory-utilization的原因会预留90%的GPU内存,但事实并非如此,因为两个模型的实际利用率并不相等,而且也不是总GPU内存的90%。

你能解释一下这里发生了什么以及原因吗?
非常感谢!

mbzjlibv

mbzjlibv1#

我认为vLLM预先分配了您需要的最大序列长度(在您的情况下为24000)所需的内存。因此,您应该能够在输入长度为24000的情况下使用vLLM运行推理而不会出现OOM(在我看来,这对于您的第一个情况可能会导致OOM,因为它只是加载了模型?)。

实际上我不确定这一点,我也想了解更多关于它的工作原理!

a0zr77ik

a0zr77ik2#

在黑暗中瞎猜,但你试过指定 --quantization awq 吗?我相信如果那个参数没有设置,它会尝试从 hf 模型配置中推断量化类型。因此,如果你在量化的 hf 模型中没有声明元数据,它将假设没有量化,并将所有权重加载到具有未量化 dtype 的Tensor中。话虽如此,我还没有进行代码深入研究,所以关于那部分可能我错了。

czfnxgou

czfnxgou3#

在int4量化模型中,您可以使用占用较少GPU内存的参数--gpu-memory-utilization。对于Llama3-8B,使用4位量化时,此参数可以设置为最小值0.6(约12GB),但不能使用原始的fp16模型(约19GB)!

相关问题