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

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

春节期间,DeepSeek作为一款基于深度学习的智能推理模型,因其在自然语言处理、图像识别等领域的卓越表现迅速走红。无论是企业级应用还是学术研究,DeepSeek都展现出了强大的潜力。然而,随着其应用场景的不断扩展,数据中心的算力瓶颈问题逐渐凸显。


面对算力不足的挑战,阿里云推出的ACK One注册集群为企业提供了一种灵活、高效的解决方案。通过将本地数据中心的K8S集群接入阿里云ACK One注册集群,企业可以无缝扩展算力资源,充分利用阿里云强大的ACS GPU算力,实现DeepSeek推理模型的高效部署。



背景介绍

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]


快速接入


•登录阿里云容器服务控制台[3],根据提示开通容器服务。

•登录容器计算服务控制台[4],根据提示开通ACS服务。

•创建ACK One注册集群并接入数据中心或者其他云厂商的Kubernetes集群(建议版本为1.24及以上)。具体操作,请参见创建ACK One注册集群并接入目标集群[5]

•已安装并配置Arena客户端。具体操作,请参配置Arena客户端[6]

•安装ACK Virtual Node组件。具体操作,请参考ACK One注册集群使用Serverless算力[7]


操作步骤


步骤一:准备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 install
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B.git
cd 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-7B
ossutil 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: v1
kind: Secret
metadata: 
  name: oss-secret
stringData:
  akId: <your-oss-ak> # 配置用于访问OSS的AccessKey ID 
  akSecret: <your-oss-sk> # 配置用于访问OSS的AccessKey Secret
---
apiVersion: v1
kind: PersistentVolume
metadata: 
  name: llm-model
  labels: 
    alicloud-pvname: llm-model
spec: 
  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: v1
kind: PersistentVolumeClaim
metadata: 
  name: llm-model
spec: 
  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-RUNTIME
idc-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.32
idc-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.32
idc-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.32
virtual-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-的虚拟节点。


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 created
deployment.apps/deepseek-r1-v1-custom-serving created
INFO[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

指定就绪探针连接类型,支持:httpGetexecgrpctcpSocket

--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-r1
Namespace:  default
Type:       Custom
Version:    v1
Desired:    1
Available:  1
Age:        1
7mAddress:    10.100.136.39
Port:       RESTFUL:8000
GPU:        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 GATES
deepseek-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}


总结


DeepSeek-R1在数学推理、编程竞赛等多个任务上表现出色,不仅超过了其他闭源模型,而且在某些任务上接近或超越了OpenAI-o1系列模型。一经发布,尝试者众。本文介绍了如何在ACK One注册集群上使用ACS GPU算力部署生产可用的DeepSeek推理服务,解决数据中心算力不足的问题,使得企业将更轻松地应对复杂多变的业务挑战,全面释放云端生产力潜力。


立即访问阿里云ACK One官网[13],了解更多详情,开始您的智能扩展之旅吧!


欢迎通过钉钉扫描下方二维码或搜索钉钉群号加入ACK One客户交流钉钉与我们一同交流。(钉钉群号:35688562


相关链接:


[1] DeepSeek AI GitHub仓库

https://github.com/deepseek-ai


[2] vLLM GitHub代码库

https://github.com/vllm-project/vllm


[3] 阿里云容器服务控制台

https://csnew.console.aliyun.com/#/authorize


[4] 容器计算服务控制台

https://acs.console.aliyun.com/#/


[5] 创建ACK One注册集群并接入目标集群

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/create-a-registered-cluster-through-the-console?spm=a2c4g.11186623.help-menu-85222.d_2_1_5_0.2291791cYryyIg&scm=20140722.H_121053._.OR_help-T_cn~zh-V_1


[6] Arena客户端

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/install-arena#task-1917487


[7] ACK One注册集群使用Serverless算力

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/use-acs-computing-power-in-ack-one-registered-clusters?spm=a2c4g.11186623.help-menu-85222.d_2_1_7_2_0.59b61d21IDhKX3&scm=20140722.H_2868639._.OR_help-T_cn~zh-V_1


[8] 安装git-lfs

https://docs.github.com/en/repositories/working-with-files/managing-large-files/installing-git-large-file-storage


[9] 安装ossutil

https://help.aliyun.com/zh/oss/developer-reference/install-ossutil?spm=a2c4g.11186623.0.0.384b6557sdxlwN


[10] 静态挂载OSS存储卷

https://help.aliyun.com/zh/cs/user-guide/oss-child-node-1


[11] 指定ACS GPU算力

https://help.aliyun.com/zh/cs/user-guide/pod-gpu-model-and-driver-version


[12] 提交工单

https://smartservice.console.aliyun.com/service/create-ticket


[13] 阿里云ACK One官网

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/?spm=a2c4g.11186623.0.i11


/ END /

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

热门文章

最新文章

推荐镜像

更多