浪潮人工智能首席架构师张清,是《MIC高性能计算编程指南》作者,开源深度学习计算框架Caffe-MPI设计者之一。并先后主导完成语音、图像、安全等深度学习GPU项目,并传统HPC、视频大数据等方向多个CPU多核、GPU、MIC、FPGA计算项目。
本文节选自张清在钛坦白的分享。以下根据张清在钛坦白的分享实录整理:
大家好,我是来自浪潮的张清,在分享之前我首先简单的介绍一下浪潮在人工智能方面的工作。浪潮是先进的人工智能计算系统与解决方案提供商,拥有从人工智能计算产品研发、计算系统建设、软件设计、系统运维服务能力,拥有完备的人工智能端到端解决方案、计算系统软硬件产品和应用服务体系,在广泛应用人工智能技术的互联网领域,浪潮计算设备产品在中国大型互联网市场占用率超过80%,成为中国人工智能第一品牌计算设备提供商。
AI的发展趋势
人类已经经过了三次科技革命——蒸汽时代、电气时代和信息时代,每次科技革命的发生都为社会带来巨大的变革和进步。AI时代已经到来,它可能成为第四次科技革命。下面我们来看一下AI市场、行业应用、技术的发展趋势。
AI市场的发展趋势
A市场正在蓬勃发展,我们从近五年人工智能的投资金额发现从2012年到2016年,年均增长率达到50%以上,截止到2016年,它的投资金额达到42.5亿美元,AI近五年M&A和IPO的数量年均增长率为49.85%,2016年已达到68项,2020年AI整个的市场规模将达到480亿美元。(数据来源:CB Insights)
AI行业应用的发展趋势
2011年,谷歌和微软研究院的语音识别方向研究专家先后采用深度神经网络技术将语音识别的错误率降低20%~30%,这是长期以来语音识别研究领域取得的重大突破。2012年,深度神经网络在图像识别应用方面也获得重大进展,在ImageNet评测问题中将原来的错误率降低了9%,随着AI在语音和图像识别的巨大成功,互联网行业越来越多的用户开始应用AI。从2015年开始,传统行业越来越多的用户也开始应用AI,比如金融企业、医疗企业、汽车厂商和安防企业等。今年,我们也看到很多传统科学计算用户开始研究AI技术,如气象和石油勘探用户,利用 AI技术来提高相关应用的预测精度。
总的来说,AI行业应用用户已经从目前最为火热的互联网行业用户,逐步发展到传统企业用户和科学计算HPC用户。
AI技术的发展趋势
我们先看两个例子,第一个是图像识别方面的Imagenet比赛,2012年Imagenet比赛冠军网络模型是Alexnet,它只有8层,训练所需要的计算量是相对比较小的,每一张图片只要1.4GFlop,所训练出来的模型的精度达到84%,也就是错误率为16%。到了2015年,经过三年的发展,Imagenet比赛的冠军网络模型是微软设计的Resnet,其变得更加复杂,模型的层数达到152层,层数是Alexnet的19倍,每一张图片所需要计算量大大提高,达到22GFlop,但错误率下降为3.5%。
另一个例子更加惊人,是关于语音识别。百度设计的语音识别模型,2014年有2500万的参数,训练的数据量是7000小时的语料,8%的错误率。2015年的训练数据是此前的2倍,深度学习网络是原来的4倍大,2倍的数据量,4倍的网络复杂性,实现的错误率是5%,但是需要付出什么样的代价?就是计算量的增长。
所以我们从这两个例子可以看出,AI技术的发展趋势是朝着大数据+大模型+大计算方向发展,采用更大的模型和数据会使训练出来的模型的精度大幅提高,但这需要更大的计算资源作为支撑。
AI面临的挑战及计算解决方案
AI主要面临三个方面的挑战:
1.一是需要获取足够多的标注的数据用于模型的训练;
2.二是需要设计分布式深度神经网络模型及算法;
3.三是需要一个大的深度学习计算平台以及平台管理软件。
针对上面三个方面的挑战,我们从四个层次去设计整个AI计算解决方案:
第一层次是平台层:从整个AI计算过程的不同特点需求,我们会设计数据预处理平台、训练平台、推理平台,采用不同的网络和存储。
第二个层次是管理层:对于复杂的计算平台,我们需要对资源要进行一个合理的管理、调度、监控、分析,需要一个系统管理平台。比如说浪潮设计的针对深度学习场景的深度学习管理平台AIStation。
第三个层次是框架层:现在的很多开源出来的框架,如Caffe,包括我们浪潮设计的Caffe-MPI、谷歌的Tensorflow、百度的Paddlepaddle,微软的CNTK等等,这些框架来帮助解决深度学习的训练和推理的一些过程。
第四个层次是应用层:针对实际的应用场景进行AI应用开发,比如图像和视频类应用,语音类应用,以及自然语言处理的一些应用,这些应用场景我们如何采用AI的方法和算法来进行实现。
平台层面临的挑战及解决方案
在设计平台层之前我们先看一下AI应用的计算过程。首先我们会收集到不同的数据,比如说CT影像的数据、语音的数据,这些数据我们会传送到数据预处理平台,进行图片的噪音等处理。处理完之后我们对数据做标注,形成训练的数据样本集。训练样本集我们会送到模型训练的集群进行学习,也就是模型训练的过程,模型训练完之后会获得一个智能的模型,这个模型我们会把它装载到不同的终端,比如说工作站、手机、平板,或者说一些云计算平台。最后会推理或识别出智能的结果,比如会判断CT影像是否有病灶,识别是什么方言等。
为了大家对AI整个场景理解得更透彻,我们举个谷歌的医疗影像的例子,谷歌最开始从医院里面收集到12.8万张眼底照片的数据,然后首先对这些照片经过图像的检测分割等数据预处理,预处理完之后对整个眼底特征进行标注。预处理和标注完之后获取了训练的样本集,这些训练样本集会采用深度学习的一些框架,如TensorFlow进行模型的训练,训练出来的模型会应用在终端,比如说手机上面,进行辅助诊断。
这个应用场景看到采用AI技术的效果是非常好的,其综合灵敏度和特异值达到了0.95,比八个医生小组的评估值0.91还要高。这个医疗影像的AI典型案例基本上涵盖了三个过程,就是数据预处理、模型训练和推理识别。
但数据预处理,模型训练和推理识别这三块的计算特点是不一样的,比如数据预处理主要是IO相对比较密集,计算量相对较少一些;模型训练计算量比较大,通信也相对比较密集;针对推理识别,需要比较高的吞吐处理能力和对单个样本低延时的响应。
根据对AI计算过程和特点分析来看,AI平台层设计所面临的挑战主要包括三个方面:
一是在数据预处理阶段,会涉及大量的小文件随机读写的问题,如何提高数据访问效率是在数据预处理阶段面临大的挑战。
二是在训练阶段,因为会涉及到大量的模型进行调优,我们会训练出一个最优的模型出来,这里需要的计算资源是巨大的,这是第二个挑战。
三是在推理阶段,一个样本,如一张图片或者一个语音样本过来之后,我们如何进行及时的响应,成千上万的样本批量过来的时候,整个系统的吞吐率如何提高,是推理阶段面临的挑战。
所以AI平台层的设计我们从几个方面来进行针对性的设计:
1.计算架构,采用CPU+GPU+FPGA混合异购模式,训练采用P100/P40 GPU,推理采用P4 GPU或者FPGA低功耗计算架构。
2.存储架构,对于训练平台,主要采用高性能的分布式Lustre存储;对于线上推理平台,采用HDFS存储架构来设计。
3.网络架构,对于训练平台,采用高速互联的IB网络;对于线上推理平台,因为每个计算节点之间并不需要通信,所需要的网络带宽并不需要那么高,所以一般会采用万兆。
4.计算模式,对于训练平台,多个节点如果同时训练将采用分布式并行的方式,比如采用MPI+CUDA计算模式;对于线上采用Spark/Hadoop+CUDA计算模式。
针对平台层,浪潮提供全线AI计算产品支持,如2 GPU服务器NF5280M4,主要作为线上推理识别用。还有支持训练的4 GPU服务器NF5568M4, 8 GPU服务器AGX-2,还有我们跟百度联合研制的SR-AI Rack,单GPU BOX实现16 GPU并行,整机柜实现64块GPU并行。针对线上大规模部署,要求低功耗,我们也设计了FPGA板卡F10A,整个卡功耗可以做到35瓦,性能达到1.5TFlops。目前浪潮是领先的AI计算厂商,很多用户在采用浪潮的计算产品,在大型互联网市场AI产品市场占有率达到80%以上。
管理层面临的挑战及解决方案
整个系统部署好之后,既有CPU计算节点,也有GPU计算节点,对整个计算系统我们如何有效的管理起来,其面临的挑战有几个方面:
第一,针对不同的计算平台和计算设备,如CPU、GPU或者FPGA,如何进行有效的管理。
第二,针对不同的计算任务和计算框架,如何进行合理的调度。
第三,针对整个系统和不同的计算作业,如何进行监控。
应对上述三个方面的挑战,浪潮设计的深度学习管理系统AIStation可以实现五大功能:深度学习框架的快速部署、深度学习训练任务的管理、GPU 与CPU资源的调度、系统资源与健康状态的监控、应用特征分析。
框架层面临的挑战及解决方案
目前开源出来的深度学习框架非常多,如Caffe、TensorFlow、MXNet、Torch等等,框架众多,如何选择?选择一种框架还是选择多种?以及针对什么场景或者什么样的模型来选择什么样的框架,针对多大数据量,选择多机并行的框架。以上是我们针对深度学习框架所面临几个方面的挑战。
我们在选择框架的时候,实际上可以针对目前的一些主流框架做一个评测,之前我们跟美国某知名的互联网公司开展过联合测试,对他们所关心的深度学习框架做了一个测评。
我们把三个主流的框架Caffe、TensorFlow和MXNet部署到我们16 GPU BOX服务器平台上面,采用Imagenet数据集,测试Alexnet和GooLeNet两种典型网络。从测试结果来看当运行Alexnet网络时,Caffe性能好,每秒可以训练图片张数达到4675张,16个GPU比单个GPU的加速比达到14倍,其次是MXNet,最后是TensorFlow。当运行GooLeNet时,MXNet性能好,每秒可以训练的图片张数达到2462张,16个GPU比单个GPU的加速比达到12.7倍,其次是Caffe,最后是TensorFlow。从这个评测来看,基于不同的网络,所选择最优的框架是不一样的。
基本上可以有大致的一个原则来选择:我们会根据不同的场景和模型来选择至少一种深度学习框架,目前很难说一种框架能在所有的应用场景中表现最优,如果是图像方面的应用,主要采用Caffe、TensorFlow和MXNET这三种框架。如果是语音的话,可以选择CNTK,当然还有其他的框架。自然语言处理的话可以采用PaddlePaddle,针对大数据量的训练,采用单机训练的话时间会很长,有可能是几周或几个月训练出一个模型,需要采用分布式框架,如浪潮自研的Caffe-MPI,这个框架就实现了多机多GPU卡的并行训练。通过实际测试,Caffe-MPI采用16个GPU卡同时训练时,每秒可以处理的效率达到3061张,较单卡性能提升13倍,扩展效率达到81%,性能将近是TensorFlow的2倍,Caffe-MPI目前已经在Github上开源了,可以下载使用。
应用层面临的挑战及解决方案
应用层面临如下几个方面挑战:
一、如何利用深度学习的方法,提高识别的正确率,这里面会涉及到模型和算法的设计、数据预处理。
二、GPU编程,在训练程序的设计过程中会涉及到写部分的GPU的代码,比如我们会添加一些新的层,会写一些相对应的CUDA代码。
三、FPGA编程,在推理阶段,可能会采用FPGA平台,需要把应用从CPU迁移到FPGA上,采用OpenCL编程或者采用偏底层硬件编程语言Verilog,其编程的复杂度相对较高。
针对AI应用挑战,浪潮成立了两个联合实验室:Inspur-Intel中国并行计算联合实验室和Inspur-NVIDIA GPU 联合实验室,针对GPU、MIC、FPGA异构技术和AI应用进行研究,我们具备CPU+GPU,CPU+MIC,CPU+FPGA三大异构技术,可以帮助用户来设计深度学习的一些模型算法,进行GPU、MIC、FPGA应用的迁移和优化。
在AI方面,我们2014年就开始跟一些典型的互联网用户开展应用合作,如以图搜图应用,其核心算法是Kmeans,帮助用户实现从CPU到GPU上的迁移,核心算法性能提升35X,整体应用性能提升2.2倍。另外一个应用是关于语音方面的,主要是语音模型的训练,采用深度学习的方法,我们帮助用户从单机GPU版本实现16 GPU卡的多机并行版本,性能提升13倍,大大缩短整个深度学习训练的时间,实现支持万小时以上语音数据训练。
还有一个案例就是在网络安全方面的应用,此应用采用深度学习技术,用户实现基础的Python算法版本,我们帮助实现GPU的迁移与优化,单个GPU计算,其性能比原来CPU基准版本加速了90倍,采用四块GPU并行,其性能是基准CPU版本的270倍。
最后一个应用案例是线上语音识别应用,采用DNN深度神经网络,帮助用户把DNN从CPU平台到FPGA平台的迁移与优化,1块FPGA卡的性能相当于两块CPU的2.8倍。功耗只有CPU的15.7%,性能功耗是CPU的18倍。
基于AI系统四个层次设计所面临的挑战和相应解决方案,我们设计了整个AI端到端的解决方案,针对不同的数据源,如图像、视频、语音、文字等首先会送到我们CPU的处理平台上面进行预处理,预处理完的数据我们会存放到共享存储上去,然后GPU的集群训练平台会从存储里把训练数据并行读取过来进行训练,整个训练平台我们可以采用4 GPU、8 GPU或16 GPU BOX设备,在训练平台我们会部署深度学习管理系统AIStation和天眼工具。训练完之后的生成的模型,将会加载到不同的计算设备上去,如P8000 GPU 工作站、FPGA卡、GPU AI云平台进行推理识别的服务。最后实现各种智能结果。就是说我们整个AI端到端计算的解决方案。
钛坦白群友互动
1.浪潮面向人工智能开发的计算平台,如之前发布的GX-2,相对于其他的计算产品有什么特点?
张清:GX-2目前是全球高密度的GPU服务器,他在2U的空间里可以插8块GPU卡,既可以支持PCIE,而且还可以支持NVLINK 2.0。
2.浪潮的方案都是基于GPU,请问张总浪潮的人工智能平台和其云计算解决方案或超融合架构有何匹配及联系?数据如何获取?硬件方面都是采用通用服务器?
张清:浪潮的方案在模型训练主要是GPU方案,推理我们还有FPGA方案。目前浪潮的人工智能平台和其云计算解决方案或超融合架构没有对应匹配及联系。数据有些来自开源社区、有些来自客户,还有些是公共平台数据。硬件方面主要采用通用服务器,也有与用户定制化开发的服务器,如SR-AI Rack.
3.公共数据平台主要指?包含运营商等渠道吧?用户是在平台上沉淀的用户数据,应该不会直面最终用户吧?
张清:公共数据平台主要是指浪潮的天元大数据,有政府公开数据、联盟伙伴数据、浪潮自有数据。用户在平台上沉淀的数据仅作为实验使用,用户实际场景的数据不会直面给其他最终用户。
群友:相当于应用层能力开放,人工智能平台聚合开发者做的应用,然后用户数据直接积累到平台。
张清:嗯,用户的实验数据会积累到平台。