应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战

简介: 基于ACK Edge的混合云LLM弹性推理解决方案,通过动态调整云上和云下的GPU资源使用,来应对推理服务的潮汐流量需求,提高资源利用效率,降低运营成本,并确保服务稳定性和高可用性。

【阅读原文】戳:应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战

背景

 

 

 

春节期间,国产大模型DeepSeek凭借其卓越的性能和创新能力在全球范围内迅速走红,引发了广泛的关注和讨论。然而,随着访问量的急剧攀升,其推理服务器资源很快变得捉襟见肘,最终不得不暂停API充值服务。这一系列事件让业界认识到,大语言模型(LLM)的推理业务正逐渐成为AI产业竞争的又一个至关重要的业务场景。

 

LLM推理业务的需求往往呈现出显著的潮汐流量特性,在某些特定时间段内,需求量会急剧增加,而在其他时间段则相对较低。这种不均衡的流量模式对GPU计算资源的分配和管理提出了严峻的挑战。特别是在线下数据中心(IDC)中部署LLM推理服务时,常常会遇到高峰期计算资源不足,而低峰期资源闲置的问题。这不仅导致了资源的浪费,还会影响服务的高可用性和响应速度,进而影响用户体验和业务连续性。为了解决这一问题,我们基于ACK Edge提供了一套混合云LLM弹性推理解决方案。通过ACK Edge统一管理云上和云下的计算资源,业务低峰期优先使用线下GPU资源进行推理任务,在业务高峰期,当线下资源不足时,ACK Edge能够迅速弹出云上的GPU资源来承接业务流量。通过该方案,企业可以显著降低LLM推理服务的运营成本,根据实际需求动态调整资源的使用,避免了在低峰期不必要的资源开支,同时也确保了在高峰期能够获得足够的计算能力来满足业务需求。这种灵活的资源利用方式,不仅确保了服务的稳定性,还能有效避免资源的闲置和浪费。

 

 

 

 

方案介绍

 

 

整体架构

 

 

整体方案基于阿里云容器服务Edge版(ACK Edge)实现,利用ACK Edge云边一体化管理的能力,统一纳管云上云下的计算资源,实现计算任务的动态分配。此外,我们在集群中采用KServe来配置弹性策略,快速部署一套LLM弹性推理服务。

 

在业务低峰期,该方案通过ACK Edge的自定义资源优先级调度(ResourcePolicy)能力设置资源池的优先级,保证优先使用云下资源池进行推理任务。当业务进入高峰期,借助ACK Edge的强大监控能力,KServe能够实时监测GPU资源的使用情况和业务负载,根据实际需求动态扩容推理服务的副本数。此时线下GPU资源池可能无法满足突增的计算需求。通过预先配置的弹性节点池,系统能够迅速自动地弹出云上GPU资源,快速承接业务的流量峰值,确保服务的连续性和稳定性。

 

 

 

关键技术

 

1. ACK Edge

 

ACK Edge是一款提供标准Kubernetes集群云端托管,支持边缘计算资源、业务快速接入、统一管理、统一运维的云原生应用平台,能够帮助用户快速实现云边一体协同。面向云端,通过ACK Edge,用户可以直接享受到阿里云丰富的云上生态能力,如网络、存储、弹性、安全、监控、日志等。面向边缘,ACK Edge针对边缘场景面对的复杂的环境,提供了边缘节点自治、跨网域容器网络方案、多地域工作负载和服务管理等一系列的支持来解决边缘场景的痛点问题。

 

2. KServe

 

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

 

KServe提供了一系列自定义资源(CRD),用于管理和提供机器学习模型的服务。并针对TensorFlow、XGBoost、scikit-learn、PyTorch和Huggingface Transformer/LLM等模型,提供了易用的高级接口及标准化的数据平面协议。此外,KServe隐藏了自动扩缩(AutoScaling)、网络、健康检查和服务器配置的复杂操作,实现了GPU的自动扩缩、按需扩缩至零(Scale to Zero)功能以及灰度发布能力(Canary Rollouts),简化了AI模型的部署和维护流程。

 

3. 弹性节点池(节点自动伸缩)

 

节点自动伸缩是一种自动调整集群资源的机制,以应对应用Pod的调度需求。主要由cluster-autoscaler组件负责,它定期检查集群状态,自动扩展或缩减节点。当Pod因资源不足无法调度时,节点伸缩机制会监听并判断是否需要扩容。它会模拟调度过程,找到能满足需求的节点池,并自动添加节点。这种自动化伸缩机制能高效管理资源,确保应用稳定运行。

 

