用上PytorchLightning这六招,深度学习pipe
面对数以亿计的图片数据,到底该用什么样的方法才能快速搞实验?
这样的问题,或许在做机器学习研究的你,也会经常遇到。
而就在最近,一个国外小哥就提出了一种建议:
在Pytorchlightning基础上,让深度学习pipeline速度提升10倍!
用他自己的话来说就是爬楼时像给了你一个电梯。
这般酸爽,到底是如何做到的呢?
优化机器学习pipeline,很重要
无论你是身处学术界还是工业界,时间和资源等各种因素,往往会成为你在搞实验的枷锁。
尤其是随着数据集规模和机器学习模型,变得越发庞大和复杂,让实验变得既费时又耗力。
提速这件事,就变得至关重要。
例如在2012年的时候,训练一个AlexNet,要花上5到6天的时间。
而现如今,只需要短短几分钟就可以在更大的数据集上训练更大的图像模型。
这位小哥认为,从某种角度上来说,这是得益于各种各样的利器的出现。
例如PytorchLingtning,就是其中一种。
于是,他便死磕pipeline,总结了六种闪电加速实验周期的方法。
并行数据加载
数据加载和增强(augmentation)往往被认为是训练pipeline时的瓶颈之一。
一个典型的数据pipeline包含以下步骤:
从磁盘加载数据
在运行过程中创建随机增强
将每个样本分批整理
在这个过程中,倒是可以用多个CPU进程并行加载数据来优化。
但与此同时,还可以通过下面的操作来加速这一过程:
1、将DataLoader中的numworkers参数设置为CPU的数量。
2、当与GPU一起工作时,将DataLoader中的pinmemory参数设置为True。这可以将数据分配到页锁定的内存中,从而加快数据传输到GPU的速度。
使用分布式数据并行的多GPU训练
与CPU相比,GPU已经大大加速了训练和推理时间。
但有没有比一个GPU更好的方法?或许答案就是:
多个GPU!
在PyTorch中,有几种范式可以用多个GPU训练你的模型。
两个比较常见的范式是DataParallel和DistributedDataParallel。
而小哥采用的方法是后者,因为他认为这是一种更可扩展的方法。
但在PyTorch(以及其他平台)中修改训练pipeline并非易事。
必须考虑以分布式方式加载数据以及权重、梯度和指标的同步等问题。
不过,有了PyTorchLightning,就可以非常容易地在多个GPU上训练PyTorch模型,还是几乎不需要修改代码的那种!
混合精度
在默认情况下,输入张量以及模型权重是以单精度(float32)定义的。
然而,某些数学运算可以用半精度(float16)进行。
这样一来,就可以显著提升速度,并降低了模型的内存带宽,还不会牺牲模型的性能。
通过在PyTorchLightning中设置混合精度标志(flag),它会在可能的情况下自动使用半精度,而在其他地方保留单精度。
通过最小的代码修改,模型训练的速度可以提升1。5至2倍。
早停法
当我们训练深度学习神经网络的时候,通常希望能获得最好的泛化性能。
但是所有的标准深度学习神经网络结构,比如全连接多层感知机都很容易过拟合。
当网络在训练集上表现越来越好,错误率越来越低的时候,实际上在某一刻,它在测试集的表现已经开始变差。
因此,早停法(EarlyStopping)便在训练过程中加入了进来。
具体来说,就是当验证损失在预设的评估次数(在小哥的例子中是10次评估)后停止训练。
这样一来,不仅防止了过拟合的现象,而且还可以在几十个epoch内找到最佳模型。
ShardedTraining
ShardedTraining是基于微软的ZeRO研究和DeepSpeed库。
它显著的效果,就是让训练大模型变得可扩展和容易。
否则,这些模型就不适合在单个GPU上使用了。
而在PytorchLightning的1。2版本中,便加入了对SharedTraining的支持。
虽然在小哥的实验过程中,并没有看到训练时间或内存占用方面有任何改善。
但他认为,这种方法在其它实验中可能会提供帮助,尤其是在不使用单一GPU的大模型方面。
模型评估和推理中的优化
在模型评估和推理期间,梯度不需要用于模型的前向传递。
因此,可以将评估代码包裹在一个torch。nograd上下文管理器中。
这可以防止在前向传递过程中的存储梯度,从而减少内存占用。
如此一来,就可以将更大的batch送入模型,让评估和推理变得更快。效果如何?
介绍了这么多,你肯定想知道上述这些方法,具体起到了怎样的作用。
小哥为此做了一张表格,详解了方法的加速效果。
那么这些方法,是否对在做机器学习实验的你有所帮助呢?
快去试试吧
参考链接:
https:devblog。pytorchlightning。aihowweusedpytorchlightningtomakeourdeeplearningpipeline10xfaster731bd7ad318a
地铁开工奠基仪式领导讲话稿地铁是涵盖了都会地区各种地下与地上的路权专有、高密度、高运量的城市轨道交通系统。下面是品学网小编给大家整理的地铁开工奠基仪式领导讲话稿,仅供参考。地铁开工奠基仪式领导讲话稿篇1……
学院第一学期工作计划本文是由上传的:学院20xx学年度第一学期工作计划。一、指导思想结合学院实际,以发展为第一要务,以提高教学质量为主题,以校园文化建设为载体,依托集团公司,科学管理,……
职工眼中的工会企业工会调查报告近年来,矿难频发、工伤职业病激增、工资拖欠、工时超常、社保缺位,及劳动争议和突发事件的时常出现,已经成为引人注目的社会热点。作为在社会结构中追求社会公正和发挥重要制衡功能的中国……
TMobileCTO向OpenRAN5G再泼冷水出现问题时找来自LightReading的报道称,TMobile首席技术官NevilleRay对于OpenRAN技术的看法显然不温不火。NevilleRay在本周二的投资者活动中说:……
深圳年底又发大红包买5G手机最高补贴1000元IT之家11月18日消息据深圳晚报报道,昨日,由广东省商务厅主办的2020广东省5G新消费促进活动在深启动。据介绍,活动将持续到12月31日。深圳在本次活动期间将围绕5G……
渠道运营经理的主要职责渠道运营经理负责游戏渠道发行运营工作,拓展和维护手游推广渠道,对渠道进行有效管理,加强渠道控制力。下面是品学网小编为您精心整理的渠道运营经理的主要职责。渠道运营经理的主要……
小米手机明年屏幕形态居中单孔左上角单孔内折屏屏下前摄IT之家11月16日消息今日午间,数码博主数码闲聊站爆料称,今年小米系新机的后摄方案挺丰富的,明年将逐步开始完善屏幕形态,目前确定可量产的有居中单打孔直屏曲屏方案、左上角单打孔……
幼儿早期阅读兴趣和能力的培养活动方案一、活动目标家园合作,为幼儿创建良好的阅读环境,营造浓厚的阅读氛围。激发幼儿阅读的兴趣,养成良好的阅读习惯,习得正确的阅读方法,培养良好的道德情操和审美情趣。二、活……
企业党建个人年终总结三篇篇一20xx年,公司党委在市城乡和住房建委党委、市国资委等上级党组织的领导下,在公司全体员工的共同努力下,以开展党的群众路线教育实践活动为契机,围绕公司全年工作目标任务,……
越南政府指责Netflix与苹果逃避税收,与国内企业形成不公据报道,周二,越南信息部长指责Netflix和苹果等国外流媒体企业逃避税收责任,并且称此举对越南国内企业形成了不公平竞争。越南信息和通信部的数据显示,外国流媒体企业在越南……
联发科MT6893工程机跑分出炉,单核性能强于天玑1000IT之家11月14日消息数码博主数码闲聊站今日放出了一份联发科新SoC之一的MT6893工程机跑分,且表示小米已开案测试,但随后改为Redmi蓄势待发,或暗示将由Redmi某款……
杨元庆联想新技术架构已春山可望11月14日上午消息,联想集团董事长兼CEO杨元庆在联想智慧中国行海南峰会表示,联想在5G领域的申请标准必要专利,已突破1000件,此外新技术架构已春山可望。说到新常态,……