企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 本教程演示如何在ACK中使用vLLM框架快速部署DeepSeek R1模型推理服务。

【阅读原文】戳:企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南

DeepSeek凭借其出色的推理表现在春节期间火爆全网,本文重点介绍如何在阿里云容器服务ACK中使用KServe部署生产可用的DeepSeek模型推理服务。

 

 

 

背景介绍

 

 

1. DeepSeek R1模型

 

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

 

2. KServe

 

KServe是一个开源的云原生模型服务平台,旨在简化在Kubernetes上部署和运行机器学习模型的过程,支持多种机器学习框架、具备弹性扩容能力。KServe通过定义简单的YAML文件,提供声明式的API来部署模型,使得配置和管理模型服务变得更加容易。关于KServe开源项目的更多信息,请参见KServe[3]

 

3. Arena

 

Arena是基于Kubernetes的机器学习轻量级解决方案,支持数据准备、模型开发、模型训练、模型预测的完整生命周期,提升数据科学家工作效率。同时和阿里云的基础云服务深度集成,支持GPU共享、CPFS等服务,可以运行阿里云优化的深度学习框架,最大化利用阿里云异构设备的性能和成本的效益。关于Arena的信息可以参考文档[4]

 

 

 

 

前提条件

 

 

 

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

 

GPU机型选择A10即可,推荐机型ecs.gn7i-c8g1.2xlarge。

 

已安装ack-kserve️组件。具体操作,请参见安装ack-kserve️[6]

 

已安装Arena客户端。具体操作,请参见安装Arena[7]

 

 

 

 

模型部署

 

 

 

步骤一:准备DeepSeek-R1-Distill-Qwen-7B模型文件

 

 

1. 执行以下命令从ModelScope下载DeepSeek-R1-Distill-Qwen-7B模型。

 

# 确认是否已安装git-lfs插件
# 如未安装可执行yum install git-lfs 或 apt install git-lfs安装
git lfs install
# clone DeepSeek-R1-Distill-Qwen-7B项目
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

 

# 创建目录
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. 为目标集群配置名为llm-model的存储卷PV和存储声明PVC。具体操作,请参见使用OSS静态存储卷[8]

 

以下为示例PV的基本配置信息:

 

 

以下为示例PVC的基本配置信息:

 

 

 

 

步骤二:部署推理服务

 

 

1. 执行下列命令,启动名称为deepseek的推理服务。

 

arena serve kserve \
    --name=deepseek \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:v0.6.6 \
    --gpus=1 \
    --cpu=4 \
    --memory=12Gi \
    --data=llm-model:/model/DeepSeek-R1-Distill-Qwen-7B \
    "vllm serve /model/DeepSeek-R1-Distill-Qwen-7B --port 8080 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager"

 

参数解释如下表所示:

 

 

预期输出:

 

inferenceservice.serving.kserve.io/deepseek created
INFO[0003] The Job deepseek has been submitted successfully
INFO[0003] You can run `arena serve get deepseek --type kserve -n default` to check the job status

 

 

 

步骤三:验证推理服务

 

 

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

 

arena serve get deepseek

 

预期输出:

 

Name:       deepseek
Namespace:  default
Type:       KServe
Version:    1
Desired:    1
Available:  1
Age:        3m
Address:    http://deepseek-default.example.com
Port:       :80
GPU:        1
Instances:
  NAME                                 STATUS   AGE  READY  RESTARTS  GPU  NODE
  ----                                 ------   ---  -----  --------  ---  ----
  deepseek-predictor-7cd4d568fd-fznfg  Running  3m   1/1    0         1    cn-beijing.172.16.1.77

 

输出结果表明,KServe推理服务部署成功,模型访问地址为http://deepseek-default.example.com

 

2. 执行以下命令,使用获取到的Nginx Ingress网关地址访问推理服务。

 

