利用GPU性能指标进行弹性伸缩

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 随着人工智能大潮的风起云涌, 视频识别,语音识别,图像识别,自然语言翻译,AI画匠等基于GPU的在线预测也在遍地开花。而弹性伸缩对于人工智能服务来说尤为重要,一方面是业务压力峰值时巨大的计算力需求;另一方面当业务空闲时,GPU的空耗成本也是大家很难承受的。

随着人工智能大潮的风起云涌, 视频识别,语音识别,图像识别,自然语言翻译,AI画匠等基于GPU的在线预测也在遍地开花。而弹性伸缩对于人工智能服务来说尤为重要,一方面是业务压力峰值时巨大的计算力需求;另一方面当业务空闲时,GPU的空耗成本也是大家很难承受的。同时在与客户的交流中,我们也发现客户对于GPU资源的弹性伸缩也有很强的定制化需求,希望能自主控制触发条件,并在此基础上和自身业务指标相结合等等。

基于这种现实,我们提供了一套容器服务所扩容触发器结合第三方监控框架influxDB+Grafana的报警伸缩方案。 具体来说,分为4个部分:

  1. 创建容器服务节点扩缩容触发器
  2. 部署基于Grafana和InfluxDB的GPU监控应用
  3. 在Grafana中设置通知渠道,通过Webhook调用缩扩容触发器
  4. 定义触发条件

创建触发器

参考 利用阿里云容器服务实现自定义节点伸缩 创建触发器trigger_url, 请将这个触发器妥善保存。这里触发器的价值在于:

a) 预先指定扩容机器的配置,以及弹性伸缩的上下限;无需用户写复杂API调用扩容

b) 当缩容时,系统自动判断可以回收的机器;用户只需要触发,对于缩容细节无需了解

扩容触发器的URL通常为

https://cs.console.aliyun.com/hook/trigger?triggerUrl=<triggerUrl>=&secret=<secret>&type=scale_out&step=1

缩容触发器的URL通常为

https://cs.console.aliyun.com/hook/trigger?triggerUrl=<triggerUrl>=&secret=<secret>&type=scale_in

部署GPU监控应用

在容器服务里可以支持influxDB, 这里我们的方案是部署 influxDB+Grafana,利用Grafana的报警机制

  1. 登录 容器服务管理控制台

2. 单击左侧导航栏中的 节点

3. 选择您创建的GPU集群, 并且将鼠标挪动到任何一个节点信息附近感叹号图标。

4. 这时,可以看到当前节点的NODE_IP和NODE_ID。在本例子中,您的NODE_IP是 192.168.10.86 , NODE_ID是 1。请记住该信息。 我们在下一步中将使用该信息部署GPU监控应用。

5. 请将下面的应用模板部署到集群中, 单击左侧导航栏中的 应用, 并点击 创建应用 按钮。

version: '2'
services:
  # Define an InfluxDB service
  influxdb:
    container_name: influxdb
    image: influxdb:0.13
    volumes:
      - /var/lib/influxdb
    ports:
      - 8086:8086
      - 8083:8083
    labels:
      aliyun.monitoring.addon.influxdb: "http://${NODE_IP}:8086"
    environment:
      - constraint:aliyun.node_index==${NODE_ID}
  grafana:
    image: grafana/grafana:4.4.3
    container_name: grafana
    ports:
      - 3000:3000
    links:
      - influxdb
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD}
    labels: 
      aliyun.routing.port_3000: grafana
  config:
    image: registry.cn-beijing.aliyuncs.com/cheyang/grafana-config:egs-4.4.3
    links:
      - grafana:grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD}

6. 在部署应用时,需要填写模板参数: NODE_IP, NODE_ID以及后续登录Grafana需要的ADMIN_PASSWORD, 点击确定后,监控应用就开始创建了。

7. 等监控应用创建成功后,在应用列表页面,单击本示例所创建应用的名称 grafana

8. 在服务页面点击 grafana 的 访问端点, 就可以登录 grafana 的登录界面

9. 在Grafana登录界面输入用户名admin和您之前设置的密码(ADMIN_PASSWORD对应的值), 您就可以看到GPU的性能数据,其中包括集群级别的和节点级别的。

设置通知渠道, 这里使用 webhook

  1. 点击 admin-> Alerting-> Notification channels

2. 点击右上角 New Channel,就可以进行通知渠道的配置, 完成后点击保存

  • Name: 通知渠道名称,这里代表扩容,取名scale_out
  • Type: 通知类型,这里代选择 webhook
  • Url: webhook触发的Url, 这里前面获得的弹性扩容Trigger Url
  • Http Method: 这里指触发Trigger Url的Http Action,请选择 POST

