首页开发教程GPU单机部署DeepSeek模型(满血版)教程

GPU单机部署DeepSeek模型(满血版)教程

2025-03-27 34

DeepSeek-V3/R1是一个拥有超过600亿参数的专家混合(MoE)模型,且其模型权重已开源。在本教程中将展示如何使用 SGLang 框架,在一台 “ebmgn8v” 实例上搭建 DeepSeek-V3/R1模型的推理服务。

一、核心工具介绍

1、NVIDIA GPU驱动:用于驱动 NVIDIA GPU 本文中以 Driver 版本 550.127.08 为例进行说明。阿里云提供丰富的GPU云服务器实例,配备业界超强算力的GPU计算卡,结合高性能CPU平台,单实例可提供高达5PFLOPS的混合精度计算性能。阿里云官网:点击访问

GPU单机部署DeepSeek模型(满血版)教程

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);

GPU单机部署DeepSeek模型(满血版)教程

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

GPU单机部署DeepSeek模型(满血版)教程

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#配置生产存储库
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 """
#配置生产存储库
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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#配置生产存储库
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
#配置生产存储库
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是否已启动:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo systemctl status docker
sudo systemctl status docker
sudo systemctl status docker

如下图回显所示,表示Docker已启动:

GPU单机部署DeepSeek模型(满血版)教程

4、挂载数据盘(如适用)

如果在购买实例时未选择添加数据盘,需要手动购买并挂载数据盘。

三、部署和运行DeepSeek模型

1、拉取推理镜像

执行以下命令拉取 DeepSeek 模型的推理 Docker 镜像:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 为例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 定义要下载的模型名称。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"
# 定义要下载的模型名称。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、监控下载进度

使用以下命令监控模型下载的实时进度:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker logs -f download
sudo docker logs -f download
sudo docker logs -f download

等待下载完成后,可以通过按下 “Ctrl+C” 退出监控日志,这并不会中断容器的下载任务。

4、启动模型推理服务

配置模型推理服务的运行参数并启动 Docker 容器。以下脚本假设使用的是 8 个 GPU(根据实际 GPU 数量进行调整):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 定义要下载的模型名称。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"
# 定义要下载的模型名称。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、检查服务状态

可以通过以下命令查看服务是否正常启动:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}
sudo docker logs ${MODEL_NAME}

如果看到类似以下的日志输出,说明服务已成功启动并在端口 30000 上监听:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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)

四、推理测试与验证

最后,可以通过以下命令发送推理请求,验证模型的工作状态:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 } }'
curl http://localhost:30000/generate \
-H "Content-Type: application/json" \
-d '{
"text": "deepseek中有几个e?",
"sampling_params": {
"max_new_tokens": 3000,
"temperature": 0
}
}'

GPU单机部署DeepSeek模型(满血版)教程

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
准备环境
下一篇:

已经没有下一篇了!

相关文章