无缝整合PyTorch 0.4与Caffe2,PyTorch 1.0问世
Posted 兴海开放平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无缝整合PyTorch 0.4与Caffe2,PyTorch 1.0问世相关的知识,希望对你有一定的参考价值。
F8开发者大会第二天,Facebook亮出了一系列AI大动作。
Facebook 宣布近将开源 PyTorch 1.0 框架,该框架是基于 PyTorch 与 Caffe2 的结合,允许开发人员无需迁移便从研究转向生产。
Facebook 去年与微软合作开源了开放神经网络交换(ONNX)系统,它使得在 Caffe2 和 PyTorch 之间共享信息变得更加容易。现在已经将 ONNX 整合到 PyTorch 1.0 中,ONNX 将作为 PyTorch 1.0 中的模型输出格式,以便模型可以与其他框架进行互操作。
Facebook 还表示,将在未来几个月内统一 PyTorch 0.4 和 Caffe2 的代码库,创建一个统一的框架,支持多种功能,包括高效的图形模式执行,分析,移动部署和广泛的供应商集成。
PyTorch 1.0 将于今年晚些时候发布。该公司表示,微软计划在 Azure 中支持该框架,并且亚马逊的网络服务都将支持PyTorch 1.0。
Facebook介绍说,PyTorch 1.0结合了Caffe2和ONNX模块化、面向生产的特性,和PyTorch自身灵活、面向研究的特性结合起来,为广泛的AI项目提供了一个从科研原型到生产部署的快速、无缝途径,让用户可以快速实验,通过一个能在强制执行模式和声明执行模式之间无缝切花的混合前端优化性能。
除了将研究和生产特性结合起来,PyTorch 1.0还将ONNX(开放神经网络交换)包含进来。ONNX是Facebook去年联合多家软硬件公司发布的神经网络模型转换协议,现在,它新增了对苹果的Core ML、百度PaddlePaddle、高通SNPE的支持,再加上原本支持的MXNet、Caffe2、PyTorch、TensorFlow、CNTK等框架,实现了神经网络模型在各种主流框架之间的转换。
PyTorch 1.0 beta版将在今年夏天和用户见面。
不过,Facebook内部已经用上了。官方称,Facebook多款产品和服务都在大规模应用这个新框架,它每天要处理60亿次文本翻译任务。
PyTorch最初亮相于1年多以前,Facebook的另一款深度学习框架Caffe2,则在去年的F8大会上正式发布。
不过今年4月,Caffe2已经宣布全部代码并入PyTorch。接下来的几个月里,两款框架原本的组件将深度结合,成为一个单独的软件包。
就在上周,PyTorch发布了v0.4.0版本,将Tensors(张量)和Variables(变量)合并,新增了零维张量,还开始了对Windows系统的官方支持。
从研究到产品
PyTorch 强大的前端允许其通过灵活而又高效的编程模型快速实现原型设计与实验。第一版 PyTorch 在一年前发布,但它的速度、生产力和支持动态计算图等顶尖 AI 模型等能力,令其快速成为 AI 研究者中的流行和重要开发工具。目前 PyTorch 有超过 110 万次的下载量,并且在过去的一个月中,它是 arXiv 上引用量第二多的深度学习框架。例如 UC 伯克利计算机科学家使用 PyTorch 的动态计算图构建他的 CycleGAN图像到图像的转换研究工作。
CycleGAN 的 PyTorch 实现已经被用于图像到图像的转换。
尽管当前版本的 PyTorch 为 AI 研究与开发提供了很大的灵活性,但由于与 Python 紧密结合,在生产上的性能有时是一项挑战。不论是训练脚本还是预训练模型,我们经常需要将研究代码转换为 Caffe2 中的计算图表征,因而能在生产规模上高效使用。Caffe2 基于计算图的执行器允许开发者利用顶尖的优化方法,例如计算图转换、高效的内存复用以及紧密的硬件接口集成。Caffe2 项目是两年前提出的,其目的是标准化 AI 模型的生产工具,目前该框架在 Facebook 服务器以及超过 10 亿台手机上运行,横跨了八代 iphone 和六代安卓 CPU 架构。Caffe2 目前每天在所有小或大模型上提供了 200 万亿次的预测,并优化了产品性能。
从 PyTorch 到 Caffe2 的迁移过程以前是手动的、耗时间的和容易出错的。为了解决这个问题,Facebook 与主要的硬件和软件公司合作创建了 ONNX(开放神经网络交换格式),这是一种用于表示深度学习模型的开放格式。通过 ONNX,开发者能在不同的框架间共享模型,例如我们可以导出由 PyTorch 构建的模型,并将它们导入到 Caffe2。在 Facebook 中,这令我们能在大规模服务器和移动端上快速实现 AI 的研究、训练和推断。
Facebook 已经用这些工具(PyTorch、Caffe2 和 ONNX)来构建和部署 Translate,这一工具能大规模运行并支持翻译 Facebook 中最常用的 48 种语言。在 VR 中,这些工具对于将基于 Oculus 的新研究部署到生产过程中至关重要。
然而,虽然结合这三种不同的工具是非常高效的,但仍然有非常多复杂且耗时的手动过程。因此它并不允许我们将 AI 研究创新无缝转换为产品。
在一个框架里统一研究和产能
PyTorch 1.0 融合了动态执行和图执行模式,为研究提供了灵活性,为产品提供了优化性能。具体来说,与其让开发者完全重写代码来进行优化或从 Python 迁移模型,PyTorch 1.0 提供了一个混合前端,使我们能在原型制作的动态执行模式和产品的图执行模式之间无缝地共享代码主体。
此外,ONNX 也被原生地编入了 PyTorch 1.0 作为模型导出格式,使来自 PyTorch 1.0 的模型可以和其它 AI 框架进行互操作。ONNX 还提供了整合接口以加速运行时或硬件特定的库。这给了开发者完全的自由度来混合、匹配最好的 AI 框架和工具,而不需要执行资源密集的自定义工程。Facebook 承诺在 ONNX 中支持新的特性和功能,它将继续作为强大的开放格式和 PyTorch 1.0 中的重要开发工具。
构建端到端深度学习系统
除了 PyTorch 1.0,Facebook 还开源了他们如今大规模使用的多个 AI 工具。其中包括 Translate(一个 PyTorch 语言库):用于快速、灵活的神经机器翻译;以及下一代 ELF:AI 推理应用的综合平台。开发者还可以充分利用 Glow:这是一个机器学习编译器,可以在不同的硬件平台上加速框架的性能;以及 Tensor Comprehensions:可以从高级数学运算高效地自动生成 GPU 代码的工具。他们还开源了其他库,例如 Detectron:支持目标检测研究,可以输出边框和目标实例分割。在 facebook.ai/developers 可以找到完整的列表。
在接下来的几个月里,Facebook 将重构和统一 Caffe2 和 PyTorch 0.4 框架的代码库,以进行组件去重复和共享抽象。其结果是我们将得到一个统一的框架,它可以支持高效的图模式执行、移动部署、广泛的供应商整合等。正如其它开放的 AI 倡议如 ONNX,他们还将联合其他公司和社区为更多开发者提供这些加速研究以提高产能。作为开端,微软计划在他们的 Azure 云和开发者产品(包括 Azure Machine Learning 服务和 Data Science Virtual Machines)中支持 PyTorch 1.0;并且 AWS 目前也支持 PyTorch 的最新版本,为 P3 GPU 实例做了优化,并计划在发布他们的云产品(包括 Deep Learning AMI)之后的短期内支持 PyTorch 1.0。这仅仅是个开始,以后我们将可以创建和共享更好的 AI 编程模型、接口和自动优化。在如今的 Facebook,AI 是一项基础技术,使现有的产品更优并能处理全新的经验。通过论文、代码和模型开源这些工作,Facebook 将和所有 AI 研究者和从业者一起工作,来使当前最佳技术更快,并将它们迁移到新的用途上。
以上是关于无缝整合PyTorch 0.4与Caffe2,PyTorch 1.0问世的主要内容,如果未能解决你的问题,请参考以下文章
业界 | 无缝整合PyTorch 0.4与Caffe2,PyTorch 1.0即将问世
Caffe2 公布与 PyTorch 合并细节:只为提高开发效率