APP下载

深度学习框架和加速技术探讨

2017-09-23余伟豪李忠安建琴宋奕瑶

软件 2017年6期
关键词:框架神经网络深度

余伟豪+李忠+安建琴+宋奕瑶

引言

2016年3月,谷歌公司开发的人工智能围棋程序AlphaGo和韩国九段围棋选手李世乭进行了五场比赛,最终AlphaGo以4:1的结果大胜对手。随后,升级版的AlphaGo,即Master又在网络上与中日韩选手对战,横扫中日韩围棋高手,无一败绩。最近全新升级的AlphaGo与世界排名第一的中国九段棋手柯洁进行对战,结果三战全胜!这使得人工智能在全球范围内引起了广泛的关注和讨论,而AlphaGo采用的深度学习方法,也掀起了一股深度学习的浪潮。

1深度学习简介

深度学习从传统的人工神经网络发展而来。自20世纪80年代以来,人工神经网络得到了巨大的发展,其中以BP算法为代表的传统人工神经网络方法的在分类、聚类方面得到了广泛应用。然而,BP算法本身的缺陷也是明显的,容易过拟合以及只能训练有标签的数据。与传统的人工神经网络相比,深度学习网络增加了网络中的隐含层数,传统人工神经网络一般在5层以内,而深度学习网络至少达到7层及以上。随着网络规模的增加,对神经网络模型的训练和优化难度也变得困难。2006年,Geoffrey Hinton等人在《Science》上发表了文章,提出的用于深度信任网络(Deep Belief Network,DBN)的无监督学习算法,解决了深度学习模型优化困难的问题,拉开了深度学习的大幕。同时,计算机技术不断发展,使得计算能力大大提升,也极大地促进了深度学习地发展。目前,基于深度学习的人工智能应用在各个方面,主要包括计算机视觉、自然语言处理、语音识别、信息检索等方向。

2深度学习框架

深度学习的研究方式和过去传统的研究方式大不相同。在深度学习领域,已经有很多的科研机构和世界一流的院校开发了多种深度学习工具,这些学习工具或者说深度学习库在许多领域大显身手,如计算机视觉、自然语言处理、自动驾驶等。对于研究者来说,选择合适的框架来解决某一方面的问题是十分必要的。下面介绍目前流行的几种深度学习框架,并进行分析比较,以期为研究人员选择合适的框架提供参考。

2.1TensorFlow

TensorFlow最初是谷歌公司内部使用的深度神经网络库,属于谷歌“BRAIN”项目。2015年11月,谷歌正式发布这一系统并宣布开源。TensorFlow支持多种编程语言,比如c++和Python,用户可以在TensorFlow下灵活地构建神经网络模型,并且可以方便地修改和优化模型。在TensorFlow框架中,所有的计算任务都是基于“图”的。在图中,可以存在很多个节点(operation),一个节点可以获得零个或者多个张量(tensor),每个张量是一个类型化的多维数组。这种特殊的数据表示形式,可以让用户高效方便地构建深层神经网络。TensorFlow框架自带一个非常好用的工具Tensorboard,它是一款可视化工具,可以让用户直观地看到数据在神经网络中的变化,也可以看到整个网络的结构。用户通过这个功能,会非常方便和直观地观察自己的神经网络模型,并且很直观地进行修改。

一个TensorFlow程序通常可分为两个过程,一个是构造阶段,另一个是执行阶段。在构造阶段,用户通过编写程序构造出一张计算图,创建图本质上来说就是创建节点(op)对象以及如何把它们连接起来的过程。在执行阶段,因为所有的图都是在Session中启动,所以第一步是创建Session对象,第二步对变量进行初始化,然后执行节点间相应操作并更新变量值,最终保存数据。

2.2Caffe

