基于vllm 0.3.0部署 llama2-70B模型
写在前面
VLLM框架升级了!
0.3.0版本,拥有更高的推理速度(实测解析input的速度+40%),支持S-LoRA(一个主模型外套多个LoRA模型),很值得升级。
本篇文章将会记录升级过程中遇到的坑爹事情
硬件环境
主板:PCIE 4.0 x16
GPU:8x 3090
内存: DDR4 768GB
CPU:Intel(R) Xeon(R) Gold 6330 CPU
实测中,VLLM环境下,对CPU和主板PCIE带宽的要求都较高,这两个部分尽量不要省钱。
这里和开deepspeed+ZeRO3的训练基本上表现出了一样的问题?(瓶颈不在GPU而是在PCIE带宽上)
环境安装
为了更好地兼容其他的环境,本次采用venv进行安装。
VLLM 0.3.0版本中,由于使用了Python 3.9的特殊语法,因此需要一个python 3.9的环境。
但是我其他的代码,都运行在python 3.8的环境中,因此,我需要先安装python 3.9
1 apt install python3.9 2 python3.9 --version 3 apt install python3.9-venv
第一行代码为安装python3.9
第二行代码为输出当前python3.9的版本(用于验证是否安装正确)
第三行为安装python3.9-venv,需要专门安装对应版本的venv环境
接着,我们安装一个所需的venv环境
1 python3.9 -m venv venv-vllm 2 venv-vllm/bin/pip install wheel 3 venv-vllm/bin/pip install vllm==0.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
第一行代码为新建一个venv环境(python 3.9下),注意必须加3.9,不然你会得到一个3.8版本的venv
第二行为在这个venv环境中,安装wheel(一个补丁,似乎在这种情况下必须额外安装wheel,不然无法进行一些包的安装)
第三行为安装vllm,且使用清华的镜像(实测可以跑到30MB/s的下载速度)
我们就安装好了一个vllm的venv环境,且不和其他的环境冲突
运行代码
venv-vllm/bin/python -m vllm.entrypoints.openai.api_server \ --model="/hy-tmp/tigerbot-70b-chat-v4-4k" \ --tensor-parallel-size 8 \ --served-model-name "tigerbot" \ --chat-template /hy-tmp/tiger_template.jinja \ --gpu-memory-utilization 0.85 \ --host 0.0.0.0 \ --port 8080
大家可以来看这一篇文章,讲解了每个参数的含义,以及硬件环境:8卡3090GPU云服务器上采用VLLM部署中文llama2-70b模型及OpenAI格式接口 - AlphaInf - 博客园 (cnblogs.com)
命令整体上和之前的几乎一致,不同点主要有两点:
1. 采用了venv-vllm的环境运行
2. 额外设置了--gpu-memory-utilization 0.85的参数,这个参数默认是0.9,实测如果采用默认值会爆(bug?)
我们就可以开始运行了。
启用LoRA
此处未完待续
下面是一些关于LoRA的吐槽。
vllm 0.3.0似乎并没有让OpenAI接口实现LoRA,需要手动进行一些调整,documentation也并没有及时地进行更新,所以这一部分还在摸索。
个人感觉,可以学习OpenAI,通过不同的model_name来实现不同的LoRA模型的访问,甚至还可以增加动态上传LoRA adapter的机制?
挖个配置LoRA的坑,后续回来填。