解决方案

安擎面向人工智能的计算解决方案——EG-AIStudi
2017-11-20

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主要面临三个方面的挑战:

一是需要获取足够多的标注的数据用于模型的训练;
二是需要设计分布式深度神经网络模型及算法;

三是需要一个大的深度学习计算平台以及平台管理软件。

针对上面三个方面的挑战,安擎从四个层次去设计整个AI计算解决方案:

第一层次是平台层;从整个AI计算过程的不同特点需求,会设计数据预处理平台、训练平台、推理平台,采用不同的网络和存储。
第二个层次是管理层;对于复杂的计算平台,需要对资源要进行一个合理的管理、调度、监控、分析,需要一个系统管理平台。
第三个层次是框架层;现在的很多开源出来的框架,如Caffe,谷歌的Tensorflow、百度的Paddlepaddle,微软的CNTK等等,这些框架来帮助解决深度学习的训练和推理的一些过程。
第四个层次是应用层;针对实际的应用场景进行AI应用开发,比如图像和视频类应用,语音类应用,以及自然语言处理的一些应用,这些应用场景如何采用AI的方法和算法来进行实现。

平台层面临的挑战及解决方案


在设计平台层之前先看一下AI应用的计算过程。首先会收集到不同的数据,比如说CT影像的数据、语音的数据,这些数据会传送到数据预处理平台,进行图片的噪音等处理。处理完之后对数据做标注,形成训练的数据样本集。训练样本集会送到模型训练的集群进行学习,也就是模型训练的过程,模型训练完之后会获得一个智能的模型,这个模型会把它装载到不同的终端,比如说工作站、手机、平板,或者说一些云计算平台。最后会推理或识别出智能的结果,比如会判断CT影像是否有病灶,识别是什么方言等。
根据对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,如何进行有效的管理。
第二,针对不同的计算任务和计算框架,如何进行合理的调度。
第三,针对整个系统和不同的计算作业,如何进行监控。
应对上述三个方面的挑战,设计的深度学习管理系统EG-AIStudio可以实现五大功能:深度学习框架的快速部署、深度学习训练任务的管理、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,其编程的复杂度相对较高。
安擎从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设备。