使用vllm部署大模型
说明:我在一台单卡4090服务器上尝试部署一下,记录下部署步骤
1.安装过程
安装19.03版本以上的docker-ce即可。安装步骤参考清华docker源上的安装步骤:Docker CE 软件仓库:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
为了在docker中使用够显卡,需要安卓nvidia-container-toolkit。在线安装请参考英伟达的官方教程:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
但是如果你没科学上网,大概率无法下载nvidia-container-toolkit,因此也有离线安装的方法,大体思路就是在一个能连外网的服务器上先把包下好,再复制到要安装的服务器上。幸好有好心人已经传了一份到百度云盘上,现在下来安装即可,请参考: CentOS Docker NVIDIA环境离线安装。这篇文章提供的下载链接地址是:http://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1zbVZCPQ833jCBYi7rsDwXA%3Fpwd%3Db0td
2.下载vllm的docker镜像
请到https://hub.docker.com/搜索最新的vllm镜像。比如我下载镜像的命令为:
docker pull vllm/vllm-openai:v0.7.2
因为防火墙的原因,很多人无法下载,请加上docker镜像网站的前缀来下载:
docker pull docker.1ms.run/vllm/vllm-openai:v0.7.2
3.下载模型
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1
# If you want to clone without large files - just their pointers
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/deepseek-ai/DeepSeek-R1
4.启动vllm服务
启动前提非常重要:假设"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"被下载到了/mnt/llm_deploy/目录下,则模型的绝对路径是/mnt/llm_deploy/DeepSeek-R1-Distill-Qwen-32B,后面部署会用到这个目录
docker run --runtime nvidia --gpus all \-v /mnt/llm_deploy/:/home/llm_deploy \-p 9000:8000 \--ipc=host \-d \--name vllm_deepseek_qwen32b \docker.1ms.run/vllm/vllm-openai:v0.7.2 \--model /home/llm_deploy/DeepSeek-R1-Distill-Qwen-32B \--tensor-parallel-size 4 \--max_model_len 60000
上面映射了目录/mnt/llm_deploy/到容器内部的/home/llm_deploy,则容器内看到的模型目录是/home/llm_deploy/DeepSeek-R1-Distill-Qwen-32B。所以后面–model后跟的就是这个路径。
外部端口9000映射到内部的8000端口,因为内部默认使用8000这个端口。
其他命令选项和直接启动vllm服务类似,可酌情添加。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yuanlulu/article/details/145579118
5.简单测试
使用命令行简单测试,端口是9000,接口是openai api的接口风格。
curl http://localhost:9000/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "/home/llm_deploy/DeepSeek-R1-Distill-Qwen-32B","messages": [{"role": "user", "content": "你是谁?"}]}'