2015-2016的机器学习平台开源大潮中,美国是当之无愧的引领者:无论是谷歌、亚马逊、微软、IBM等互联网巨头,还是美国各大科研院所,为开源世界贡献了品类繁多的机器学习工具。这其中不乏华人的身影,比如开发出Caffe的贾杨清。
但在大陆这边,无论是BAT还是学界,在开源机器学习项目上始终慢了一拍,令人十分遗憾。这与我国世界最大AI研究者社区、占据AI科研领域半壁江山的江湖地位*颇为不符。让人欣喜的是,2016下半年,百度和腾讯先后发布了它们的开源平台战略。虽然姗姗来迟,但作为下半场入场的选手,它们的开源平台各自有什么意义?本文中,作为机器学习开源项目盘点的第三弹,雷锋网将与你一起看看包括百度腾讯平台在内的国内四大开源项目。
1.百度:希望获得开发者青睐的“PaddlePaddle”
2016年9月1日的百度世界大会上,百度首席科学家吴恩达宣布,该公司开发的异构分布式深度学习系统PaddlePaddle将对外开放。这标志着国内第一个机器学习开源平台的诞生。
其实,PaddlePaddle的开发与应用已经有段时日:它源自于2013年百度深度学习实验室创建的“Paddle”。当时的深度学习框架大多只支持单GPU运算,对于百度这样需要对大规模数据进行处理的机构,这显然远远不够,极大拖慢了研究速度。百度急需一种能够支持多GPU、多台机器并行计算的深度学习平台。而这就导致了Paddle的诞生。自2013年以来,Paddle一直被百度内部的研发工程师们所使用。
而Paddle的核心创始人,当年的百度深度学习实验室研究员徐伟,现在已是PaddlePaddle项目的负责人。
徐伟
对了,从“Paddle”到“PaddlePaddle”的命名还有一个小插曲:Paddle是“ParallelDistributedDeepLearning”的缩写,意为“并行分布式深度学习”。而去年9月发布时,吴恩达认为“PaddlePaddle”(英语意为划船——“让我们荡起双~昂~桨,小船儿推开波浪。。。”)其实更郎朗上口、更好记,于是就有了这么个可爱的名字。
那么,PaddlePaddle有什么特点?
相比现有深度学习框架,PaddlePaddle对开发者来说有什么优势?
首先,是易用性。
相比偏底层的谷歌TensorFlow,PaddlePaddle的特点非常明显:它能让开发者聚焦于构建深度学习模型的高层部分。项目负责人徐伟介绍:
抛开底层编码,使得TensorFlow里需要数行代码来实现的功能,可能在PaddlePaddle里只需要一两行。徐伟表示,用PaddlePaddle编写的机器翻译程序只需要“其他”深度学习工具四分之一的代码。这显然考虑到该领域广大的初入门新手,为他们降低开发机器学习模型的门槛。这带来的直接好处是,开发者使用PaddlePaddle更容易上手。
其次,是更快的速度。
另外,自诞生之日起,它就专注于充分利用GPU集群的性能,为分布式环境的并行计算进行加速。这使得在PebblePebble上,用大规模数据进行AI训练和推理可能要比TensorFlow这样的平台要快很多。
说到这里,业内对PaddlePaddle怎么看?
首先不得不提的是Caffe,许多资深开发者认为PaddlePaddle的设计理念与Caffe十分相似,怀疑是百度对标Caffe开发出的替代品。这有点类似于谷歌TensorFlow与Thano之间的替代关系。
知乎上,Caffe的创始人贾杨清对PaddlePaddle评价道:
最后,贾表示PaddlePaddle的整体架构功底很深,是下了功夫的。这方面,倒是赢得了开发者的普遍认同。
总结起来,业内对PaddlePaddle的总体评价是“设计干净、简洁,稳定,速度较快,显存占用较小”。
但是,具有这些优点,不保证PaddlePaddle就一定能在群雄割据的机器学习开源世界占有一席之地。有国外开发者表示,PaddlePaddle的最大优点是快。但是,比TensorFlow快的开源框架其实有很多:比如MXNet,NervanaSystem的Neon,以及三星的Veles,它们也都对分布式计算都很好的支持,但都不如TensorFlow普及程度高。这其中有TensorFlow庞大用户基础的原因,也得益于谷歌自家AI系统的加持。
百度的AI产品能够对普及PaddlePaddle产生多大的帮助,尚需观察。雷锋网获知,它已经应用于百度旗下的多项业务。百度表示:
最后,我们来看看对于自家推出的PaddlePaddle,李彦宏怎么说:
“经过了五六年的积累,PaddlePaddle实际上是百度深度学习算法的引擎,把源代码开放出来,让同学们、让社会上所有的年轻人能够学习,在它的基础上进行改进,我相信他们会发挥出来他们的创造力,去做到很多我们连想都没有想过的东西。”
2.腾讯:面向企业的“Angel”
2016,鹅厂在AI领域展开一系列大动作:
Angel将成为PaddlePaddle之后、BAT发布的第二个重磅开源平台。那么,它到底是什么?
简单来说,Angel是面向机器学习的分布式计算框架,由鹅厂与香港科技大学、北京大学联合研发。腾讯表示,它为企业级大规模机器学习任务提供解决方案,可与Caffe、TensorFlow和Torch等业界主流深度学习框架很好地兼容。但就雷锋网所知,它本身并不算是机器学习框架,而侧重于数据运算。
上个月18日的发布会上,腾讯首席数据专家蒋杰表示:
“面对腾讯快速增长的数据挖掘需求,我们希望开发一个面向机器学习的、能应对超大规模数据集的、高性能的计算框架,并且它要对用户足够友好,具有很低的使用门槛,就这样,Angel平台应运而生。”
这其中的关键词,一个是“大”规模数据,另一个是“低”使用门槛。
“大”方面,企鹅表示Angel支持十亿级别维度的模型训练:
“Angel采用多种业界最新技术和腾讯自主研发技术,包括SSP(StalesynchronousParallel)、异步分布式SGD、多线程参数共享模式HogWild、网络带宽流量调度算法、计算和网络请求流水化、参数更新索引和训练数据预处理方案等。这些技术使Angel性能大幅提高,达到Spark的数倍到数十倍,能在千万到十亿级的特征维度条件下运行。”
总的来讲,Angel的定位是对标Spark。蒋杰宣称,它融合了Spark和Petuum的优点。“以前Spark能跑的,现在Angel快几十倍;以前Spark跑不了的,Angel也能轻松跑出来。”
其实,Angel已经是鹅厂的第三代大数据计算平台。
但对于机器学习社区,Angel开源的意义是否如同鹅厂宣称的那样大?
对此,机器学习界的“网红”、微软研究员彭河森说道:
“对于小一点的公司和组织,Spark甚至MySQL都已经够了(为了政治正确我提一下PostgresQL);而对于大一点真的用得上Angel的企业,如阿里巴巴等,早就自主开发了自己的大数据处理平台。”
彭河森
最后,我们来看看蒋杰对Angel开源意义的官方总结:
“机器学习作为人工智能的一个重要类别,正处于发展初期,开源Angel,就是开放腾讯18年来的海量大数据处理经验和先进技术。我们连接一切连接的资源,激发更多创意,让这个好平台逐步转化成有价值的生态系统,让企业运营更有效、产品更智能、用户体验更好。”
3.阿里巴巴:犹抱琵牌半遮面的DTPAI
但凡说到平台,就不能不提阿里。
与百度比起来,阿里的AI战略布局看上去更“务实”:主要是依托阿里云计算、贴近淘宝生态圈的一系列AI工具与服务,比如阿里小蜜。而基础研究起步较晚,相对百度和鹅厂也更低调。2016年阿里AI战略的大事件是8月9日的云栖大会,马云亲自站台发布了人工智能ET,而它的前身是阿里“小Ai”。综合目前信息,阿里想要把ET打造成一个多用途AI平台:应用于语音、图像识别,城市计算(交通),企业云计算,“新制造”,医疗健康等等领域,让人不禁联想起IBMWatson。用阿里的话来说,ET将成为“全局智能”。
但是,在开源项目方面,阿里有什么布局(马云最喜欢用这样的词)?
答案有惊喜也有失望。
好消息是,阿里早在2015年就宣布了数据挖据平台DTPAI(全称:Datatechnology,thePlatformofAI,即数据技术—人工智能平台)。
坏消息是,那之后就没动静了。
当时,也就是2015年的八月,阿里宣布将为阿里云客户提供付费数据挖掘服务DTPAI。当然,对它的发布免不了大谈特谈一通“生态”、“平台”——宣称DTPAI是“中国第一个人工智能平台”。格调定得相当高。
它有什么特点?
首先,DTPAI将集成阿里巴巴核心算法库,包括特征工程、大规模机器学习、深度学习等等。其次,与百度、腾讯一样,阿里也很重视旗下产品的易用性。阿里ODPS和iDST产品经理韦啸表示,DTPAI支持鼠标拖拽的编程可视化,也支持模型可视化;并且广泛与MapReduce、Spark、DMLC、R等开源技术对接。
嗯,有关DTPAI的信息到此为止。Seriously,2015年之后它就再也没消息了。阿里云是耍猴还是在憋大招?我们只有走着瞧。
4.山世光:大陆学界硕果仅存的SeetaFace
盘点了BAT的开源平台规划,再来看一个始于学界的项目。与国外AI学界百花齐放的现状不同,大多数人从未听说过始于国内学界的机器学习开源项目,这方面几乎是空白一片——说是“几乎”,因为有中科院计算所山世光老师带领开发的人脸识别引擎SeetaFace。
山老师是我国AI界的学术大牛之一,2016年下半年已经下海创业,创业后不久就公开了SeetaFace。山老师的研究团队表示,开源SeetaFace是因为“该领域迄今尚无一套包括所有技术模块的、完全开源的基准人脸识别系统”。而SeetaFace将供学界和工业界免费使用,有望填补这一空白。
SeetaFace基于C++,不依赖于任何第三方的库函数。作为一套全自动人脸识别系统,它集成了三个核心模块,即:人脸检测模块(SeetaFaceDetection)、面部特征点定位模块(SeetaFaceAlignment)以及人脸特征提取与比对模块(SeetaFaceIdentification)。
该系统用单个英特尔i7CPU就可运行,成功降低了人脸识别的硬件门槛。它的开源,有望帮助大量有人脸识别任务需求的公司与实验室,在它们的产品服务中接入SeetaFace,大幅减少开发成本。