白交 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

一直以来,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 samples
z = 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_env
pip install pytorch-lightning

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

代码如下:

pip install pytorch-lightning

创建者也有大来头

William Falcon,PyTorch Lightning 的创建者,现在在纽约大学的人工智能专业攻读博士学位,在《福布斯》担任AI特约作者。

2018年,从哥伦比亚大学计算机科学与统计学专业毕业,本科期间,他还曾辅修数学。

现在已获得Google Deepmind资助攻读博士学位的奖学金,去年还收到Facebook AI Research实习邀请。

此外,他还曾是一个海军军官,接受过美国海军海豹突击队的训练。

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

果然,优秀的人,干什么都是优秀的。叹气……

怎么样,是不是想试一试?赶紧戳下方链接下载来看看吧!

上手传送门

https://github.com/PyTorchLightning/pytorch-lightning

https://pytorch-lightning.readthedocs.io/en/latest/index.html

创建者个人网站:

https://www.williamfalcon.com/

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

喜欢就点「在看」吧 !

让PyTorch更轻便,这款深度学习框架你值得拥有!在GitHub上斩获6.6k星相关推荐

  1. 让 PyTorch 更轻便,这款深度学习框架你值得拥有!在 GitHub 上斩获 6.6K 星

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 一直以来,PyTorch就以简单又好用的特点,广受AI研究者的喜爱. 但是,一旦任务复杂化,就可能会发生一系列错误,花费的时间更长. 于是 ...

  2. 4款深度学习框架简介,初学者该如何选择?

    导读:近几年,随着深度学习爆炸式发展,在人工智能领域除了理论方面的突破外,还有基础架构的突破,它们奠定了深度学习繁荣发展的基础.这其中涌现了几个著名的深度学习平台,本文将对这些平台进行逐一介绍. 作者 ...

  3. pytorch cpu版本安装_pytorch深度学习框架--gpu和cpu的选择

    最近实现了一个简单的手写数字识别的程序,我安装的pytorch是gpu版(你也可以安装cpu版本的,根据个人需要),这里我介绍pytorch的gpu版本和cpu版本的安装以及训练手写数字识别时gpu和 ...

  4. 又是华为!对标 TensorFlow、PyTorch,深度学习框架 MindSpore已开源!附入手公开课...

    Datawhale 作者:Datawhale 摘要:随着深度学习框架等工具的全面开源,最强 AI 处理芯片昇腾的落地,华为的 AI 布局已经逐渐清晰起来,MindSpore 将为各行业带来哪些新变化, ...

  5. 清华自研深度学习框架「计图」开源!多项任务性能超过PyTorch

    2020-03-20 11:42:07 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI框架,又来重磅中国玩家. 刚刚,清华自研的深度学习框架,正式对外开源."贵系&quo ...

  6. 【深度学习】基于PyTorch深度学习框架的序列图像数据装载器

    作者 | Harsh Maheshwari 编译 | VK 来源 | Towards Data Science 如今,深度学习和机器学习算法正在统治世界.PyTorch是最常用的深度学习框架之一,用于 ...

  7. Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器

    Apache Spark 2.4.0是2.x系列中的第五个版本.此版本增加了屏障执行模式,以便更好地与深度学习框架集成:引入30多个更高阶的内置函数,能够更轻松地处理复杂数据类型:优化K8s集成,同时 ...

  8. 实现AI技术自立自强,国产深度学习框架面临三大难题

    作为推动AI应用大规模落地的关键力量,深度学习框架的重要性日益凸显.它不仅关系国计民生的行业和领域广泛的应用,同样也对信息系统的科技安全有着决定性的意义. "深度学习框架在人工智能技术体系中 ...

  9. 原创 | 深度学习框架比较,我该选择哪一个?

    近年来,深度学习在很多机器学习领域都有着非常出色的表现,在图像识别.语音识别.自然语言处理.机器人.网络广告投放.医学自动诊断和金融等领域有着广泛应用.面对繁多的应用场景,深度学习框架有助于建模者节省 ...

最新文章

  1. vivado点击xsetup.exe没有反应 最终版
  2. 论文浅尝 - EMNLP | 通过元强化学习实现少样本复杂知识库问答
  3. (转)Bootstrap 之 Metronic 模板的学习之路 - (2)源码分析之 head 部分
  4. BP神经网络算法:将参数矩阵向量化
  5. Python之路(第十六篇)xml模块、datetime模块
  6. byte[]与Image Image与 byte[] 之间的转换
  7. Ajax请求中的Redirect()
  8. 跨境电商热之下推ShopExpress,微盟靠什么出海寻新增量?
  9. 显示器突然黑屏怎么办
  10. 【U+】通用财务,附加数据库后,软件看不到账套。
  11. 数据结构和算法 数论 素数/质数、回文素数
  12. Leetcode 781 森林中的兔子
  13. 2020年度中职组“网络空间安全”赛项xx市竞赛任务书
  14. python中的ide是什么意思_用于Python的IDE是什么?
  15. python怎么判断实数_检查python对象是否可以解释为实数[python]
  16. 聚会邀请html源码,聚会邀请短信
  17. 51单片机小白零基础教程——点亮第一个小灯以及流水灯(附原理图、代码详细讲解)
  18. 屏蔽拦截广告(二、Android软件推荐)
  19. 5.1.3 主消费者执行分配任务
  20. java腾讯地图根据经纬度获取具体位置

热门文章

  1. 【ACM】POJ 1852
  2. 奉劝程序员们:写再多代码,还不如提升这两大能力有价值!
  3. 强化学习70年演进:从精确动态规划到基于模型
  4. 作为一名程序员,数学到底对你有多重要?
  5. 10亿美元续命!OpenAI获微软投资,意在通用人工智能?
  6. FRVT赛程全纪录:格灵深瞳全球排名前五
  7. 刘铁岩:AI打通关键环节,加快物流行业数字化转型
  8. 美亚Kindle排名第一的Python 3入门书,火遍了整个编程圈
  9. 今晚直播 | 谷歌资深工程师手把手教你使用TensorFlow最新API构建学习模型
  10. 谷歌无人车之父刚推出的“无人驾驶入门”课,到底能学到啥?