几个工具的性能评估既针对合成数据,也针对真实数据。评测的硬件平台包括两种CPU(台式机级别的英特尔i7-3820 CPU,服务器级别的英特尔Xeon E5-2630 CPU)和三种Nvidia GPU (GTX 980、GTX 1080、Telsa K80,分别是Maxwell、Pascal和Kepler 架构)。作者也用两个Telsa K80卡(总共4个GK210 GPU)来评估多GPU卡并行的性能。每种神经网络类型均选择了一个小型网络和大型网络。 该评测的主要发现可概括如下: 总体上,多核CPU的性能并无很好的可扩展性。在很多实验结果中,使用16核CPU的性能仅比使用4核或8核稍好。TensorFlow在CPU环境有相对较好的可扩展性。 仅用一块GPU卡的话,FCN上Caffe、CNTK和Torch比MXNet和TensorFlow表现更好;CNN上MXNet表现出色,尤其是在大型网络时;而Caffe和CNTK在小型CNN上同样表现不俗;对于带LSTM的RNN,CNTK速度最快,比其他工具好上5到10倍。 通过将训练数据并行化,这些支持多GPU卡的深度学习工具,都有可观的吞吐量提升,同时收敛速度也提高了。多GPU卡环境下,CNTK平台在FCN和AlexNet上的可扩展性更好,而MXNet和Torch在CNN上相当出色。 比起多核CPU,GPU平台效率更高。所有的工具都能通过使用GPU达到显著的加速。 在三个GPU平台中,GTX1080由于其计算能力最高,在大多数实验结果中性能最出色。 某种程度上而言,性能也受配置文件的影响。例如,CNTK允许用户调整系统配置文件,在运算效率和GPU内存间取舍,而MXNet则能让用户对cuDNN库的自动设置进行调整。 2. 背景及相关知识 随着深度学习技术的快速发展,人们针对不同的应用场合开发出各类深度神经网络,包括全连接神经网络(FCN)、卷积神经网络(CNN)、循环神经网络(RNN)、局限型波兹曼机(RBM)。此论文着重分析三种神经网络(FCN、CNN和RNN)的运行性能(或时间速度)及收敛速度。 FCN的历史可追溯到上世纪80年代,反向传播算法(backpropagation)发明之时。而CNN和RNN,一直以来分别在图像识别和自然语言处理应用上展现出优异的效果。 FCN是一个前向神经网络,由Yann LeCun等人在1989年成功应用于邮编识别。为了减少每一层的参数数量,CNN通过使用一组核(kernel),建立了一个卷积层,每个核的参数在整个域(例如:一个彩色图像的通道)共享。CNN能减轻全连接层容易导致需要学习大量参数的问题。从LeNet架构开始,CNN已经实现很多成果,包括ImageNet分类、人脸识别和目标检测。 RNN允许网络单元的循环连接。RNN可以将整个历史输入序列跟每个输出相连,找到输入的上下文特性和输出之间的关系。有了这个特性,RNN可以保留之前输入的信息,类似于样本训练时的记忆功能。此外,长短时记忆(LSTM)通过适当地记录和丢弃信息,能解决RNN训练时梯度消失和爆炸的难题。含LSTM单元的RNN被证实是处理语音辨识和自然语言处理任务最有效的方法之一。 随着深度学习日益成功,诞生了许多受欢迎的开源GPU加速工具包。其中,Caffe、CNTK、MXNet、TensorFlow和Torch是最活跃、最受欢迎的例子。 Caffe由伯克利视觉和学习中心(BVLC)开发,自2014成为开源项目。作者声称Caffe可以借助NVIDIA K40或Titan GP卡,每天用GPU加速版本处理4000万图像。结合cuDNN之后,还可以加速约1.3倍。 CNTK是一个由微软研究院开发的工具包,支持大部分流行的神经网络。在2015年2月,官方报道了一个基准性能测试结果,针对一个4层全连接神经网络,CNTK与Caffe、TensorFlow、Theano和Torch对比,速度要快上1.5倍。 MXNet是一个支持多种语言的深度学习框架,旨在提供更灵活有效的编程接口,以提升生产效率。 TensorFlow由谷歌开发,它使用数据流图集成了深度学习框架中最常见的单元。它支持许多最新的网络如CNN,atv,以及带不同设置的RNN。TensorFlow是为超凡的灵活性、轻便性和高效率而设计的。 Torch是一个科学计算框架,它为机器学习里最为有用的元件——如多维张量——提供数据结构。
(a) 全连接神经网络 (b) 卷积神经网络(AlexNet) (c) 循环神经网络 图1:深度学习模型的例子 (责任编辑:本港台直播) |