0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用单独的GPU,在CIFAR-10图像分类数据集上高效地训练残差网络

zhKF_jqr_AI 来源:未知 作者:李倩 2018-11-12 09:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在这一系列文章中,我们主要研究如何用单独的GPU,在CIFAR-10图像分类数据集上高效地训练残差网络(Residual networks)。

为了记录这一过程,我们计算了网络从零开始训练到94%的精确度所需的时间。这一基准来自最近的DAWNBench竞赛。在竞赛结束后,单个GPU上的最好成绩是341秒,八个GPU上最好成绩是174秒。

Baseline

在这部分中,我们复制了一个基线,在6分钟内训练CIFAR10,之后稍稍加速。我们发现,在GPU的FLOPs计算完之前,仍有很大的提升空间。

过去几个月,我一直在研究如何能更快度训练深度神经网络。这个想法是从今年年初萌生的,当时我正和Myrtle的Sam Davis进行一个项目。我们将用于自动语音识别的大型循环神经网络压缩后,部署到FPGAs上,重新训练模型。来自Mozilla的基线在16个GPU上训练了一个星期。后来,经过Sam的努力,我们在英伟达的Volta GPUs上进行混淆精度训练,得以将训练时间缩短了100倍,迭代时间在单个GPU上只需要不到一天的时间。

这一结果让我思考还有什么可以实现加速?几乎与此同时,斯坦福大学的研究人员们开启了DAWNBench挑战赛,比较多个深度学习基线上的训练速度。最受人关注的就是训练图像分类模型在CIFAR10上达到94%的测试精确度,在ImageNet上达到93%、top5的成绩。图像分类是深度学习研究的热门领域,但是训练速度仍需要数小时。

到了四月份,挑战赛接近尾声,CIFAR10上最快的单个GPU训练速度来自fast.ai的一名学生Ben Johnson,他在不到6分钟(341秒)的时间里训练出了94%的精确度。这一创新主要是混淆精度的训练,他选择了一个较小的网络,有足够的能力处理任务并且可以用更高的学习速率加速随机梯度下降。

这时我们不禁提出一个问题:这种341秒训练出来的94%测试精度,在CIFAR10上的表现怎么样?该网络的架构是一个18层的残差网络,如下所示。在这个案例中,图层的数量表示卷积(紫色)和完全连接层(蓝色)的序列深度:

网络通过随机梯度下降训练了35个epoch,学习速率图如下:

现在我们假设在一个英伟达Volta V100 GPU上用100%的计算力,训练将需要多长时间。网络在一张32×32×3的CIFAR10图像上进行前向和后向传递时需要大约2.8×109FLOPs。假设参数更新不耗费计算力,那么在50000张图像训练35个epoch应该会在5×1015FLOPs以内完成。

Tesla V100有640个Tensor Cores,能支持125 TeraFLOPS的深度学习性能。

假设我们能发挥100%的计算力,那么训练会在40秒内完成,这么看来341秒的成绩还有很大的提升空间。

有了40秒这个目标,我们就开始了自己的训练。首先是用上方的残差网络重新复现基线CIFAR10的结果。我用PyTorch创建了一个网络,重新复制了学习速率和超参数。在AWS p3.2的图像上用单个V100 GPU训练,3/5的运行结果在356秒内达到了94%的精确度。

基线建好后,下一步是寻找可以立即使用的简单改进方法。首先我们观察到:网络开头是由黄色和红色的两个连续norm-ReLU组成的,在紫色卷积之后,我们删去重复部分,同样在epoch 15也发生了这样的情况。进行调整后,网络架构变得更简单,4/5的运行结果在323秒内达到了94%的精确度!刷新了记录!

另外我们还观察到,图像处理过程中的一些步骤(填充、标准化、位移等等)每经过训练集一次就要重新处理一遍,会浪费很多时间。虽然提前预处理可以用多个CPU处理器减轻这一结果,但是PyTorch的数据下载器会从每次数据迭代中开始新一次的处理。这一配置时间是很短的,尤其在CIFAR10这样的小数据集上。只要在训练前做了准备,减少预处理压力,就能减少处理次数。遇到更复杂的任务,需要更多预处理步骤或多个GPU时,就会在每个epoch之间保持数据下载器的处理。溢出了重复工作、减少了数据下载器后,训练时间达到了308秒。

继续研究后我们发现,大部分预处理时间都花在了召集随机数字生成器,选择数据增强而不是为它们本身增强。在完全训练时期,我们对随机数字生成器执行了几百万个单独命令,把它们结合在一个较小的命令中,每个epoch可以省去7秒训练时间。最终的训练时间缩短到了297秒。这一过程的代码可以点击:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5099

    浏览量

    134420
  • 图像分类
    +关注

    关注

    0

    文章

    96

    浏览量

    12409
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123890

