大道至简-基于ACK的Deepseek满血版分布式推理部署实战

简介: 大道至简-基于ACK的Deepseek满血版分布式推理部署实战

本文是基于阿里云容器服务产品ACK,部署Deepseek大语言模型推理服务系列文章的第二篇。将介绍如何在Kubernetes管理的GPU集群中,快速部署多机分布式Deepseek-R1 671B(“满血版”)推理服务。并集成Dify应用,构建一个简单的Deepseek问答助手。关于如何在ACK部署Deepseek“蒸馏版”模型推理服务,可以参考本系列第一篇文章《基于ACK的DeepSeek蒸馏模型生产环境落地指南》


一. 背景介绍


1. DeepSeek模型


DeepSeek-R1[1]模型是DeepSeek推出的第一代推理模型,旨在通过大规模强化学习提升大语言模型的推理能力。实验结果表明,DeepSeek-R1在数学推理、编程竞赛等多个任务上表现出色,不仅超过了其他闭源模型,而且在某些任务上接近或超越了OpenAI-o1系列模型。DeepSeek-R1在知识类任务和其他广泛的任务类型中也表现出色,包括创意写作、一般问答等。DeepSeek还将推理能力蒸馏到小模型上,通过对已有模型(Qwen、Llama等)微调提升模型推理能力。蒸馏后的14B模型显著超越了现有的开源模型QwQ-32B,而蒸馏后的32B和70B模型均刷新纪录。更多模型信息请参考DeepSeek AI GitHub仓库[2]


2. vLLM


vLLM[3]是一个高效易用的大语言模型推理服务框架,vLLM支持包括通义千问在内的多种常见大语言模型。vLLM通过PagedAttention优化、动态批量推理(continuous batching)、模型量化等优化技术,可以取得较好的大语言模型推理效率。更多关于vLLM框架的信息,请参考vLLM Github代码库[4]


3. Arena


Arena是阿里云容器服务提供并开源,基于Kubernetes的机器学习轻量级解决方案。用户可通过Arena命令行工具管理数据准备、模型开发、模型训练、模型推理等完整ML/AI任务生命周期,提升数据科学家工作效率。同时和阿里云的基础云服务深度集成,支持GPU共享、CPFS、批量任务调度、数据缓存加速等服务,可以运行开源和阿里云优化的深度学习框架,最大化利用阿里云异构设备的性能和成本的效益。新版Arena已经支持分布式vLLM推理架构和Deepseek模型。关于Arena的信息可以参考文档[5]


4. Dify


Dify是一款开源的大语言模型(LLM)应用开发平台。它融合了后端即服务(Backend as Service)和LLMOps[6]的理念,使开发者可以快速搭建生产级的生成式AI应用。关于如何快速部署Dify应用,可以参考ACK文档[7]


二. 前提条件


• 已创建包含GPU的Kubernetes集群。具体操作,请参见创建包含GPU的Kubernetes集群[8]


推荐机型ecs.ebmgn8v.48xlarge (8 * 96GB)。分布式部署需要2台,单机部署需要1台。


• 已安装云原生AI套件

• 已安装Arena客户端,且版本不低于0.14.0。具体操作,请参见安装Arena[9]

• (可选)已安装ack-dify组件。具体操作,请参考文档使用Dify快速构建AI问答助手[10]中的安装ack-dify章节。


三. 多机分布式部署


3.1 模型切分


DeepSeek-R1模型共有671B参数,单张GPU显存只有96GB,无法加载全部模型,因此需要将模型切分。本文采用了TP=8,PP=2的切分方式,模型切分示意图如下。


管道并行(PP=2)将模型切分为两个阶段,每个阶段运行在一个GPU节点上。例如有一个模型M,我们可以将其切分为M1和 M2,M1在第一个GPU上处理输入,完成后将中间结果传递给 M2,M2在第二个GPU上进行后续操作。


张量并行(TP=8)在模型的每个阶段内(例如M1和 M2),将计算操作分配到8个GPU上进行。如在M1阶段,当输入数据传入时,这些数据将被分割为8份,并分别在8个GPU上同时处理。每个GPU处理一小部分数据,计算获取的结果然后合并。



本文选择vllm + ray的方式分布式部署DeepSeek-R1模型,整体部署架构如下所示。两个vLLM Pod部署在两台EGS上,每个vLLM Pod有8张GPU。两个Pod一个作为Ray head节点,一个作为Ray worker节点。




3.2 准备模型数据


1. 从ModelScope下载模型并上传到OSS上,模型下载链接:

https://modelscope.cn/models/deepseek-ai/DeepSeek-R1


2. 为目标集群配置名为llm-model的存储卷PV和存储声明PVC。具体操作,请参见文章《基于ACK的DeepSeek蒸馏模型生产环境落地指南》


3.3 模型部署


3.3.1 安装LeaderWorkerSet


  1. 登录容器服务管理控制台[11],在左侧导航栏选择集群列表。