Caffe是由FaceBookAI平台的首席工程师贾扬清开发,它集成了许多优秀的深度卷积模型,在图像处理方面表现优秀,在2014年的ImageNet挑战赛中,Caffe获得冠军,使得它一鸣惊人。Caffe网络结构是通过编辑文档构建的,对于初学者来说易于使用,因为不需要对具体的代码有深刻了解,便可以构建自己的网络模型,也可以对一些先进的网络模型进行分析和改进。Caffe框架支持并行计算,配合英伟达公司的cuda技术,使用GPU加速使得计算高效。根据相关计算,Caffe可以在单个英伟达K40 GPU上每天处理6000万张图像,相当于一张图片仅用2.5 ms!因此被广泛地部署于商业应用和实验研究。

Caffe使用的核心语言是c++,具有跨平台的特性,便于移植,同时提供给用户Python和Matlab接口进行开发,同时还提供了很多已经训练好的深度学习模型,如LeNet-5、AlexNet等。用户使用这些模型的时候,只需针对具体问题模型的参数或结构做一些改进,就可以快速、高效地开发出新的应用。

2.3CNTK

CNTK(Computational Network Toolkit)是由软件巨头微软公司研发的开源平台框架,最初用于处理自然语言,支持Windows系列平台,也支持Linux。与Caffe相同,CNTK也是基于c++架构,为用户提供的编程接口是Python和c++,支持跨平台的CPU/GPU部署,但不支持Arm架构,所以不能部署在移动设备上。

CNTk使用图进行计算,这一点和Tensorflow相同。另外,CNTK支持细粒度的网络层构建,用户不需要使用低层次的语言就能构建复杂的层类型。

2.4MxNet

MXNet是一款为效率和灵活性而设计的深度学习框架,由美国華盛顿大学和卡内基梅隆大学联合开发,核心是一个动态的依赖调度,允许用户进行混合符号编程和命令式编程,最大限度地提高效率和生产力。

MXNet很容易定义数据结构,支持多GPU并行计算,并方便地加以扩展,为分布式系统提供了优化的数值计算模式,像Python和R语言一样,可以自动执行常见的操作。因此,在使用标准的神经网络时,只需要几行简单的代码就可以表示。endprint

2.5Theano

Theano是一个基于Python的深度学习框架,出自于蒙特利尔大学的实验室。Theano最早是用来做线性代数运算,但目前已专门用来计算由张量表示的重复操作的数学表达式。对于这类复杂的数学表达式,用户可以在Theano框架下快速编码和计算,无论是通过GPU还是CPU都可以编译和执行。Theano有着庞大的用户群,使得Theano在不断地完善。

还有其他几种深度学习框架,如Torch、Deeplea.rning4J、PyTorch、PaddlePaddle等,感兴趣的读者可以查阅相关文献资料。

2.6几种框架的分析比较

可以说,以上几种常用的深度学习框架各具特色,都可以完成深度学习建模和计算,对人工智能的发展具有深远影响。下面从是否开源、核心语言、编程接口、CPU、GPU、操作系统和现有模型等七个方面对它们进行分析比较,结果见表1。

3高性能计算加速技术

近些年来,计算机技术飞速发展,一方面计算机的运算能力得到了巨大提升,另一方面,随着工艺和技术的不断改进,计算机硬件已经变得越来越便宜,高性能的计算机不断向着微型化和民用化的方向发展。正因为计算机硬件越来越便宜同时计算性能越来越强大,才为深度学习提供了硬件基础。深度神经网络在训练过程中会进行大量的浮点运算,如果仅仅靠CPU计算去训练一个深度网络模型,需要花费很长的时间。目前解决这个问题的方案主要有三种:

第一种是使用GPU加速。图形处理器GPU(Graphics Processing Unit)是相对于CPU的一个概念,伴随着多媒体计算的迅猛增长而被提出,并最终成为一个独立于传统CPU的处理器。如今,GPU通用计算技术发展已经引起业界很大的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供数十倍乃至上百倍于CPU的性能。与CPU相比,GPU有以下优点:

(1)计算能力强大

GPU具有更加强大的计算能力,在相同时期,GPU的浮点计算的理论峰值能力相比CPU要高出一个数量级。

(2)价格相对便宜

