阿里云容器服务Kubernetes 基于GPU指标自动伸缩

基于GPU的指标扩缩容


在深度学习训练中,训练完成的模型,通过Serving服务提供模型服务。本文介绍如何构建弹性自动伸缩的Serving服务。


Kubernetes 支持HPA模块进行容器伸缩,默认支持CPU和内存等指标。原生的HPA基于Heapster,不支持GPU指标的伸缩,但是支持通过CustomMetrics的方式进行HPA指标的扩展。我们可以通过部署一个基于Prometheus Adapter 作为CustomMetricServer,它能将Prometheus指标注册的APIServer接口,提供HPA调用。 通过配置,HPA将CustomMetric作为扩缩容指标, 可以进行GPU指标的弹性伸缩。


前提


您需要创建一个容器服务Kubernets集群,并完成GPU监控部分的部署 阿里云容器Kubernetes监控- GPU监控, 完成部署Promethues用于监控GPU使用指标,我们将通过Prometheus 里的监控数据作为参考指标进行弹性伸缩。


注意


当HPA配置自定义监控指标进行伸缩指标后, 将无法使用原生HPA基于Heapster的CPU和Memory的伸缩。


部署


登录master上执行脚本,生成Prometheus Adapter的证书


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


部署Prometheus CustomMetric Adapter


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


角色授权, 如果使用custom-metric以外的命名空间, 需要修改模板中的namespace字段:


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


部署完成后,可以通过customMetric的ApiServer调用,验证Prometheus Adapter部署成功


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


修改controller-manager配置,使用CustomMetric 作为hpa伸缩指标


登录到三个master上,分别执行脚本,修改ApiServer的HPA配置


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


检测修改结果


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


伸缩指标


至此,我们已经部署了一个Prometheus 的CustomMetric Server, 我们通过adapter-config这个configMap配置Prometheus 提供暴露给ApiServer 的指标


支持以下GPU指标:


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


使用GPU指标进行自动伸缩


部署一个deployment


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


创建一个基于GPU指标伸缩的HPA


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


查看HPA的指标以及指标值


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


部署一个fast-style-transfer的压测应用


这个应用会不断向serving发送图片,用于模拟压力测试


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


压测部署完成后,可以在监控面板的【GPU应用监控】看到指标变化


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


也能够通过HPA看到指标变化


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


压测一段时间后可以看到pod扩容


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


监控界面也可以看到扩容的的pod以及GPU指标:


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


将压测容器停止


执行以下命令,将压测应用停止:


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


(也可以在控制台上执行部署伸缩操作)


在HPA上检查dutyCycle指标变化为0


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


一段时间后检查容器是否成功缩容


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


阿里云容器服务Kubernetes 基于GPU指标自动伸缩


end

Flink在美团的实践与应用

基于神经网络嵌入的推荐系统:利用深度学习和*构建图书推荐系统

使用keras开启自己的机器学习旅程吧!

不懂图像分类?这四种卷积神经网络模型了解一下!

更多精彩