我最近将部署从0.2.7版本升级到了0.3.0版本,用于混合8x7b架构模型,并遇到了一个重大问题,即在升级后模型输出完全混乱的数据。
经过测试,我发现提交ea8489fce266d69f2fbe314c1385956b1a342e12产生了预期的正常输出。
然而,从提交ab406446691f289ef51d1abd8d1ff66760eda36f开始,输出变得完全垃圾。
这让我怀疑这个问题可能与引入融合内核有关。
环境详细信息:
- PyTorch版本: 2.2.0
- CUDA版本: 12.1
- 硬件: NVIDIA V100
- Enforce_eager = True, TP=4
感谢您解决这个问题。
8条答案
按热度按时间92vpleto1#
你好,在vllm 3.1的新版本发布后,它提到了
https://github.com/vllm-project/vllm/releases/tag/v0.3.1
经过与之前相同的设置进行测试后,文本生成在分布式计算中运行正常。
如果其他人的结果与我相同,我们应该将此问题标记为已解决。
e3bfsja22#
我已经在量化和非量化版本的模型中遇到了这个问题。模型会开始生成一个良好的响应,然后在最后输出乱码。我还注意到这个bug并不完全一致,但它发生的频率比其他情况要高。
非常感谢您在这方面的帮助!请继续保持优秀的工作!
环境详情
nvcr.io/nvidia/pytorch:23.10-py3
docker镜像pip install vllm==0.3.1
0.3.1
2.1.2
可重复性细节
我使用的是openai服务器入口点。
运行量化模型
运行非量化模型
注意我必须使用
float16
来运行un-quantized
模型,因为V100
GPU不支持bfloat16
,而un-quantized
模型无法适应2个40GB A100s量化模型的输入
量化模型的输出。
一开始还不错,但后来完全混乱,开始输出乱码。
服务器日志
非量化模型的输入
非量化模型的输出
服务器日志
gwo2fgha3#
关于
"在2台40GB A100上测试了GPTQ量化模型",
“它一开始表现得很好,但随后完全失去了方向,开始输出无意义的文字。”
这些无意义的文字似乎更多地是主观的,可能是因为量化误差的累积导致了明显的模型质量损失。在不进行量化(v0.3.1版本)的情况下,您是否也遇到了类似的问题?
sd2nnvve4#
在使用
un-quantized
模型时,我能够产生相同的错误,但我意识到这主要是一个温度问题。我传递了过高的温度1.4
,这导致了随机令牌抽样。然而,在低温下,我在未量化版本上仍然得到了相同的错误,所以我相信GPT-Q
仍然存在错误。最后,即使在低温
0.4
和V100上的未量化模型(float16)
上,我没有得到垃圾文本,但我确实得到了奇怪的空白字符错误,如下所示。当我使用
HF-TGI
托管混合时,我无法重现这种空白字符错误。oaxa6hgo5#
感谢您报告这个问题!我们一直在A100和H100上测试新的实现,但不幸的是还没有在V100上进行测试。我会尽快查看是否可以复现这个问题,如果无法简单地修复,我们可能需要回到类似于我们在#2673中为量化所做的旧的V100实现。
ndh0cuux6#
你是否有关于如何运行它的更多信息?对于V100上的TP4,即使使用eager模式,我也一直遇到内存错误。这是我尝试的
我还尝试了不同的设置来解决
gpu_memory_utilization
的问题。此外,您是如何运行PyTorch 2.2.0(目前仅支持2.1.2)的?您是在编译自己的wheels吗?PyTorch 2.2.0(特别是triton 2.2.0)可能会导致问题,因为它没有经过测试:i7uaboj47#
实际上,我现在在V100上运行这个程序,内存为32GB(之前我使用的是16GB版本)。上面的脚本给我以下输出
看起来内核按预期工作。我怀疑问题与triton 2.2.0(或者可能是pytorch 2.2.0)有关。你可以尝试一下,如果可以的话,在triton上游创建一个工单,描述这个差异。如果它与MOE内核有关,你应该可以使用https://github.com/vllm-project/vllm/blob/main/tests/kernels/test_moe.py中的测试来获得一个干净的重现,只需要triton代码 :)
drnojrws8#
你好,我也遇到了这个问题。当我测试混合模型时,在使用分布式工作器(无论是否使用ray,通过传递
--tensor-parallel-workers 2
)时出现问题,但在使用vLLM作为简单的离线令牌生成器时没有问题。我最初认为这是生成韩文字母的问题,但似乎并非如此。在Gradio Chat示例中测试vllm让我得出结论,这是一个服务器代码的问题。在两种情况下,我都使用了AWQ 4位权重。错误示例:
我问:“전주에서 무얼 먹는게 좋을까?”
translation: what do you recommand for a meal in 전주?
它回答:
“是的,
infinite nothingness however the server is somehow generating tokens of nothingness forever
关于我的硬件的信息:
2x Ada a6000
1x T400(不用于执行llm,仅用于显示)
使用正确的torch版本(2.1.2)