摘要
深度学习已被证明是一种可成功用于许多任务的机器学习方法,而且它的广泛流行也将很多开源的深度学习软件工具开放给了公众。训练一个深度网络往往是一个非常耗时的过程。为了解决深度学习中巨大的计算难题,许多工具利用了多核CPU和超多核GPU这样的硬件特性来缩短训练时间。但是,在不同的硬件平台上训练不同类型的深度网络时,不同的工具会有不同的特性和运行性能,这让终端用户难以选择出合适的软件和硬件搭配。在这篇论文中,我们的目标是对当前最先进的GPU加速的深度学习软件工具(包括:Caffe,CNTK,TensorFlow和Torch)进行比较研究。我们在两种CPU平台和三种GPU平台上使用三种流行的神经网络来评测了这些工具的运行性能。我们做出了两方面的贡献。第一,对于深度学习终端用户,我们的基准评测结果可用于指导合适的软件工具和硬件平台的选择。第二,对于深度学习软件开发者,我们的深度分析为进一步优化训练的性能指出了可能的方向。
实验数据
表1:用于实验的软件
表2:本实验的神经网络设置
表3:本实验的硬件设置
表4:对比结果(每个mini-batch的时间/秒;其中加粗的为最优)
结论
这是使用不同的硬件平台、在三种不同类型的流行深度学习方法上对GPU加速工具的评估。根据基准评测结果,当存在GPU时,我们发现Caffe平台在全连接网络上表现更好,而TensorFlow在卷积神经网络和循环神经网络上都表现突出。GPU内存是在Caffe等许多工具上运行大型网络的关键指标之一,CNTK和Torch不能在GTX(其有4GB内存)上运行32或更多个mini-batch大小的ResNet-50,而TensorFlow在管理GPU内存上表现更好,并且其基本上可以在所有的配置情况下运行。cuBLAS是一个高性能的BLAS库,但其API参数对实现好的结果来说是很重要的。在计算一些情况下的卷积运算时,FFT是一个更好的选择。
在仅使用CPU的机器上,Caffe在CPU并行上表现更好,TensorFlow也在CPU资源利用上有很好的表现。在CPU并行机制上,使分配的线程等于CPU的核数可以得到更好的表现。
GTX有更高的基础时钟(MHz)和更多CUDA内核,在大部分案例中也都获得了更好的结果。但是,TeslaK80有更大的内存(12GB),可以支持应用运行更大型的网络和更大的mini-batch。此外,每一个K80卡还配备了2个GPU芯片,这可能能让其在运行并行程序时获得更好的表现,但在我们的基准评测中,它并没有得到充分的使用。
局限:我们没有测试跨多个GPU和多台机器的可扩展性,因为这种方法可能无法增强一些工具的主要特性。比如虽然CNTK支持跨多GPU和机器运行,但其它工具却不行。
选自arXiv.org
作者:ShaohuaiShi、QiangWang、PengfeiXu、XiaowenChu
机器之心编译,参与:吴攀
点击「阅读原文」,下载此论文↓↓↓
专业治白癜风医院白癜风治疗要花多少钱