# 获取Nginx ingress的IP地址。
NGINX_INGRESS_IP=$(kubectl -n kube-system get svc nginx-ingress-lb -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
# 获取Inference Service的Hostname。
SERVICE_HOSTNAME=$(kubectl get inferenceservice deepseek -o jsonpath='{.status.url}' | cut -d "/" -f 3)
# 发送请求访问推理服务。
curl -H "Host: $SERVICE_HOSTNAME" -H "Content-Type: application/json" http://$NGINX_INGRESS_IP:80/v1/chat/completions -d '{"model": "deepseek-r1", "messages": [{"role": "user", "content": "Say this is a test!"}], "max_tokens": 512, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

 

预期输出:

 

{"id":"chatcmpl-0fe3044126252c994d470e84807d4a0a","object":"chat.completion","created":1738828016,"model":"deepseek-r1","choices":[{"index":0,"message":{"role":"assistant","content":"<think>\n\n</think>\n\nIt seems like you're testing or sharing some information. How can I assist you further? If you have any questions or need help with something, feel free to ask!","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":9,"total_tokens":48,"completion_tokens":39,"prompt_tokens_details":null},"prompt_logprobs":null}

 

 

 

 

可观测

 

 

 

在生产环境中LLM推理服务的可观测性是至关重要的,可以有效提前发现和定位故障。vLLM框架提供了许多LLM推理指标(具体指标可查询Metrics文档[9]),KServe也提供了一些指标来帮助您监控模型服务的性能和健康状况。我们在arena工具中集成了这些能力,您只需要在提交应用时增加--enable-prometheus=true参数即可。

 

arena serve kserve \
    --name=deepseek \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:v0.6.6 \
    --gpus=1 \
    --cpu=4 \
    --memory=12Gi \
    --enable-prometheus=true \
    --data=llm-model:/model/DeepSeek-R1-Distill-Qwen-7B \
    "vllm serve /model/DeepSeek-R1-Distill-Qwen-7B --port 8080 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager"

 

配置后Dashboard大盘如下图所示:

 

 

 

 

 

弹性扩缩容

 

 

 

在部署与管理KServe模型服务过程中,需应对模型推理服务面临的高度动态负载波动。KServe通过集成Kubernetes原生的HPA(Horizontal Pod Autoscaler)技术及扩缩容控制器,实现了根据CPU利用率、内存占用情况、GPU利用率以及自定义性能指标,自动灵活地调整模型服务Pod的规模,以确保服务效能与稳定性。

 

arena serve kserve \
    --name=deepseek \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:v0.6.6 \
    --gpus=1 \
    --cpu=4 \
    --memory=12Gi \
    --scale-metric=DCGM_CUSTOM_PROCESS_SM_UTIL \
    --scale-target=80 \
    --min-replicas=1 \
    --max-replicas=2 \
     --data=llm-model:/model/DeepSeek-R1-Distill-Qwen-7B \
    "vllm serve /model/DeepSeek-R1-Distill-Qwen-7B --port 8080 --trust-remote-code --served-model-name deepseek-r1 --max-model-len 32768 --gpu-memory-utilization 0.95 --enforce-eager"

 

以上示例演示如何基于Pod的GPU利用率配置自定义指标的扩缩容。--scale-metric指定扩缩容指标为DCGM_CUSTOM_PROCESS_SM_UTIL, 通过--scale-target指定阈值,当GPU利用超出80%时将会触发扩容。--min-replicas及--max-replicas设定了最小和最大副本数量。您也可以根据业务需求配置其他指标,详情可参考基于KServe为服务配置弹性扩缩容策略[10]

 

 

 

 

模型加速

 

 

随着技术的发展,AI应用的模型数据越来越大,但是通过存储服务(如OSS、NAS等)拉取这些大文件时可能会出现长时间的延迟和冷启动问题。您可以利用Fluid显著提升模型加载速度,从而优化推理服务的性能,特别是对于基于KServe的推理服务而言。实验结果表明,在A10卡上加载DeepSeek-R1-Distill-Qwen-7B模型,与OSS内网拉取相比,使用Fluid后LLM推理就绪时间减少了50.9%。

 

 

 

 

灰度发布

 

 

在生产环境中应用发布更新是最为常见的操作,为了保证业务平稳,降低变更风险,灰度发布必不可少。ACK支持多种灰度发布策略,如根据流量百分比灰度,根据请求Header灰度等。详情可参考推理服务的灰度发布文档[11]

 

 

 

 

GPU共享推理

 

 

DeepSeek-R1-Distill-Qwen-7B模型仅需14GB显存,如果您使用更高规格的GPU机型如A100等,可以考虑使用GPU共享推理技术,提升GPU利用率。GPU共享技术可以将一个GPU进行切分,多个推理服务共享一个GPU,以提升GPU利用率。详情可参考部署GPU共享推理服务文档[12]

 

 

 

 

总结

 

 

DeepSeek-R1在数学推理、编程竞赛等多个任务上表现出色,不仅超过了其他闭源模型,而且在某些任务上接近或超越了OpenAI-o1系列模型。一经发布,尝试者众。本文介绍了如何在ACK上使用KServe部署生产可用的DeepSeek推理服务,包括模型部署、可观测、灰度发布、弹性扩缩容等基本能力,同时ACK还提供了如Fluid模型加速、GPU共享推理的高阶能力,欢迎大家试用。

 

 

相关链接:

 

[1] DeepSeek-R1

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

 

[2] DeepSeek AI GitHub仓库

https://github.com/deepseek-ai

 

[3] KServe

https://xiumi.us/studio/v5#/paper/for/523334546/cube/0

 

[4] 文档

https://github.com/kubeflow/arena

 

[5] 创建包含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

 

[6] 安装ack-kserve️

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/installation-ack-kserve

 

[7] 安装Arena

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

 

[8] 使用OSS静态存储卷

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/mount-statically-provisioned-oss-volumes

 

[9] Metrics文档

https://docs.vllm.ai/en/stable/serving/metrics.html

 

[10] 基于KServe为服务配置弹性扩缩容策略

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/configure-an-elastic-scaling-policy-for-a-service?spm=a2c4g.11186623.help-menu-85222.d_2_4_5_4.5ae11b97C1VtV7&scm=20140722.H_2785369._.OR_help-T_cn~zh-V_1

 

[11] 推理服务的灰度发布文档

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/implementation-of-gray-scale-publishing-of-inference-service?spm=a2c4g.11186623.help-menu-85222.d_2_4_5_3.d97e63c5xf0Mnc&scm=20140722.H_2785368._.OR_help-T_cn~zh-V_1

 

[12] 部署GPU共享推理服务文档

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/deploy-gpu-shared-inference-service?spm=a2c4g.11186623.help-menu-85222.d_2_4_5_7.735b33b7jgsWGW&scm=20140722.H_2833049._.OR_help-T_cn~zh-V_1



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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
19
18
1
238
分享
相关文章
|
8天前
|
在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
通过以上步骤,您可以成功在Docker上部署Ollama和AnythingLLM,实现本地LLM Agent的功能。在部署过程中,确保环境和配置正确,以避免不必要的问题。希望本文能够帮助您顺利完成部署,并在本地环境中高效地使用LLM模型。
279 8
X-R1:3090也能训7B模型!开源框架X-R1把训练成本打下来了:10美元训出企业级LLM
X-R1 是一个基于强化学习的低成本训练框架,能够加速大规模语言模型的后训练开发。仅需4块3090或4090 GPU,1小时内完成训练,成本低于10美元。
133 5
X-R1:3090也能训7B模型!开源框架X-R1把训练成本打下来了:10美元训出企业级LLM
关于LLM-as-a-judge范式,终于有综述讲明白了
《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-judge》探讨了大型语言模型(LLM)在评估和判断任务中的应用。传统方法存在不足,而LLM凭借强大的语言理解和生成能力,展现了广阔的应用前景。论文从输入输出角度定义LLM-as-a-judge,提出三维度分类体系,并汇编评估基准,指出关键挑战如偏见、可解释性和对抗性攻击,展望未来改进方向,强调其潜力与价值。论文链接:https://arxiv.org/abs/2411.16594
47 1
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
62 12
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
本文将介绍如何为大型语言模型(LLM)添加自定义token并进行训练,使模型能够有效地利用这些新增token。以Llama 3.2模型为基础,实现了类似DeepSeek R1中think和answer标记功能的扩展方法,通过监督微调使模型学习使用这些标记进行推理过程与答案输出的区分
42 0
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
Crawl4LLM:你的模型还在吃垃圾数据?CMU博士开源AI爬虫,自动筛选高价值网页,数据抓取质量飙升300%
Crawl4LLM 是清华大学和卡内基梅隆大学联合开发的智能爬虫系统,通过网页价值评估和优先级队列技术,显著提升大语言模型预训练数据采集效率。
144 4
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
你想过在本地快速部署企业级Kubernetes么?
本文讲的是你想过在本地快速部署企业级Kubernetes么?【IT168 评论】VMworld大会的第二天,最劲爆的内容莫过于VMware宣布与Pivotal和谷歌合作,共同推出一项新服务了,这将让企业客户能够借助vSphere,在本地迅速部署企业级Kubernetes。
1501 0

热门文章

最新文章