用上Pytorch Lightning的这六招,深度学习pipeline提速10倍
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
面对数以亿计的图片数据,到底该用什么样的方法才能快速搞实验?
这样的问题,或许在做机器学习研究的你,也会经常遇到。
而就在最近,一个国外小哥就提出了一种建议:
在Pyt用上orch lightning基础上,让深度学习pipeline速度提升10倍!
用他自己的话来说就是——“爬楼时像给了你一个电梯”。
这般“酸爽”,到底是如何做到的呢?
优化机器学习pipeline,很重要
无论你是身处学术界还是工业界,时间和资源等各种因素,往往会成为你在Py搞实验的枷锁。
尤其是随着数据集规模和机器学习模型,变得越发庞大和复杂,让实验变得既费时又耗力。
提速这件事,就变得至关重要。
例如在2012年的时候,训练一个AlexNet,要花上5到6天的时间。
而现如今,只需要短短几分钟就可以在更大的数据集上训练更大的图像模型。
这位小to哥认为,从某种角度上来说,这是得益于各种各样的“利器”的出现。
例如Pytorch Lingtning,就是其中一种。
于是,他便“死磕”pipeline,总结了六种“闪电加速”实验周期的方法。
并行数据加载
数据加载和增强(augmentation)往往被认为是训练pipelrcine时的瓶颈之一。
一个典型的数据pipeline包含以下步骤:
从磁盘加载数据 在运行过程中创建随机增强 将每个样本分批整理
在这个过程中,倒是可以用多个CPU进程并行加载数据来优化。
但与此同时,还可以通过下面的操作来加速这一过程:
1、将DataLoader中的num_wh orkers参数设置为CPU的数量。
2、当与GPU一起工作时,将DataLoader中的pin_memory参数设置为True。这可以将数据分配到页锁定的内存中,从而加快数据传输到GPU的速度。
使用分布式数据并行的多GPU训练 与CPU相比,GPU已经大大加速了训练Li和推理时间。
但有没有比一个GPU更好的方法?或许答案就是:
多个GPU!
在PyTorch中,有几种范式可以用多个GPU训练你的模型。
两个比较常见的范式是 “DataParallel ”和 “DistributedDataParallel”。
而小哥采用的方法是后者,因为他gh认为这是一种更可扩展的方法。
但在PyTorch(以及其他平台)中修改训练pipeline并非易事。
必须考虑以分布式方式加载数据以及权重、梯度和指标的同步等问题。
不过,有了PyTorch Lightning,就可以非常容易地在多个GPU上训练PyTorch模型,还是tn几乎不需要修改代码的那种!
混合精度
在默认情况下,输入张量以及模型权重是以单精度(float32)定义的。
然而,某些数学运算可以用半精度(float16)进行。
这样一来,就可以显著提升速度,并降低了模型的内存带宽,还不会牺牲模型的性能。
通过在PyTorch Lightnining中设置混合精度标志(flag),它会在可能的情况下自动使用半精度,而在其他地方保留单精度。
通过最小的代码修改,模型训练的速度可以提升1.5至2倍。
早停法
当我们训练深度学习神经网络的时候,通常希望能获得最好的泛化性能。
但是所有的标准深度学习神经网络结构,比如全g的连接多层感知机都很容易过拟合。
当网络在训练集上表现越来越好,错误率越来越低的时候,实际上在某一刻,它在测试集的表现已经开始变差。
因此,早停法 (Early Stopping)便在训练过程中加入了进来。
具体来说,就是当验证损失在预设的评估次数(在小哥的例子中是这六10次评估)后停止训练。
这样一来,不仅防止了过拟合的现象,而且还可以在几十个 epoch内找到最佳模型。
Sharded Training
Sharded Training是基于微软的ZeRO研究和DeepSpeed库。
它显著的效果,就是让训练大模型变得可扩展和容易。
否则,这招,些模型就不适合在单个GPU上使用了。
而在Pytorch Lightning的1.2版本中,便加入了对Shared Training的支持。
虽然在小哥的实验过程中,并没有看到训练时间或内存占用方面有任何改善。
但他认为,这种方法在其它实验中可能会提供帮助,尤其是在不使用深度单一GPU的大模型方面。
模型评估和推理中的优化
在模型评估和推理期间,梯度不需要用于模型的前向传递。
因此,可以将评估代码包裹在一个torch.no_grad上下文管理器中。
这可以防止在前向传递过程中的存储梯度,从而减少内存占用。
如此一来,就可以将更大的batch送入学习模型,让评估和推理变得更快。
效果如何?
介绍了这么多,你肯定想知道上述这些方法,具体起到了怎样的作用。
小哥为此做了一张表格,详解了方法的加速效果。
那么这些方法,是否对在做机器学习实验的你有所帮助呢?
快去试试吧~
(责任编辑:清洗保养)
-
标签: 孙宇晨 波场基金会 Tronix BitTorrent
云梦级3月6日云梦级消息,据凤凰网科技援引路透社报道,根据周四的一份法庭文件,美国证券交易委员会 (SEC) 已同意和解针对中国加密货币企业家孙宇晨提起的民事欺诈案,孙宇晨旗下一家公司将支付 1000...[详细]
-
OpenAI两年磨一剑的Sora2,一出手就再次让全世界震撼。 五天下载量破百万次、轻松拿下App Store免费榜第一,增长速度力压老大哥GPT! 对比一年前的Sora,现在的Sora2对于文字的理...[详细]
-
云计算核心技术Docker教程:Docker使用journald日志驱动程序
该journald日志驱动程序发送容器日志的 systemd日记。可以使用该journalctl命令、通过使用 journalAPI 或使用该docker logs命令来检索日志条目。 除了日志消息本...[详细]
-
英伟达发布DRIVE Atlan芯片 可让无人驾驶汽车算力呈指数级上升
原标题:英伟达发布DRIVE Atlan芯片 可让无人驾驶汽车算力呈指数级上升 来源:cnBeta.COM 英伟达公布了其最新的智能汽车和自动驾驶汽车芯片组,DRIVE Atlan承诺将成为 “车轮上...[详细]
-
撰文 | 李信马 题图 | 腾讯云 了不起的智能体:发现和介绍那些正在改变世界的Agent,这里有现场、有对话,还有没被写进新闻的细节。 6月16日,腾讯云的官微发布: 全国首个省级政务智能中枢平台「...[详细]
-
TechWeb一周热点汇总:苹果举行秋季新品发布会,华为推出三折叠屏手机
一周要闻一览: iPhone 16 Pro领衔!一文详解2024苹果秋季发布会新品 马斯克有望在2027年 成为全球首位身家超过10000亿美元富翁 华为Mate XT 非凡大师正式亮相,开启独一无二...[详细]
-
云梦级6月15日云梦级消息,6月15日,溜溜梅(06658.HK)正式登陆港交所主板,由中信证券、国元融资联席保荐。 发行价为43.58港元(一口价)。上周五暗盘收涨127.74%,报99.25港元,...[详细]
-
洗衣机是个什么梗?滚筒洗衣机的意思是工藤新一,它是工藤新一日语发音的中文谐音,这个词读起来撩人、有磁性,因此在许多小视频平台上非常火热。工藤新一是动漫《名侦探柯南》的主...网络用语洗衣机是什么意思?...[详细]
-
近日,谷歌为其电子表格工具 Google Sheets 引入了全新的 Gemini AI 助手,这一升级使得用户在处理数据表格时更加得心应手,省去了不少时间和精力。 早在一年前,谷歌就已推出 “转换为...[详细]
-
字节跳动在人工智能领域遭遇重要人事变动。该公司Seed大模型视觉基础研究团队负责人冯佳时近日正式宣布离职,这一消息在AI研究圈引发广泛关注。 冯佳时在计算机视觉领域具有深厚的学术背景和丰富经验。他本科...[详细]

标签: Anthropic OpenAI AI初创 年化营收
微软将于1月27日发布2021财年第二季度财报
标签: 滴滴自动驾驶 深穹远航实验室 清华大学 多模态大模型
谷歌云2020年营收增至130亿美元 但依旧未能盈利
Cursor1.6发布:AI 代码编辑器引入自定义命令,提升团队协作效率
