部署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 /

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
1月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
77 0
|
22天前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
133 33
|
23天前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
76 19
|
1月前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
2月前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
98 12
|
2月前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
使用ACK Edge统一管理多地域的ECS资源
|
1月前
|
人工智能 分布式计算 调度
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
|
1月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
4月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
2月前
|
运维 分布式计算 Kubernetes
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。