应对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搭建和管理企业级网站应用
相关文章
|
14小时前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
29 17
|
3天前
|
存储 人工智能 弹性计算
NVIDIA NIM on ACK:优化生成式AI模型的部署与管理
本文结合NVIDIA NIM和阿里云容器服务,提出了基于ACK的完整服务化管理方案,用于优化生成式AI模型的部署和管理。
|
14小时前
|
人工智能 语音技术 开发者
千问max#百炼AI实训课作业#科幻小说家
根据教程一步步操作确实有趣,尤其是语音识别的准确度很高,带来了很好的开发体验。通过详细步骤引导,开发者可以轻松上手并实现高质量的语音交互功能。
|
14小时前
|
分布式计算 并行计算 调度
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
在HPC场景中,集群任务调度系统是资源管理和作业调度的核心工具。LSF、SGE、Slurm和PBS是主流调度系统。LSF适合大规模企业级集群,提供高可靠性和混合云支持;SGE为经典开源系统,适用于中小规模集群;Slurm成为HPC领域事实标准,支持多架构和容器化;PBS兼具商业和开源版本,擅长拓扑感知调度。选型建议:超大规模科研用Slurm,企业生产环境用LSF/PBS Pro,混合云需求选LSF/PBS Pro,传统小型集群用SGE/Slurm。当前趋势显示Slurm在TOP500系统中占比超60%,而商业系统在金融、制造等领域保持优势。
36 24
|
18天前
|
测试技术
更正以前风险调整中的一个缺陷
以前在我写的书《软件测试技术实战——设计、工具及管理》中提及一个关于风险调整的策略是完全错误的,现在更正如下
69 40
|
2天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
本教程演示如何在ACK中使用vLLM框架快速部署DeepSeek R1模型推理服务。
|
28天前
|
NoSQL 关系型数据库 MySQL
阿里云PolarDB游戏场景最佳实践
阿里云PolarDB游戏场景最佳实践涵盖了数据库体系演进、行业优化、Redis解决方案、性能优化、备份还原及全球部署等内容。PolarDB通过共享存储、物理复制等技术提升读扩展和大容量支持,针对游戏行业的高IO需求进行优化,提供秒级备份与快速恢复能力。同时,PolarDB for Redis实现了一写多读架构,支持百TB级别的高性能存储,具备成本优势。该方案已在米哈游等大型游戏中广泛应用,确保了高并发下的稳定性和数据一致性,满足游戏行业的特殊需求。
74 36
|
5天前
|
人工智能 自然语言处理 搜索推荐
浙大通义联手推出慢思考长文本生成框架OmniThink,让AI写作突破知识边界
随着大模型(LLMs)的发展,AI 写作取得了较大进展。然而,现有的方法大多依赖检索知识增强生成(RAG)和角色扮演等技术,其在信息的深度挖掘方面仍存在不足,较难突破已有知识边界,导致生成的内容缺乏深度和原创性。
|
4天前
|
存储 弹性计算 关系型数据库
【赵渝强老师】达梦数据库的产品系列
达梦数据库是达梦公司推出的新一代自研数据库,融合分布式、弹性计算与云计算优势,支持超大规模并发事务处理和HTAP混合业务。产品体系包括DM8、DMDSC、DM DataWatch、DMMPP和DMRWC,分别适用于通用关系型数据库、共享存储集群、数据守护集群、大规模数据分析及读写分离场景,满足不同需求并保障高可用性和安全性。
66 36
|
18天前
|
设计模式
「全网最细 + 实战源码案例」设计模式——模式扩展(配置工厂)
该设计通过配置文件和反射机制动态选择具体工厂,减少硬编码依赖,提升系统灵活性和扩展性。配置文件解耦、反射创建对象,新增产品族无需修改客户端代码。示例中,`CoffeeFactory`类加载配置文件并使用反射生成咖啡对象,客户端调用时只需指定名称即可获取对应产品实例。
78 40

热门文章

最新文章