应对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



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

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

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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
运维 Kubernetes Cloud Native
智联招聘 × 阿里云 ACK One:云端弹性算力颠覆传统 IDC 架构,打造春招技术新范式
在 2025 年春季招聘季的激战中,智联招聘凭借阿里云 ACK One 注册集群与弹性 ACS 算力的深度融合,成功突破传统 IDC 机房的算力瓶颈,以云上弹性架构支撑千万级用户的高并发访问,实现招聘服务效率与稳定性的双重跃升。
|
3月前
|
缓存 异构计算 Docker
构建高性能LLM推理服务的完整方案:单GPU处理172个查询/秒、10万并发仅需15美元/小时
本文将通过系统性实验不同的优化技术来构建自定义LLaMA模型服务,目标是高效处理约102,000个并行查询请求,并通过对比分析确定最优解决方案。
226 0
构建高性能LLM推理服务的完整方案:单GPU处理172个查询/秒、10万并发仅需15美元/小时
|
6月前
|
存储 负载均衡 测试技术
ACK Gateway with Inference Extension:优化多机分布式大模型推理服务实践
本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with Inference Extension组件,在Kubernetes环境中为多机分布式部署的LLM推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
|
8月前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
370 12
|
8月前
|
存储 监控 调度
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
应对IDC资源紧缺:ACK Edge如何解决LLM推理服务的弹性挑战
134 5
|
8月前
|
存储 Kubernetes 对象存储
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
部署DeepSeek但GPU不足,ACK One注册集群助力解决IDC GPU资源不足
204 3
|
7月前
|
存储 安全 Serverless
阿里云再次被评IDC MarketScape: Worldwide Edge Delivery Service 重要玩家
阿里云再次被评IDC MarketScape: Worldwide Edge Delivery Service 重要玩家
|
8月前
|
弹性计算 运维 Kubernetes
使用ACK Edge统一管理多地域的ECS资源
使用ACK Edge统一管理多地域的ECS资源
114 0
|
8月前
|
边缘计算 调度 对象存储
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
部署DeepSeek但IDC GPU不足,阿里云ACK Edge虚拟节点来帮忙
151 0
|
4月前
|
Web App开发
如何彻底解决 Edge 浏览器无法安装扩展程序的问题
Edge浏览器扩展安装失败(如提示“程序包无效:CRX_REQUIRED_PROOF_MISSING”或按钮灰色无法启用)时,可尝试以下两种解决方法: **方法一(推荐):** 通过下载并配置 `msedge.adm` 策略文件,在本地组策略编辑器中添加扩展ID白名单,重启浏览器后即可正常使用。 **方法二:** 将扩展文件从 `.crx` 改为 `.zip`,拖拽至扩展管理页面或解压后使用“加载解压缩的扩展”功能安装(但可能被自动删除)。
1073 2

热门文章

最新文章

推荐镜像

更多