DeepSeek-V3/R1是一个拥有超过600亿参数的专家混合(MoE)模型,且其模型权重已开源。在本教程中将展示如何使用 SGLang 框架,在一台 “ebmgn8v” 实例上搭建 DeepSeek-V3/R1模型的推理服务。
一、核心工具介绍
1、NVIDIA GPU驱动:用于驱动 NVIDIA GPU 本文中以 Driver 版本 550.127.08 为例进行说明。阿里云提供丰富的GPU云服务器实例,配备业界超强算力的GPU计算卡,结合高性能CPU平台,单实例可提供高达5PFLOPS的混合精度计算性能。阿里云官网:点击访问。

2、SGLang:这是一个专为大规模语言模型(LLM)和视觉语言模型(VLM)设计的高效服务框架,它结合了结构化编程语言与优化后的后端推理引擎,能够加速复杂 LLM 工作负载。本教程使用的是 SGLang v0.4.2.post1 版本。
二、准备环境
1、创建GPU实例并安装驱动
首先,需要创建一个合适的 GPU 实例,并确保已正确安装 NVIDIA 驱动。以下是关键参数的说明:
- 实例规格:推荐选择阿里云 “ecs.ebmgn8v.48xlarge”(配置为 1024 GiB 内存、8 个 96 GB 显存的 GPU 和 192 vCPU);

- 镜像:请选择公共镜像,本教程以 Alibaba Cloud Linux 3.2104 LTS 64 位版本为例;
- GPU 驱动:在创建 GPU 实例时,建议选择自动安装 GPU 驱动(版本 550 及以上),这样可以避免手动安装的麻烦。

2、数据盘和IP配置
DeepSeek 模型体积庞大,其中 DeepSeek-R1 和 DeepSeek-V3 模型文件分别为 1.3 TiB。因此,建议为存储模型文件购买一个 2 TiB 以上的独立数据盘,并将其挂载到 “/mnt” 目录。
- 系统盘:推荐配置 200 GiB 或以上;
- 数据盘:建议购买容量为 2 TiB 或以上的数据盘,并确保其挂载到 “/mnt” 目录;
- 公网IP:选中分配公网IPv4地址,带宽计费方式选择按使用流量,建议带宽峰值选择100 Mbps,以加快模型下载速度;
- 安全组:开放22端口。
3、安装Docker和NVIDIA容器工具包
在实例中安装 Docker 和 NVIDIA 容器工具包,以便后续运行 DeepSeek 模型。
(1)Alibaba Cloud Linux/CentOS
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
sudo systemctl restart docker
sudo systemctl status docker
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
检查 Docker 是否启动
sudo systemctl status docker
"""
#配置生产存储库
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
#安装 NVIDIA Container Toolkit 软件包
sudo yum install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
检查 Docker 是否启动
sudo systemctl status docker
"""
(2)Ubuntu/Debian
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
#安装 NVIDIA Container Toolkit 软件包
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
#配置生产存储库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
#从存储库更新软件包列表
sudo apt-get update
#安装 NVIDIA Container Toolkit 软件包
sudo apt-get install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
#配置生产存储库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
#从存储库更新软件包列表
sudo apt-get update
#安装 NVIDIA Container Toolkit 软件包
sudo apt-get install -y nvidia-container-toolkit
#重启docker
sudo systemctl restart docker
查看Docker是否已启动:
sudo systemctl status docker
sudo systemctl status docker
sudo systemctl status docker
如下图回显所示,表示Docker已启动:

