0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让PyTorch 使用更轻便的深度学习框架

数据分析与开发 来源:数据分析与开发 作者:量子位 2020-08-27 15:47 次阅读

一直以来,PyTorch就以简单又好用的特点,广受AI研究者的喜爱。 但是,一旦任务复杂化,就可能会发生一系列错误,花费的时间更长。 于是,就诞生了这样一个“友好”的PyTorch Lightning。

直接在GitHub上斩获6.6k星。

首先,它把研究代码与工程代码相分离,还将PyTorch代码结构化,更加直观的展现数据操作过程。 这样,更加易于理解,不易出错,本来很冗长的代码一下子就变得轻便了,对AI研究者十分的友好。 话不多说,我们就来看看这个轻量版的“PyTorch”。

关于Lightning

Lightning将DL/ML代码分为三种类型:研究代码、工程代码、非必要代码。 针对不同的代码,Lightning有不同的处理方式。 这里的研究代码指的是特定系统及其训练方式,比如GAN、VAE,这类的代码将由LightningModule直接抽象出来。 我们以MNIST生成为例。

l1 = nn.Linear(...)l2 = nn.Linear(...)decoder = Decoder()
x1 = l1(x)x2 = l2(x2)out = decoder(features, x)
loss = perceptual_loss(x1, x2, x) + CE(out, x)

而工程代码是与培训此系统相关的所有代码,比如提前停止、通过GPU分配、16位精度等。 我们知道,这些代码在大多数项目中都相同,所以在这里,直接由Trainer抽象出来。

model.cuda(0)x = x.cuda(0)
distributed = DistributedParallel(model)
with gpu_zero:download_data()
dist.barrier()

剩下的就是非必要代码,有助于研究项目,但是与研究项目无关,可能是检查梯度、记录到张量板。此代码由Callbacks抽象出来。

# log samplesz = Q.rsample()generated = decoder(z)self.experiment.log('images', generated)

此外,它还有一些的附加功能,比如你可以在CPU,GPU,多个GPU或TPU上训练模型,而无需更改PyTorch代码的一行;你可以进行16位精度训练,可以使用Tensorboard的五种方式进行记录。 这样说,可能不太明显,我们就来直观的比较一下PyTorch与PyTorch Lightning之间的差别吧。

PyTorch与PyTorch Lightning比较

直接上图。

我们就以构建一个简单的MNIST分类器为例,从模型、数据、损失函数、优化这四个关键部分入手。

模型

首先是构建模型,本次设计一个3层全连接神经网络,以28×28的图像作为输入,将其转换为数字0-9的10类的概率分布。

两者的代码完全相同。意味着,若是要将PyTorch模型转换为PyTorch Lightning,我们只需将nn.Module替换为pl.LightningModule。 也许这时候,你还看不出这个Lightning的神奇之处。不着急,我们接着看。

数据

接下来是数据的准备部分,代码也是完全相同的,只不过Lightning做了这样的处理。 它将PyTorch代码组织成了4个函数,prepare_data、train_dataloader、val_dataloader、test_dataloader。

prepare_data 这个功能可以确保在你使用多个GPU的时候,不会下载多个数据集或者对数据进行多重操作。这样所有代码都确保关键部分只从一个GPU调用。 这样就解决了PyTorch老是重复处理数据的问题,这样速度也就提上来了。 train_dataloader, val_dataloader, test_dataloader 每一个都负责返回相应的数据分割,这样就能很清楚的知道数据是如何被操作的,在以往的教程里,都几乎看不到它们的是如何操作数据的。 此外,Lightning还允许使用多个dataloaders来测试或验证。

优化

接着就是优化。

不同的是,Lightning被组织到配置优化器的功能中。如果你想要使用多个优化器,则可同时返回两者。

损失函数

对于n向分类,我们要计算交叉熵损失。两者的代码是完全一样的。

此外,还有更为直观的——验证和训练循环。

在PyTorch中,我们知道,需要你自己去构建for循环,可能简单的项目还好,但是一遇到更加复杂高级的项目就很容易翻车了。 而Lightning里这些抽象化的代码,其背后就是由Lightning里强大的trainer团队负责了。

PyTorch Lightning安装教程

看到这里,是不是也想安装下来试一试。 PyTorch Lightning安装十分简单。 代码如下:

conda activate my_envpip install pytorch-lightning

或在没有conda环境的情况下,可以在任何地方使用pip。 代码如下:

pip install pytorch-lightning

创建者也有大来头

William Falcon,PyTorch Lightning 的创建者,现在在纽约大学的人工智能专业攻读博士学位,在《福布斯》担任AI特约作者。 2018年,从哥伦比亚大学计算机科学与统计学专业毕业,本科期间,他还曾辅修数学。 现在已获得Google Deepmind资助攻读博士学位的奖学金,去年还收到Facebook AI Research实习邀请。 此外,他还曾是一个海军军官,接受过美国海军海豹突击队的训练。

