首先打开魔搭社区,然后搜索DeepSeek-R1-Distill-Qwen-7B,进入详情页
官方推荐使用vllm来启动,但是手动搭建vllm环境容易出各种问题,我们这里直接找一个vllm的Docker镜像
一、拉取镜像
docker pull vllm/vllm-openai
如果拉取不下来,则使用代理镜像
docker pull registry.dockermirror.com/vllm/vllm-openai
# 或者
docker pull dockerhub.icu/vllm/vllm-openai
二、下载模型
下载模型官方提供了多种下载方式,我这里喜欢使用SDK下载或者Git下载:
1、SDK下载
创建一个download_modelscope.py文件,然后内容如下:
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-7B')
执行这个文件:
python3 download_modelscope.py
默认下载到了该目录下:
:~$ ls ~/.cache/modelscope/hub/deepseek-ai/
DeepSeek-R1-Distill-Qwen-7B
2、Git下载
git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git
使用Git下载的前提是安装了lfs,验证是否安装lfs
git lfs install
三、创建docker容器
docker run -it --gpus all --ipc host --name deepseek-r1-7b \
-v /home/defang/faiss/data/kmys_model/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B:/app/DeepSeek-R1-Distill-Qwen-7B \
-v /etc/localtime:/etc/localtime:ro \
-p 38805:38805 \
--entrypoint /bin/bash \
vllm/vllm-openai \
-c "CUDA_VISIBLE_DEVICES=0,1 python3 -m vllm.entrypoints.openai.api_server --model /app/DeepSeek-R1-Distill-Qwen-7B -tp 2 --host 0.0.0.0 --max-model-len 32768 --dtype half --port 38805 --gpu-memory-utilization 0.8"
1、容器配置参数
参数 | 说明 | 关键点 |
---|---|---|
-it | 交互式终端模式 | 允许用户与容器交互(如查看日志或调试) |
--gpus all | 启用所有GPU | 必须安装NVIDIA Container Toolkit |
--ipc host | 共享宿主机IPC命名空间 | 提升多GPU张量并行性能(避免共享内存限制) |
--name deepseek-r1-7b | 容器命名 | 便于后续通过 docker logs 或 docker exec 操作 |
-v /home/defang/... | 挂载模型目录 | 宿主机模型路径必须存在,且需验证读写权限 |
-v /etc/localtime:ro | 同步宿主机时区 | 避免容器日志时间戳混乱 |
-p 38805:38805 | 端口映射 | 确保宿主机防火墙开放该端口 |
--entrypoint /bin/bash | 覆盖默认入口点 | 调试时常用,正式运行可移除以直接启动服务 |
vllm/vllm-openai | 镜像名称 | 需提前通过 docker pull 获取最新版本 |
2、vLLM服务参数
参数 | 说明 | 性能影响 | 推荐值 |
---|---|---|---|
CUDA_VISIBLE_DEVICES=0,1 | 指定可用GPU | 必须与 -tp 参数数量匹配(此处使用2卡) | 按实际卡号设置 |
--model /app/DeepSeek... | 模型路径 | 需验证模型格式是否为vLLM支持的HuggingFace格式 | 绝对路径 |
-tp 2 | 张量并行度 | 2卡并行提升吞吐量,但会增加通信开销 | 与GPU数量一致 |
--host 0.0.0.0 | 监听地址 | 允许外部访问API服务 | 生产环境必选 |
--max-model-len 32768 | 上下文窗口 | 影响长文本处理能力(如法律合同分析) | 根据模型训练长度设置 |
--dtype half | 半精度推理 | 显存占用减少50%,速度提升20% | 需模型支持FP16 |
--gpu-memory-utilization 0.8 | 显存使用率上限 | 防止OOM错误,留出显存余量 | 0.8-0.9 |
四、请求验证
curl http://localhost:38805/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/app/DeepSeek-R1-Distill-Qwen-7B",
"prompt": "Once upon a time",
"max_tokens": 50
}'