基于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的证书
部署Prometheus CustomMetric Adapter
角色授权, 如果使用custom-metric以外的命名空间, 需要修改模板中的namespace字段:
部署完成后,可以通过customMetric的ApiServer调用,验证Prometheus Adapter部署成功
修改controller-manager配置,使用CustomMetric 作为hpa伸缩指标
登录到三个master上,分别执行脚本,修改ApiServer的HPA配置
检测修改结果
伸缩指标
至此,我们已经部署了一个Prometheus 的CustomMetric Server, 我们通过adapter-config这个configMap配置Prometheus 提供暴露给ApiServer 的指标
支持以下GPU指标:
使用GPU指标进行自动伸缩
部署一个deployment
创建一个基于GPU指标伸缩的HPA
查看HPA的指标以及指标值
部署一个fast-style-transfer的压测应用
这个应用会不断向serving发送图片,用于模拟压力测试
压测部署完成后,可以在监控面板的【GPU应用监控】看到指标变化
也能够通过HPA看到指标变化
压测一段时间后可以看到pod扩容
监控界面也可以看到扩容的的pod以及GPU指标:
将压测容器停止
执行以下命令,将压测应用停止:
(也可以在控制台上执行部署伸缩操作)
在HPA上检查dutyCycle指标变化为0
一段时间后检查容器是否成功缩容
end
基于神经网络嵌入的推荐系统:利用深度学习和维基百科构建图书推荐系统
更多精彩