Resnet训练性能优化

举报
Alick 发表于 2019/12/28 09:19:31 2019/12/28
【摘要】 1 训练可以从三个维度展开优化:1. 深度神经网络结构优化2. 分布式训练框架优化 3. 深度学习训练算法优化。1.1 深度神经网络结构优化网络结构是基于经典的ResNet50结构,在训练中使用128*128的低分辨率输入图片来提升训练的速度,对训练精度产生了一定影响,原始模型无法在维持训练epoch数的情况下将模型训练到指定的top5 93%精度。通过对ResNet50...

1      训练

可以从三个维度展开优化:1. 深度神经网络结构优化2. 分布式训练框架优化 3. 深度学习训练算法优化。

1.1      深度神经网络结构优化

网络结构是基于经典的ResNet50结构,在训练中使用128*128的低分辨率输入图片来提升训练的速度,对训练精度产生了一定影响,原始模型无法在维持训练epoch数的情况下将模型训练到指定的top5 93%精度。通过ResNet50中的BottleNeck卷积结构进行了优化,针对低分辨率的输入图片优化了其中的降采样方法,使得模型前向计算中的降采样信息损失更小,从而在低分辨率训练模式下也能够稳定达到目标精度。

1.2      分布式训练框架优化

深度学习训练过程涉及大规模的参数的网络间传递。Tensorflow使用中心化的网络参数服务器(Parameter Server)来承担梯度的收集、平均和分发工作,对server节点的访问会成为瓶颈,带宽利用率低。为此使用double binary tree模式的AllReduce算法来进行梯度聚合来优化带宽。

同时对传输的梯度进行融合,对小于阈值大小的梯度多次传输合并为一次,提升了带宽利用率;另外在通信底层采用NVIDIANvLinkP2PGDR技术来提升节点内和节点间通信带宽,降低通信时延。

1.3      深度学习训练算法优化

大规模分布式训练过程中使用的全局batch size会很大,比如32768,这样的超大batch size提升了训练的并行度,但也导致了收敛精度降低的问题。为此可以使用由You et al.在《Large Batch Training of Convolutional Networks》中提出的层次自适应速率缩放(LARS)算法,并在此基础上需要针对Batch NormalizationBias不做正则化的情况对LARS算法进行了对应的优化。

在全局学习率调度方面,可以使用带warmuplinear cosine decay scheduler,训练优化器则可以采用与学习率相适应的动态momentum算法。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。