vllm 多卡部署模型卡死问题解决
原文连接:多卡运行分布式训练卡死
这个问题从公司买了算力服务器开始,我就注意到了这个问题,但那个时候我的解决方式是,重启一下就好了。
直到最近,我给算力服务器做了内核升级,重启也不好用了。
问题描述
公司服务器是两张L20,我之前做模型部署的时候,使用vllm。正常部署是没问题的,但只能部署一个32B的模型,再部署一个模型,这台机器的显存就支撑不住了。
因为这台机器只是做测试使用,所以对性能的要求并不高,所以我部署的时候可以将显存的部分内容,卸载到内存中,那么就使用到了vllm中--cpu-offload-gb这个参数。
神奇的是,只要我使用vllm部署时,添加了--cpu-offload-gb这个参数,无论这个参数设置为多少,再启动模型,就会进入卡死的状态。
我的解决方式 - [不正确,不要学]
重启!
我不知道为什么重启会解决这个问题,但确实重启之后,使用不添加--cpu-offload-gb参数的vllm部署模型,就可以正常部署。但只要有一次vllm参数中添加了--cpu-offload-gb,就会进入卡死的状态。
所以,在后续的项目开发中,我不会添加--cpu-offload-gb这个参数。
问题升级
每次连接算力服务器的时候,都会告诉我要升级一些组件。于是有一天,我就开始升级组件。
在组件升级过后,内核版本也做了提升,再正常执行vllm,不带--cpu-offload-gb参数,发现也卡死了。
重启… 依旧卡死
问题解决
找了大量的资料,才发现解决方式,就是这篇文章:多卡运行分布式训练卡死
我按照解决方式中说明的,先在启动vllm前,设定了环境变量export NCCL_P2P_DISABLE=1,模型部署时确实正常执行了,没有再卡住。
但是加载模型权重后,没有继续执行CUDA Graph的部分。所以我按照说明,修改了grub引导配置。
# 编辑配置文件
vi /etc/default/grub
# 添加参数到grub
GRUB_CMDLINE_LINUX="iommu=pt"
# 更新引导配置
update-grub

然后再重启服务器。
重启之后,再正常使用vllm部署模型,就都正常了。而且无论是否添加--cpu-offload-gb参数,都可以正常启动模型了
更多推荐
所有评论(0)