用上 Pytorch Lightning 这六招,深度学习 pipeline 可提速 10 倍
消息来源:baojiabao.com 作者: 发布时间:2026-02-15
面对数以亿计的图片数据,到底该用什么样的方法才能快速搞实验?
这样的问题,或许在做机器学习研究的你,也会经常遇到。
而就在最近,一个国外小哥就提出了一种建议:
在 Pytorch lightning 基础上,让深度学习 pipeline 速度提升 10 倍!
用他自己的话来说就是 --"爬楼时像给了你一个电梯"。
这般"酸爽",到底是如何做到的呢?
优化机器学习 pipeline,很重要
无论你是身处学术界还是工业界,时间和资源等各种因素,往往会成为你在搞实验的枷锁。
尤其是随着数据集规模和机器学习模型,变得越发庞大和复杂,让实验变得既费时又耗力。
提速这件事,就变得至关重要。
例如在 2012 年的时候,训练一个 AlexNet,要花上 5 到 6 天的时间。
而现如今,只需要短短几分钟就可以在更大的数据集上训练更大的图像模型。
这位小哥认为,从某种角度上来说,这是得益于各种各样的"利器"的出现。
例如 Pytorch Lingtning,就是其中一种。
于是,他便"死磕"pipeline,总结了六种"闪电加速"实验周期的方法。
并行数据加载
数据加载和增强(augmentation)往往被认为是训练 pipeline 时的瓶颈之一。
一个典型的数据 pipeline 包含以下步骤:
从磁盘加载数据
在运行过程中创建随机增强
将每个样本分批整理
在这个过程中,倒是可以用多个 CPU 进程并行加载数据来优化。
但与此同时,还可以通过下面的操作来加速这一过程:
1、将 DataLoader 中的 num_workers 参数设置为 CPU 的数量。
2、当与 GPU 一起工作时,将 DataLoader 中的 pin_memory 参数设置为 True。这可以将数据分配到页锁定的内存中,从而加快数据传输到 GPU 的速度。
使用分布式数据并行的多 GPU 训练
与 CPU 相比,GPU 已经大大加速了训练和推理时间。
但有没有比一个 GPU 更好的方法?或许答案就是:
多个 GPU!
在 PyTorch 中,有几种范式可以用多个 GPU 训练你的模型。
两个比较常见的范式是"DataParallel"和"DistributedDataParallel"。
而小哥采用的方法是后者,因为他认为这是一种更可扩展的方法。
但在 PyTorch(以及其他平台)中修改训练 pipeline 并非易事。
必须考虑以分布式方式加载数据以及权重、梯度和指标的同步等问题。
不过,有了 PyTorch Lightning,就可以非常容易地在多个 GPU 上训练 PyTorch 模型,还是几乎不需要修改代码的那种!
混合精度
在默认情况下,输入张量以及模型权重是以单精度(float32)定义的。
然而,某些数学运算可以用半精度(float16)进行。
这样一来,就可以显著提升速度,并降低了模型的内存带宽,还不会牺牲模型的性能。
通过在 PyTorch Lightning 中设置混合精度标志(flag),它会在可能的情况下自动使用半精度,而在其他地方保留单精度。
通过最小的代码修改,模型训练的速度可以提升 1.5 至 2 倍。
早停法
当我们训练深度学习神经网络的时候,通常希望能获得最好的泛化性能。
但是所有的标准深度学习神经网络结构,比如全连接多层感知机都很容易过拟合。
当网络在训练集上表现越来越好,错误率越来越低的时候,实际上在某一刻,它在测试集的表现已经开始变差。
因此,早停法 (Early Stopping)便在训练过程中加入了进来。
具体来说,就是当验证损失在预设的评估次数(在小哥的例子中是 10 次评估)后停止训练。
这样一来,不仅防止了过拟合的现象,而且还可以在几十个 epoch 内找到最佳模型。
Sharded Training
Sharded Training 是基于微软的 ZeRO 研究和 DeepSpeed 库。
它显著的效果,就是让训练大模型变得可扩展和容易。
否则,这些模型就不适合在单个 GPU 上使用了。
而在 Pytorch Lightning 的 1.2 版本中,便加入了对 Shared Training 的支持。
虽然在小哥的实验过程中,并没有看到训练时间或内存占用方面有任何改善。
但他认为,这种方法在其它实验中可能会提供帮助,尤其是在不使用单一 GPU 的大模型方面。
模型评估和推理中的优化
在模型评估和推理期间,梯度不需要用于模型的前向传递。
因此,可以将评估代码包裹在一个 torch.no_grad 上下文管理器中。
这可以防止在前向传递过程中的存储梯度,从而减少内存占用。
如此一来,就可以将更大的 batch 送入模型,让评估和推理变得更快。
效果如何?
介绍了这么多,你肯定想知道上述这些方法,具体起到了怎样的作用。
小哥为此做了一张表格,详解了方法的加速效果。
那么这些方法,是否对在做机器学习实验的你有所帮助呢?
快去试试吧~
参考链接:
https://devblog.pytorchlightning.ai/how-we-used-pytorch-lightning-to-make-our-deep-learning-pipeline-10x-faster-731bd7ad318a
2022-05-08 03:33:47相关文章
炒港股要补交多少税?我也接到催交补税特别行动的电话了2025-07-23 17:36:43
淘宝天猫仅退款属于诈骗吗?淘宝天猫开始部分取消仅退款2024-10-01 13:01:28
哈啰app借钱|哈啰借钱app下载安装免费小小上当和电话骚扰2024-10-01 11:22:38
白嫖党|山西大同大学学生网购申请“仅退款”被拒骂客服一小时2024-09-27 09:10:44
北大数学教授袁新意《姜萍事件的疑点分析》点评姜萍板书 阿里巴巴竞赛受质疑2024-06-28 10:07:40
天猫新规可以无条件申请“仅退款”了?淘宝天猫又离狗多多零元购近了一步2024-06-28 09:27:13
美国法院裁定阿里须为Squishmallows玩具侵权案答辩2023-12-28 19:59:34
小米汽车传员工3700人 雷军称小米汽车不可能卖9万92023-12-28 19:41:57
国家新闻出版署:认真研究《网络游戏管理办法(草桉徵求意见稿)》关切 实行前进一步完善2023-12-28 19:14:56
印度以打击金融犯罪为由逮捕了两名 vivo 高管2023-12-26 16:49:01
在国外微信收不到国内信息?微信和WeChat将被拆分2023-12-15 10:40:15
苹果iPhone15 系列手机发布最新消息 预计上市发布时间9月2023-08-06 23:21:02
华为将发布鸿蒙HarmonyOS4操作系统 功能五大升级支持设备清单2023-08-06 23:17:37
整治自媒体网红账号 400万粉丝网红发布擦边视频被无限期封禁2023-07-12 09:56:09
网传微信文件传输助手是真人是真的吗?微信官方回应2023-06-27 15:53:32
电信移动送手机成了“信用购”?你上了运营商的贷款套路了吗?2023-06-12 17:18:55
中国电信广东地区崩了无信号 客服回应已在核实处理2023-06-08 15:39:04
消息称小米新能源汽车价格表正讨论定价区间:双版本不同配置,高配或超 35 万元2023-03-06 12:56:03
华为因制裁被传或分拆剥离手机业务? 内部人士回应:可能性不大.2023-03-05 23:26:41
OPPO正式发布安第斯智能云,让终端更智能2023-02-24 16:02:27














