一行代码安装,TPU也能运行PyTorch,修改少量代码即可快速移植

2020 年 2 月 28 日 量子位
晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

对于PyTorch开发者来说,Google Colab上的TPU资源不能用,恐怕是最遗憾的事情了。Google的云计算资源眼看着不能用,转TensorFlow又是不可能的。

过去一直有PyTorch用户试图在Colab上薅羊毛,但是都没有太成功的。

现在福利来了,一个叫做Pytorch Lightning的项目,可以让你几乎修改代码的情况下用上TPU。

Pytorch Lightning已经上传到PyPI,因此只需一行代码就能安装这个软件。

pip install pytorch-lightning

该项目的开发者William Falcon说,PyTorch Lightning是他在纽约大学和FAIR做博士生时研发,专门为从事AI研究的专业研究人员和博士生创建的。

几乎无需修改代码

首先让我们来看一个MNIST图像分类网络的搭建,PyTorch的原始代码和修改后的PyTorch Lightning代码几乎无异。

我们只需将nn.Module替换为pl.LightningModule即可。

作者表示,相比切换框架,用这种方法重构原来的代码只需数小时的时间。

PyTorch Lightning所做的是将科学代码与工程代码分离,只需将研究代码重构为LightningModule格式(科学),Lightning将自动完成其余部分(工程)。

使用方法

PyTorch Lightning具体该如何使用,作者Falcon还是以MNIST图像分类网络为例,介绍从收集数据到训练再到验证、测试的全过程。

准备数据集阶段分为下载图片、转换、分割数据集、打包四个步骤。二者代码大致相同,只是将PyTorch代码组织为4个函数:

prepare_data:此函数负责处理下载数据,确保使用多个GPU时,不会下载多个数据集或对数据进行双重操作。

train_dataloader,val_dataloader,test_dataloader:每一个都负责返回相应数据集的数据拆分。以这种方式进行构造训练、验证、测试集,可以让你非常清楚如何操作数据。

接下来是优化器的选择,比如选择Adam。两者的代码还是几乎完全相同,不过后者把pytorch_model改成了self。

至于损失函数,对于n向分类,要使用交叉熵损失。二者代码又几乎一致相同,后者多出一个self。

在训练上,PyTorch Lightning的代码更简洁一点。在PyTorch中,你需要自己编写for循环,这意味着你必须记住要以正确的顺序调用正确的东西,可能会导致错误。

而PyTorch Lightning将样板格式抽象化,但方框中的内容保持不变,增加了代码的可读性和可重复性。

后面验证推理的部分不再赘述。

总之,PyTorch Lightning有这些优点:

代码结构化;与PyTorch源代码几乎完全相同;随着项目复杂性的提升,代码的大部分内容无需修改;保留了PyTorch的灵活性。

新增高级功能,连Pytorch本尊都没有

除了以上的一些特性外,PyTorch Lightning还加入了许多高级功能,让你体验到PyTorch本身不具备的一些优点。

比如更清晰直观的训练进度条:

用TensorBoard日志记录代码运行全过程:

PyTorch Lightning还支持TensorBoard之外的其它5种工具记录日志:

与TensorBoard,MLFlow完全集成,并支持任何日志记录模块。

甚至还有一个内置的分析工具,告诉你训练过程中的瓶颈:

trainer = Trainer(…, profiler=True)

PyTorch Lightning还有更多的可扩展性,在这里无法一一介绍,如果你正想要在TPU上运行自己的PyTorch代码,可以前去学习更详细的用法。

传送门

项目地址:
https://github.com/PyTorchLightning/pytorch-lightning

Colab演示:
https://colab.research.google.com/drive/1-_LKx4HwAxl5M6xPJmqAAu444LTDQoa3#scrollTo=dEeUzX_5aLrX

—  —

疫情防控期间,家里的小朋友有点无聊?

推荐给7-12岁的小朋友,一个好玩又有趣的事情:在家学习编程。这是一个绝佳的逻辑思维、数理思维、计算思维的提升方式。

柯基少儿编程入门课限时优惠招生,一共七个课时,现在只需48元,而且学完课程学费全返!

欢迎爸爸妈妈们扫码查看、报名:

在家学编程 | 柯基编程双师互动课

AI内参 | 关注趋势,把握机遇

内参新升级!拓展优质人脉,获取最新AI资讯&论文教程,欢迎加入AI内参社群一起学习~

_

量子位 QbitAI · 头条号签约作者

_
_

վ'ᴗ' ի 追踪AI技术和产品新动态

_

喜欢就点「在看」吧 !

_


登录查看更多
0

相关内容

【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【干货书】高级应用深度学习,294页pdf
专知会员服务
151+阅读 · 2020年6月20日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
训练目标检测模型只需要这 6 行代码
AI科技评论
8+阅读 · 2019年8月19日
开发 | PyTorch好助手:PyTorch Hub一键复现各路模型
Mask R-CNN官方实现“又”来了!基于PyTorch,训练速度是原来2倍
机器学习算法与Python学习
5+阅读 · 2018年10月26日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
一文读懂PyTorch张量基础(附代码)
数据派THU
6+阅读 · 2018年6月12日
Pytorch还是Tensorflow?英伟达工程师帮你总结了
人工智能头条
5+阅读 · 2017年10月27日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【干货书】高级应用深度学习,294页pdf
专知会员服务
151+阅读 · 2020年6月20日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
【模型泛化教程】标签平滑与Keras, TensorFlow,和深度学习
专知会员服务
20+阅读 · 2019年12月31日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
相关资讯
相关论文
Top
微信扫码咨询专知VIP会员