2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择应用 > Helm。


3. 在Helm页面单击创建,然后在创建页面,将应用名设置为lws,在Chart区域的搜索栏搜索并选中lws,完成后单击下一步,在弹出的对话框中单击是,确认采用lws-system为Chart的默认的命名空间。


4. 在参数配置页面,确认Chart版本和参数信息后,单击确定。


3.3.2 模型部署


vLLM分布式部署架构图


执行以下命令部署服务。



arena serve distributed \   
        --name=vllm-dist \     
        --version=v1 \     
        --restful-port=8080 \    
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:v0.7.2 \ 
        --readiness-probe-action="tcpSocket" \     
        --readiness-probe-action-option="port: 8080" \   
        --readiness-probe-option="initialDelaySeconds: 30" \   
        --readiness-probe-option="periodSeconds: 30" \     
        --share-memory=30Gi \     
        --data=llm-model:/mnt/models \     
        --leader-num=1 \     
        --leader-gpus=8 \      
        --leader-command="/vllm-workspace/ray_init.sh leader --ray_cluster_size=\$(LWS_GROUP_SIZE); vllm serve /mnt/models/DeepSeek-R1 --port 8080 --trust-remote-code --served-model-name deepseek-r1 --enable-prefix-caching --max-model-len 8192 --gpu-memory-utilization 0.98 --tensor-parallel-size 8 --pipeline-parallel-size 2 --enable-chunked-prefill" \   
        --worker-num=1 \  
        --worker-gpus=8 \  
        --worker-command="/vllm-workspace/ray_init.sh worker --ray_address=\$(LWS_LEADER_ADDRESS)"


参数解释如下表所示:


参数

是否必选

说明

--name

提交的推理服务名称,全局唯一。

--image

推理服务的镜像地址。

--restful-port

服务端口。

--version

服务版本,默认为当前日期。

--readiness-probe-*

为服务配置就绪检测,仅当服务就绪后才可对外提供服务。

--share-memory

设置共享内存。

--leader-num

leader pod数量,当前只支持设置为1。

--leader-gpus

每个leader pod使用的GPU数量。

--leader-command

leader pod的启动命令。

--data

服务的模型地址,格式为<pvc-name>:<pod-path>。如上文命令llm-model:/mnt/models,即将llm-model PVC挂载到容器/mnt/models目录下。


预期输出:


configmap/vllm-dist-v1-cm create
dservice/vllm-dist-v1 created
leaderworkerset.leaderworkerset.x-k8s.io/vllm-dist-v1-distributed-serving created
INFO[0002] The Job vllm-dist has been submitted successfully
INFO[0002] You can run `arena serve get vllm-dist --type distributed-serving -n default` to check the job status


3.3.3 验证推理服务


1. 执行下列命令,查看分布式推理服务的部署情况。


arena serve get vllm-dist


预期输出


Name:       vllm-dist
Namespace:  default
Type:       Distributed
Version:    v1
Desired:    1
Available:  1
Age:        3m
Address:    192.168.138.65
Port:       RESTFUL:8080
GPU:        16

Instances:  NAME                                  STATUS   AGE  READY  RESTARTS  GPU  NODE 
----                                  ------   ---  -----  --------  ---  ---- 
vllm-dist-v1-distributed-serving-0    Running  3m   1/1    0         8    cn-beijing.10.x.x.x  
vllm-dist-v1-distributed-serving-0-1  Running  3m   1/1    0         8    cn-beijing.10.x.x.x


2. 使用kubectl port-forward在推理服务与本地环境间建立端口转发。


kubectl port-forward svc/vllm-dist-v1 8080:8080


3. 发送模型推理请求


curl http://localhost:8080/v1/completions -H "Content-Type: application/json" -d '{   
     "model": "deepseek-r1",  
     "prompt": "San Francisco is a",  
     "max_tokens": 10,  
     "temperature": 0.6
}'


预期输出:


{"id":"cmpl-15977abb0adc44d9aa03628abe9fcc81","object":"text_completion","created":1739346042,"model":"ds","choices":[{"index":0,"text":" city that needs no introduction. Known for its iconic","logprobs":null,"finish_reason":"length","stop_reason":null,"prompt_logprobs":null}],"usage":{"prompt_tokens":5,"total_tokens":15,"completion_tokens":10,"prompt_tokens_details":null}}


四. 使用Dify

构建DeepSeek问答助手


4.1. 配置DeepSeek模型


1. 登陆Dify应用。登陆后点击头像,选择设置。



2. 点击左侧模型供应商,在右侧找到OpenAI-API-compatible, 点击添加模型。


注意:不要在右侧直接选择DeepSeek,那是接入DeepSeek API的。



模型参数配置如下所示。模型名称为deepseek-r1不可修改。API Key可以随意设置,API endpoint URL为第二步部署的本地DeepSeek服务名称,不可修改。




