使用vllm docker容器部署大语言模型

说明

最近deepseek比较火,我在一台4卡4090的服务器上尝试部署了一下,记录下部署步骤。

安装过程

安卓docker和nvidia-container-toolkit

安装19.03版本以上的docker-ce即可。安装步骤参考清华docker源上的安装步骤:Docker CE 软件仓库

为了在docker中使用够显卡,需要安卓nvidia-container-toolkit。在线安装请参考英伟达的官方教程:Installing the NVIDIA Container Toolkit

但是如果你没科学上网,大概率无法下载nvidia-container-toolkit,因此也有离线安装的方法,大体思路就是在一个能连外网的服务器上先把包下好,再复制到要安装的服务器上。幸好有好心人已经传了一份到百度云盘上,现在下来安装即可,请参考: CentOS Docker NVIDIA环境离线安装。这篇文章提供的下载链接地址是:http://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1zbVZCPQ833jCBYi7rsDwXA%3Fpwd%3Db0td

下载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

下载模型

下载模型可参考我之前的一篇博客:如何下载huggingface模型到本地

如果被墙阻挡了,请先设置huggingface的镜像再下载:

# 临时生效
export HF_ENDPOINT=https://hf-mirror.com
# 永久生效
echo export HF_ENDPOINT=https://hf-mirror.com >> ~/.bashrc

假设"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"被下载到了/mnt/llm_deploy/目录下,则模型的绝对路径是/mnt/llm_deploy/DeepSeek-R1-Distill-Qwen-32B,后面部署会用到这个目录

启动vllm服务

如果一切准备就绪,则可以启动vllm容器来启动服务:

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服务类似,可酌情添加。

简单测试

使用命令行简单测试,端口是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": "你是谁?"}
        ]
    }'
### 使用 Docker 部署 DeepSeek R1 模型 vLLM 的方法 为了成功使用 Docker 部署 DeepSeek R1 模型并结合 vLLM 工具,以下是详细的说明: #### 1. 安装 Docker 确保本地环境已安装 Docker。如果尚未安装,请访问官方文档完成安装过程[^2]。 #### 2. 创建 Dockerfile 或者直接拉取镜像 可以通过两种方式实现模型的部署:创建自定义 Dockerfile 或者直接基于现有镜像运行容器。 ##### 方法一:使用现有的 Ollama 镜像 Ollama 提供了一个支持多种大语言模型的轻量级服务工具,其中包括 DeepSeek 系列模型。可以直接通过以下命令启动容器: ```bash docker run -d -p 11434:11434 --name ollama ollama/ollama ``` 此命令会下载 `ollama/ollama` 镜像,并将其映射到主机端口 11434 上运行。 ##### 方法二:构建自定义镜像 对于更复杂的场景(如需要加载特定版本的 DeepSeek R1),可以编写一个定制化的 Dockerfile 来满足需求。下面是一个简单的例子: ```Dockerfile FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu20.04 RUN apt-get update && \ apt-get install -y git wget curl build-essential software-properties-common && \ add-apt-repository ppa:deadsnakes/ppa && \ apt-get update && \ apt-get install -y python3.9 python3-pip python3-setuptools python3-wheel && \ pip3 install --upgrade pip setuptools wheel WORKDIR /app COPY requirements.txt . RUN pip3 install -r requirements.txt CMD ["vllm", "serve", "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B", "--tensor-parallel-size", "2", "--max-model-len", "32768", "--enforce-eager"] ``` 在此文件中,需提前准备 `requirements.txt` 文件来指定依赖项,例如: ```txt torch==2.0.1 transformers==4.31.0 vllm==0.7.1 ``` 完成后执行以下命令以构建和运行镜像: ```bash docker build -t custom-deepseek-r1 . docker run -it -p 8000:8000 custom-deepseek-r1 ``` 上述配置中的参数解释如下: - `--tensor-parallel-size`: 表示张量并行度大小,通常用于多 GPU 场景下的性能优化[^1]。 - `--max-model-len`: 设置最大输入长度为 32,768 tokens。 - `--enforce-eager`: 启用即时模式计算,可能有助于某些特殊情况下提升效率。 #### 3. 调整 Ray 自定义资源分配 当涉及分布式训练或者推理时,可能会遇到关于 Ray 集群资源配置的问题。默认情况下,vLLM 可能尝试获取名为 `'node:<IP>'` 类型的自定义资源。这种行为可通过显式初始化 Ray 实例解决,具体操作参见官方调度器文档链接[^3]。 --- ### 注意事项 - 如果目标硬件不支持 CUDA,则应调整基础镜像至 CPU 版本。 - 对于大规模生产环境建议进一步测试稳定性以及监控指标。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值