距离Google发布TPU也有一个多星期了,掐指一算,国内众媒体和大众的解读TPU的热情也差不多该降下来了。我想在这里说点大家可能不愿意听的。 噢,我当然不是说这次TPU发布没有意义,虽然TPU已经是一个开展了数年,甚至TPU也实用了一两年了的项目,多家媒体在之前对TPU进行过无数次的报道了。但在这之前并没有多少人能了解TPU的具体结构和细节指标。大家对TPU的看法多数还是停留在猜想中。这次谷歌公布了TPU许多非常详细的技术指标,确实能让许多对TPU有好奇心的人一饱眼福。 但要说TPU再往深一层里解读,我实在是觉得没有必要。大家都知道我国语文教育的一大特点就是喜欢让我们解读文章背后的意思,有时候我禁不住会怀疑,是不是正因为当初语文学得好的那一批人长大后很多真正从事了与写作有关的行业,才导致一旦有比芝麻稍微大一点的事发生,各种解读文就如雨后春笋般冒了出来,是阅读理解做习惯了?好吧,老实说,这个地图炮开的我自己也觉得很没有意思,实在是因为我看到有些媒体一如既往的秉持小事化大,大事化炸的风格。尤其是一篇公众号的文章说谷歌在TPU的对外宣传上吹的“天花乱坠”,并由此直线上升到批判西方一向善于“炒作一些概念”,让我感觉到有些话不吐不快:谷歌毕竟就只是发了一篇描述一个数年前就开始的项目的TPU内部结构和一些TPU性能参数的论文和一篇提炼了其中一些内容的博文而已啊。要说吹的天花乱坠,恐怕国内外的某些媒体同行的功劳更大一些吧。 没错,这次TPU发布确实可以算是件大事,但硬要说TPU发布对AI的未来有什么意义,TPU会对现在的运算芯片市场有什么影响,体现了Google什么什么方面的实力……真不一定有必要。很大程度上,这些略显强行的关于TPU的解读并没有什么意义。这个被谷歌“吹”的“天花乱坠”的“概念”,只不过是市场发展一个很自然的产物罢了。 TPU的架构是不是以前就有? 是的,TPU采用的脉动阵列处理结构最早由美籍华人计算机科学家孔祥重(H.T.Kung)和澳大利亚计算机科学家及数学家Richard P. Brent提出,TPU与现在流行的SIMD结构(单指令多数据流)结构有相似之处,但又有着明显的区别。简单解释一下的话,就是在脉动阵列处理结构下,数据向负责处理的运算阵列(运算阵列中有许多个独立的运算单元)传递和处理的方式是有严格的流程规定的,以确保能将所有芯片的处理能力最大限度的发挥出来,在这种计算方式中,需要运算的数字就像流水一样井然有序的“流”进每个处理器中,并得到这些处理器的同时处理。当全部的数字都“流”进去的时候,计算也就在同时完成了。这样精细安排结构的代价就是其通用性受到了限制。80年代初,中科院的前辈们就曾将这种架构的计算设备用在石油勘探上过。 (如果你有一定线性代数基础的话,应该可以理解,上面就是脉动阵列处理机在进行矩阵乘法运算时的过程,举个例子,其中的a11每次向右移一格,刚好依次与自己在同一格相遇的b11、b12、b13相乘,而b11则是每次向下一格,刚好依次与a11、a21、a31相乘,以此类推) 这个架构在今天的日常生活中并不多见。相比之下通用性更好的SIMD成为了今天的主流。而通用性或许是SIMD胜出很关键的一个原因,毕竟相对于在某个领域的速度快点,更多人需要的是一种通用的能满足他们各种需求的计算设备,你不可能要求每个人要用电脑来做什么事之前先根据自己的需求把电路的结构优化一下。 不过当今的世界对于计算能力的需求其实处于一个很矛盾的状态。通用平台早就已经能满足大部分人的需求,以至于像做手机这样的事都慢慢被大家戏称为搭积木——SOC已经给手机需要的绝大多数运算量提供了一个很好的解决方案,而且这个运算量也已经慢慢超出了大众使用的需求,更不用说电脑了。但是在另一方面,在一些科研的前沿领域,比如深度学习。计算量却一直显得捉襟见肘,训练一个深度学习算法动辄需要几周甚至几个月。当摩尔定律指出的硬件发展规律慢慢开始表现出瓶颈,开始有人尝试使用一些不那么主流的架构,或者研发一些新的架构。TPU就属于找到了一些以前的架构,并尝试能不能利用现在的技术将它的优势更好的发挥出来。 在TPU这件事上,谷歌高调吗? 在TPU这件事上,谷歌一点也不高调,而且这种不高调简直是全方位的不高调。首先,TPU不卖,至少谷歌已经在很多场合公开表示过TPU不会进入市场售卖,媒体也对此进行过报道。也就是说谷歌完全没有必要像英特尔或者英伟达那样费劲吆喝自己的TPU产品,好博取更大的市场份额。从谷歌自己的表述来看,它之所以设计这么一个专用的TPU芯片,是因为自己的越来越多的产品开始使用非常复杂的深度学习模型,从而产生了真真切切的提升计算能力的需求。这也是谷歌同英特尔和英伟达这两家同样为人工智能设计了芯片的公司的不同之处:后者是看到了市场上这样的需求,于是自己针对这种需求设计了好产品,以期获得更好的销量,而谷歌是自己就有这种需求,所以设计了一个TPU产品来满足它。出发点是满足自己的需求,也同样意味着没有必要向市场太过高调的宣传自己的TPU产品。 事实上谷歌对TPU这件事也确实一直比较低调,包括这次的TPU发布,基本也只是在博客上说了一下TPU性能相对于以前硬件的优势,发了一篇中规中矩的论文,不像英特尔和英伟达的新产品通常还要开个发布会,更何况TPU也不是新产品,而是谷歌内部已经使用了几年的TPU芯片。谷歌甚至还在论文里说:现在在计算机对新架构的尝试实在是比较少,因此希望TPU的发布能给后来者以启示,在此基础上做出更成功的继任产品。也就是说谷歌都不介意其他厂商模仿自己的TPU产品,只要对计算平台的整体水平有所促进就行。这样的行为,我实在是没法将其与“天花乱坠的炒作概念”联系起来。也没有感觉到有什么往市场或者人工智能发展方面进行“深度解读”的必要性。 谷歌真的在TPU论文里说,“我希望我们的后继者能造出比我们更强的产品” 图 如果说非要针对TPU说出个一二三,那我们到底应该怎么看待它? 前面说过了,TPU不卖,如果谷歌不反悔的话,这就意味着我们除非自己进了谷歌,想用上TPU只能寄希望于谷歌的云服务能开放我们对TPU的使用权限了,这首先是说,TPU不太可能会成为英特尔和英伟达产品的直接竞争对手。但就算TPU进入了市场,仍然有许多其他的因素会影响它的最终成绩。 前两天TPU的发布还让黄仁勋亲自出来发声要把Google怼回去,天知道他一边怼心里会不会一边有那么一种“我为什么要跟他纠结于几倍还是几十倍性能这种破事上……没办法,谁让观众愿意看呢”的想法。 因为不管大家有没有意识到,一个硬件发布的最终意义,不是去和别的硬件比在这种计算上又快了多少倍,那种计算上又省了多少电,而是它对它的购买者来说,够不够划算?对于开发者来说,到底够不够好用?(当然,有很多时候这两者可能是同一人) 什么叫划不划算?性价比这个词我相信大家一定不陌生,有些硬件,可能拥有能把整个世界踩在脚下的计算能力,但对于一个全新的领域来说,新硬件的性能越强大,往往也意味着需要越高的水平才能驾驭。在实际的开发中,知道如何用最简洁的方法编写代码、如何使用才能发挥出硬件的最大实力和使用多强的硬件一样重要甚至要更重要。如果代码写的不好,计算机总是要在重复的步骤上浪费很多时间,那用再强的硬件也没有多大意义。超级大企业里专门研究这种方向的部门肯定有很多厉害的人物,他们会知道如何把这些个硬件的性能榨干到一丝不剩,但是现在和以后可能会出现的更多轻度使用AI技术来改善自己业务水平的中小企业往往没有条件和动力去找到这样的人,而且他们对时间的紧迫程度要求也不一定会很高,算法训练慢上几天一个月,他们可能不是很在意。所以最后影响销量的最大因素可能还是营销和价格……除非能在性价比上拉开非常非常大的差距。 在讲到性价比的同时,我们也提到了好不好用。这款硬件是横刀千军、自重三吨的大锤,还是弹药稀缺却能百步穿杨的*WF词语*?一个开发者要花掉多少时间才能学会这个硬件能提供的大部分特性?它的易扩展性、稳定性到不到位?这其中任何一点差距都可能导致开发者还没来得及赢回训练算法的那几周时间,先在设计算法上卡了一个月。一款好的硬件发展的最终境界应该是达到对使用者透明的程度,也就是使用者在编程的过程终不需要去关心它的存在,只要按照自己的需要去写程序就好了,而这个硬件自然就能找到最合适的办法把程序运行出来。越能接近这种程度的硬件,可以说是会越受欢迎的。目前的这些硬件,不管是TPU,还是在文章中被拿来和其相比的K80和Haswell CPU,目前在AI开发方面都还没法达到这种程度。也就是说,我的看法是:为AI定制的硬件估计还有很长的路要走,TPU与NVIDIA和英特尔的同类产品相比,可能有一些优势,但终究没有拉开质的差距,何况以黄仁勋的反应来看,TPU的性能优势也没有到轻轻松松几十倍那么夸张,TPU仍然能顺利的归入硬件性能的自然发展曲线之列。那在这基础之上,把TPU再做更多的琢磨揣测,就显得很无必要了。 无论如何,每一次的进步都是值得我们为之鼓掌的,但同时,也是无需强行解读的。在硬件向着那个方向努力发展的时候,我们只要好好关注这领域的动向,客观的评价每一次进步,并将这些进步应用于自己的实际工作中(如果这是你的工作的话),这样,应该就是对这些努力研发新硬件的先驱者们最大的鼓励了。所以,从谷歌的TPU开始,做一个不过度解读的人! |