用上Pytorch Lightning的这六招,深度学习pipeline提速10倍_pytorch gpu和cpu区别

2023-03-26 08:48:33

 

1.pytorch-lightning

金磊 发自 凹非寺面对数以亿计的图片数据,到底该用什么样的方法才能快速搞实验?这样的问题,或许在做机器学习研究的你,也会经常遇到而就在最近,一个国外小哥就提出了一种建议:在Pytorch lightning基础上,让深度学习pipeline速度提升。

2.pytorch怎么用gpu训练

10倍!

3.pytorch如何提高gpu利用率

用他自己的话来说就是——“爬楼时像给了你一个电梯”。这般“酸爽”,到底是如何做到的呢?

4.pytorch-lighting

优化机器学习pipeline,很重要无论你是身处学术界还是工业界,时间和资源等各种因素,往往会成为你在搞实验的枷锁。尤其是随着数据集规模和机器学习模型,变得越发庞大和复杂,让实验变得既费时又耗力。

5.pytorch-gpu

打开凤凰新闻,查看更多高清图片提速这件事,就变得至关重要例如在2012年的时候,训练一个AlexNet,要花上5到6天的时间而现如今,只需要短短几分钟就可以在更大的数据集上训练更大的图像模型这位小哥认为,从某种角度上来说,这是得益于各种各样的“利器”的出现。

6.pytorch支持gpu加速吗

例如Pytorch Lingtning,就是其中一种于是,他便“死磕”pipeline,总结了六种“闪电加速”实验周期的方法并行数据加载数据加载和增强(augmentation)往往被认为是训练pipeline时的瓶颈之一。

7.pytorch调用gpu运算更慢

一个典型的数据pipeline包含以下步骤:从磁盘加载数据在运行过程中创建随机增强将每个样本分批整理在这个过程中,倒是可以用多个CPU进程并行加载数据来优化但与此同时,还可以通过下面的操作来加速这一过程:。

8.pytorch upsampling

1、将DataLoader中的num_workers参数设置为CPU的数量2、当与GPU一起工作时,将DataLoader中的pin_memory参数设置为True这可以将数据分配到页锁定的内存中,从而加快数据传输到GPU的速度。

9.pytorch 硬件加速

使用分布式数据并行的多GPU训练

10.pytorch如何用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 TrainingSharded Training是基于微软的ZeRO研究和DeepSpeed库它显著的效果,就是让训练大模型变得可扩展和容易否则,这些模型就不适合在单个GPU上使用了而在Pytorch Lightning的1.2版本中,便加入了对Shared Training的支持。

虽然在小哥的实验过程中,并没有看到训练时间或内存占用方面有任何改善。但他认为,这种方法在其它实验中可能会提供帮助,尤其是在不使用单一GPU的大模型方面。

模型评估和推理中的优化在模型评估和推理期间,梯度不需要用于模型的前向传递因此,可以将评估代码包裹在一个torch.no_grad上下文管理器中这可以防止在前向传递过程中的存储梯度,从而减少内存占用如此一来,就可以将更大的batch送入模型,让评估和推理变得更快。

效果如何?介绍了这么多,你肯定想知道上述这些方法,具体起到了怎样的作用。小哥为此做了一张表格,详解了方法的加速效果。

那么这些方法,是否对在做机器学习实验的你有所帮助呢?快去试试吧~— 完 —「2021中国人工智能年度评选」报名中!本次评选将从公司、人物、产品三大维度寻找优秀的AI企业,欢迎大家扫码报名参与评选将于12月揭晓,期待与百万从业者们,共同见证这些优秀企业的荣誉!。


以上就是关于《用上Pytorch Lightning的这六招,深度学习pipeline提速10倍_pytorch gpu和cpu区别》的全部内容,本文网址:https://www.7ca.cn/baike/8232.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