常用深度学习框架

2018.09.13

深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearning4、Lasagne、Neon等。我们参考开源的测试结果,结合自己整理的数据,针对主流的深度学习框架进行简单对比及介绍。

框架机构支持语言StarsForks
CaffeBVLCC++/Python/Matlab2548015560
CNTKMicrosoftC++150834020
KerasFcholletPython3333212563
TensorflowGooglePython/C++/Go…10911567339
MXNetDMLCPython/C++/R…151625484
PyTorchFacebookPython185174426

性能对比

1. 训练时间: Network DenseNet-121 (Multi-GPU)

运行于 SSD 硬盘

框架1xV100/CUDA 9/CuDNN 74xV100/CUDA 9/CuDNN 7
Pytorch27min10min
Keras(TF)38min18min
Tensorflow33min22min
MXNet(Gluon)29min10min

运行于RAM内存中

框架1xV100/CUDA 9/CuDNN 74xV100/CUDA 9/CuDNN 7
Pytorch25min8min
Keras(TF)36min15min
Tensorflow25min14min
MXNet(Gluon)28min8min

2. 1000张图片推理时间(s): Network ResNet-50

框架K80/CUDA 8/CuDNN 6P100/CUDA 8/CuDNN 6
CNTK8.51.6
Keras(TF)10.22.9
Tensorflow6.51.8
MXNet7.71.6
PyTorch7.71.9

3. CPU推理时间(s): E5-2630v4, Network FCN5

框架1 Thread2 Threads4 Threads8 Threads16 Threads32 Threads
Caffe1887.2ms1316.7ms1051.8ms952.1ms952.3ms834.7ms
CNTK1238.7ms616.3ms352.7ms229.5ms155.9ms192.4ms
Tensorflow992.2ms773.6ms419.3ms252.3ms149.7ms124.7ms
MXNet1386.8ms915.5ms559.0ms499.1ms416.3ms413.9ms

框架评价

框架安装成本代码理解程度API丰富程度模型丰富程度文档完整程度训练与测过程学习资源
CNTK良好良好良好良好优秀良好良好
Keras良好良好优秀优秀良好优秀良好
MXNet良好良好良好良好良好优秀优秀
Pytorch优秀优秀良好良好优秀良好良好
Tensorflow良好良好优秀优秀优秀优秀优秀
Caffe良好优秀良好良好优秀良好优秀

推荐框架

目前众多的深度学习框架,使用者只要选择适合自己的框架即可,我们在日常使用中,考虑到训练的快捷程度,部署难度以及对CNN、RNN模型的直接程度,推荐以下几款深度学习框架。

1.Keras

Keras 提供了简单易用的 API 接口,入门快,特别适合初学者入门。其后端采用 TensorFlow, CNTK,以及 Theano。另外,Deeplearning4j 的 Python 也是基于 Keras 实现的。Keras 几乎已经成了 Python 神经网络的接口标准。

2.TensorFlow

谷歌出品,追随者众多。代码质量高,支持模型丰富,支持语言多样, TensorBoard 可视化工具使用方便。

3.MXNet

已被亚马逊选为 AWS 上的深度学习框架,支持动态图计算。MXNet 有许多中国开发者,因而有非常良好的中文文档支持。Gluon 接口使得 MXNet 像 Keras 一样简单易用。

参考资料

  1. 香港浸会大学深度学习框架Benchmark
  2. DeepLearningFrameworks
  3. 博客
  4. 开发者如何选择深度学习框架?