Caffe2代码全部并入PyTorch:深度学习框架格局剧震

atbjss 2018-04-02

昨日,Caffe2 的 Github 页面突然出现了一个「巨大的改动」:Caffe2 开源代码正式并入 PyTorch,至此,Facebook 主力支持的两大深度学习框架已合二为一。这两大框架,在整个深度学习框架格局中都极受关注。

Caffe2代码全部并入PyTorch:深度学习框架格局剧震

在 Caffe 2 的 GitHub 页面上,以往用于介绍框架内容的 Readme 区域已经变成了一个加粗体的链接:源代码现已归入 PyTorch 库。

自 2017 年 1 月发布之后,由于调试、编译等多方面的优势,PyTorch 已经成为很多科研机构首选的深度学习框架;而 2017 年 4 月推出的 Caffe 2 则具有可在 iOS、Android 和树莓派等多种设备上训练和部署模型的优势。尽管获得了很多用户的支持,在面对谷歌支持的 TensorFlow 生态时,PyTorch 和 Caffe 2 各自仍有短板,此次「合并」或许会成为深度学习工程领域新形势的一个开始。

相关链接:

  • Facebook 宣布开源 Caffe2:可在手机与树莓派上训练和部署模型

  • 重磅 | Torch7 团队开源 PyTorch:Python 优先的深度学习框架

如果你紧跟 PyTorch 的开发进程,那么你可能会注意到过去几个月这个库有一些改变:

  • PyTorch 和 Caffe2 目前会共享 CI,这是非常重要的工程工作。

  • PyTorch 和 PyTorch-ONNX 有非常复杂的 CI,onnxbot 触发器构建在每一个 PyTorch PR 上,并以 roundabout 的方式更新。

  • 在「pending」状态中有后端研发工作,例如与最新和最重要的库集成(MKLDNN、cuFFT 和更多的 NNPACK 覆盖等)。

作为 PyTorch 和 Caffe2 框架的主要维护者,共享二者通用的工程性内容也就很合理了,例如算子库。

然而,在两个单独的 Github repos 上共享代码很有挑战性(不可去掉的子模块或者子树,Continuous Intergration 变得很难等)。

在协作下,我们把 Caffe2 repo 并入到了 PyTorch 的 github。也就是,如果你用命令 git clone https://github.com/pytorch/pytorch,你可以看到 caffe2 的二进制文件。

作为 PyTorch 用户,你需要知道:并没改变什么,PyTorch 的安装、搭载、使用和往常一样。

其实这并不会意味着我们的代码会失效,这只是开发和后端工程工作。如何你并不是 core-developer,这个问题甚至不会与你有任何关系。此外对于用户来说,我们同样也并不需要关注 protobuf 问题。

Caffe2代码全部并入PyTorch:深度学习框架格局剧震

关于此问题,目前任 Facebook 研究科学家贾扬清在知乎上表示:

来简单答一下:因为 PyTorch 有优秀的前端,Caffe2 有优秀的后端,整合起来以后可以进一步最大化开发者的效率。目前 FAIR 大概有超过一半的项目在使用 PyTorch,而产品线全线在使用 Caffe2,所以两边都有很强的动力来整合优势。

开发效率是我在 Facebook 非常重视的一个方向:去年年中的时候启动了 ONNX 项目(初版的代码是我亲自上手写的),然后帮助搭建了 ONNX team,来增强不同框架甚至不同公司之间的协作;Caffe2 和 PyTorch 在代码层的合并也是从那个时候开始逐渐推动的一项内容。

至于进一步的计划,目前我还不方便透露,等过一个月有空再来更新吧。

相关推荐