4. resourcePolicy(自定义弹性资源优先级调度)

 

自定义弹性资源优先级调度是ACK Edge调度器提供的一项高级弹性调度策略,旨在满足企业对不同类型的资源的精细化管理需求。通过这一策略,用户可以在应用发布或扩容过程中,灵活自定义资源策略(ResourcePolicy),以精准控制应用实例Pod在不同类型节点资源上的调度顺序。

 

具体而言,用户可以根据业务需求和资源特性,预先定义好Pod调度的优先级顺序。例如,可以将高性能计算节点优先分配给对计算资源要求较高的应用实例,而将存储资源丰富的节点优先分配给需要大量存储数据的应用实例。此外,在应用缩容过程中,自定义弹性资源优先级调度策略能够按照发布或扩容时的调度顺序逆序进行缩容。这意味着,最先被调度到高性能计算节点的Pod,将在缩容时最后被释放,而最先被调度到存储资源丰富节点的Pod,将在缩容时最先被释放。

 

 

 

 

快速实践

 

 

 

1. 集群环境准备

 

a. 创建ACK Edge集群[1]

b. 创建弹性节点池[2]

c. 集群中安装KServe[3]

d. 配置Arena客户端[4]

e. 部署监控组件并配置GPU监控指标[5]

 

完成后,集群中的资源可以按照节点池划分为三类:

 

云上管控资源池:部署ACK Edge,KServe,autoscaler等管控组件的云上节点池

IDC资源池:包含用户的线下IDC资源,承载LLM推理服务

云上弹性资源池:根据集群资源使用情况灵活伸缩,在高峰期承载LLM推理服务

 

 

2. AI模型准备

 

您可以使用OSS或NAS准备模型数据,具体操作可以参考部署vLLM推理应用文档[6]中的第一步。

 

3. 定义调度优先级

 

您可以通过创建ResourcePolicy CRD来定义弹性资源优先级调度规则。举一个例子,在这里,我们为labelSelector匹配app: isvc.qwen-predictor的应用定义了一个规则。这个规则明确了,这类应用应该优先调度到 IDC资源池,然后才调度到云上弹性资源池。关于Resource Policy的具体使用说明,可以参考如何自定义Pod调度顺序_容器服务Kubernetes版ACK(ACK)-阿里云帮助中心[7]

 

apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
  name: qwen-chat
  namespace: default
spec:
  selector:
    app: isvc.qwen-predictor # 此处要与后续创建的Pod的label相关联。
  strategy: prefer
  units:
  - resource: ecs
    nodeSelector:
      alibabacloud.com/nodepool-id: npxxxxxx  #IDC资源池
  - resource: elastic
    nodeSelector:
      alibabacloud.com/nodepool-id: npxxxxxy  #弹性资源池

 

4. 部署LLM推理服务

 

通过arena客户端,您可以用一条命令拉起一个基于KServe部署的弹性LLM推理服务。在命令行参数里,这条命令定义了这个推理服务的名称为qwen-chat,使用vllm推理框架,使用GPU卡利用率(DCGM_CUSTOM_PROCESS_SM_UTIL,其他指标可以参考文档[8])这个指标来进行应用的弹性伸缩,当GPU利用率超过50%开始扩容副本,最小副本是1,最大副本是3,每个Pod需要一张gpu卡,4核12G配置,模型存储在提前准备好的llm-model中。

arena serve kserve \
    --name=qwen-chat \
    --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:0.4.1 \
    --scale-metric=DCGM_CUSTOM_PROCESS_SM_UTIL \
    --scale-target=50 \
    --min-replicas=1  \
    --max-replicas=3  \
    --gpus=1 \
    --cpu=4  \
    --memory=12Gi \
    --data="llm-model:/mnt/models/Qwen" \
    "python3 -m vllm.entrypoints.openai.api_server --port 8080 --trust-remote-code --served-model-name qwen --model /mnt/models/Qwen --gpu-memory-utilization 0.95 --quantization gptq --max-model-len=6144"

 

部署完成后,我们就得到了一个弹性伸缩的LLM推理服务。我们可以通过直接请求该服务来验证是否部署成功,请求的地址可以在KServe自动创建的Ingress资源详情中找到。

 

curl -H "Host: qwen-chat-default.example.com" \
-H "Content-Type: application/json"      \
http://xx.xx.xx.xx:80/v1/chat/completions \
-X POST      \
-d '{"model": "qwen", "messages": [{"role": "user", "content": "你好"}], "max_tokens": 512, "temperature": 0.7, "top_p": 0.9, "seed": 10, "stop":["<|endoftext|>", "<|im_end|>", "<|im_start|>"]}'

 

