新智元报道
来源:code.fb.com
编辑:肖琴
昨天,在 NeurIPS 大会上,Facebook 正式发布 PyTorch 1.0 稳定版!
这距离 PyTorch 1.0 预览版发布仅仅过去了两个月。PyTorch 1.0 预览版首次发布是在 10 月份的 PyTorch 开发者大会,新增了面向生产的特征和主要云平台的支持等功能,被认为 90% 的功能能经受住业界的考验。
题外话,NeurIPS 大会上,同一天 TensorFlow 团队和 PyTorch 团队先后有一个演讲,介绍他们的框架。网友表示,这就像现实版的 “Mac 和 PC 之争”(PyTorch 是 Mac)。TensorFlow 2.0 将在 2019 年正式发布。
回到 PyTorch1.0,研究人员和工程师现在可以轻松地充分利用这个开源深度学习框架的新特性,包括一个用于 eager 和 graph execution 模型无缝转换的 hybrid 前端,改进的分布式训练,用于高性能研究的纯 C++ 前端,以及与云平台的深度集成。
PyTorch团队主要成员,包括贾扬清
此外,PyTorch 1.0 加速了 AI 从研究原型开发到生产部署的工作流程,并使其更容易入门。在过去几个月,初学者通过各种教育项目快速开始使用 PyTorch,专家们构建各种创新项目,将框架扩展到从自然语言处理到概率编程的各个领域。
PyTorch 1.0 稳定版增加了一系列新功能,包括 JIT Compiler,全新的分布式包、C++ 前端,以及 Torch Hub。以及大量更新、新增特征、bug修复等:
地址:
https://github.com/pytorch/pytorch/releases/tag/v1.0.0
JIT
JIT 是一组编译器工具,用于缩小 PyTorch 在研究和生产上的鸿沟。它允许创建可以在不依赖 Python 解释器的情况下运行的模型,并且可以更积极地优化这些模型。
使用程序注释可以将现有模型转换为 Torch 脚本,这是 PyTorch 可以直接运行的 Python 子集。模型代码仍然是有效的 Python 代码,并且可以使用标准 Python 工具链进行调试。
PyTorch 1.0 提供了两种方法使现有代码与 JIT 兼容的方法,torch.jit.trace 或 torch.jit.script。一旦加上注释,Torch Script 代码就可以被积极地优化,并且可以序列化,以便在新的 c++ API 中使用。这个 API 完全不依赖 Python。
全新的分布式包
torch.distributed 软件包和 torch.nn.parallel.DistributedDataParallel 模块由全新的、重新设计的分布式库提供支持。新的库的主要亮点有:
新的 torch.distributed 是性能驱动的,并且对所有后端 (Gloo,NCCL 和 MPI) 完全异步操作。
显着的分布式数据并行性能改进,尤其适用于网络较慢的主机,如基于以太网的主机。
为 torch.distributedpackage 中的所有分布式集合操作添加异步支持。
在 Gloo 后端添加以下 CPU 操作:send,recv,reduce,all_gather,gather,scatter
在 NCCL 后端添加 barrier 操作
为 NCCL 后端添加 new_group 支持
C++ 前端
C ++ 前端是 PyTorch 后端的纯 C ++ 接口,它遵循已建立的 Python 前端的 API 和体系结构。它旨在实现高性能、低延迟和裸机 C ++ 应用程序的研究。它提供了 torch.nn,torch.optim,torch.data 和 Python 前端的其他组件的对应版本。以下是两种语言前端的比较:
作为 PyTorch 1.0 的一部分,我们发布的是标记有 “API Unstable” 的 C ++ 前端。这意味着它已准备好用于你的研究应用程序,但仍有一些不稳定,我们将在接下来的几个版本中稳定下来。在此期间,API 的某些部分可能会发生大的更改。
Torch Hub
Torch Hub 是一个预训练的模型库,旨在促进研究的可重复性。
Torch Hub 支持使用简单的 hubconf.py 文件将预训练的模型(模型定义和预训练的权重)发布到 github 存储库; 以 pytorch/vision 中的 resnet 模型为例,请参阅 hubconf for resnet models in pytorch/vision。
发布后,用户可以使用 torch.hub.load API 加载预先训练的模型。更多详细信息,请阅读 torch.hub 文档。
PyTorch 在 2017 年初首次推出,很快成为 AI 研究人员的热门选择。他们发现,由于其灵活、动态的编程环境和用户友好的界面,PyTorch 是快速实验的理想选择。从那时起,这个社区迅速发展起来。
PyTorch 现在是 GitHub 上增长速度第二快的开源项目,在过去的 12 个月里,贡献者增加了 2.8 倍。
此外,Facebook 提供了一系列教育项目,帮助开发人员更轻松地学习如何使用 PyTorch 构建、训练和部署机器学习模型。
上个月,Udacity 和 Facebook 联合推出一门新课程——PyTorch 深度学习入门 (Introduction to Deep Learning with PyTorch),以及 PyTorch Challenge Program,该项目旨在为继续接受 AI 教育提供奖学金。仅仅几个星期,已经有全球各地成千上万的学生在网上积极学习。
所有人都可以通过 Udacity 网站免费获得完整的课程,更高级的 PyTorch 课程则将很快通过 Udacity 的 AI 纳米学位提供。
除了在线教育课程,fast.ai 等组织还提供了一些软件库来支持开发人员学习如何使用 PyTorch 构建神经网络。fastai 是一个简化训练神经网络的库,自从两个月前发布以来,已经在 GitHub 上获得了 10000 颗星星。
我们非常高兴看到开发人员使用这个库取得的成功。例如,Santhosh Shetty 使用 fastai 将灾后损伤等级分类的准确率提高了一倍;Alena Harley 将肿瘤正常测序的假阳性率降低了 7 倍;Jason Antic 创建了一个名为 DeOldify 的项目,使用深度学习对旧图像进行着色和恢复。
图片由 Jason Antic 提供
PyTorch 已经被应用于从图像识别到机器翻译的各种用例。因此,我们看到来自开发者社区的各种各样的项目,这些项目扩展并支持了 PyTorch 开发。其中一些项目包括:
Horovod——一个分布式训练框架,它使开发人员可以轻松地使用单个 GPU 程序,并在多个 GPU 上快速进行训练。
PyTorch Geometry——PyTorch 的几何计算机视觉库,提供一组例程和可微分模块。
TensorBoardX—一个将 PyTorch 模型记录到 TensorBoard 的模块,允许开发人员使用可视化工具进行模型训练。
此外,Facebook 的团队也在为 PyTorch 构建和开源项目,比如 Translate,这是一个基于 Facebook 机器翻译系统的用于训练 sequence-to-sequence 模型的库。
为了使 PyTorch 更易于访问和用户友好,我们继续深化与云平台和服务的合作,例如 Amazon Web services、Google Cloud Platform 和 Microsoft Azure。
就在最近,AWS 推出了支持 PyTorch 的 Amazon SageMaker Neo,允许开发人员在 PyTorch 中构建机器学习模型,一次训练后即可部署到云或边缘的任何地方,并且性能提高了两倍。
开发人员现在还可以通过创建一个新的深度学习 VM 实例,在谷歌云平台上试用 PyTorch 1.0。
此外,微软的 Azure 机器学习服务现在已经普遍可用,它允许数据科学家在 Azure 上无缝地训练、管理和部署 PyTorch 模型。使用该服务的 Python SDK, PyTorch 开发人员可以利用按需分布式计算功能,用 PyTorch 1.0 大规模训练模型,以加速生产过程。
链接:
https://code.fb.com/ai-research/pytorch-developer-ecosystem-expands-1-0-stable-release/
https://github.com/pytorch/pytorch/releases/tag/v1.0.0
【加入社群】
新智元 AI 技术 + 产业社群招募中,欢迎对 AI 技术 + 产业落地感兴趣的同学,加小助手微信号:aiera2015_2 入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名 - 公司 - 职位;专业群审核较严,敬请谅解)。