雷锋网 AI 研习社按,上个月,Caffe2 代码正式并入 PyTorch,就在今天,Facebook AI 系统与平台部(AI Infra and Platform)副总 Bill Jia 发文表示,PyTorch 1.0 发布在即,全新的版本融合了 Caffe2 和 ONNX 支持模块化、面向生产的功能,并保留了 PyTorch 现有的灵活、以研究为中心的设计。Caffe2 作者贾扬清也在知乎表示,这篇文章是他对「如何看待 Caffe2 代码并入 PyTorch」的最新回答。
雷锋网 AI 研习社将正文编译整理如下:
纵观人工智能的发展之路,从研究到生产涉及到多个步骤和工具,为了提高系统的准确性和性能,需要不停测试新方法,不断进行部署和迭代,这一过程非常费时和复杂。
为了加速和优化这一流程,我们推出 PyTorch 1.0,它是 PyTorch 的最新版本。
PyTorch 1.0 结合了 Caffe2 和 ONNX 模块化、面向生产的性能,并将这些性能与 PyTorch 现有的灵活、以研究为中心的设计结合在一起,为从研究原型设计到生产部署大量 AI 项目提供快速、无缝的路径。
有了 PyTorch 1.0,AI 开发者可以通过混合前端在命令式和声明式执行模式之间无缝转换,从而快速实验、优化性能。
PyTorch 1.0 中的技术已经为大量 Facebook 产品和服务赋能,包括每天 60 亿次的文本翻译。
我们将在未来几个月内推出 PyTorch 1.0 测试版,会发布一系列工具、库、预训练模型、每个开发阶段的数据集,使得社群能大规模地快速创建和部署新的 AI 产品。
从研究到生产之路
得益于 PyTorch 命令式前端灵活和高效的编程模型,大家可以更快速地进行原型设计和实验。
PyTorch 初版在一年多前推出,它的速度、生产力和支持动态图等前沿 AI 模型的优点,使它成为 AI 研究人员中流行和重要的开发工具。
它的下载量超过 110 万次,是上个月在 arxiv 上引用次数排名第二的深度学习框架,加州大学伯克利分校的计算机科学家们曾将 PyTorch 的动态图功能用于他们瞩目的 CycleGAN 图像转换研究中。
图: 利用 PyTorch 实现 CycleGAN 图像转换
尽管当前版本的 PyTorch 为 AI 研究和开发提供了很大的灵活性,但考虑到它与 Python 的紧密耦合,在大规模生产上想要保持高性能是个挑战。
我们经常需要将研究代码——训练脚本或训练好的模型——转换成 Caffe2 中的图表示,以便大规模生产。Caffe2 基于图的 executor 为开发人员提供最先进的优化功能,如图转换、高效内存重用和紧密的硬件接口集成。
Caffe2 项目于两年前启动,旨在规范我们的 AI 生产工具。现在 Facebook 的服务器正在用 Caffe2 运行神经网络,此外,全球范围内有超过 10 亿部手机(包括第八代 iPhone 和第 6 代 Android CPU)上都有用到 Caffe2。
今天,Caffe2 在所有模型上的预测量每天超过 200 万亿,无论模型大小,都能实现最优的生产性能。
在过去,从 PyTorch 到 Caffe2 之间迁徙,进行传送和生产,是时间密集型的人工过程,容易出错。为了解决这个问题,我们与一些硬件和软件公司合作推出了 ONNX(Open Neural Network Exchange),这是一种表示深度学习模型的开放格式。
有了 ONNX,开发人员可以在不同框架之间共享模型,例如,导出在 PyTorch 中构建的模型,并将它们导入到 Caffe2 中。这使得 Facebook 能在大规模服务器和移动端部署时更流畅地进行 AI 研究、训练和推理。
我们已经使用了这些工具(PyTorch、Caffe2 和 ONNX)来构建和部署 Translate,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,我们还将开源许多我们目前频繁使用的 AI 工具,包括 Translate——一个 PyTorch 库——用于快速、灵活的神经机器翻译,新一代 ELF——一个用于 AI 推理应用的综合游戏平台。
开发人员还可以使用类似 Glow(一种机器学习编译器,可以在不同硬件平台上提升框架性能)的工具,还有 Tensor Comprehensions(从高级数学运算中自动生成高效 GPU 代码的工具)。
我们也开源了其他库,比如 Detectron,它用于对象检测研究,可以输出边框和对象实例分割结果。
大家可以访问 facebook.ai/developers(Facebook AI 开发者网站)查看完整开源名单,可以在 PyTorch 和 Caffe2 博客上了解更多关于 PyTorch 的信息。
接下来几个月,我们将重构和统一 Caffe2 与 PyTorch 0.4 的代码库,删除重复组件、共享抽象。最终,将产生一个支持高效的图模式执行,包括性能分析、移动端部署、广泛集成等的统一框架。
与 ONNX 等其他开放 AI 项目一样,我们也与其他公司和社群合作,为更多开发人员提供这种加速研究到生产的能力。
现在,微软计划在 Azure 云和开发者产品(包括 Azure Machine Learning 服务和 Data Science Virtual Machines)上支持 PyTorch 1.0。亚马逊 Web Services 目前已经支持最新版本的 PyTorch 并在 P3 GPU 实例上进行了优化,他们计划在 PyTorch 1.0 可用之后尽快在其云产品(包括 Amazon Machine Image)上提供支持。
这仅仅是个开始,我们希望创建和共享更好的 AI 编程模型、接口和自动优化工具。现今,AI 是 Facebook 的一项基础性技术,它使现有的产品更好,是构建全新体验的力量之源。大家可以在论文、代码和模型上看到我们的工作,我们可以与所有的 AI 研究人员和实践者一起研究,以更快地推进最先进的技术,并以全新的方式帮助应用这些技术。
雷锋网 AI 研习社编译整理。