阿里NIPS 2017论文解读:如何降低TensorFlow训练的显存消耗?-阿里云开发者社区

开发者社区> 技术小能手> 正文

阿里NIPS 2017论文解读:如何降低TensorFlow训练的显存消耗?

简介: 被誉为国际顶级的机器学习和神经网络学术会议NIPS 2017于12月4日-9日在美国加州长滩市举行。在本届会议上,阿里巴巴除有两篇论文入选Workshop并进行Oral和Poster形式报告外,三大技术事业部连续3天在阿里展区举行多场技术研讨会,向5000余名参会人员介绍阿里在机器学习、人工智能领域的技术研究、产品与落地应用。
+关注继续查看

3ffd1e9f30741c3a4bf25851a3e8ba39c964209d

NIPS 2017阿里巴巴展台-阿里巴巴iDST院长金榕在做演讲

这篇介绍深度模型训练GPU显存优化的论文《TrainingDeeper Models by GPU Memory Optimization on TensorFlow》在NIPS 2017 ML Systems Workshop 中由作者做口头报告。这篇论文聚焦特征图,提出两种方法减少深度神经网络训练过程中的显存消耗,并且把这些方法的实现无缝整合到TensorFlow中,克服了TensorFlow训练大模型时无法有效优化显存的缺点。

近期深度学习在不同应用中发挥的作用越来越重要。训练深度学习模型的必要逻辑包括适合GPU的并行线性代数计算。但是,由于物理限制,GPU的设备内存(即显存)通常比主机内存小。最新的高端NVIDIA GPU P100具备12–16 GB的显存,而一个CPU服务器有128GB的主机内存。然而,深度学习模型的趋势是「更深更宽」的架构。例如,ResNet 包含多达1001个神经元层,神经网络机器翻译(NMT)模型包含8个使用注意力机制的层 ,且NMT模型中的大部分的单个层是按顺序水平循环展开的,难以避免地带来大量显存消耗。

简言之,有限的GPU显存与不断增长的模型复杂度之间的差距使显存优化成为必    然。下面将介绍深度学习训练流程中GPU显存使用的主要组成。

特征图(feature map)。对于深度学习模型,特征图是一个层在前向传输中生成的中间输出结果,且在后向传输的梯度计算中作为输入。图1是ResNet-50在ImageNet数据集上进行一次小批量训练迭代的GPU显存占用曲线。随着特征图的不断累积,曲线到达最高点。特征图的大小通常由批尺寸(batchsize)和模型架构决定(如CNN架构的卷积步幅大小、输出通道数量;RNN架构的门数量、时间步长和隐层大小)。不再需要作为输入的特征图占用的显存将会被释放,导致图1中显存占用曲线的下降。对于复杂的模型训练,用户必须通过调整批尺寸,甚至重新设计模型架构来避免「内存不足」的问题。尽管在分布式训练的情况下 ,训练任务可以分配到多个设备上来缓解内存不足的问题,但是这也导致了额外的通信开销。设备的带宽限制也可能显著拖慢训练过程。

f2df60c12f2089849c318f6737badb639b7c6e47

图1:ResNet-50的显存占用在一个训练步中的变化曲线。横轴代表分配/释放次数,纵轴代表当前显存占用的总比特数。

权重。与特征图相比,权重占用内存相对较少 。在这篇论文中,权重作为GPU内存中的持久内存,只有整个训练任务完成后才可以被释放。

临时显存(Temporary memory)。一些算法(如基于Fast-Fourier-Transform(FFT)的卷积算法)需要大量的额外显存。这些显存占用是暂时的,在计算结束后立即得到释放。临时显存的大小可以通过在GPU软件库(如cuDNN)中列举每个算法来自动调整,因此可以被忽略。

很明显,特征图是GPU显存使用的主要组成部分。论文作者聚焦特征图,提出了两种方法来解决GPU显存限制问题,即通用的「swap-out/in」方法以及适用于Seq2Seq模型的内存高效注意力层。所有这些优化都基于TensorFlow 。TensorFlow具备内置内存分配器,实现了「best-fit with coalescing」的算法。该分配器旨在通过coalescing支持碎片整理(de-fragmentation)。但是,它的内置内存管理策略未考虑大模型训练时的显存优化。

该论文的贡献如下。聚焦于特征图,提出两种方法减少深度神经网络训练过程中的GPU显存消耗。基于数据流图的「swap-out/in」方法使用主机内存作为更大的内存池,从而放宽GPU显存上限的限制;而内存高效的注意力层可用来优化显存消耗量大的Seq2Seq模型。这些方法的实现被无缝整合到TensorFlow中,且可透明地应用于所有模型,无需对现有模型架构的描述作任何改变。

