vllm使用踩坑实录(一)

事情是这样的:

实习单位老师让我去测量大模型在不同硬件上的相关指标,美美写好huggingface接口后,寻思着相同逻辑转移到vllm岂不美哉?

from vllm import LLM,SamplingParams
from accelerate import Accelerator
if __name__ == '__main__':
    torch.multiprocessing.set_start_method('spawn')# good solution !!!!
    local_model_path="/raid/dataset/llama3_8b_mmlu/llama3_8b_hf"
    # tokenizer = AutoTokenizer.from_pretrained(local_model_path)
    # model=AutoModelForCausalLM.from_pretrained(local_model_path,device_map="auto").eval()
    model=LLM(model=local_model_path,tensor_parallel_size=1,trust_remote_code=True,tokenizer=local_model_path)

调用模型就这么几行。。。

然后修了整整两周啊 damn!

现在总结一下相关技术问题如下,也是当成经验文档了。

1.启动docker的问题:

注意,docker启动的时候请一定注意nvidia驱动的版本,如果你的版本为11.4或更低,那么对于vllm来说首先在启用多进程的情况下就会被干掉。如果你去搜你会发现大部分会告诉这么做:

torch.multiprocessing.set_start_method('spawn')# good solution !!!!

只能说,很多情况真不是人家代码问题,是自己驱动版本太低了。建议重新换个有高版本的nvidia驱动。再不行在搞这个。

注意,如果出现了什么freeze

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.
ForkingPickler(file, protocol).dump(obj)

我怀疑也是跟驱动问题相挂钩的,建议换docker。因为当时我加上if name==main这个东西后一点用没有。

如果你发现给你显示什么warning:xxxx device()>0之类的警告 大概就是说 检测不到你的设备或者显示什么设备号是11410之类的。还是乖乖换docker吧。。。升级驱动太痛了。

2.环境配置问题:

vllm这一点做的相当一(gou)般(shi)。我看了他们github社区,上面有很多问题都是关于torch版本的问题,他们在四五月份更新后说可以支持pytorch 2.2.0 但是实际上如果你用2.2.0会出现很多很难绷的问题,显示你torch找不到一个kernel(好像是这个意思)。然后info告诉你一个类里面没有一个函数。(必须得吐槽一点 vllm的info给你的报错信息相当的浅层甚至还会误导你debug的方向,建议看log)。建议换成torch 2.1.2这个是问题最少的。

下载vllm的时候如果你发现下载后不能用,建议去原社区从源码下载然后配置环境,有个问题是不要下载最新的!!!!很难绷的一点是,最新版本的xformers(这也是很难配环境的大碟)要torch 2.4.0 但是vllm在2.4.0会出很多很多的bug(给我改麻了)。建议是下老版本的,我下载的是0.4.0版本的vllm。出错反正不多,bug好搞。最常见的bug是fast-attention会出问题显示有一个包没法加载,要么就说symbol有异常,网上会告诉你去改软连接balabala。碰见这种请别犹豫 删了重下!

这次最后再写一点,当你直接pip不管用的时候 一定要去源代码下载然后在本地编译!!!不要偷懒不然真的会痛苦(。。。。。)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值