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

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

3天内不再提示

如何用一个GPU实现八个GPU的水平

zhKF_jqr_AI 来源:未知 作者:李倩 2018-11-16 09:24 次阅读

“如何用一个GPU实现八个GPU的水平。”

在上一篇文章结尾,我们在256秒内将模型在CIFAR10上训练到94%的测试精确度。相比之下,基于单个V100 GPU上100%的计算效率,初始基线为341秒,而我们理想中的40秒的目标略微不切实际。今天,我们将定一个适中的目标——超越fast.ai在DAWNBench中的获胜记录,其中使用了8个GPU,训练了174秒。我们会继续使用单个GPU,因为距离使用所有FLOP,我们还离得很远。

对于目前的设置,我们能得对所需要的时间进行大致对比,我们选择性地删除了计算中的某些部分,并运行了剩下部分。例如,我们可以现在GPU上预装随机训练数据,省去数据下载和迁移的时间。我们还能删除优化器步骤和ReLU以及批规范层,只留下卷积层。如果这样做,不同batch size所用时间如下:

这里有几点明显特征。首先,批标准化占用了很大一部分时间。其次,卷积的主要部分也占用了超过一半的计算时间,比我们预计的在100%计算力上用掉一半的时间还要长。第三,优化器和数据下载步骤并不是主要问题。

在GPU专家Graham Hazel的帮助下,我们查看了一些配置文件,迅速发现了批标准化的一些问题——用PyTorch(0.4版本)将模型转换为半精度的默认方法会触发一个慢速代码路径,该路径不使用优化的CuDNN例程。如果我们将批标准化的权重转换回单精度,那么快速代码就被激发,所用时间看起来就更正常了:

经过改进,在35个epoch内训练达到94%的精度只需要186秒,越来越接近我们的目标了!

除此之外,还有很多方法能改进训练,将时间缩短至174秒。GPU代码还可以进一步优化,例如,当前的激活数据以NCHW格式存储,但TensorBoard中的快速CuDNN卷积例程希望数据遵循NHWC的顺序。所以,在卷积前后执行前向和后向转置需要占用很大一部分运行时间。由于PyTorch 0.4不支持原生NHWC计算,并且在其他框架中似乎没有成熟的支持,这一问题会在之后的文章中重点关注。

将训练时间减少到30个epoch,时间也会减少到161秒,轻松打破目前的记录。但如果仅仅加速基准学习速率,在5次运行中没有能达到94%的案例。

在CIFAR10上一中有效的简单正则化策略就是“Cutout”正则化,它可以清除每张训练图片中的随机子集。我们在训练图像选取随机8×8方形子集进行实验,除此之外还有标准的数据增强,用于填补、裁剪、随机翻转。

在基线35个epoch训练后的结果都达到了94%的精确度,其中还有一次达到了94.3%,这也是在基线上的小进步。对学习率进行手动优化后,运行精度达到了94.5%(将峰值学习速率提前,用简单的线性衰减替换衰减相位)。

如果我们在30个epoch上提高学习速率,4/5的运行次数会达到94%的精度,中间值为94.13%。我们可以将batch size提高到768,4/5也能达到94%,中值为94.06%。当batch size为512时,30epoch运行时间为161秒,当batch size为768时,时间为154秒,所有都只在一个GPU上,打破了我们的目标!折线图如下:

现在我们达到了文章开头设定的目标,想要复现这一过程,可以点击链接查看代码:github.com/davidcpage/cifar10-fast/blob/master/experiments.ipynb。不过我们的新纪录应该能很容易打破,首先,我们一直将单个GPU的计算能力维持在25%以下,之后还有对其优化的方法。第二,可以用相关技术减少训练epoch,例如Mixup正则化和AdamW训练。我们尚未研究如何对参数平均以加速最终收敛,如果我们打算在推理时做更多工作,则可以使用测试时间增强来进一步缩短训练时间。还有人提出在更大的网络中进行小于20个epoch的实验训练,结合fast.ai的技术,进一步研究也许会发现更有趣的结果。

但是,目前我们将不继续探索这些未开发的途径,而是重点观察目前我们一直使用的网络,就会发现意想不到的收获。

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

    关注

    8

    文章

    6884

    浏览量

    88812
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4700

    浏览量

    128679

原文标题:如何训练你的ResNet(三):正则化

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

收藏 人收藏

    评论

    相关推荐

    GPU

    GPU,Graphic Processing Unit,图形处理器。GPU是相对于CPU的概念,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要
    发表于 01-16 08:59

    VMware GPU分配/在GPU 1之前首先使用GPU 0

    嗨,我在ESX 6中使用GRID K2。Atm有像GPU0和GPU1之间的负载平衡。如果我在主机上打开2 K240q,则第一个VM被分配给GPU0,即第二
    发表于 09-10 17:14

    ARM架构的GPU和台式机的GPU有什么区别

    达或者AMD的独立显卡则是需要很高端的才支持4K的分辨率。这样的话投入完全不是级别。2:移动GPU的能耗比是否比独立的PC的GPU高?3:支持2K分辨率和4K显示的市面上的ARM处
    发表于 07-18 08:04

    GPU大主流的应用场景

    ,以增强游戏用户体验。何以实现一个字:快!GPU并行计算的基础结构、可以执行海量数据计算;GPU访存速度快;GPU拥有更高的浮点运算能力,
    发表于 12-07 10:04

    有关域名知识八个问题

    有关域名知识八个问题 什么是域名?    Internet域名是Internet网络上的服务器或网络系统的名字,在全世界,没有重
    发表于 01-27 10:07 579次阅读

    有关域名的不可不t知的八个问题

    有关域名的不可不t知的八个问题 了解域名的相关知识,下面有关域名的八个经典问题,将会有助于你了解域名相关问题。  
    发表于 02-23 13:50 727次阅读

    轻松高效地设置PCB设计约束的八个步骤

    轻松高效地设置 PCB 设计约束的八个步骤
    发表于 01-06 14:49 0次下载

    确保PCB设计成功的八个步骤

    确保——PCB的设计成功的必要的八个步骤
    发表于 01-06 14:46 0次下载

    确保 PCB 设计成功的八个步骤

    设计过程中,确保 PCB 设计成功的八个步骤
    发表于 05-24 17:12 0次下载

    轻松高效地设置PCB设计约束的八个步骤

    轻松高效地设置 PCB 设计约束的八个步骤
    发表于 05-11 16:44 0次下载

    PCB布线的八个经典问答

    PCB布线的八个经典问答,学习资料,感兴趣的可以看看。
    发表于 10-26 15:28 0次下载

    可设置八个闹时的智能时钟

    可设置八个闹时的智能时钟
    发表于 01-08 14:14 5次下载

    AMD锐龙4000有八个核心,性能提升56%

    AMD近日正式发布了锐龙4000U、锐龙4000H系列移动APU(代号Renoir),采用7nm工艺、Zen 2架构,最多八个CPU核心、八个GPU计算单元(512SP),热设计功耗15/45W。
    的头像 发表于 01-15 09:08 3973次阅读

    锐龙4000 APU裸片到底有多大 149.27平方毫米面积竟塞下八个CPU核心

    AMD近日正式发布了锐龙4000U、锐龙4000H系列移动APU(代号Renoir),采用7nm工艺、Zen 2架构,最多八个CPU核心、八个GPU计算单元(512SP),热设计功耗15/45W。
    的头像 发表于 01-15 10:12 6004次阅读

    八个开关 输入输出只有Proteus图

    Proteus八个开关输入输出
    发表于 12-30 16:50 0次下载