原文标题:如何训练你的ResNet(一):复现baseline,将训练时间从6分钟缩短至297秒

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    计算机视觉/深度学习领域常用数据汇总

    训练,100张用于测试;这100个类分组成20个超类。图像类别均有明确标注。CIFAR对于图像分类算法测试来说是一个非常不错的中小规模
    发表于 08-29 10:36

    线性分类

    ,...,N并且y-->1,2,3,4,...,K。这就是说,我们有N个图像样例,每个图像的维度是D,共有K种不同的分类。举例来说,CIFAR-1
    发表于 10-09 09:40

    使用CIFAR-10彩色图片训练出现报错信息及解决

    PaddlePaddle使用CIFAR-10彩色图片训练出现输出数据维度错误
    发表于 02-28 06:51

    当AI遇上FPGA会产生怎样的反应

    FPGA方案可加速ResNet等神经网络,能够应用于图片分类、对象检测和人脸识别等应用场景。以通过构建ResNet网络的图片识别
    发表于 09-17 17:08

    【ELT.ZIP】OpenHarmony啃论文俱乐部—gpu上高效无损压缩浮点数

    的压缩率和吞吐量每个数据的压缩效率。上表列出了每个压缩器每个数据上实现的压缩率和吞吐量。虽然ndzip-
    发表于 07-27 10:16

    如何进行高效的时序图神经网络训练

    提高吞吐量、提高训练性能。综上,针对时序图神经网络中出现的高额设备间通信开销问题,本文提出了局部性感知的数据划分策略和高效的任务调度策略,以缩减时序图神经
    发表于 09-28 10:37

    用AlexNet对cifar-10数据进行分类

    AlexNet图像分类中是一个比较重要的网络,在学习的过程中不仅要学会写网络结构,知道每一层的结构,更重要的是得知道为什么要这样设计,这样
    的头像 发表于 06-06 14:18 2.2w次阅读
    用AlexNet对<b class='flag-5'>cifar-10</b><b class='flag-5'>数据</b>进行<b class='flag-5'>分类</b>

    信息保留的二值神经网络IR-Net,落地性能和实用性俱佳

    IR-Net提供了一个全新的角度来理解二值神经网络是如何运行的,并且具有很好的通用性,可以标准的网络训练流程中进行优化。作者使用CIFAR-10
    的头像 发表于 03-27 15:25 2283次阅读
    信息保留的二值神经<b class='flag-5'>网络</b>IR-Net,落地性能和实用性俱佳

    改进多尺度三维卷积神经网络的高光谱图像方法

    中最大池化层减少整体网络训练参数量,改进多尺度滤波器组和三维单元提取图像深层局部空间-光谱联合特征,并将其输人 Softmax函数层预测
    发表于 03-16 14:57 10次下载
    改进多尺度三维<b class='flag-5'>残</b><b class='flag-5'>差</b>卷积神经<b class='flag-5'>网络</b>的高光谱<b class='flag-5'>图像</b>方法

    改进多尺度三维卷积神经网络的高光谱图像方法

    中最大池化层减少整体网络训练参数量,改进多尺度滤波器组和三维单元提取图像深层局部空间-光谱联合特征,并将其输人 Softmax函数层预测
    发表于 03-16 14:57 1次下载
    改进多尺度三维<b class='flag-5'>残</b><b class='flag-5'>差</b>卷积神经<b class='flag-5'>网络</b>的高光谱<b class='flag-5'>图像</b>方法

    基于字典及写作表达的单图像SR算法

    ,其次利用重建的样本图像训练多层字典及多层投影矩阵;
    发表于 05-07 13:54 8次下载

    面向图像识别的轻量级SepNet网络结构

    网络深度、宽度,设计利用深度可分离卷积和网络的可分离模块,最终形成了一个能实现端到端
    发表于 06-03 16:20 3次下载

    如何搭建VGG网络实现Mnist数据图像分类

    如何搭建VGG网络,实现Mnist数据图像分类? 2 方法 步骤:
    的头像 发表于 02-14 15:00 1156次阅读

    cifar10数据介绍 knn和svm的图像分类系统案例

      摘要:本文使用CIFAR-10数据设计实现了基于k近邻(knn)和支持向量机(svm)的图像分类系统。首先介绍了
    发表于 07-18 15:23 4次下载

    网络是深度神经网络

    网络(Residual Network,通常简称为ResNet) 是深度神经网络的一种 ,其独特的结构设计解决深层
    的头像 发表于 07-11 18:13 1976次阅读