本文将介绍两种在火山引擎云上部署 DeepSeek-R1 全尺寸模型服务的方案,涵盖大模型推理服务的 Terraform 一键部署、容器化部署、资源弹性伸缩和模型可观测。
来源 | 火山引擎云基础
在 AI 大模型日新月异的当下,企业在使用大模型时往往面临着数据隐私保护和性能优化的挑战。为了解决这些问题,企业 AI 大模型在云端进行私有化部署成为一种理想的解决方案。私有化部署允许企业在自己的服务器上运行 AI 模型推理服务,保护敏感数据隐私并借助云上的基础设施提高模型推理性能,实现安全和效率的双赢。
上周,我们在《火山引擎云上实战:一键部署 DeepSeek 大模型(蒸馏版)》一文中介绍了三种在火山引擎云上快速部署 DeepSeek-R1-Distill 模型服务的方案。相比 DeepSeek-R1-Distill,同样由深度求索开源的全尺寸模型 DeepSeek-R1 由于具有如下特性,可以满足企业级用户的更多业务诉求:
- 性能与 精度 : 企业级应用(如金融分析、医疗诊断、智能客服等)通常需要处理复杂任务,对模型的精度和性能要求极高,DeepSeek-R1 作为更大的模型,参数量更多,能够捕捉更复杂的模式和特征,因此在处理高难度任务时表现更优;
- 处理复杂任务: 企业级场景通常涉及更复杂的推理任务(如语义理解、决策支持等),DeepSeek-R1 的强大计算能力和更大的容量使其更适合处理这些任务;
- 资源环境支持: 企业级用户通常拥有强大的计算资源(如高性能服务器、GPU 集群等),能够支持更大模型的部署和运行,DeepSeek-R1 虽然计算开销大,但在企业级环境中,资源通常不是瓶颈;
- 模型的 可扩展性 : 企业级用户可能需要根据业务需求对模型进行微调或扩展,DeepSeek-R1 的更大容量和更强的表达能力使其更容易适应新的任务或领域。
本文将介绍两种在火山引擎云上部署 DeepSeek-R1 模型推理服务的方案:
- 方案一:基于 Terraform 实现在 GPU 云服务器上的大模型一键部署,优势是简单、易操作;
- 方案二:基于 GPU 云服务器、容器服务 VKE 的多机分布式推理方案,通过优化云上架构设计支持大规模模型的推理,提高吞吐量和性能,大幅提升模型加载速度,使更大化资源利用率、提高可用性和容错性成为可能。
Terraform 是一款开源基础设施即代码( IaC )工具,专注于帮助用户通过声明式配置文件自动化创建、管理和版本化云基础设施资源。火山引擎通过多年积极拥抱开源生态,已与 Terraform 做了大量集成,支持用户通过 Terraform 编排火山引擎上的多种云资源,因此我们可以通过 Terraform 实现 DeepSeek-R1 大模型在 GPU ECS 上的一键部署。这种方案的优势是:
- 易用性: 基于开源 Terraform 的方案,脚本内置了常用参数,用户只需下载 Terraform 脚本代码并执行,即可安全、高效地完成基于 GPU 云服务器的部署,避免手工操作的繁琐;
- 模型下载快速、稳定、低成本:同一 Region 的机器走内网快速拉取模型,带宽稳定在 300MB/s 以上,并且避免了公网流量费用。
资源配置推荐
由于 DeepSeek-R1 参数量高达 671B,在 FP8 精度下,仅存储模型参数就需要约 625GB 显存,加上 KV Cache 缓存(128K 上下文长度需要 448GB 显存)和其他运行时开销,超过了绝大多数单机的显存上限,因此在这个方案中,我们需要用到 2 台 8 卡的 GPU 主机才能完整运行全尺寸模型,推荐使用如下资源配置:
注: ecs.hpcpni3ln 机型目前处于邀测阶段,欢迎联系客户经理申请
Step1:Terraform 环境准备
首先,我们需要完成 Terraform 的安装并初始化使用环境,为后续通过 Terraform 一键部署 DeepSeek-R1 做好准备。Terraform 是以二进制可执行文件发布,我们只需下载官方 Terraform,并将 Terraform 可执行文件所在目录添加到系统环境变量 PATH 中即可,具体步骤可参考:https://www.volcengine.com/docs/6706/101977。
Step2:下载并执行 Terraform 脚本
- 下载 Terraform 脚本:
wget https://public-terraform-cn-beijing.tos-cn-beijing.volces.com/models/deepseek/DeepSeek-R1/main.tf
火山引擎已经为用户准备好了不同版本的 deepseek-terraform 一键部署脚本,脚本内置地域信息、模型下载地址和机型选择,可以按照需求自行下载。这里我们选择 DeepSeek-R1 北京地区的链接:https://public-terraform-cn-beijing.tos-cn-beijing.volces.com/models/deepseek/DeepSeek-R1/main.tf。
重要参数说明:
火山引擎高性能计算集群(HPC)是一种用于处理大规模计算任务的集群计算环境,通常由大量的计算节点组成,这些节点通过 RDMA 高速网络互联,并协同工作以处理复杂的计算任务。
高性能计算集群创建方法:登录火山引擎 ECS 工作台:https://console.volcengine.com/ecs,进入【高性能计算集群】菜单,点击【创建高性能计算集群】,按照提示创建成功之后,可在详情页查看 ID。
- 通过运行以下命令来初始化 Terraform:
terraform init
等待系统显示以下消息:
Terraform has been successfully initialized!
- 查看配置中定义的资源:
terraform plan
terraform plan
命令的输出是在应用配置时 Terraform 预配的资源列表。
- 应用 Terraform 配置:如果 Terraform 配置中不需要进一步更改,请部署资源。
terraform apply
Terraform 会显示将创建的资源列表,并且执行内置的执行脚本。
由于模型本身体积较大,DeepSeek R1/V3 部署时间约为 30-40 分钟,请耐心等待
Step3:测试验证
登录 node0 实例,查看/home/result 文件,直到输出 “Script execution completed” ,表示安装&启动容器命令执行完成。此时可以 docker logs CONTAINER_ID
查看容器是否拉取到模型和权重,当 docker logs 显示如下内容时表示服务已成功启动(全尺寸模型和权重拉取时间较长,请耐心等待)。
此时,可以执行如下命令进行测试:
curl -X POST http://0.0.0.0:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "/data/models/DeepSeek-V3",
"messages": [
{
"role": "user",
"content": "请证明一下黎曼猜想"
}
],
"stream": true,
"max_tokens": 100,
"temperature": 0.7
}'
若看到如下输出,则表示部署成功:
提醒:执行 curl 命令可能会返回 拒绝连接的提示,如下图,可能是权重文件没有下载和加载完毕,可以稍后再重试。
如前文所述,DeepSeek-R1 是一个参数量巨大的模型,单机 GPU 无法支持完全加载或高效运行,因此除了双机部署,我们也推荐基于容器的多机分布式推理方案,更好地支持大规模模型的推理、吞吐量提升和性能保障。部署方案如下图所示:
可以发现,在多机推理架构中需要多个 Pod 共同组成一个推理服务,同时不同 Pod 还具有不同的主从角色(在 sglang 和 vllm 中称为head 和 worker 节点)。Kubernetes 原生提供了如 Deployments、StatefulSet 等资源管理对象,能够很好管理单个 Pod 的生命周期和扩缩容。但是对于多机分布式推理需要跨多个 Pod 部署资源并对多个 Pod 进行扩缩容的场景,就无法使用 Deployments 或 StatefulSet 。
为了应对这个挑战,Kubernetes 社区在 StatefulSet 的基础上提出了 Leader-Worker Set (LWS) API ,LWS API 提供了一种原生的方式来管理分布式推理任务中常见的 Leader-Worker 模式,其中 Leader Pods 通常负责协调任务、Worker Pods 则负责执行实际的推理任务或计算工作。LWS API 能够确保 Leader Pods 在完全就绪之前,不会启动 Worker Pods。同时可以单独定义 Leader 和 Worker 所需的 Pod 数量:
使用 LWS API 的主要优势包括:
- 简化分布式推理的部署:通过 LWS API,提供了一个声明式的 API,用户只需定义 Leader 和 Worker 的配置,Kubernetes 控制器会自动处理其生命周期管理。用户可以更轻松地部署复杂的分布式推理工作负载,而无需手动管理 Leader 和 Worker 的依赖关系和副本数量。
- 无缝水平扩容:上文中提到分布式推理的服务需要多个POD 共同提供服务,在进行扩容时也需要以多个Pod 一组为原子单位进行扩展, LWS 可以与 k8s HPA 无缝对接,将 LWS 作为HPA 扩容的Target,实现推理服务整组扩容
- 拓扑感知调度:在分布式推理中,不同 Pod 需要进行大量数据交互。为了减少通信延时 LWS API 结合了拓扑感知调度,保证能够保证 Leader 和 Worker Pod 能够调度到 RDMA 网络中拓扑距离尽可能接近的节点上。
下面我们正式开始介绍如何通过火山引擎 GPU 云服务器和容器服务 VKE 部署 DeepSeek-R1,首先是一些前置准备和环境配置建议。
环境配置推荐
GPU 资源配置
和 Terraform 一键部署方案一样,多机分布式推理方案同样推荐使用如下资源配置:
注:ecs.hpcpni3ln 机型目前处于邀测阶段,欢迎联系客户经理申请
RDMA 组网
多机推理过程中需要频繁地相互交换参数,为了保障网络通讯不成为性能瓶颈,通常使用 RDMA 网络在 GPU 之间直接传输数据。而在数据中心当中,一台交换机可以连接的 RDMA 网络设备有限,通常需要 S0 S1 两级交换机连接一个 miniPod 中的所有服务器。这样的网络拓扑结构,会导致不同 RDMA 网卡之间的通讯距离不一样,因此不同的 GPU 设备之间的通讯性能也会有差异。
针对上述情况,火山引擎容器服务提供 RDMA 拓扑感知调度能力,通过对 GPU 卡和 RDMA 设备的网络拓扑信息的感知,调度器能够将同一个 Job 中的所有 Pod 调度到 RDMA 网络中拓扑距离尽可能接近的节点和 RDMA 网卡上,充分发挥 RDMA 网络的通信能力
分布式推理引擎
这里同样选择了 SGLang 作为分布式推理引擎。SGLang 是 DeepSeek 官方团队推荐的推理引擎,支持多节点张量并行,同时针对 DeepSeek 的多头潜注意力(MLA) 机制做了诸多优化:权重吸收、分组解码内核、FP8 矩阵乘法和 KV 缓存量化,使得 SGLang 成为了运行 DeepSeek 模型的最佳开源 LLM 引擎之一。
对比其他主流的推理引擎实现、如 VLLM,根据火山引擎团队的测试数据,在 DeepSeek-R1 模型 SGLang 的吞吐量是 VLLM 2 倍以上,有显著的性能优势。
Step1:模型拉取
火山引擎为用户准备好的不同版本 DeepSeek 模型的 TOS 地址,这里我们使用 DeepSeek-R1 北京地区的链接:tos:// ai-public-models-cn-beijing/models/DeepSeek-R1/。用户可以通过 tosutil 命令行工具,将模型快速复制到到用户自身的 TOS 桶中,作为后续模型推理服务的基础模型,具体操作步骤如下:
- 完成 tosutil 信息配置:
tosutil config -e=tos-cn-beijing.volces.com -i=${AK} -k=${SK} -re=cn-beijing
其中,AK/SK 为用户的 API 访问秘钥,密钥管理方式可以参考:https://www.volcengine.com/docs/6257/64983。
- 执行复制命令。在本地执行命令,完成将预置模型复制到用户 TOS 桶中的操作:
tosutil cp -r -j 6 -p 6 ${SOURCE_MODEL_TOS_PATH} tos://${TOS_BUCKET}
- SOURCE_MODEL_TOS_PATH 为预置模型的 TOS 路径。以 DeepSeek-R1 模型为例,SOURCE_MODEL_TOS_PATH 即为:tos:// ai-public-models-cn-beijing/models/DeepSeek-R1/
- TOS_BUCKET 为用户创建的 TOS 桶的名称,具体可以在桶概览页查看
Step2:模型部署
创建高性能计算集群
为了后续在 VKE 集群中创建的 RDMA 节点的RMDA 网络能够互联互通,我们需要先初始化高性能计算集群,并在后续新建 VKE 节点时选择预先初始化好的高性能计算集群。
登录火山引擎 ECS 工作台:https://console.volcengine.com/ecs,进入【高性能计算集群】菜单,点击【创建高性能计算集群】,按照提示创建成功之后,可在详情页查看 ID。需要注意,高性能集群集群所在的可用区需要与VKE 节点的可用区一致。
创建 VKE 集群
-
进入火山引擎容器服务 VKE 工作台:https://console.volcengine.com/vke,创建托管集群(如下图所示),
- Kubernetes版本选择1.28
- 网络模型建议选择 VPC-CNI:
-
安装插件。在创建集群过程中,我们需要选择组件配置,这里要额外选择 nvidia-device-plugin、rdma-device-plugin 等组件进行安装(相关文档:https://www.volcengine.com/docs/6460/101014):
- nvidia-device-plugin:GPU 使用依赖,使用 GPU 机器必备;
- rdma-device-plugin: RDMA 设备插件,支持 RDMA 网卡设备的管理;
- CSI-TOS:TOS 挂载依赖。
- prometheus-agent :监控指标采集
- 创建节点池。进入集群,选择“节点管理-节点池-创建节点池”:
- 计算规格选择 ecs.ebmhpcpni3l 机型,数量 2 台;数据盘规格选择 1T 极速型 SSD;选择上文中创建的高性能计算集群:
- RDMA 配置。设置节点标签GPU 和 RDMA 使用模式,vke.node.gpu.schedule:nvidia 和 vke.node.rdma.mode:exclusive,并设置 kubelet 参数 topologyManagerPolicy: best-effort
配置界面如下图所示:
- 创建模型存储卷。在 VKE 集群中创建对象存储静态存储卷,实现基于 TOS 的 VKE 集群网络存储能力,参考:https://www.volcengine.com/docs/6460/101643。在已创建的 VKE 集群中创建存储卷(PV),需要注意以下列举的参数配置:
创建存储卷声明(PVC),关联上一步创建的 PV:
安装 LeaderWorkerSet
如前文所述,我们会使用 LWS (LeaderWorkerSet) 来编排多节点的推理负载 (如 deepseek r1 需要跨两个节点部署),我们首先需要安装LWS 的CRD。
kubectl apply --server-side -f manifest.yaml
通过 LeaderWorkerSet 部署模型
完成部署模型前的准备工作后,开启正式部署 DeepSeek-R1 模型(SGLang)的步骤,
示例 YAML 文件sglang.yaml
如下所示,需要注意的是, persistentVolumeClaim.claimName 需要和之前创建模型 PV/PVC 步骤中创建的 PVC 名称对应:
apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
name: sglang
spec:
replicas: 1 # pod group 数量
startupPolicy: LeaderCreated
rolloutStrategy:
type: RollingUpdate
rollingUpdateConfiguration:
maxSurge: 0
maxUnavailable: 2 # 需要开启 MaxUnavailableStatefulSet feature gate 生效
leaderWorkerTemplate:
size: 2
restartPolicy: RecreateGroupOnPodRestart
leaderTemplate:
metadata:
labels:
role: leader
annotations:
k8s.volcengine.com/pod-networks: |
[
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
}
]
spec:
containers:
- name: sglang-head
image: ai-containers-cn-beijing.cr.volces.com/deeplearning/sglang:v0.4.2.post2-cu124
imagePullPolicy: IfNotPresent
workingDir: /sgl-workspace
command:
- bash
- -c
- 'cd /sgl-workspace && GLOO_SOCKET_IFNAME=eth0 NCCL_SOCKET_IFNAME=eth0 NCCL_IB_DISABLE=0 NCCL_IB_HCA=mlx5_ python3 -m sglang.launch_server --model-path /models/deepseek --tp 16 --dist-init-addr $LWS_LEADER_ADDRESS:20000 --nnodes $LWS_GROUP_SIZE --node-rank 0 --trust-remote-code --context-length 131072 --mem-fraction-static 0.7 --enable-metrics --host 0.0.0.0 --port 8080'
ports:
- containerPort: 8080
name: http
protocol: TCP
- containerPort: 20000
name: distributed
protocol: TCP
resources:
limits:
nvidia.com/gpu: "8"
vke.volcengine.com/rdma: "4"
requests:
nvidia.com/gpu: "8"
vke.volcengine.com/rdma: "4"
securityContext:
capabilities:
add:
- IPC_LOCK
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /models/deepseek
name: models
- mountPath: /dev/shm
name: shared-mem
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 10
volumes:
- name: models
persistentVolumeClaim:
claimName: deepseekr1
- emptyDir:
medium: Memory
name: shared-mem
dnsPolicy: ClusterFirst
workerTemplate:
metadata:
annotations:
k8s.volcengine.com/pod-networks: |
[
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
},
{
"cniConf":{
"name":"rdma"
}
}
]
spec:
containers:
- name: sglang-worker
image: ai-containers-cn-beijing.cr.volces.com/deeplearning/sglang:v0.4.2.post2-cu124
imagePullPolicy: IfNotPresent
workingDir: /sgl-workspace
command:
- bash
- -c
- 'cd /sgl-workspace && GLOO_SOCKET_IFNAME=eth0 NCCL_SOCKET_IFNAME=eth0 NCCL_IB_DISABLE=0 NCCL_IB_HCA=mlx5_ python3 -m sglang.launch_server --model-path /models/deepseek --tp 16 --dist-init-addr $LWS_LEADER_ADDRESS:20000 --nnodes $LWS_GROUP_SIZE --node-rank $LWS_WORKER_INDEX --trust-remote-code --context-length 131072 --enable-metrics --host 0.0.0.0 --port 8080'
env:
- name: LWS_WORKER_INDEX
valueFrom:
fieldRef:
fieldPath: metadata.labels['leaderworkerset.sigs.k8s.io/worker-index']
ports:
- containerPort: 8080
name: http
protocol: TCP
- containerPort: 20000
name: distributed
protocol: TCP
resources:
limits:
nvidia.com/gpu: "8"
vke.volcengine.com/rdma: "4"
requests:
nvidia.com/gpu: "8"
vke.volcengine.com/rdma: "4"
securityContext:
capabilities:
add:
- IPC_LOCK
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /models/deepseek
name: models
- mountPath: /dev/shm
name: shared-mem
dnsPolicy: ClusterFirst
volumes:
- name: models
persistentVolumeClaim:
claimName: deepseekr1
- emptyDir:
medium: Memory
name: shared-mem
kubectl apply -f sglang.yaml
Step3:对外访问
火山引擎负载均衡 CLB 是一种将访问流量按策略分发给多台后端服务器的服务,可以扩展系统对外服务能力,消除单点故障,从而提高系统的整体可用性。这里我们使用负载均衡 CLB 来对外暴露服务。
apiVersion: v1
kind: Service
metadata:
name: sglang-api-svc
labels:
app: sglang
spec:
selector:
leaderworkerset.sigs.k8s.io/name: sglang
role: leader
ports:
- protocol: TCP
port: 8080
targetPort: http
name: http
type: LoadBalancer
kubectl apply -f sglang-api-svc.yaml
配置完成后,我们可以在控制台界面中查看配置结果:
到这里,我们就完成了 DeepSeek R1 大模型的部署和服务对外暴露。我们可以通过本地 curl 命令调用 API 来测试部署效果,这里的 IP 为你之前创建的负载均衡的 IP:
curl -X POST http://你的负载均衡IP/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "/model",
"messages": [
{
"role": "user",
"content": "你好,你是谁?"
}
],
"stream": false,
"temperature": 0.7
}'
模型可观测
为保障大模型服务在生产环境中的质量和稳定性,我们通常需要对模型的性能进行持续监控、评估和优化,以及对模型的运行环境进行管理和维护。在火山引擎云环境中,用户可以通过结合容器服务 VKE 和托管 Prometheus VMP,来实时跟踪 GPU 利用率、推理引擎的延时、吞吐量等关键指标。
在 VKE 集群控制台侧边栏找到云原生观测,如下图指示,进入概览按照页面指引开启云原生观测和容器监控。
在观测配置中启用 AI 资源
- 创建 service monitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: sglang-api-svc-discover # 配置采集规则名称
namespace: default # 配置 ServiceMonitor 命名空间
labels:
volcengine.vmp: "true" # 配置 ServiceMonitor 的标签,允许被 Prometheus-agent 发现
spec:
endpoints:
- port: http # 填写服务端口名称
namespaceSelector:
matchNames:
- default # 配置为服务所在的命名空间
selector:
matchLabels:
app: sglang # 配置服务的 Label 值,以定位和选择目标 Service
kubectl apply -f sglang-api-svc-discover.yaml
完成观测配置后,就可以通过Grafana 查看到Sglang 的监控信息,Sglang 监控Grafana 面板配置请下载 https://modeltest.tos-cn-beijing.volces.com/files/sglang-dashboard.json 并导入到Grafana 中
Grafana 的部署和配置可参考 在容器服务集群中部署 Grafana 并接入工作区
HPA 弹性扩展
通过 LWS 部署分布式推理服务后还可以与 k8s HPA 无缝对接,将 LWS 作为HPA 扩容的Target,实现推理服务整组扩容。同时对于GPU 负载的 HPA 还需要能够更为准确的反映 GPU 繁忙程度的指标进行反馈,目前推荐的指标是DCGM_FI_PROF_SM_ACTIVE,DCGM_FI_PROF_SM_ACTIVE 表示在一个时间间隔内,至少一个线程束在一个SM(StreamingMultiprocessor)上处于Active的时间占比。该值表示所有SM的平均值 相对GPU 使用率更能准确表达GPU多核利用情况
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: sglang-hpa
spec:
minReplicas: 1
maxReplicas: 5
metrics:
- pods:
metric:
name: k8s_pod_gpu_prof_sm_active
target:
type: AverageValue
averageValue: "0.3" # 根据实际使用情况配置
type: Pods
scaleTargetRef:
apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
name: sglang
behavior:
scaleDown:
policies:
- periodSeconds: 300
type: Pods
value: 2
- periodSeconds: 300
type: Percent
value: 5
selectPolicy: Max
stabilizationWindowSeconds: 300
scaleUp:
policies:
- periodSeconds: 15
type: Pods
value: 2
- periodSeconds: 15
type: Percent
value: 15
selectPolicy: Max
stabilizationWindowSeconds: 0
kubectl apply -f sglang-hpa.yaml
模型加速
DeepSeek R1 模型的参数量高达 671B,模型参数文件需要 700GB(FP8),即使是蒸馏后的模型,参数文件也有数十 GB,存在模型下载时间过长的问题。对此,火山引擎容器服务 VKE 提供了存储访问加速能力,依托开源项目 Fluid ,可以为用户提供更好的存储访问效果。
存储访问加速功能核心原理是通过缓存的方式来突破大数据量场景下的访问速度瓶颈。比如有 10 个推理服务实例同时启动,需要从对象存储中拉取数据,这时由于总的可用带宽是固定的,每个实例只能分到总带宽的十分之一,这就会导致数据拉取的延时显著增加,进而影响性能。为了弹性伸缩计算侧的分布式缓存,我们可以将底层存储系统的有限带宽扩展到 Kubernetes 集群内,让集群内的可用带宽取决于分布式缓存节点数,这样我们就能根据业务需求灵活伸缩,大幅缩短模型加载时长。
我们基于 Deepseek R1 全尺寸版本模型拉取的测试,证实 Fluid+CFS Runtime 确实可以有效减少模型拉取时间,相对于直接从对象存储上拉取能够缩短30% 的模型拉取时间。
前置准备
- 在 VKE 集群中通过【组件管理】模块安装 csi-cloudfs 组件,该组件承担了在 Kubernetes 中使用火山引擎大数据文件存储的集成能力:
- 在【云原生 AI 套件-数据加速】模块中一键安装部署 Fluid 应用,并确保 Fliud 中的 dataset-controller 和 cfsruntime-controller 等工作负载处于正常运行状态。VKE 提供的 Fliud 与开源社区同源,还额外支持了对接火山引擎大数据文件存储 CloudFS 的能力,并且通过应用中心提供开箱即用的能力:
- 在大数据文件存储产品内,创建文件存储并选择应用场景为【数据湖场景】(应用场景存在可用区级别差异,请选择可支持数据湖场景的可用区),保证文件存储实例与 VKE 集群处于相同的 私有网络 VPC 内,并且在【子网】处勾选“支持该私有网络下的所有子网访问”,以便于后续相同 VPC 内均可访问当前 CloudFS 实例:
操作步骤
- 创建数据集。在 VKE 集群中的【云原生 AI 套件-数据加速】模块中创建 Fluid 数据集,在基本信息模块配置数据集名称、归属命名空间等信息(后续仅处于与数据集相同命名空间的工作负载才能使用数据集),配置数据集目的端(前置准备阶段所创建的 CloudFS 实例)、数据源端(一般是 TOS 等):
- 预热数据集。在 VKE 集群中的【云原生 AI 套件-数据加速】模块中,设置创建 Fluid 数据集时可直接预热(用户也可以在 Fluid 数据集创建完成之后进行手动预热):
- 挂载数据集。在 VKE 集群中,与 Fluid 数据集处于相同命名空间的工作负载(Deployment、Pod 等)可挂载相应的数据集:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment # adjust name for your deployment
namespace: users-namespace # specify your namespace to apply deployment
spec:
replicas: 2 # adjust number of replicas for your deployment
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
vke.volcengine.com/fluid-enable-cfs: "true"
spec:
containers:
- name: nginx # adjust name of container
image: nginx:1.14.2 # adjust image_name and tag for your container
ports:
- containerPort: 80 # adjust port for your container
volumeMounts:
- mountPath: /path/to/mount # adjust the path where you want to mount the PVC
name: your-volume
volumes:
- name: your-volume
persistentVolumeClaim:
claimName: your # Name of the PVC (Name of the Dataset)
以上就是基于火山引擎 GPU 云服务器、容器服务 VKE 等产品快速拉起 DeepSeek-R1 模型服务的全过程,而结合火山引擎提供的丰富云服务和产品,企业级客户可以进一步调整和优化架构,以充分发挥 DeepSeek-R1 的潜力,满足业务需求并实现高效、稳定的推理服务。
欢迎感兴趣的用户开通相关产品服务进行体验!
相关链接
[1] 火山引擎: www.volcengine.com
[2] GPU ECS:www.volcengine.com/product/gpu
[3] VKE:www.volcengine.com/product/vke
[4] GPU 部署 DS-R1:www.volcengine.com/docs/6419/1451313
[5] GPU 部署 R1-Distill:www.volcengine.com/docs/6419/1451715