你好!首先,非常感谢你在这个推理引擎上所做的工作!
我遇到了一个问题:我已经使用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%。
你能解释一下这里发生了什么以及原因吗?
非常感谢!
4条答案
按热度按时间mbzjlibv1#
我认为
vLLM
预先分配了您需要的最大序列长度(在您的情况下为24000)所需的内存。因此,您应该能够在输入长度为24000的情况下使用vLLM运行推理而不会出现OOM(在我看来,这对于您的第一个情况可能会导致OOM,因为它只是加载了模型?)。实际上我不确定这一点,我也想了解更多关于它的工作原理!
a0zr77ik2#
在黑暗中瞎猜,但你试过指定
--quantization awq
吗?我相信如果那个参数没有设置,它会尝试从 hf 模型配置中推断量化类型。因此,如果你在量化的 hf 模型中没有声明元数据,它将假设没有量化,并将所有权重加载到具有未量化 dtype 的Tensor中。话虽如此,我还没有进行代码深入研究,所以关于那部分可能我错了。czfnxgou3#
在int4量化模型中,您可以使用占用较少GPU内存的参数
--gpu-memory-utilization
。对于Llama3-8B,使用4位量化时,此参数可以设置为最小值0.6(约12GB),但不能使用原始的fp16模型(约19GB)!csbfibhn4#
NVIDIA A10 24GB