摘要:在2017杭州云栖大会机器学习平台PAI专场上,阿里巴巴研究员、阿里云机器学习平台PAI负责人林伟为大家分享了人工智能的发展历史以及阿里云机器学习平台PAI的简单情况和特性。
本文内容根据嘉宾演讲视频以及PPT整理而成。
人工智能发展历史
人工智能是从上个世纪50年代达特茅斯会议开始兴起的,之后马上就达到了一个快速发展的时期,在这个时期奠定了人工智能基础的研究方法,包括像逻辑推演以及一些统计学方法,比如深度学习以及神经网络等。但是当时因为算法和模型的一些局限性,所以找不到比较有效果的应用,得出来的结果页总是不太令人满意,所以很快大家的研究经费就耗光了,于是人工智能也迎来了自己的第一次寒冬期。随着上个世纪80年代算法的一些演进,多层神经网络、反向传播算法以及专家系统的提出,使得科学家找到了一些场景可以应用人工智能来解决一些问题,所以此时的人工智能就又来到了第二次高峰期。但是当时有很多想法因为计算的局限性没有能够落地实施,因为当时想要把这些想法落实需要海量的计算能力,系统也非常昂贵,所以大大地限制了人工智能的发展,这样人工智能就又进入了第二次寒冬,这次的原因主要是系统的昂贵和经费的削减。随着过去的二十年,摩尔定律蓬勃发展,也就是随着集成电路的工艺不断推演,计算能力每三年会翻一番,这样就终于突破了原来的计算瓶颈。一旦计算的瓶颈突破了,并且随着互联网的时代的到来,更多的数据开始数字化,能够为深度学习提供更多的数据,即便是网路很大的模型也能够训练出来,使得其效果能够突破人们的期望,这也是造成最近人工智能形成一个飞速爆发增长时期的原因。
人工智能已经诞生60年,为什么才爆发?
可以说从人工智能的数学原理上面,当前的深度学习和80年代没有太多本质的区别,但是因为计算能力和数据的增长使得我们原来不敢去想、不能去做的事情能够变为可能,从而使得算法的演进大大加速了。原来可能有一个算法出来没有效果可能就停止研究了,但是如今当看到效果之后就回去不停地迭代和演进并且去尝试不同的网络,这也是人工智能最近几年开始爆发的原因。
人工智能行业的三大要素
人工智能行业的三大要素是:数据、计算力和算法。其实关键在于计算能力和数据使得这一次的人工智能进入爆发期,它们大大推进了算法的演进,所以其核心是平台。所以只有实现一个好的计算平台,才能够支撑更多的算法工程师将自己的idea做更多的尝试并找寻出更多的应用场景,让机器能够看到和听到并且感知到这个世界,真正地帮助人类解决问题,推动智能产业的发展。
PAI平台所解决的两个主要问题
阿里云机器学习平台PAI主要是为了解决两个问题,第一个是需要提供高性能,正如刚才所提到的机器学习需要有高性能的计算力去推动,所以阿里云机器学习平台PAI依托于云端计算降低存储和计算的成本。同时为了能够让算法更快地演进,需要提供很多的工具,让算法工程师能够非常方便地利用到系统计算的能力以及数据的能力,所以第二点就是机器学习平台API提供了很多的工具和算法库来降低技术的门槛。
PAI平台的分层体系结构
阿里云机器学习平台PAI的体系结构大致分了很多层,最上面这一层是拥有非常丰富的算法组件,在这一层阿里巴巴希望打造一个算法市场,使得很多外面的第三方合作者或者其他的算法工程师能够将自己的一些idea提炼出来,打造一个能够把自己的算法上载到算法市场的生态。同时阿里巴巴作为一家数据驱动的公司,需要去分析数据背后的价值,推动“让天下没有难做的生意”变为可能,让商家能够实现精准营销,让消费者能够找到自己感兴趣的商品,所以数据驱动对于阿里巴巴是至关重要的。在阿里巴巴内部对于算法进行分析和演进存在着强烈的需求,并且随着中国市场的扩大,数据积累越来越多,所以数据规模也越来越大,阿里巴巴内部因为计算需求和数据需求这两个源动力推动着很多算法的沉淀,进而也会把这些沉淀共享出来,通过很多的算法使得整个行业能够很快地实现复用,进而打造一些很好的解决方案来解决真实的问题。
在算法组件之下是PAI的服务层,正如之前提到的,阿里巴巴希望算法工程师能够很方便地开发自己的想法和应用,所以PAI在服务层上面提供了很多的工具来帮助算法工程师快速地发现实验、管理实验、调整参数,进而寻找到能够达到更好效果的模型。在服务层以下是PAI核心引擎部分,这部分主要包括了三大引擎,分别是深度学习引擎、阿里参数服务器(鲲鹏)以及针对传统科学计算的阿里MPI引擎。而算法工程师是在很高的层次构建自己的想法以及人工智能的网络,通过网络引擎下面编译优化的能力使得上面的高层描述能够高效地编译优化调度成为下面硬件真正需要执行的指令代码。最下面一层是PAI的硬件层,属于异构计算的部分,因为对于人工智能的增长,计算能力其实是最关键的,随着摩尔定律的单线程吞吐达到瓶颈期,PAI平台也开始使用多种硬件去支撑计算,所以在硬件层会提供CPU、GPU、FPGA甚至是人工智能芯片ASIC等异构硬件。在异构计算的平台上面通过软件以及调度把合适的图计算进行有效的分割,把不同的计算部署到比较合适的硬件结构上面,这样才能把计算的能力充分地发挥出来。
PAI产品介绍
接下来会简单介绍阿里云机器学习平台PAI应该如何使用。当大家登录到PAI上去就会看到如下图所示的界面,在这个界面上可以看到有很多的算法组件,这些算法组件都是通过阿里巴巴内部强大的需求逐渐沉淀下来的。
阿里巴巴提供了100多种将近200种算法,因为阿里巴巴已经发布过好几次PAI的系统了,最近一次PAI 2.0是今年在深圳云栖大会进行的发布,这半年内PAI平台做了更多的算法优化,也提高了算法的性能。
PAI中所提供的算法是脱胎于内部的业务,这些算法大致可以分为三大类:PS算法、深度学习算法和MPI算法。深度学习的算法包括CNN、DNN和RNN,PS算法则包括如何做大规模参数管理等;MPI算法则包括比较传统的科学计算以及统计学算法。
进入到PAI平台之后也会看到很多组件,之前所提到的算法也都是通过组件的方式提供的。为了方便开发者的使用,PAI平台提供了拖拽的方式,可以通过类似连连看的方式实现自己的开发,这样就降低了开发的难度和成本。
在PAI平台上面会有一个搜索工具,可以方便开发者搜索实验,可以发现是否有人和自己的做了同样的实验,如果一样就可以利用已有的实验结果,同时也可以很容易地分享自己的实验,让其他人也可以受益于你的实验。
此外,PAI平台可以支持多种的数据源。因为机器学习与数据源是密不可分的,需要使用数据来训练自己的模型,所以PAI平台打通了众多的数据产品,包括MaxCompute Table、OSS数据源以及其他的结构化或者非结构化的数据。
同时PAI平台也会支持常用数据预处理和一些特征工程,可以做一些数据预处理或者常规的统计,使得整个人工智能形成完整的体系,帮助用户更快地实现自己的解决方案。
PAI平台支持模型的产出,就相当于模型就放置于这个目录下面,可以将这个模型下载下来,也可以通过在线服务方法实现一键服务。
当进行数据装载的时候,还可以看看数据的分布是什么样的,也可以看看在训练的过程数据的属性情况以及准确度情况。PAI提供了大量的可视化工具帮助算法工程师方便地进行模型的掌控。
在这个易用的PAI平台之下,存在三大引擎:深度学习引擎、参数服务器和MPI。
而在这些引擎之下还会有异构的资源,所以PAI平台也会深耕异构资源的开发。举个例子就是可以通过FPGA的可编程逻辑实现特定场景的人工智能的加速,如下图所示的是城市大脑的例子,使用FPGA加速CNN,构建的是SSD+Resnet-18网络,这个网络使用FPGA方案的核心频率可以跑完500M,性能是2.5倍的吞吐,三分之一的延时,五分之一的功耗和十分之一的价格。所以希望通过应用层,帮助算法工程师尝试自己的idea,同时深度地优化引擎,也同时会在硬件层深度地优化硬件,使得计算能力能够充分地得以发挥出来,进而大大地推进算法演进的速度。
未来,阿里巴巴人工智能PAI平台会朝着更开放、更丰富、更高效、更易用这四个方向发展。所谓更开放就是说不仅仅希望打造自己的核心引擎,也会允许外面的客户提供自己的引擎复用阿里巴巴的资源,也可以通过市场的开放和算法的开放贡献自己的算法加入到PAI的算法市场上面,充分地利用阿里云的入口与更多的客户进行解决方案的分享。所谓更丰富就是指的PAI平台会积累更多的算法,会有更多的模型产生,会有更多的工具来帮助开发者更快地组件解决方案。更高效指的是使得更多的想法得到实施,更易用则指的是使得开发的算法演进以及方案的演进变得更快。
今年3月份深圳云栖大会之后,PAI平台进行了以下更新:
发布了Tensorflow 1.1,1.2,并且在Tensorflow的基础上进行了深度优化,在模型的压缩和模型的优化等方面做了大量的工作,提高很多性能。
发布了MXNet 0.95版本。
增加了Tensorflow Notebook支持。
支持常规在线学习预测。
实验可以一键分享到云栖社区。
引擎性能更好。
北京开服。
支持最新的P100,支持单机八卡。
支持更多算法,并且提高算法性能。