4.2. 创建聊天助手应用


点击创建空白应用,选择聊天助手,点击创建。




4.3. 验证AI问答助手


现在您可以在页面右侧与DeepSeek进行对话。



总结


本文重点介绍了如何在阿里云容器服务ACK中部署DeepSeek-R1满血版推理模型。DeepSeek-R1模型参数量为671B,单张GPU卡无法加载,因此需要对模型进行切分。本文采用了模型并行(PP=2)与数据并行(TP=8)结合的切分方式,使用arena工具在2台机器上分布式部署DeepSeek-R1满血版模型,当context为8192 tokens时,并发为132.29x。最后我们介绍了如何在Dify应用中接入本地的DeepSeek-R1模型,构建私有DeepSeek问答助手。下篇文章我们将重点介绍如何提升DeepSeek模型推理效率,敬请期待。


《DeepSeek on 阿里云容器服务ACK系列文章》


1. 基于ACK的DeepSeek蒸馏模型生产环境落地指南

https://mp.weixin.qq.com/s/SSGD5G7KL8iYLy2jxh9FOg


2. 使用ACS GPU算力构建DeepSeek蒸馏模型推理服务

https://help.aliyun.com/zh/cs/user-guide/use-acs-gpu-computing-power-to-build-deepseek-distillation-model-reasoning-service


相关链接:


[1] DeepSeek-R1

https://github.com/deepseek-ai/DeepSeek-R1


[2] DeepSeek AI GitHub仓库

https://github.com/deepseek-ai


[3] vLLM

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


[4] vLLM Github代码库

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


[5] 文档

https://github.com/kubeflow/arena


[6] LLMOps

https://docs.dify.ai/zh-hans/learn-more/extended-reading/what-is-llmops


[7] ACK文档

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/use-cases/building-customized-ai-question-and-answer-assistant-based-on-dify?spm=5176.21213303.J_v8LsmxMG6alneH-O7TCPa.9.42c72f3dS132An&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@2842906._.ID_help@@%E6%96%87%E6%A1%A3@@2842906-RL_dify-LOC_2024SPHelpResult-OR_ser-PAR1_213e368817394392451973907e9a10-V_4-RE_new4-P0_2-P1_0


[8] 创建包含GPU的Kubernetes集群

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/create-an-ack-managed-cluster-with-gpu-accelerated-nodes?spm=a2c4g.171073.0.0.4c78f95a00Mb5P


[9] 安装Arena

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


[10] 使用Dify快速构建AI问答助手

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/use-cases/building-customized-ai-question-and-answer-assistant-based-on-dify?spm=5176.21213303.J_v8LsmxMG6alneH-O7TCPa.9.42c72f3dwOToE5&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@2842906._.ID_help@@%E6%96%87%E6%A1%A3@@2842906-RL_dify-LOC_2024SPHelpResult-OR_ser-PAR1_2150457c17394150119097968e6777-V_4-RE_new4-P0_2-P1_0#6ab35f025cpzv


[11] 容器服务管理控制台

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


/ END /


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
4
5
1
149
分享
相关文章
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
31 0
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
47 33
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
46 19
ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
本文由仁励家网络科技(杭州)有限公司架构师赵云兴、葛志刚撰写,探讨了公司在优化HR SaaS解决方案时遇到的系统资源浪费和运维成本高的问题。通过引入Koupleless框架,成功将模块体积从500M缩减至5M以下,部署时间从6分钟缩短至3分钟,并大幅节省服务器资源。文章详细介绍了Koupleless的部署方案及优化措施,感谢Koupleless团队的专业支持,使人力家实现了多应用合并部署,降低了运维成本。
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
ACK Gateway with AI Extension:大模型推理的模型灰度实践
本文介绍了如何使用 ACK Gateway with AI Extension 组件在云原生环境中实现大语言模型(LLM)推理服务的灰度发布和流量分发。该组件专为 LLM 推理场景设计,支持四层/七层流量路由,并提供基于模型服务器负载感知的智能负载均衡能力。通过自定义资源(CRD),如 InferencePool 和 InferenceModel,可以灵活配置推理服务的流量策略,包括模型灰度发布和流量镜像。
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
通过引入Koupleless框架,解决了多应用部署中资源浪费和运维成本高的问题,实现了模块瘦身、快速部署及流量控制优化,大幅降低了服务器资源占用和发布耗时,提升了系统稳定性和运维效率。最终,人力家成功实现了多应用的轻量集中部署,显著减少了运维成本。
 Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
3FS是DeepSeek开源的高性能分布式文件系统,专为AI训练和推理任务设计,提供高达6.6 TiB/s的读取吞吐量,支持强一致性保障和通用文件接口,优化AI工作负载。
458 2
DeepSeek开源周第五弹之一!3FS:支撑V3/R1模型数据访问的高性能分布式文件系统
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
66 12

热门文章

最新文章