编者按:微软正在做巨硬的东西,这听起来似乎不可思议。但这就是事实,而且正是因为软件不断增长的需求难以得到满足才让微软萌生了这个想法。这个想法曾经被认为是白日梦,但现在Project Catapult做出来的FPGA芯片已经部署到微软的Bing、Azure以及Office 365等服务上。未来几年微软的几百万台服务器都将部署这种专门加速计算的芯片。除了微软,Google、Amazon等互联网巨头也在探索着为AI等应用加速的新硬件,鉴于这些新硬件的部署规模,也许互联网巨头的未来将取决于他们采用哪一种硬件路线。FPGA的中间路线能否胜出呢,《连线》杂志对此进行了分析。
Project Catapult的硬件原型,为了迎接下一波AI浪潮,他们花了6年的时间重建微软的在线服务。
2012年12月,Doug Burger正站在鲍尔默面前,试图预测未来。
鲍尔默,微软的这位块头大、脾气大、头顶瓦数也大的CEO,正坐在99号大楼一楼的演讲室内。那栋楼是微软研发实验室总部的所在地,正好位于西雅图市郊。桌子绕着房子靠外一侧围成了U型,鲍尔默被他的高级幕僚包围着,他的笔记本打开着。4年前加入微软的计算机芯片研究人员Burger正在向高管们介绍一个新主意。他称之为Project Catapult。
Burger解释说,技术世界正在进入新的轨道。未来若干互联网巨头运营的少数互联网服务会变得无比复杂,跟之前的服务如此不同,以至于这些公司必须开发全新的架构才能运行。为此他们不但要开发软件来驱动这些服务,还需要开发硬件来支持,这些硬件包括服务器和网络引擎。Project Catapult会把专门的芯片部署到微软所有的服务器(几百万台)上面,这些芯片可以进行程序改编,用于执行特定任务。
不过Burger还来不及讲到芯片部分时,鲍尔默就开始查他的笔记本了。鲍尔默在造访微软研究院时说,他希望看到研发有所更新,而不是战略简报。Burger说:“他就这么开始拷问我。”微软已经花了40年的时间来开发Windows、Word、Excel这类的PC软件。现在刚刚在互联网站稳脚跟。而且肯定没有开发可编程计算机芯片所需的工具和工程师——这项任务既困难又耗时耗钱,而且有点怪异。微软做计算机芯片就像可口可乐做鱼翅汤一样。
Project Catapult目前的化身。
Burger身形消瘦、稍微有点秃顶,跟许多工程师一样,他头脑冷静且善于分析,对于鲍尔默的态度他可不干了。他告诉鲍尔默说像Google和Amazon这样的公司已经在朝着这个方向发展。他说现在的硬件制造商不能提供微软运行其在线服务所需的东西。他还说,如果微软不自己开发硬件的话就会落后于人。鲍尔默并不买账。不过片刻之后,另一个声音加入了这场刚讨论。此人是Qi Lu(陆奇),微软搜索引擎Bing的负责人。这2年陆的团队一直在跟Burger讨论可再编程计算机芯片的事情。陆说,Project Catapult不仅仅是可行,而且他的团队已经在启动了。
现在,Burger和陆奇均相信可改变世界的可编程芯片——所谓的现场可编程门阵列(FPGA)已经在这里了。FPGA已经成为Bing的基础,未来几周,它们将为新的、基于神经网络(按照人脑结构建模的人工智能)的搜索算法提供驱动——其执行这种AI的速度将比普通芯片快好几个数量级。相当于以前用4秒钟完成的事情现在只用23毫秒。微软的云计算服务Azure用的也是FPGA。未来几年,几乎所有的微软服务器都将内置一个FPGA。这个数量将达到几百万。Burger说:“这将赋予我们庞大的能力和无比的灵活性,而且还有经济性。现在这已经成为微软的标准,是遍布全球的架构。”
Catapult团队成员,左起分别是Adrian Caulfield、Eric Chung、Doug Burger以及 Andrew Putnam
这不仅仅是Bing在步Google后尘。Project Catapult标志着全球系统在未来运营方式的改变。从美国的Amazon到中国的百度,所有的互联网巨头都在用替代性的硅片来增补自己的标准服务器芯片——CPU,以便跟上AI快速变化的节奏。微软现在每年大概要投入50到60亿美元到运行其在线帝国所需的硬件上。所以2014年接任CEO的Satya Nadella说,这类工作“不再仅仅是研究,而是必要的优先事项。” 在99号大楼Burger试图解释的就是这个。这还推动着他和他的团队克服了数年的挫折,在熬过了重新设计以及制度上的阻挠之后,终于实现了一种新型的全球超级计算机。
2010年12月,微软研究员Andrew Putnam已经离开西雅图,开始返回自己的家——科罗拉多科泉市度假。再过2天就是圣诞节了,他还没有开始购物。当他开车去到购物商场时,电话响了。来电的是Burger,他的老板。Burger准备节后跟Bing的高管会面,他需要一套硬件的设计,这种硬件以FPGA为基础,可以运行Bing的机器学习算法。
Putnam跑到最近的一家星巴克,开始起草计划。这总共用去了他5个小时的时间,而且他还有时间去购物。
47岁的Burger和39岁的Putnam以前都是学者。Burger在奥斯汀的德州大学当了9年教授,他的专长是微处理器,曾经设计过一种名为EDGE的新型芯片。Putnam在华盛顿大学做过5年的研究人员,反复折腾着FPGA,这种可编程芯片诞生已经有几十年,但基本上是用来做其他处理器的原型。2009年Burger把Putnam带进了微软,两人开始共同探索用这些芯片来加速在线服务的想法。
Project Catapult的V1版,当时Doug Burger和他的团队在微软西雅图园区的数据中心进行了测试。
但这个想法即便是他们的老板都不买账。监管Burger部门的微软研究院副总裁Peter Lee说:“每隔2年就有‘FPGA终于要来了’的说法,所以跟任何有理性的人一样,每当有人推销这个的时候我就会翻白眼。”但Burger和他的团队相信,这个老想法成真的时候真的到了,而Bing正好是完美的测试案例。
微软的搜索引擎是一项独立的在线服务,运行在成千上万台服务器上。每一台机器都由一个CPU驱动,尽管像英特尔这样的公司还在继续改进,但这些芯片已经跟不上软件的发展节奏,后者很大程度上是因为人工智能新浪潮的涌现。像Bing这样的服务已经超越了摩尔定律,也就是晶体管数量每隔18个月就会翻一番的经典概念。事实上,结果证明仅仅靠堆积CPU已经不能解决这个问题。
不过另一方面,针对每一个新问题都要专门开发特定用途的芯片又太贵了。而FPGA正好填补了这一鸿沟。它们让工程师开发出比流水装配出来的通用CPU速度更快能耗更低的芯片,但是又可以通过定制化来处理不断变化的技术和商业模式这些新问题。
在那次节后的会议上,Burger向Bing的高管推介了FPGA加速搜索的低功耗方式。这些高管对此不置可否。于是在接下来的几个月内,Burger和他的团队根据Putnam圣诞节草拟的计划开发出了一个原型,并且证明用它跑Bing机器学习算法大概可以快100倍。现为瑞士洛桑联邦理工学院某系主任的Jim Larus当时是团队的另一名成员,他回忆道:“这时候他们开始真正感兴趣了。他们还开始让我们度过了一段真正难熬的日子。”
这个原型是一个专用的盒子,里面有6块FPGA,为整整一架服务器共享。如果盒子出问题,或者如果机器需要6个以上FPGA(考虑到机器学习模型的复杂性这种可能性越来越高)时,所有的机器就都运气用光了。对此Bing的工程师非常痛恨。Larus 说:“他们的恨是有道理的。”
于是Burger的团队又开始用几个月的时间折腾第二款原型。这次是一块电路板,每一台服务器都只插一块板,而且每块板只有一个FPGA。但是这块板跟其他服务器上的FPGA电路板都有连接从而创造了一个庞大的可编程芯片池,让任何Bing机器都可以使用。
正是这款原型把陆奇吸引了进来。他为Burger提供资金,给超过1600台服务器都装上了FPGA并进行了测试。该团队花费了6个月的时间,在中国大陆和台湾的帮助下做出了硬件,然后把第一个机架安装到微软园区的实验性数据中心里面。之后,一天晚上,中心的灭火系统突然爆炸了。他们花了3天时间才把机架恢复原形——令人惊喜的是居然还能工作。
2013和2014的那几个月里,测试表明,在使用这种新型芯片之后,Bing的“决策树”机器学习算法的运行速度快了400倍。到了2014年夏,微软开始公开说自己很快就会把这种硬件部署到生产用Bing数据中心上。不过然后公司又开始踩刹车。
在那10年的前半段时间里,Bing统治着微软对互联网的雄心,但到2015年,该公司已经有了两个庞大的在线服务:商业生产力套件Office 365,以及云计算服务微软Azure。跟所有竞争对手一样,微软高管意识到,运营日益发展的在线帝国的唯一有效方式,是所有服务都要基于共同的基础来运行。如果Project Catapult即将变革微软的话,这个项目不应该只有Bing独享。也应该在Azure和Office 365里面跑。
问题是,Azure高管对加速机器学习并不关心。他们的需求是改善网络。进出Azure数据中心的流量太过庞大,以至于该服务的CPU已经跟不上节奏。最终,像Azure首席架构师Mark Russinovich这样的人也发现了Catapult的用途——但不是像Bing那样用。他的团队在每台服务器接入核心网络的地方需要可编程芯片,以便在所有流量到达服务器前就可以处理掉。
第一版的FPGA架构原型是单机箱,由机架服务器共享(版本0)。然后团队切换到让每一台服务器都有自己的FPGA(版本1)。再之后他们把芯片置于服务器和整个网络之间(版本2)
所以FPGA帮被迫再次重新开发硬件。他们的第三个原型部署在每台服务器边缘,然后直接接入网络,同时仍然搭建了一个FPGA池让任何机器都可以访问。这开始有点Office 365也可以用的样子了。Project Catapult 终于准备好上线了。
Larus把众多次重新设计说成是噩梦的延续——这不仅是因为他们每次必须开发新硬件,而且还得对FPGA进行重新编程。他说:“这太恐怖了,对编程软件要糟糕许多。写起来要难很多,把东西搞对也要难得多。”这是非常繁琐的工作,比如试图变更芯片上微小的逻辑门就是这样。
现在最终的硬件已经就位,微软每次对这些芯片进行重新编程时都会面临着同样的挑战。他说:“这是审视和思考这个世界的一种非常不同的方式。但Catapult硬件的成本不到服务器所有其他成本的30%,所占功耗不到10%,而数据的处理速度却是它之前的2倍。”
然后就是大规模的铺开。微软Azure利用这些可编程芯片来引导数据。在Bing(全球桌面机器搜索市场份额约占20%,移动份额占6%)上,这些芯片被用于AI的新种类:深度神经网络。据微软的一位员工说,除了用于机器学习外,Office 365还在利用FPGA替其2310万用户进行加密和压缩。最终,Burger说,这些芯片会应用到微软所有的服务上。
Peter Lee说:“我还是被我们让公司做这个震到了。”Lee监管的是微软研究院的一个叫做NExT(新体验与新技术部门)的组织。在接任CEO之后,Nadella个人促成了这个新组织的成立,这显示出鲍尔默10年统治后的重大转变。其目的是培育能尽早看见曙光的研究——那种现在就能改变微软路线而不是几年后才收效的研究。Project Catapult就是一个突出的例子。而这是整个产业更大转变的一部分。Burger说:“这个飞跃来自非CPU技术。”
包括微软在内,所有的互联网巨头现在都以GPU(图像处理单元)来作为自己CPU的补充,GPU这种芯片的目的是为游戏等高度可视化应用渲染图像用的。比方说,当这些公司训练自己的神经网络识别照片中的人脸时——所谓训练就是给神经网络看好几亿张照片——其中大部分的计算就是由GPU来完成的。在训练完成后,像微软这样的巨头还利用硅替代,运行神经网络。即便定制化芯片贵得离谱,Google也已经在设计自己的处理器来执行神经网络,也就是Tensor处理单元(tensor processing unit,TPU)。
Google的TPU为了速度而牺牲掉长期的灵活性。它希望能,比方说消除识别智能手机语音命令时遭遇的任何延迟。问题是如果神经网络模型改变的话,Google就必须开发一种新的芯片出来。而使用FPGA的话,微软就能跑得更远。虽然FPGA速度并没有Google的定制化芯片那么快,但微软却可以在需要变化时对硅片进行重新编程。该公司不仅可以针对新的AI模型进行重新编程,而且任何任务都可胜任。如果其中一个设计似乎在未来几年都有用的话,微软什么时候都可以用专门芯片把FPGA替换掉。
最终硬件的一个较新版本,V2,这块卡会插入到每台微软服务器上,然后直接连接网络。
微软的服务规模太庞大了,所以使用的FPGA也太多了,以至于他们正在改变全球的芯片市场。FPGA出自Altera这家公司,英特尔执行副总裁Diane Bryant告诉我说,微软正是英特尔去年夏天把Altera给收购了的原因所在——这个案子的价值是167亿美元,是这家全球最大芯片制造商有史以来最大的一笔收购。她说,到2020年,所有主要云计算公司1/3的服务器都将内置FPGA。
CPU、GPU、TPU、FPGA,这些技术缩略语让人纠结。但重要的是潜台词。微软、Google、Amazon这些云计算的大公司对全球技术起着巨大的推动作用,所以这些芯片备选方案也会驱动着范围更广的app与在线服务世界。Lee说Project Catapult会让微软继续扩张自己的全球化超级计算机能力直到2030年。在此之后,他说,该公司就将迁移到量子计算。
后来当我跟Nadella通过电话交流时,他告诉我的大抵也差不多是这样。他们念的是微软的同一套脚本,都在兜售量子使能的超速计算机未来。考虑到开发量子机器的难度之高,这听起来似乎就像是一个白日梦。但几年前Project Catapult的情况也正是这样。