春节期间,DeepSeek 作为一款基于深度学习的智能推理模型,因其在自然语言处理、图像识别等领域的卓越表现迅速走红。无论是企业级应用还是学术研究,DeepSeek 都展现出了强大的潜力。然而,随着其应用场景的不断扩展,数据中心的算力瓶颈问题逐渐凸显。面对算力不足的挑战,阿里云推出的 ACK One 注册集群为企业提供了一种灵活、高效的解决方案。通过将本地数据中心的 K8s 集群接入阿里云 ACK One 注册集群,企业可以无缝扩展算力资源,充分利用阿里云强大的 ACS GPU 算力,实现 DeepSeek 推理模型的高效部署。
背景介绍
Cloud Native
ACK One 注册集群
ACK One 注册集群帮助您将云下 Kubernetes 集群接入云端,快速搭建混合云集群,可以将本地数据中心 Kubernetes 集群或其他云厂商 Kubernetes 集群接入阿里云容器服务管理平台,进行统一管理。
ACS 算力
容器计算服务 ACS 是 ACK Serverless 集群(原 ASK)形态的新一代升级,提供更普惠易用、更柔性、更弹性的容器算力。ACS 面向不同业务场景,定义了高性价比的 Serverless 容器算力类型和算力质量,便于您按需申请使用、秒级按量付费,无需关注底层节点及集群的运维管理。
DeepSeek-R1 模型
DeepSeek-R1 模型是 DeepSeek 推出的第一代推理模型,旨在通过大规模强化学习提升大语言模型的推理能力。实验结果表明,DeepSeek-R1 在数学推理、编程竞赛等多个任务上表现出色,不仅超过了其他闭源模型,而且在某些任务上接近或超越了 OpenAI-O1 系列模型。DeepSeek-R1 在知识类任务和其他广泛的任务类型中也表现出色,包括创意写作、一般问答等。DeepSeek 还将推理能力蒸馏到小模型上,通过对已有模型(Qwen、Llama 等)微调提升模型推理能力。蒸馏后的 14B 模型显著超越了现有的开源模型 QwQ-32B,而蒸馏后的 32B 和 70B 模型均刷新纪录。更多关于 DeepSeek 模型的信息,请参见 DeepSeek AI GitHub 仓库[1]。
vLLM
vLLM 是一个高效易用的大语言模型推理服务框架,vLLM 支持包括通义千问在内的多种常见大语言模型。vLLM 通过 PagedAttention 优化、动态批量推理(continuous batching)、模型量化等优化技术,可以取得较好的大语言模型推理效率。更多关于 vLLM 框架的信息,请参见 vLLM GitHub 代码库[2]。
快速接入
Cloud Native
- 登录阿里云容器服务控制台[3],根据提示开通容器服务。
- 登录容器计算服务控制台[4],根据提示开通 ACS 服务。
- 创建 ACK One 注册集群并接入数据中心或者其他云厂商的 Kubernetes 集群(建议版本为 1.24 及以上)。具体操作,请参见创建 ACK One 注册集群并接入目标集群[5]。
- 已安装并配置 Arena 客户端。具体操作,请参配置 Arena 客户端[6]。
- 安装 ACK Virtual Node 组件。具体操作,请参考 ACK One 注册集群使用 Serverless 算力[7]。
操作步骤
Cloud Native
步骤一:准备 DeepSeek-R1-Distill-Qwen-7B 模型文件1. 执行以下命令从 ModelScope 下载 DeepSeek-R1-Distill-Qwen-7B 模型。说明:请确认是否已安装 git-lfs 插件,如未安装可执行 yum install git-lfs 或者 apt-get install git-lfs 安装。更多的安装方式,请参见安装 git-lfs[8]。
git lfs installGIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.gitcd DeepSeek-R1-Distill-Qwen-7B/git lfs pull
2. 在 OSS 中创建目录,将模型上传至 OSS。
说明:关于 ossutil 工具的安装和使用方法,请参见安装 ossutil[9]。
ossutil mkdir oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7Bossutil cp -r ./DeepSeek-R1-Distill-Qwen-7B oss://<your-bucket-name>/models/DeepSeek-R1-Distill-Qwen-7B
3. 创建 PV 和 PVC。为目标集群配置名为 llm-model 的存储卷 PV 和存储声明 PVC。具体操作,请参见静态挂载 OSS 存储卷[10]。
以下为示例 PV 的基本配置信息:
配置项 | 说明 |
存储卷类型 | OSS |
名称 | llm-model |
访问证书 | 配置用于访问OSS的AccessKey ID和AccessKey Secret |
Bucket ID | 选择上一步所创建的OSS Bucket |
OSS Path | 选择模型所在的路径,如/models/DeepSeek-R1-Distill-Qwen-7B |
以下为示例 PVC 的基本配置信息:
配置项 | 说明 |
存储声明类型 | OSS |
名称 | llm-model |
分配模式 | 选择已有存储卷 |
已有存储卷 | 单击选择已有存储卷链接,选择已创建的存储卷PV |
以下为示例 YAML:
apiVersion: v1kind: Secretmetadata: name: oss-secretstringData: akId: <your-oss-ak> # 配置用于访问OSS的AccessKey ID akSecret: <your-oss-sk> # 配置用于访问OSS的AccessKey Secret---apiVersion: v1kind: PersistentVolumemetadata: name: llm-model labels: alicloud-pvname: llm-modelspec: capacity: storage: 30Gi accessModes: - ReadOnlyMany persistentVolumeReclaimPolicy: Retain csi: driver: ossplugin.csi.alibabacloud.com volumeHandle: llm-model nodePublishSecretRef: name: oss-secret namespace: default volumeAttributes: bucket: <your-bucket-name> # bucket名称 url: <your-bucket-endpoint> # Endpoint信息,推荐使用内网地址,如oss-cn-hangzhou-internal.aliyuncs.com otherOpts: "-o umask=022 -o max_stat_cache_size=0 -o allow_other" path: <your-model-path> # 本示例中为/models/DeepSeek-R1-Distill-Qwen-7B/---apiVersion: v1kind: PersistentVolumeClaimmetadata: name: llm-modelspec: accessModes: - ReadOnlyMany resources: requests: storage: 30Gi selector: matchLabels: alicloud-pvname: llm-model
步骤二:部署模型1. 执行下列命令,查看集群中的节点情况。
kubectl get no -owide
预期输出:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEidc-master-0210-001 Ready control-plane 26h v1.28.2 192.168.8.XXX <none> Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32idc-worker-0210-001 Ready <none> 26h v1.28.2 192.168.8.XXX <none> Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32idc-worker-0210-002 Ready <none> 26h v1.28.2 192.168.8.XXX <none> Alibaba Cloud Linux 3.2104 U11 (OpenAnolis Edition) 5.10.134-18.al8.x86_64 containerd://1.6.32virtual-kubelet-cn-hangzhou-b Ready agent 20h v1.28.2 10.244.11.XXX <none> <unknown> <unknown> <unknown>virtual-kubelet-cn-hangzhou-h Ready agent 25h v1.28.2 10.244.11.XXX <none> <unknown> <unknown> <unknown>
从输出结果,我们可以看到节点中有 virtual-kubelet-cn-hangzhou-<ZoneId> 的虚拟节点。
2. 执行下列命令,基于 vLLM 模型推理框架部署 Qwen 模型的推理服务。说明:GPU 推荐资源配置为 GPU:1,CPU:8vCPU,内存:32GiB。
arena serve custom \--name=deepseek-r1 \--version=v1 \--gpus=1 \--cpu=8 \--memory=32Gi \--replicas=1 \--env-from-secret=akId=oss-secret \--env-from-secret=akSecret=oss-secret \--label=alibabacloud.com/acs="true" \ #此处指定使用ACS算力--label=alibabacloud.com/compute-class=gpu \--label=alibabacloud.com/gpu-model-series=<example-model> \ #此处指定GPU实例系列--restful-port=8000 \--readiness-probe-action="tcpSocket" \--readiness-probe-action-option="port: 8000" \--readiness-probe-option="initialDelaySeconds: 30" \--readiness-probe-option="periodSeconds: 30" \--image=registry-cn-hangzhou-vpc.ack.aliyuncs.com/ack-demo/vllm:v0.6.6 \--data=llm-model:/model/DeepSeek-R1-Distill-Qwen-7B \"vllm serve /model/DeepSeek-R1-Distill-Qwen-7B --port 8000 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager"
特别说明:使用 ACS GPU 算力需要使用以下 label 来说明。
--label=alibabacloud.com/acs="true"
--label=alibabacloud.com/compute-class=gpu
--label=alibabacloud.com/gpu-model-series=<example-model>
预期输出:
service/deepseek-r1-v1 createddeployment.apps/deepseek-r1-v1-custom-serving createdINFO[0001] The Job deepseek-r1 has been submitted successfully INFO[0001] You can run `arena serve get deepseek-r1 --type custom-serving -n default` to check the job status
参数解释如下表所示:
参数 | 说明 |
--name | 指定推理服务名称。 |
--version | 指定推理服务版本。 |
--gpus | 指定单个推理服务副本需要使用的GPU卡数。 |
--cpu | 指定单个推理服务副本需要使用的CPU资源大小。 |
--memory | 指定单个推理服务副本需要使用的内存资源大小。 |
--replicas | 指定推理服务副本数。 |
--label | 通过下面label指定ACS GPU算力[11]。--label=alibabacloud.com/acs="true"--label=alibabacloud.com/compute-class=gpu--label=alibabacloud.com/gpu-model-series=example-model说明 目前支持的GPU具体型号列表请提交工单[12]咨询。 |
--restful-port | 指定推理服务对外暴露的端口。 |
--readiness-probe-action | 指定就绪探针连接类型,支持:httpGet、exec、grpc、tcpSocket。 |
--readiness-probe-action-option | 指定就绪探针连接方式。 |
--readiness-probe-option | 指定就绪探针配置。 |
--image | 指定推理服务的镜像地址。 |
--data | 挂载共享存储卷PVC到运行环境中。它由两部分组成,通过冒号(:)分隔。冒号左侧是已经准备好的PVC名称。可以通过命令arena data list查看当前集群可用的PVC列表;冒号右侧是想将PVC的挂载到运行环境中的路径,也是训练代码要读取数据的本地路径。这样通过挂载的方式,您的代码就可以访问PVC的数据。 |
3. 执行下列命令,查看推理服务详细信息,等待服务就绪。
arena serve get deepseek-r1
预期输出:
Name: deepseek-r1Namespace: defaultType: CustomVersion: v1Desired: 1Available: 1Age: 17mAddress: 10.100.136.39Port: RESTFUL:8000GPU: 1 Instances: NAME STATUS AGE READY RESTARTS GPU NODE ---- ------ --- ----- -------- --- ---- deepseek-r1-v1-custom-serving-5f59745cbd-bsrdq Running 17m 1/1 0 1 virtual-kubelet-cn-hangzhou-b
4. 执行下列命令,查看推理服务已部署到虚拟节点。
kubectl get po -owide |grep deepseek-r1-v1
预期输出:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESdeepseek-r1-v1-custom-serving-5f59745cbd-r8drs 1/1 Running 0 3m16s 192.168.2.XXX virtual-kubelet-cn-hangzhou-b <none> <none>
从结果我们可以看到,推理服务的业务 Pod 被调度到虚拟节点。
步骤三:验证推理服务1. 使用 kubectl port-forward 在推理服务与本地环境间建立端口转发。
kubectl port-forward svc/deepseek-r1-v1 8000:8000
2. 发送模型推理请求。
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "deepseek-r1", "messages": [{"role": "user", "content": "你好,DeepSeek。"}], "max_tokens": 100, "temperature": 0.7, "top_p": 0.9, "seed": 10}'
预期输出:
{"id":"chatcmpl-cef570252f324ed2b34953b8062f793f","object":"chat.completion","created":1739245450,"model":"deepseek-r1","choices":[{"index":0,"message":{"role":"assistant","content":"您好!我是由中国的深度求索(DeepSeek)公司独立开发的智能助手DeepSeek-R1,很高兴为您提供服务!\n</think>\n\n您好!我是由中国的深度求索(DeepSeek)公司独立开发的智能助手DeepSeek-R1,很高兴为您提供服务!","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":10,"total_tokens":68,"completion_tokens":58,"prompt_tokens_details":null},"prompt_logprobs":null}
总结
Cloud Native
DeepSeek-R1 在数学推理、编程竞赛等多个任务上表现出色,不仅超过了其他闭源模型,而且在某些任务上接近或超越了 OpenAI-o1 系列模型。一经发布,尝试者众。本文介绍了如何在 ACK One 注册集群上使用 ACS GPU 算力部署生产可用的 DeepSeek 推理服务,解决数据中心算力不足的问题,使得企业将更轻松地应对复杂多变的业务挑战,全面释放云端生产力潜力。
立即访问阿里云 ACK One 官网[13],了解更多详情,开始您的智能扩展之旅吧!