[导读] 今天,Facebook正式公布PyTorch 1.0,这是将基于Python的PyTorch与Caffe2合并的一个新版本的框架,让开发者可以无缝地将AI模型从研究转到生产,而无需处理迁移。“现在,你只需要使用PyTorch 1.0,就可以在一个框架中无缝地进行从研究到生产的全部过程,而不需要为训练/研究和生产分别选择框架。”Facebook发言人在F8大会上说。
今天,Facebook正式公布PyTorch 1.0,这是将基于Python的PyTorch与Caffe2合并的一个新版本的框架,让开发者可以无缝地将AI模型从研究转到生产,而无需处理迁移。
“现在,你只需要使用PyTorch 1.0,就可以在一个框架中无缝地进行从研究到生产的全部过程,而不需要为训练/研究和生产分别选择框架。”Facebook发言人在F8大会上说。
Facebook去年与微软合作推出开放神经网络交换(ONNX)格式,这是一个用于表示深度学习模型的标准,旨在使不同框架之间的移动更加简单。现在,Facebook已经将ONNX整合到PyTorch 1.0中,使模型能够与其他框架进行互操作,并且开发人员可以“混合搭配”。
Facebook还表示,将统一PyTorch 0.4和Caffe2的代码库,以创建一个统一的框架,支持多种功能,包括高效的图形模式执行、分析、移动部署等。
PyTorch 1.0将在未来几个月内发布,据悉,微软计划在Azure中支持该框架,亚马逊也将在其云产品中支持PyTorch 1.0。
PyTorch官方博客介绍了PyTorch 1.0的更多细节:
生产性:在PyTorch 1.0中,你的代码可以继续按原样运行,我们没有对现有的API做任何大更改。如果你不需要优化或导出模型,则不必使用这些新功能,也不会有任何缺点。此外,可以逐步使用 traced或@script模块/函数。
JIT编译器:使用torch.jit编译器将模型导出到非Python环境,并提高其性能。对于不包含循环和if语句的网络,trace是非侵入式的,并且足够稳健,可以处理各种编码风格;对于主要使用控制流的模型(如RNN),我们的解决方案是脚本模式(@script)。
优化和导出:Caffe2 / ONNX中模型的python-free 表示
后端:我们正在替换(或重构)后端ATen库,以整合来自Caffe2的功能和优化。
Timeline:我们的目标是在今年夏天推出 PyTorch 1.0。
PyTorch 1.0:一个框架实现AI从研究到生产的全过程
AI的开发从研究到生产的过程,涉及多个步骤和工具,这使得测试新方法、部署它们,以及迭代以提高准确性和性能都非常耗时而且复杂。为了帮助加速和优化这个过程,我们推出PyTorch 1.0。
PyTorch 1.0采用了Caffe2和ONNX的模块化、面向生产的功能,并将它们与PyTorch现有的灵活的、侧重于研究的设计结合起来,为各种AI项目提供从研究原型到生产部署的快速、无缝的路径。
使用PyTorch 1.0,AI开发人员可以通过在命令式执行模式和声明式执行模式之间无缝切换的混合前端进行快速实验和性能优化。PyTorch 1.0中的技术已经为Facebook的许多产品和服务提供支持,包括每天执行60亿次的文本翻译。
PyTorch 1.0将在未来几个月内推出,并将包含一系列工具、库、预训练的模型和各个开发阶段的数据集,使社区能够大规模地快速创建和部署新的AI创新。
从研究到生产的路径
PyTorch的命令式前端通过其灵活且高效的编程模型实现了更快速的原型设计和实验。PyTorch的第一个版本是在一年前推出的,它的快速、高效和支持动态图等先进AI模型的能力使其迅速成为广受AI研究人员欢迎的重要开发工具。PyTorch的下载量已经超过110万次,是ArXiv上个月引用量第二大的深度学习框架。例如,加州大学伯克利分校的计算机科学家将PyTorch的动态图功能用于他们的CycleGAN image-to-image转换的工作。
CycleGAN的PyTorch实现
尽管当前版本的PyTorch为AI的研究和开发提供了很大的灵活性,但由于它与Python的紧密结合,在生产规模上的性能有时是一个挑战。我们经常需要将研究代码(训练脚本或训练模型 )翻译成Caffe2的图形模式表示,以便在生产规模上运行。Caffe2的基于图形的执行程序允许开发者利用先进的优化方式,例如图形转换、高效的内存重用以及紧密的硬件接口集成。
Caffe2项目是两年前推出的,目的是使我们的生产AI工具标准化,现在它已经在Facebook服务器和世界范围超过10亿部手机上运行神经网络,跨越8代iPhone和6代Android CPU架构。今天,Caffe2每天在各种大小模型提供超过200万亿次的预测,并优化生产性能。
从PyTorch迁移到Caffe2以进行生产,以前这是一个手动的过程,耗时多且容易出错。为了解决这个问题,我们与主要的硬件和软件公司合作创建了ONNX(开放式神经网络交换),这是一种表示深度学习模式的开放式格式。借助ONNX,开发人员可以在不同框架之间共享模型,例如,导出使用PyTorch构建的模型并将其导入Caffe2。
我们已经使用这些工具(PyTorch,Caffe2和ONNX)来构建和部署Translate,这个工具现在可以对Facebook上48种最常用语言的进行翻译。在VR方面,这些工具对于将Oculus的新研究部署到生产中至关重要。
但是,尽管这三种不同工具的组合是有效的,但仍然存在手工步骤复杂、耗费时间长等问题。因此,仅仅是将这些工具组合还无法像我们期待的那样无缝地将AI的研究创新带入生产过程。
在一个框架中统一研究和生产的能力
PyTorch 1.0将即时模式和图形执行模式融合在一起,为生产的研究和性能优化提供了灵活性。更具体地说,PyTorch 1.0不是强制开发者重写整个代码以实现优化或从Python迁移,而是提供了一个混合的前端,使开发者能够在用于原型制作的即时模式和用于生产的图形执行模式之间无缝地共享大部分代码。
此外,ONNX本身被加入到PyTorch 1.0中作为一种模型输出格式,这使得PyTorch 1.0中的模型可与其他AI框架进行互操作。ONNX还可用作加速运行时间或硬件特定库的集成接口。这使得开发人员可以完全自由地混合和匹配最佳的AI框架和工具,而无需采用资源密集型的定制工程。Facebook将支持ONNX的新特征和功能,ONNX仍然是一种强大的开放格式,同时也是使用PyTorch 1.0进行开发的重要组成部分。
构建一个端到端的深度学习系统
除了PyTorch 1.0之外,Facebook还开源了多个AI工具,包括Translate——一个PyTorch语言库,用于快速、灵活的神经机器翻译;以及下一代ELF——一个综合的AI推理应用游戏平台。开发人员还可以利用Glow这样机器学习编译器,可以加速不同硬件平台上的框架性能;还可以使用Tensor Comprehensions这种自动生成高级数学运算的高效GPU代码的工具。Facebook也开源了其他库,如Detectron,支持对象检测研究,涵盖了边界框和对象实例分割输出。
Facebook推出一个AI开发者网站,列举了所有这些开源工具:
facebook.ai/developers
在接下来的几个月中,我们将重构并统一Caffe2和PyTorch 0.4框架的代码库。最终将形成一个统一的框架,支持高效的图形模式执行,包括profiling,移动部署,广泛的vendor集成等。与ONNX等其他开放式AI计划一样,我们也与其他公司和社区合作,为更多开发者提供这些加速研究的生产能力。首先,微软计划在他们的Azure云和开发者产品中支持PyTorch 1.0,包括Azure机器学习服务和数据科学虚拟机;Amazon Web Services目前支持最新版本的PyTorch,针对P3 GPU实例进行了优化,并计划在其云产品发布后不久支持 PyTorch 1.0,其中包括其深度学习AMI(Amazon Machine Image)。