部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足

简介: 部署 DeepSeek 但 GPU 不足,ACK One 注册集群助力解决 IDC GPU 资源不足

春节期间,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],了解更多详情,开始您的智能扩展之旅吧!

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
402 1
|
4月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
289 89
|
10月前
|
Kubernetes 安全 异构计算
K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定
最近一年我都在依赖大模型辅助工作,比如 DeepSeek、豆包、Qwen等等。线上大模型确实方便,敲几个字就能生成文案、写代码、做表格,极大提高了效率。但对于企业来说:公司内部数据敏感、使用外部大模型会有数据泄露的风险。
K8S 部署 Deepseek 要 3 天?别逗了!Ollama+GPU Operator 1 小时搞定
|
4月前
|
Kubernetes 调度 异构计算
Kubernetes集群中,部分使用GPU资源的Pod出现UnexpectedAdmissionError问题的解决方案。
如果在进行上述检查之后,问题依然存在,可以尝试创建一个最小化的Pod配置,仅请求GPU资源而不
296 5
|
10月前
|
人工智能 Linux API
119K star!无需GPU轻松本地部署多款大模型,DeepSeek支持!这个开源神器绝了
"只需一行命令就能在本地运行Llama 3、DeepSeek-R1等前沿大模型,支持Windows/Mac/Linux全平台,这个开源项目让AI开发从未如此简单!"
626 0
|
10月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
11月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
992 33
|
11月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
624 19
|
9月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
405 9

热门文章

最新文章

推荐镜像

更多