4、挂载数据盘(如适用)
如果在购买实例时未选择添加数据盘,需要手动购买并挂载数据盘。
三、部署和运行DeepSeek模型
1、拉取推理镜像
执行以下命令拉取 DeepSeek 模型的推理 Docker 镜像:
sudo docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207
sudo docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207
sudo docker pull egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207
2、下载DeepSeek模型文件
访问阿里云魔搭社区(Modelscope)下载模型文件,并确保有足够的存储空间。以下脚本以 DeepSeek-V3 为例:
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
MODEL_NAME="DeepSeek-V3"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
# 如果/mnt/V3目录不存在,则创建它
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动下载,下载完成后自动销毁
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
MODEL_NAME="DeepSeek-V3"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件(建议预留模型大小的1.5倍空间),此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
# 如果/mnt/V3目录不存在,则创建它
sudo mkdir -p ${LOCAL_SAVE_PATH}
# 确保当前用户对该目录有写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动下载,下载完成后自动销毁
sudo docker run -d -t --network=host --rm --name download \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "git-lfs clone https://www.modelscope.cn/models/deepseek-ai/${MODEL_NAME}.git /data"
3、监控下载进度
使用以下命令监控模型下载的实时进度:
sudo docker logs -f download
sudo docker logs -f download
sudo docker logs -f download
等待下载完成后,可以通过按下 “Ctrl+C” 退出监控日志,这并不会中断容器的下载任务。
4、启动模型推理服务
配置模型推理服务的运行参数并启动 Docker 容器。以下脚本假设使用的是 8 个 GPU(根据实际 GPU 数量进行调整):
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件,此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 确保当前用户对该目录有读写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
sudo docker run -d -t --network=host --gpus all \
--ulimit stack=67108864 \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "python3 -m sglang.launch_server \
--mem-fraction-static 0.8 \
--tp ${TENSOR_PARALLEL_SIZE} \
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
MODEL_NAME="DeepSeek-V3"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件,此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
PORT="30000"
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 这里假设使用8个GPU
TENSOR_PARALLEL_SIZE="8"
# 确保当前用户对该目录有读写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动Docker容器并运行服务
sudo docker run -d -t --network=host --gpus all \
--privileged \
--ipc=host \
--cap-add=SYS_PTRACE \
--name ${MODEL_NAME} \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "python3 -m sglang.launch_server \
--port ${PORT} \
--model-path /data \
--mem-fraction-static 0.8 \
--tp ${TENSOR_PARALLEL_SIZE} \
--trust-remote-code"
# 定义要下载的模型名称。MODEL_NAME需要访问Modelscope选择模型,在模型详情页获取名称,脚本以DeepSeek-V3为例
MODEL_NAME="DeepSeek-V3"
# 设置本地存储路径。确保该路径有足够的空间来存放模型文件,此处以/mnt/V3为例
LOCAL_SAVE_PATH="/mnt/V3"
# 定义服务运行时监听的端口号。可以根据实际需求进行调整,默认使用30000端口
PORT="30000"
# 定义使用的GPU数量。这取决于实例上可用的GPU数量,可以通过nvidia-smi -L命令查询
# 这里假设使用8个GPU
TENSOR_PARALLEL_SIZE="8"
# 确保当前用户对该目录有读写权限,根据实际情况调整权限
sudo chmod ugo+rw ${LOCAL_SAVE_PATH}
# 启动Docker容器并运行服务
sudo docker run -d -t --network=host --gpus all \
--privileged \
--ipc=host \
--cap-add=SYS_PTRACE \
--name ${MODEL_NAME} \
--ulimit memlock=-1 \
--ulimit stack=67108864 \
-v ${LOCAL_SAVE_PATH}:/data \
egslingjun-registry.cn-wulanchabu.cr.aliyuncs.com/egslingjun/inference-nv-pytorch:preview-25.02-vllm0.6.4.post1-sglang0.4.2.post1-pytorch2.5-cuda12.4-20250207 \
/bin/bash -c "python3 -m sglang.launch_server \
--port ${PORT} \
--model-path /data \
--mem-fraction-static 0.8 \
--tp ${TENSOR_PARALLEL_SIZE} \
--trust-remote-code"
5、检查服务状态
可以通过以下命令查看服务是否正常启动:
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}
如果看到类似以下的日志输出,说明服务已成功启动并在端口 30000 上监听:
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
INFO: Uvicorn running on http://0.0.0.0:30000 (Press CTRL+C to quit)
四、推理测试与验证
最后,可以通过以下命令发送推理请求,验证模型的工作状态:
curl http://localhost:30000/generate \
-H "Content-Type: application/json" \
"text": "deepseek中有几个e?",
curl http://localhost:30000/generate \
-H "Content-Type: application/json" \
-d '{
"text": "deepseek中有几个e?",
"sampling_params": {
"max_new_tokens": 3000,
"temperature": 0
}
}'
curl http://localhost:30000/generate \
-H "Content-Type: application/json" \
-d '{
"text": "deepseek中有几个e?",
"sampling_params": {
"max_new_tokens": 3000,
"temperature": 0
}
}'

-
广告合作
-
QQ群号:707632017