PyTorch Lightning 0.9发布
2020-09-02
来源:雷锋网
最新的PyTorch Lightning发行版本包括了具有更好的数据解耦,更短的日志记录语法和大量bug修复的最终API。
我们很高兴今天发布了PyTorch Lightning 0.9.0,其中包含了许多超赞的新特性,并且我们这次修复的bug比之前任何的发行版本都多,但最重要的是介绍了我们主要的最终API更改!
Lightning正在被世界各地的顶级研究人员和人工智能实验室所使用,我们正在努力确保为所有最新最佳的实践提供流畅的体验和支持。
在这个版本中,我们引入了两个新的主要的(也是最后一个)API更改:
Lightning 的意义就是让你的代码更具可读性和结构化。
我们将模型架构从工程中分离出来,并且继续对数据进行同样的处理。为了在项目间共享和重用数据分割和转换,我们创建了LightningDataModule。
LightningDataModule 是一个可共享、可重用的类,它封装了训练所需的所有步骤:
下载/标记/处理。
清理并保存到磁盘以便重用。
在内存或即时加载到Dataset里。
应用变换(旋转,标记等)。
装载到Dataloader。
LightningDataModule 可以在任何地方共享和使用:
在这段视频中,PyTorch Lightning的深度学习研究工程师Nate Raw将为你一步步介绍:
介绍视频
你可以在这里查看有关新的数据模块(DataModule)的文档。
每步的结果
我们向Lightning中添加了两类新的结果对象:TrainResult和EvalResult。它们是用来保存训练/评估/测试每一步输出的精致的字典对象。它们是用来控制在哪里和什么时候记录日志,以及如何在加速器之间进行同步:
在 training_step 中使用 TrainResult 自动记录结果:
我们添加到 TrainResult 的 train_loss 会自动地在 tensorboard 上产生日志(你也可以使用我们支持的其他日志记录器)
TrainResult 默认在训练的每一步上记录。
使用EvalResult 在validation_step 或test_step 中自动记录
EvalResult 默认在每个迭代之后记录。
跨设备同步
当在多个GPU/CPU/TPU内核上进行训练时,你可以计算记录的日志指标的全局平均值,如下所示:
result.log(‘train_loss', loss, sync_dist=True)
更多日志选项,请查看我们的文档。
0.9版本的其他亮点包括:
支持PyTorch 1.6
支持在多GPU上保存测试时的预测结果
支持将模型导出为ONNX格式
支持更多sklearn的指标,如SSIM, BLEU
增加了DDP下的SyncBN
支持通过gfile访问远程目录
在这里阅读完整的发布说明。
我们还升级了我们的文档,在几秒钟视频内就可以演示 Lightning 的核心功能!看看它们吧,让我们知道你接下来还想看到什么!
我们要感谢所有无私奉献的贡献者,感谢他们的辛勤工作,感谢社会各界的帮助。如果没有你们,我们肯定走不到这一步。试一试,在我们的#slack上分享你的项目,并继续关注我们的下一个1.0版本!
雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。
团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。