Caffe2和Caffe有何不同?
Caffe2发布后,外界最多的讨论之一,就是发出上述疑问。去年12月,贾扬清曾经解释过一次:“目前Caffe2还不能完全替代Caffe,还缺不少东西,例如CuDNN。与Caffe2相比,Caffe仍然是主要的稳定版本,在生产环境中使用仍然推荐Caffe”。
现在Caffe2正式发布,这个推荐肯定要改成新版本了。
Caffe2的基本计算单位是Operator。对于适当数量和类型的输入参数,每个Operator都包括所需的计算逻辑。Caffe和Caffe2的总体差异如下图所示:
官方提供了从Caffe迁移到Caffe2的教程,据说这个迁移非常简单。
Caffe2和PyTorch有何不同?
这是另外一个疑问。
Caffe2长于移动和大规模部署。虽然Caffe2新增了支持多GPU的功能,这让新框架与Torch具有了相同的GPU支持能力,但是如前所述,Caffe2支持一台机器上的多个GPU或具有一个及多个GPU的多台机器来进行分布式训练。
PyTorch适合进行研究、实验和尝试不同的神经网络;而Caffe2更偏向于工业应用,而且重点关注在移动端上的表现。
贾扬清现身说法
Caffe2发布后,作者贾扬清在reddit上连发四记解答。“Yangqing here”,贾扬清一上来就表明了身份。
有人问搞出Caffe2意义何在?现在已经有PyTorch、TensorFlow、MXNet等诸多框架。
贾扬清说Caffe2和PyTorch团队紧密合作。他们把Caffe2视作一种生产力的选择,而把Torch视作研究型的选择。而在构建AI模块时,他们也持有一种“非框架”的理念,例如Gloo、NNPACK和FAISS等可以被用于任何深度学习框架。
有人问Caffe2接受外部贡献么?
贾扬清说大爱外部贡献,也会在开源方面继续努力。
有人问Caffe2是否用了Torch的代码库,以及CUDA等相关支持的问题。
贾扬清说他们正在计划让Caffe2和Torch和PyTorch共享后端,这几个框架已经共享Gloo用于分布式训练,THCTensor、THNN和其他C/C++库也将会共享。
在GPU层面,Caffe2使用了CUDA和CUDNN。贾扬清和团队也试验了OpenCL,但是感觉用NVIDIA的GPU CUDA效果更好。
另外在其他平台(例如iOS上),Caffe2使用了特定的工具,例如Metal。一两天内,官方会发布Metal的实施。
有人问Caffe2支持动态图么?
贾扬清给出否定的回答,他表示这是Caffe2和PyTorch团队有意做出的选择。Caffe2的任务就是提供最佳的性能,而如果想要极端灵活的计算,请选择PyTorch。贾扬清认为这是一个更好的方式,因为“一个框架通吃”可能会影响性能。
所以,目前Caffe2只支持非常有限的动态控制,例如动态RNN。
最后,量子位放出传送门:
Caffe2的首页:http://caffe2.ai/
GitGub地址:https://github.com/caffe2/caffe2