5. 模拟业务高峰请求

 

接下来我们通过压测工具hey来模拟发送大量的请求到这个服务中。

 

hey -z 2m -c 5 \
-m POST -host qwen-chat-default.example.com \
-H "Content-Type: application/json" \
-d '{"model": "qwen", "messages": [{"role": "user", "content": "测试一下"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}' \
http://xx.xx.xx.xx:80/v1/chat/completions

 

首先这些请求会发送到现有的Pod,由于请求太多GPU使用率上升超过阈值,此时触发了我们之前定义的应用HPA规则,开始扩容Pod副本数,可以看到下图中出现了三个副本。

 

 

由于在我们的测试环境中IDC只有一张卡,扩容出的两个Pod找不到可用的资源,处于pending状态。此时pending的Pod触发了弹性节点池节点伸缩,auto-scaler会自动弹出两个云上的GPU节点来承载这两个Pod。

 

 

 

 

 

总结

 

 

 

LLM推理业务的潮汐流量特性导致了计算资源的分配难题。本文中我们基于ACK Edge提供了一种混合云LLM弹性推理解决方案,通过统一管理云上和云下资源,实现在低峰期优先使用线下GPU资源,高峰期自动扩展云上资源。该方案能动态调整资源,显著降低运营成本,确保服务稳定性和资源高效利用。

 

欢迎加入ACK Edge客户交流钉钉群,与我们一同交流。(钉钉群号:21976595

相关链接:

 

[1] ACK Edge集群

https://help.aliyun.com/zh/ack/ack-edge/user-guide/create-an-ack-edge-cluster-1

 

[2] 创建弹性节点池

https://help.aliyun.com/zh/ack/ack-edge/user-guide/auto-scaling-of-nodes?spm=a2c4g.11186623.help-menu-85222.d_1_3_0_0.708775a8NxJbkU&scm=20140722.H_2866667._.OR_help-T_cn~zh-V_1

 

[3] 安装KServe

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/installation-ack-kserve?spm=a2c4g.11186623.help-menu-85222.d_2_4_5_1.605e3186rU3j8a&scm=20140722.H_2784216._.OR_help-T_cn~zh-V_1

 

[4] 配置Arena客户端

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

 

[5] 部署监控组件并配置GPU监控指标

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/enable-auto-scaling-based-on-gpu-metrics?spm=a2c4g.11186623.0.0.5c2963c5zsiWs4#section-hh4-ss2-qbu

 

[6] 部署vLLM推理应用文档

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/deploy-a-vllm-inference-application?spm=a2c4g.11186623.0.0.5c2963c5zsiWs4#502d55516df9v

 

[7] 如何自定义Pod调度顺序_容器服务Kubernetes版ACK(ACK)-阿里云帮助中心

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/configure-priority-based-resource-scheduling?spm=a2c4g.11186623.help-menu-85222.d_2_14_2.329c63c5IlGdoU&scm=20140722.H_398680._.OR_help-T_cn~zh-V_1

 

[8] 文档

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/enable-auto-scaling-based-on-gpu-metrics?spm=a2c4g.11186623.0.0.5c2963c5zsiWs4#064204962axrj



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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
17天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
50 12
|
17天前
|
存储 监控 调度
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
|
17天前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
|
16天前
|
存储 安全 Serverless
阿里云再次被评IDC MarketScape: Worldwide Edge Delivery Service 重要玩家
阿里云再次被评IDC MarketScape: Worldwide Edge Delivery Service 重要玩家
|
17天前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
使用ACK Edge统一管理多地域的ECS资源
|
17天前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
|
1月前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
1682 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
5月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
153 2
|
5月前
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
18天前
|
物联网
LLM破局泛化诊断难题,MSSP刊登北航PHM实验室健康管理大模型交叉研究
北航PHM实验室提出了一种基于大型语言模型(LLM)的轴承故障诊断框架,结合传统诊断技术,解决了跨条件适应性、小样本学习和跨数据集泛化等问题。该框架通过信号特征量化方法提取振动数据的语义信息,并采用LoRA和QLoRA微调预训练模型,显著提升了诊断模型的泛化能力。实验结果显示,在跨数据集训练中,模型准确性提升了约10%,相关成果发表于《Mechanical Systems and Signal Processing》期刊。尽管存在计算资源需求高等挑战,该研究为旋转机械的高效维护提供了新思路。
34 2

热门文章

最新文章