3. 这样就可以在通知渠道的列表页面看到 scale_out这个通知渠道

设置报警条件

  1. 点击 admin->Dashboards->Home 回到Dashboard页面,直接点击指标图标题 GPU Usage, 然后选择 Edit

2. 查看 Metrics 标签页中三条sql语句, 其中c 对应的是集群级别的GPU平均使用率, 这也是我们使用的报警条件;当然这个完全可以根据业务需要进行定制

关于$timeFilter GROUP BY time(30s)的含义,请参考 https://github.com/grafana/grafana/issues/7967

3. 跳转到 Alert 标签页, 点击 Create Alert

4. 设置 Alert Config, 这里设置的指标是集群GPU平均使用率大于45%时报警

  • Query: 请设置为C,即集群级别的GPU使用率
  • IS ABOVE: 大于45, 代表使用率大于45%

5. 关联通知渠道, 单击左侧标题栏的 Notifications, 点击 Send to->+, 选择之前创建的 scale_out 通知渠道

6. 保存好后,图表的标题前会有一个灰色的心形标志, 这就代表设置完成,当对应指标达到配置的阈值就会出发报警,具体报警信息会触发通知渠道调用webhook

测试弹性扩容

  1. 对集群中的GPU施压,可以看到Grafana的视图中已经显示报警

2. 同时登陆容器服务管理的集群页面可以看到GPU集群的状态是伸缩中

3. 当扩容完成后,可以看到容器集群的节点数由2个增加到了3个.

4. 在Grafana的视图中也可以看到GPU使用率已经回到正常范围,集群状态恢复正常

总结

本文为您提供了一套可以拼装组合的GPU弹性伸缩方案,其中触发器与伸缩触发条件可以分离,触发条件也可以有更灵活的配置性。您可以根据峰值时间写一个crontab来触发,也可以写与您具体需求相符合的Alert条件, 满足应用运行的需要。阿里云容器服务希望为您提供元语,帮助您因地制宜的定义符合自身场景的弹性缩扩容方案。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5月前
|
弹性计算 人工智能
弹性加速计算实例
本文为您介绍EAIS实例的使用流程,帮助您快速掌握EAIS实例的使用逻辑并应用于自身业务场景。
70 7
|
5月前
|
弹性计算 负载均衡 关系型数据库
弹性伸缩优势
弹性伸缩具有自动化、降成本、高可用、灵活智能以及易审计等优势。
50 6
|
5月前
|
弹性计算
弹性伸缩使用场景
弹性伸缩使用场景
51 5
|
5月前
|
机器学习/深度学习 人工智能 资源调度
GPU计算资源智能调度:过去、现在和未来
随着AI和大数据技术发展,GPU成为关键计算组件。文章探讨了GPU计算资源调度从静态到动态再到智能调度的演变,现以机器学习优化资源利用率。未来趋势包括自适应调度、跨平台、集群级调度和能源效率优化,旨在提升GPU性能,推动人工智能和大数据领域进步。
|
5月前
|
编解码 监控 调度
GPU实例使用--vGPU资源利用率的提升、监控与告警的实现
随着AI计算及云游戏为代表的图形渲染业务的飞速发展,越来越多的企业和个人开始使用GPU实例。同时,由于GPU算力资源成本较高,对于负载相对较小的业务,客户会更倾向于选择使用1/2或者1/4甚至更小的vGPU实例来运行其业务,vGPU技术随之得以迅速发展。
|
监控 虚拟化 云计算
弹性应用介绍
弹性应用介绍
|
弹性计算 监控 负载均衡
使用弹性伸缩实现弹性构架设计|学习笔记
快速学习使用弹性伸缩实现弹性构架设计
使用弹性伸缩实现弹性构架设计|学习笔记
|
存储 弹性计算 分布式计算
弹性-弹性伸缩概述|学习笔记
快速学习弹性-弹性伸缩概述
161 0
弹性-弹性伸缩概述|学习笔记
|
弹性计算 运维 监控
阿里云弹性伸缩介绍|学习笔记
快速学习阿里云弹性伸缩介绍
阿里云弹性伸缩介绍|学习笔记
|
弹性计算 Kubernetes 容器
【kubevirt】VirtualMachineInstanceReplicaSet(vmis)-扩缩容-弹性伸缩
VirtualMachineInstanceReplicaSet(vmis)确保指定数量的 VirtualMachineInstance(vmi) 副本在任何时候都在运行。 我们可以这样理解,vmis就是kubernetes(k8s)里面的控制器(DeployMent,ReplicaSet)管理我们pod的副本数,实现扩缩容、回滚等
420 0
【kubevirt】VirtualMachineInstanceReplicaSet(vmis)-扩缩容-弹性伸缩