前不久,华尔街日报就曾还曾提到这个团队,他们正在研究呼吸系统疾病与呼吸模式之间的联系。可能会应用到的场景,是通过电话在诊断新冠症状。目前,该团队还处在数据收集阶段。 果然,优秀的人,干什么都是优秀的。叹气……


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1776

    文章

    43845

    浏览量

    230596
  • 深度学习
    +关注

    关注

    73

    文章

    5237

    浏览量

    119908
  • pytorch
    +关注

    关注

    2

    文章

    761

    浏览量

    12831

原文标题:让 PyTorch 更轻便,这款深度学习框架你值得拥有!在GitHub上斩获 6.6k 星

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Nanopi深度学习之路(1)深度学习框架分析

    就能实现!还请关注我后面的日记。实际上我也是刚刚有时间学习深度学习,我是个纯初学者,但面对深度学习里的各种复杂理论和公式推导,自己实现个小功
    发表于 06-04 22:32

    迅为RK3399开发板人工智能深度学习框架

    `迅为率先在RK3399 开发板上支持了Docker、TensorFlow目标检测API、OpenCV、Keras、scikit-learn、pytorch和Python等,组成了人工智能深度学习
    发表于 05-21 17:28

    为什么学习深度学习需要使用PyTorch和TensorFlow框架

    如果你需要深度学习模型,那么 PyTorch 和 TensorFlow 都是不错的选择。 并非每个回归或分类问题都需要通过深度学习来解决。
    的头像 发表于 09-14 10:57 3221次阅读

    天才黑客George Hotz开源了一个小型深度学习框架tinygrad

    最近,天才黑客 George Hotz 开源了一个小型深度学习框架 tinygrad,兼具 PyTorch 和 micrograd 的功能。tinygrad 的代码数量不到 1000
    的头像 发表于 12-16 09:36 3928次阅读

    基于PyTorch深度学习入门教程之PyTorch的安装和配置

    神经网络结构,并且运用各种深度学习算法训练网络参数,进而解决各种任务。 本文从PyTorch环境配置开始。PyTorch是一种Python接口的深度
    的头像 发表于 02-16 15:15 2230次阅读

    基于PyTorch深度学习入门教程之PyTorch简单知识

    是一个基于Python的科学计算框架,用于进行深度学习相关研究。对于Python语言的入门,可以参考之前的两篇介绍PythonNumpy的博客。分别是Python Numpy 教程(
    的头像 发表于 02-16 15:20 2004次阅读

    八种主流深度学习框架的介绍

    导读:近几年随着深度学习算法的发展,出现了许多深度学习框架。这些框架各有所长,各具特色。常用的开
    的头像 发表于 04-26 18:45 7433次阅读

    PyTorch开源深度学习框架简介

    PyTorch 是一种开源深度学习框架,以出色的灵活性和易用性著称。这在一定程度上是因为与机器学习开发者和数据科学家所青睐的热门 Pytho
    的头像 发表于 07-29 10:26 3716次阅读

    深度学习框架PyTorch和TensorFlow如何选择

    在 AI 技术兴起后,深度学习框架 PyTorch 和 TensorFlow 两大阵营似乎也爆发了类似的「战争」。这两个阵营背后都有大量的支持者,并且他们都有充足的理由来说明为什么他们
    发表于 02-02 10:28 865次阅读

    ​计算机视觉深度学习训练推理框架

    PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,也是目前使用范围和体验感最好的一款深度
    的头像 发表于 05-08 14:20 824次阅读
    ​计算机视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b>训练推理<b class='flag-5'>框架</b>

    PyTorch教程5.5之深度学习中的泛化

    电子发烧友网站提供《PyTorch教程5.5之深度学习中的泛化.pdf》资料免费下载
    发表于 06-05 15:31 1次下载
    <b class='flag-5'>PyTorch</b>教程5.5之<b class='flag-5'>深度</b><b class='flag-5'>学习</b>中的泛化

    PyTorch教程12.1之优化和深度学习

    电子发烧友网站提供《PyTorch教程12.1之优化和深度学习.pdf》资料免费下载
    发表于 06-05 15:08 0次下载
    <b class='flag-5'>PyTorch</b>教程12.1之优化和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>

    深度学习框架pytorch入门与实践

    深度学习框架pytorch入门与实践 深度学习是机器学习
    的头像 发表于 08-17 16:03 1196次阅读

    深度学习框架是什么?深度学习框架有哪些?

    深度学习框架是什么?深度学习框架有哪些?  深度
    的头像 发表于 08-17 16:03 1772次阅读

    深度学习框架pytorch介绍

    深度学习框架pytorch介绍 PyTorch是由Facebook创建的开源机器学习
    的头像 发表于 08-17 16:10 1136次阅读