本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。长期以来,PyTorch以其简单易用的特点广受AI研究人员的喜爱。但是,一旦任务复杂化,可能会出现一系列的错误,并且耗时更长。于是,就诞生了这样一款“友好”的PyTorchLightning。直接在GitHub上获得了6.6kstars。首先,它把研究代码和工程代码分开了,同时也对PyTorch代码进行了结构化,更直观的展示了数据操作过程。这样一来,更容易理解也更不容易出错,原本冗长的代码也一下子变的轻巧了,对AI研究人员来说非常友好。话不多说,让我们来看看这个轻量版的“PyTorch”。关于LightningLightning将DL/ML代码分为三种类型:研究代码、工程代码和非必要代码。针对不同的代码,Lightning有不同的处理方式。这里的研究代码是指具体的系统及其训练方法,比如GAN、VAE,这些代码会直接被LightningModule抽象出来。我们以MNIST生成为例。l1=nn.Linear(...)l2=nn.Linear(...)decoder=解码器()x1=l1(x)x2=l2(x2)out=解码器(features,x)loss=perceptual_loss(x1,x2,x)+CE(out,x)而工程代码就是所有训练这个系统相关的代码,比如earlystopping,通过GPU分配,16位精度等等。我们知道这些代码是一样的在大多数项目中,所以在这里,他们直接被Trainer抽象出来。model.cuda(0)x=x.cuda(0)distributed=DistributedParallel(model)withgpu_zero:download_data()dist.barrier()其余为非必要代码,对研究项目有帮助,但与gpu_zero:download_data()无关与研究项目,也许检查梯度,记录到tensorboard。这段代码被回调抽象掉了。#logsamplesz=Q.rsample()generated=decoder(z)self.experiment.log('images',generated)此外,它还有一些额外的功能,比如你可以在CPU、GPU、多个GPU或TPUTrain上运行无需更改一行PyTorch代码的模型;可以训练到16位精度,可以用Tensorboard的五路记录。这样一来,可能不是很明显,下面我们直观地对比一下PyTorch和PyTorchLightning的区别。PyTorch和PyTorchLightning直接对比上图。我们以构建一个简单的MNIST分类器为例,从四个关键部分开始:模型、数据、损失函数和优化。模型是先建立一个模型。本次设计了一个3层的全连接神经网络,将一张28×28的图像作为输入,将其转化为0-9这10类数字的概率分布。两者的代码完全相同。这意味着如果我们想将PyTorch模型转换为PyTorchLightning,我们只需要将nn.Module替换为pl.LightningModule即可。或许这个时候,你还看不到闪电的神奇。别担心,让我们继续前进。数据的下一部分是数据的准备,代码完全一样,只是Lightning做了这样的处理。它将PyTorch代码组织成4个函数,prepare_data,train_dataloader,val_dataloader,test_dataloaderprepare_data这个函数可以保证当你使用多个GPU时,不会下载多个数据集或者对数据进行多次操作。这样一来,所有代码都确保关键部分仅从一个GPU调用。这样就解决了PyTorch总是重复处理数据的问题,从而提高了速度。train_dataloader、val_dataloader、test_dataloader各自负责返回对应的数据切分,让你清楚的知道数据是如何操作的。在之前的教程中,几乎看不到他们是如何操作数据的。此外,Lightning还允许使用多个数据加载器进行测试或验证。优化接着优化。不同之处在于Lightning被组织成配置优化器的功能。如果你想使用多个优化器,你可以返回两个。损失函数对于n项分类,我们要计算交叉熵损失。两者的代码完全相同。此外,还有更直观的验证和训练循环。在PyTorch中,我们知道您需要自己构建for循环。可能简单的项目还好,但是遇到比较复杂高级的项目就容易翻车。闪电网络这些抽象代码的背后,是闪电网络强大的训练师团队在做主。看这里的PyTorchLightning安装教程,你是不是也想安装试试。PyTorchLightning安装非常简单。代码如下:condaactivatemy_envpipinstallpytorch-lightning或者在没有conda环境的地方使用pip。代码如下:pipinstallpytorch-lightning的创造者还有一个大靠山WilliamFalcon,PyTorchLightning的创造者,现在纽约大学攻读人工智能博士,在担任AI特约作者。2018年毕业于哥伦比亚大学计算机科学与统计学专业。在本科期间,他还辅修了数学。现在他已经拿到了谷歌Deepmind的奖学金攻读博士学位,去年还收到了FacebookAIResearch的实习邀请。此外,他还是一名海军军官,并接受过美国海军海豹突击队训练。不久前,华尔街日报还提到了该团队,他们正在研究呼吸道疾病和呼吸模式之间的联系。可能应用的场景是通过电话诊断新冠症状。目前,该团队仍处于数据收集阶段。果然,优秀的人做什么事都是优秀的。唉……怎么样,要不要试试?点击下面的链接下载并查看!门户入门https://github.com/PyTorchLightning/pytorch-lightninghttps://pytorch-lightning.readthedocs.io/en/latest/index.html
