常用深度学习框架

2018.09.13

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

框架 机构 支持语言 Stars Forks
Caffe BVLC C++/Python/Matlab 25480 15560
CNTK Microsoft C++ 15083 4020
Keras Fchollet Python 33332 12563
Tensorflow Google Python/C++/Go… 109115 67339
MXNet DMLC Python/C++/R… 15162 5484
PyTorch Facebook Python 18517 4426

性能对比

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

运行于 SSD 硬盘

框架 1xV100/CUDA 9/CuDNN 7 4xV100/CUDA 9/CuDNN 7
Pytorch 27min 10min
Keras(TF) 38min 18min
Tensorflow 33min 22min
MXNet(Gluon) 29min 10min

运行于RAM内存中

框架 1xV100/CUDA 9/CuDNN 7 4xV100/CUDA 9/CuDNN 7
Pytorch 25min 8min
Keras(TF) 36min 15min
Tensorflow 25min 14min
MXNet(Gluon) 28min 8min

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

框架 K80/CUDA 8/CuDNN 6 P100/CUDA 8/CuDNN 6
CNTK 8.5 1.6
Keras(TF) 10.2 2.9
Tensorflow 6.5 1.8
MXNet 7.7 1.6
PyTorch 7.7 1.9

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

框架 1 Thread 2 Threads 4 Threads 8 Threads 16 Threads 32 Threads
Caffe 1887.2ms 1316.7ms 1051.8ms 952.1ms 952.3ms 834.7ms
CNTK 1238.7ms 616.3ms 352.7ms 229.5ms 155.9ms 192.4ms
Tensorflow 992.2ms 773.6ms 419.3ms 252.3ms 149.7ms 124.7ms
MXNet 1386.8ms 915.5ms 559.0ms 499.1ms 416.3ms 413.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. 开发者如何选择深度学习框架?