论文: Training Deeper Models by GPUMemory Optimization on TensorFlow

d0b0fd5870b90c18fd75381061e71ee7e8a346f5

作者:孟晨、孙敏敏、杨军、邱明辉、顾扬

 

论文地址:

https://github.com/LearningSys/nips17/blob/9ee207c054cf109bc4a068b1064b644d75d0381f/assets/papers/paper_18.pdf

摘要:随着大数据时代的到来、GPGPU的获取成本降低以及神经网络建模技术的进步,在GPU上训练深度学习模型变得越来越流行。然而,由于深度学习模型的内在复杂性和现代GPU的显存资源限制,训练深度模型仍然是一个困难的任务,尤其是当模型大小对于单个GPU而言太大的时候。在这篇论文中,我们提出了一种基于通用数据流图的GPU显存优化策略,即「swap-out/in」,将主机内存当做一个更大的内存池来克服GPU的内存限制。同时,为了优化内存消耗大的Seq2Seq模型,我们还提出了专用的优化策略。我们将这些策略无缝整合到TensorFlow中,且优化不会造成准确率的损失。我们在大量的实验中观察到了显著的显存使用降低。给定一个固定的模型和系统配置,最大训练批尺寸可以增加2到30倍。

6d22182bac6eb84b45cf9228d7664575c63b02d7

图2:引用计数(referencecount)

629bf0b13ad61fa6a2fc2bf2b74f36c4317a1385

图3:swapout/in 优化的原子操作(Atomic operation)。删除从节点e到节点b的引用边,并添加了红色和蓝色的节点和边。

42267a722915489f0ad14e62a3d140e4e95cd032

图4:注意力操作(Attentionoperation)优化。d指梯度。图左未经优化,图右经过了显存优化。  

8d395d7f91d5df53eeddf46e0c7f57ee8bb09a1e

表1:对swap out/in 的评估,GPU的显存上限是12GB。

ff5180640780ebfdd9de41b84add91c0bc6a3893

 表2:对显存高效序列模型的评估。

原文发布时间为:2017-12-9

本文来自云栖社区合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”微信公众号

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
NeurIPS 2017 论文 2018 年引用量排名揭晓,这里是排名前三的论文解读
2017 年在 NeurIPS 上发表的论文在 2018 年引用量超过 100 的有 19 篇,attention is all your need 占榜首~
600 0
语音顶会Interspeech 论文解读|Constrained output embeddings for end-to-end code-switching speech recognition with only monolingual data
Interspeech是世界上规模最大,最全面的顶级语音领域会议,本文为 Nanyang Technological University等学校联合作者的入选论文
664 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3965 0
清华崔鹏团队KDD论文一作解读:在大数据背景下进行因果效应评估
上述图表只汇报了小部分结果,更多结果详见我们论文。从上述结果中,我们发现,基于 Directly Estimator 在所有 setting 下都失败了,这是因为该方法忽略了数据中存在的 confounding bias;基于 propensity score 的方法
1783 0
知识图谱论文大合集,这份干货满满的笔记解读值得收藏
为了换机噪声标注,本文提出基于对抗神经网络的方法,尝试从自动标注数据中清除噪声。实验结果表明,本文提出的方法能够有效去除噪声,提升远程监督方法的抽取性能。
2129 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10744 0
语音顶会Interspeech 论文解读|Autoencoder-based Semi-Supervised Curriculum Learning For Out-of-domain Speaker Verification
Interspeech是世界上规模最大,最全面的顶级语音领域会议,本文为Siqi Zheng, Gang Liu, Hongbin Suo, Yun Lei的入选论文
1052 0
Top100论文导读:深入理解卷积神经网络CNN(Part Ⅱ)
作者从目前热门的top 100 优秀深度学习论文中选取一组论文为大家进行纯干货总结,该组包含8篇经典论文,主要讲解卷积神经网络CNN的经典结构以及针对不同任务进行的结构上的改进。由浅入深的讲解,适合入门了解卷积神经网络的整体网络结构及发展过程——向着更深、复杂度更低的方向发展。
2116 0
语音顶会Interspeech 论文解读|Fast Learning for Non-Parallel Many-to-Many Voice Conversion with Residual Star Generative Adversarial Networks
Interspeech是世界上规模最大,最全面的顶级语音领域会议,本文为Shengkui Zhao, Trung Hieu Nguyen, Hao Wang, Bin Ma的入选论文
1043 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
2902 0
+关注
技术小能手
云栖运营小编~
5946
文章
9
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载