对于个人和小机构用户来说,要获得高性能计算,如果使用传统的基于CPU集群的计算机系统,价格昂贵,对场地、供电等各方面要求也较高。而对于GPU,只需在支持独立显卡的PC上安装一块显卡,就能获得相同数量级的并行计算能力。一块英伟达GTX TITAN的价格只在一万元左右,对于个人和一般小机构用户基本满足需求。

第二种方案是使用ASIC(Application SpecificIntegrated Circuit),即专用集成电路,这是一种比GPU更加高效的硬件加速方式,一方面因其高度的定制化在提升计算能力的同时也限制了它的可迁移性。另一方面,ASIC的价格昂贵,个人和一些小机构用户难以承担。综合这两方面,目前深度学习的研究者几乎很少考虑使用ASIC为计算机加速。

第三种解决方案是使用FPGA(Field-Program-mable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA在GPU和ASIC中取得了权衡,很好地兼顾了处理速度和控制能力。一方面,FPGA是可编程重构的硬件,因此相比GPU有更强大的可调控能力;另一方面,与日增长的门资源和内存带宽使得它有更大的设计空间。更方便的是,FPGA还省去了ASIC方案中所需要的流片过程。FPGA的一个缺点是其要求使用者能使用硬件描述语言对其进行编程。但是,已经有科技公司和研究机构开发了更加容易使用的语言,比如Impulse Accelerated Tech-nologies Inc开发的C-to-FPGA编译器,使得FPGA更加契合用户的使用;耶鲁的E-Lab开发了Lua脚本语言等,这些工具在一定程度上缩短了用户的开发时限,使研究更加简单易行。

4深度学习云平台

尽管高性能加速技术发展迅速,GPU也变得越来越便宜,降低了深度学习的门槛,但是对于个人和小微用户来说,搭建自己的深度学习硬件环境存在一定困难。这是因为,一方面用户需要对硬件非常了解;另一方面,随着数据量的不断增加,搭建的硬件平台容量不足,扩展能力有限;还有就是成本因素,购买并维护深度学习的硬件环境是一笔不低的开销。有鉴如此,深度学习云平台应运而生。云平台很好地解决了硬件的可拓展性问题,用户可以按需分配硬件资源,一切都在“云”上运行。

目前,各大科技巨头都相继推出了自己的深度學习云平台,为研究者和数据科学家提供在线的高性能云计算服务。国内的深度学习云平台包括百度的百度深度学习,腾讯的DI-X深度学习平台,阿里巴巴的阿里云等;国外的有Google的基于Tensor-Flow的Google Cloud Machine Learning平台,亚马逊的Amazon Web Services(AWS)等。每个平台都有自己特色,用户可以根据自己的需要去选择相应平台。

百度深度学习是一款面向海量数据的深度学习平台,基于PaddlePaddle/TensorFlow开源计算框架,支持GPU运算,依托百度云分布技术,为深度学习技术的研发和应用提供可靠性高、扩展灵活的云端托管服务。通过百度深度学习平台,可以轻松训练神经网络,实现情感分析、机器翻译、图像识别等,也可以利用百度云的存储和虚拟化产品直接将模型部署到应用环境。

5结束语

深度学习已然成为人工智能的代名词,越来越多的科研人员和机构都纷纷投入到深度学习的研究当中。尽管深度学习的发展历史很短,但深度学习编程框架已有多种,研究人员可以根据需要选择合适的深度学习开发平台。由于深度学习层数很多,计算任务多数基于“计算图”完成,计算量巨大,因此需要硬件加速提高效率,以满足用户要求。人工智能正经历着历史上最迅猛的发展时期,可以预见,随着深度学习理论和计算机技术的发展,未来高度智能化的人工智能产品将会遍布在人类生活的方方面面,人工智能正在改变着世界。endprint

猜你喜欢

框架神经网络深度
深度理解一元一次方程
广义框架的不相交性
神经网络抑制无线通信干扰探究
深度观察
深度观察
深度观察
WTO框架下
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用
一种基于OpenStack的云应用开发框架