本系列将利用阿里云容器服务的机器学习解决方案,帮助您了解和掌握TensorFlow,MXNet等深度学习库,开启您的深度学习之旅。
- 第一篇: 打造深度学习的云端实验室
- 第二篇: GPU资源的监控和报警,支撑高效深度学习的利器
- 第三篇: 利用TFRecord和HDFS准备TensorFlow训练数据
大家通过第一篇文章对深度学习技术有了感性的认知后,就开始关心如果真正希望用深度学习技术解决问题时,有哪些问题需要注意。这里分享一下深度学习训练过程中一些常见的问题以及对应的解决办法。
多数深度学习的模型训练通常会花费大量的时间,短的有一到两周,长的甚至有几个月的时间。而在这期间,由于GPU状态不正常导致模型训练中断,甚至影响模型训练结果出现较大偏差的现象也屡见不鲜。这对于数据科学家来说,是无法承受之痛。
过去好多数据科学家为了解决这一问题,在训练程序启动之后不断登录到GPU主机上,一次一次的运行nvidia-smi
。这种做法的问题在于无法及时发现问题;同时也浪费了数据科学家大量的时间。
本文将介绍如何利用阿里云容器服务的机器学习解决方案在几分钟内轻松设置GPU资源使用率
,显存使用率
和温度
的报警机制,达到对于一些GPU潜在问题的先知先觉,避免不必要损失的目的。
配置GPU资源监控报警
首先创建GPU容器集群,这里我们就可以得到一个GPU集群,请留意集群名称
登录到云监控页面,根据集群名找到对应的集群,并且点击节点监控
跳到容器集群节点的列表页,选择集群下的任意一个节点,点击监控图表
这里可看到节点级别资源监控,其中包括GPU的使用率,显存使用率和温度。其中GPU的温度是反映GPU卡工作状态的重要指标,当GPU的温度高到一定程度的时候,会导致GPU hang等潜在的严重问题。如果能够提前洞察这一潜在问题,并且报警给相应的数据科学家,从而提前主动做一些checkpoint的保存,就可以提高训练的有效性,避免硬件问题造成的训练时间浪费的问题。这里可以通过点击报警按钮快速配置
当报警设置页面弹出后,首先配置关联资源,将实例列表下拉选择全选
将集群中所有的机器添加到报警监控中。
设置报警规则,这里使用的监控维度是GPU温度,要求5分钟的平均值大于等于70摄氏度时报警;同时设置报警条件,这里是5分钟内连续5次超过阈值就报警。
设置报警通知,请先按照文档创建云监控的报警联系人和联系组GPU监控
,并且添加钉钉机器人
选择GPU监控
组作为通知对象,并且选择默认的通知方式和内容
创建模型训练环境,运行neural-style模型训练
为了测试报警功能,这里我们运行一个可以触发报警条件的neural-style
模型训练应用。具体来说:
登录到容器服务解决方案,在 模型训练
中点击 创建
这样,就可以看到一个表单。首先通过下拉框选择刚才创建的集群名称
,点击训练框架
,这时可以看到一系列深度学习框架的列表,其中包括TensorFlow, Keras和MXNet的不同版本, 还可以指定python2和python3的版本,这里我选择自定义镜像
,并且配置其他选项,点击确定
以下为具体配置:
- 训练框架: 自定义镜像
- 镜像地址: registry.cn-beijing.aliyuncs.com/cheyang/neural-style:latest
- GPU数量: 1
- 数据卷名: 不使用数据卷
- 执行命令: python neural_style.py --iterations 50000 --content /neural-style/examples/1-content.jpg --styles /neural-style/examples/1-style.jpg --output /neural-style/output.jpg
接收报警信息
稍等片刻我们就可以看到在钉钉机器人报警GPU温度过高,并且可以精确指明温度过高的GPU卡号为/dev/nivdia0
,所在机器的实例id为i-wz9b6v2187e05zslh3xv
,以及高温温度为75摄氏度
。
通过报警中的http链接,还可以通过报警历史
看到具体的监控细节:
总结
不论在传统的DevOps还是现在火爆的AIOps中,系统资源的监控和报警都扮演着非常重要的角色,特别是GPU维度的监控对于一次完整并且结果可靠的深度学习训练有着重要的意义,基于容器服务的机器学习解决方案帮助您从不知不觉 到 先知先觉 ,端到端的掌控深度学习模型训练的整个生命周期。
欢迎扫码加入钉钉群一起讨论: