Facebook同时支持两个深度学习工具 Caffe2和 PyTorch, 显然不重复造轮子, 而是让能复用的组件和库(比如操作库)在这两个项目之间共享是没有争议的.
Caffe2是:
PyTorch是:
Caffe2和PyTorch本质上在解决同样的问题, 随着它们共享的组件越来越多, 问题来了: (1) 你需要再两个github项目之间同步代码(submodules 或者subtrees 搞不定这个事). (2) 自动持续集成(CI)会变得非常混乱
持续集成: Continuous Integration(CI) 在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,甚至自动部署到测试环境。这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。
如果您密切关注PyTorch开发,您可能在过去几个月中已经注意到一些事情:
显然, 合并是最好的结局。目前, 我们看到Caffe2 的repo 正在合并到PyTorch上, 而且合并方式非常简单粗暴直接把两个项目的根目录合并了。
贾扬清本人也对此进行回答:
因为PyTorch有优秀的前端,Caffe2有优秀的后端,整合起来以后可以进一步最大化开发者的效率。目前FAIR大概有超过一半的项目在使用PyTorch,而产品线全线在使用Caffe2,所以两边都有很强的动力来整合优势。开发效率是我在Facebook非常重视的一个方向:去年年中的时候启动了ONNX项目(初版的代码是我亲自上手写的),然后帮助搭建了ONNX team,来增强不同框架甚至不同公司之间的协作;Caffe2和PyTorch在代码层的合并也是从那个时候开始逐渐推动的一项内容。至于进一步的计划,目前我还不方便透露。
参考链接:
https://github.com/pytorch/pytorch/issues/6032
https://github.com/caffe2/caffe2/issues/2439
https://www.zhihu.com/question/270578639/answer/35627245