使用 vllm 部署大模型
部署前准备
需要把想运行的模型下载到服务器上
- 以 通义千问-7B 为案例
下载模型
shell
git lfs install
pip install -U huggingface_hub
huggingface-cli download --resume-download Qwen/Qwen-7B-Chat --local-dir Qwen-7B-Chat
开始部署
第一步 设置 conda 环境
shell
# 创建新的 conda 环境.
conda create -n llm python=3.9 -y
conda activate llm
第二步 安装 vllm
shell
pip install vllm
第三步 安装 modelscope
用于下载镜像加速
shell
pip install modelscope
第四步 运行我们的模型
shell
VLLM_USE_MODELSCOPE=True python -m vllm.entrypoints.openai.api_server --model="/home/Qwen-7B-Chat" --trust-remote-code --port 6006
第五步测试:
记得把下面的地址换成自己服务的地址
shell
curl http://localhost:6006/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/home/Qwen-7B-Chat",
"max_tokens":60,
"messages": [
{
"role": "user",
"content": "你是谁?"
}
]
}'
扩展
自定义api-key:
-
如果想带上api-key,可以在执行命令的时候带上:
shellVLLM_USE_MODELSCOPE=True python -m vllm.entrypoints.openai.api_server --model="/home/Qwen-7B-Chat" --dtype auto --api-key sk-llm --trust-remote-code --port 6006
-
测试
shellcurl http://localhost:6006/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-llm" \ -d '{ "model": "/home/Qwen-7B-Chat", "max_tokens":60, "messages": [ { "role": "user", "content": "你是谁?" } ] }'
启动多GPU服务:
- 要运行多GPU服务,在启动命令加上--tensor-parallel-size参数,比如2张GPU卡:
shell
VLLM_USE_MODELSCOPE=True python -m vllm.entrypoints.openai.api_server --model="/home/Qwen-7B-Chat" --dtype auto --api-key sk-llm --trust-remote-code --port 6006 --tensor-parallel-size 2
-
测试
shellcurl http://localhost:6006/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-llm" \ -d '{ "model": "/home/Qwen-7B-Chat", "max_tokens":60, "messages": [ { "role": "user", "content": "你是谁?" } ] }'
总结
- 在huggingface hub拉取镜像,推荐用 官方提供的专门下载而设计的工具链
huggingface-cli
。不仅可以下载模型、数据、还可以登录huggingface、上传模型和数据等。但缺点是不支持多线程。 - 不建议用git clone的方式,虽然很简单,但是不支持断点续传,主要是clone会下载历史版本占用磁盘空间,.git文件夹会比较大。
- ollama和vllm两个都是目前流行的部署大模型的工具,各有优势。vllm有对内存做了优化和推理加速;ollama则通过量化,使模型变小,轻量部署,适用于不同的场景。