徐元
距离1996年“深蓝”大战卡斯帕罗夫整整20年后,“AlphaGO再次通过人机对战的形式为人工智能(Artificial Intelligence,AI)的发展历史添上了浓重一笔。
从“深蓝”到“AlphaGO”,人工智能走过二十年。站在今天,我们可以笑言那曾经令人瞠目结舌的“深蓝”实际上只是运行于超级计算机上的一个很棒的国际象棋程序,而为了支撑这个程序,IBM团队打造了一台重1.2吨、配备480颗国际象棋专用芯片的庞然大物。
不同于“深蓝”依靠超强运算能力所采取的遍历搜索策略,“AlphaGO的设计中融入了近年来取得显著进展的深度学习算法。深度学习之所以被称为“深度”,是相对前向误差反馈神经网络(BP)、支持向量机(SVM)等浅层学习算法而言。后者的局限性在于有限样本和计算单元情况下,对复杂函数的表示能力有限,且需要依靠人工经验抽取样本特征。深度学习算法则通过构建一种深层非线性网络结构来实现复杂函数逼近及自动特征提取,具有强大的从少数样本集中挖掘数据统计规律的能力。
在基于深度学习方法的人脸识别领域,2014年,Facebook公司的DeepFace项目以及香港中文大学的DeepID项目在户外人脸识别数据库上的识别正确率分别达到97.45%和97.35%,几乎可以比肩人类97.5%的识别率。此外,在图像分类、自然语音识别等领域,深度学习也已证明了其无可比拟的优势,特别是在现存最复杂的完全信息博弈之一的围棋上的成功,说明该算法还大有潜力可挖。
关于AlphaGO还有个不为人知的小插曲。在对战李世石之前,AlphaGO曾于2016年1月以5:0的悬殊比分完胜欧洲围棋冠军樊麾二段。旁观的李世石在比赛结束后表示有信心捍卫人类在棋类运动上最后的荣誉。然而短短的一个月时间内,Google将AlphaGO的核心运算单元从CPU+GPU换成了专门的深度学习芯片TPU。于是,我们看到了“石佛”尴尬的笑容和发抖的手指。
脱离硬件支持
深度学习只能是“屠龙之技”
事实上,AI界的泰斗,加拿大多伦多大学的Hiton教授早在2006年就提出了深度学习的概念,浅层学习算法更是早在上世纪80年代就为学术界所广泛认可。之所以最近几年该领域应用才逐渐升温,是因为AI的发展离不开两方面的支持,大数据和计算资源。
深度学习模型需要通过大量的数据训练才能获得理想的效果。以语音识别问题为例,仅在其声学建模部分,算法就面临着十亿到千亿级别的训练样本。在这种情况下,只有表达能力强的数学模型才能够充分发掘海量数据中蕴藏的丰富信息。相应地,海量数据的运算处理也必须有强大的计算资源作为支撑。
举个毫不夸张的例子,今天的计算机一个中小型网络的训练需要一天时间,可能使用20年前的计算机需要近20年才能完成。因此,即便深度学习算法早20年诞生,没有硬件匹配也只能是屠龙之技。而即便是今天,AI相关硬件的发展仍远落后于软件算法。一方面,AI界的算法大牛实在太多,甩开摩尔定律数十年来笔耕不辍地升级着软件;另一方面,当前执行深度学习算法的主流方式是采用GPU芯片,为深度学习算法专门定制的芯片还远没有形成规模。虽然从架构上看,GPU相比CPU更有效率,但是离最优还相距甚远。而且GPU功耗惊人,很难委身于移动终端,更遑论物联网应用。
云端“高吞吐”
本地“小快灵”
目前的AI应用主要分为用于服务器端和用于移动终端两大类。服务器端的负责AI算法的芯片一方面要支持尽可能多的网络结构以保证算法的正确率和泛化能力;另一方面必须支持高精度浮点数运算,峰值性能至少要达到Tflops(每秒执行10^12次浮点数运算)级别,所以功耗非常大(>200W);而且为了能够提升性能必须支持阵列式结构(即可以把多块芯片组成一个计算阵列以加速运算)。由于服务器端的AI芯片必须兼顾通用性,因此性能优化无法做到量体裁衣,只能做一些宏观的优化。
现有的主流服务器端的硬件加速器以图形处理器GPU和现场可编程逻辑门阵列FPGA为主。GPU具有强大的浮点运算能力,因此除图像处理的本职工作外,被广泛应用于科学计算、密码破解、数值分析,海量数据处理等需要大规模并行计算的领域。
与GPU相比,FPGA器件虽然在计算运行速度上与ASIC芯片有所差距(大约是GPU的一半,是同代ASIC的1/10),产品更新换代的速度也要慢于GPU芯片(GPU一般是一年到一年半更新换代,而FPGA是两到三年);但是功耗仅仅是GPU的1/10,并且还可以通过重配置对目标应用进行最大限度的优化。除了FPGA和GPU之外,也有不少公司在做服务器端的深度学习加速芯片,例如Google的TPU、Intel的Nervana System以及Wave Computing等等。
移动端的AI芯片和服务器端的AI芯片在设计思路上有着本质的区别。首先,移动端的AI芯片必须满足低延迟要求。这里的延迟是指移动终端与云端或服务器端的通信延迟。以大家熟悉的siri应用为例,移动终端把语音数据上传至云端,云端执行算法并把结果送回移动端,这当然要求网络延迟尽可能小以提升用户体验。而在驾驶辅助、安防监控等对实时性要求极为严苛的应用场景下,低延迟的重要性更是无需赘言。其次,移动端AI芯片必须保证功耗控制在一定范围内,换言之,必须保证很高的计算能效(完成一次计算所需要的能量)。最后,移动端AI应用对算法的性能要求不如服务器端苛刻,允许一些计算精度损失,因此可以使用一些定点数运算以及网络压缩的办法来加速运算。
而如果从另一个角度看,把所有数据传回云端一方面有可能造成网络的拥堵,另一方面存在数据安全问题,一旦数据在传输过程中被恶意劫持,后果将无法想象。因此,一个必然的趋势是在移动端本地分担部分快速反应的AI算法,从而尽量避免上述问题。
AI专用芯片
业界巨头们的蓝海
正如20年前多媒体应用及3D游戏蓬勃发展倒逼显卡硬件升级一样,互联网大数据的兴起对超算芯片提出了新的需求。如前所述,GPU和FPGA是目前软件企业采取的主流方案。百度的机器学习硬件系统就是用FPGA搭建了一款AI专用芯片,并已大规模部署在语音识别、广告点击率预估模型等应用中。而语音识别领域的科大讯飞,则将几乎所有深度学习训练方面的运算都放在GPU加速卡上运行。不过业界也有消息,科大讯飞计划在语音识别业务中启用FPGA平台。
作为GPU和FPGA领域的巨头,Nvidia和Intel已相继公布了开发AI专用芯片的计划。2016年上半年,Nvidia为深度神经网络推出了Tesla P100 GPU,并基于此开发了深度学习超级计算机NVIDIA DGX-1。与此同时,IBM已与Nvidia推出了几款专门针对人工智能领域的服务器产品。而收购了FPGA巨头Altera公司的Intel也不甘落后,结合FPGA在大数据运算处理方面的优势,全力打造新的专注大数据高性能运算以及AI应用的至强融合(Xeon Phi)系列处理器。
此外,Intel还于2016年8月宣布收购深度学习芯片初创公司Nervana,以增强Intel在AI方面的业务能力。目前,芯片层面最大的变数来自于Google的TPU芯片。这款芯片是Google专门为其深度神经网络的软件驱动引擎TensorFlow量身打造的。谷歌表示,按照摩尔定律的发展轨迹,现在的TPU计算能力相当于未来七年才能达到的计算水平。目前,TPU已经服务于Google的AI系统RankBrain、街景Street View、AlphaGO等应用服务。
TPU的高效能来自于Google专门为AI应用做出的针对性优化。在效能与功耗上TPU能够更紧密地适配机器学习算法,这一点要远胜于GPU及FPGA等通用芯片。从性能角度而言,目前针对某个算法优化的专用AI芯片能比GPU在性能上提升多少还未有定论,这也要结合具体算法来看。如果GPU刚好卡到某个瓶颈,那么AI芯片在运算速度上提升几十倍也是有可能的。
AI算法始终保持着快速演进的趋势,因此专用AI芯片的发展一定与软件是并行互补的。从成本角度来看,任何芯片一旦量产,成本都会迅速下降。就服务器端的AI芯片而言,首先量产肯定不如移动市场大;其次由于强调运算性能,导致其技术壁垒较高,新的竞争者难以快速切入。因此目前来看,AI芯片基本没有创业机会。流片在千万美元级别,全世界的玩家屈指可数。而所有巨头又都盯着AI这块巨大的蛋糕,因此在该领域基本不可能有搅局者的出现。AI虽然是蓝海,但只是大公司的蓝海。
(作者单位:赛迪顾问半导体产业研究中心)