AlphaGo的芯片,真有宣传得那么厉害?
来源:观察者网
2017-05-25 15:31
【本文转自微信公众号“科工力量”(ID:guanchacaijing)】
在柯洁连续两盘负于阿法狗之后,一些文章声称“谷歌自主处理器TPU太猛:AlphaGo只用一颗便完虐人类”、“一个TPU相当于15-30个GPU”,言下之意就是TPU性能极强。TPU虽然性能先进,有其长处,但也有短板,而且就性能来说,“一个TPU相当于15-30个GPU”的说法也不客观。
TPU
TPU并非技术革新
TPU并非技术革新,其架构也早已有之,其实是对经典技术的致敬。
人工智能是让机器模拟人的思维方式,使电脑能以类似人脑的方式进行思考、识别语音、识别图像、理解文章含义。而要实现这一点,硬件的性能是一大瓶颈——毕竟人脑有千亿神经元,百万亿突触构成的复杂网络,现在主流的神经网络算法如(AlexNet和VGG)也有百万、千万的神经元和突触,而现有芯片和这个还有多个数量级的差距。
正是对硬件性能的需求,全球众多科技公司纷纷开发可用于人工智能的硬件——Intel推出了用于深度学习的Xeon Phi家族新成员Knights Mill。英伟达推出了DGX-1 系统和用于深度学习的Tesla V100。阿尔特拉推出了用于人工智能的FPGA。CEVA公司、Cadence公司、Synopsys公司推出了XM4处理器、Tensilica Vision P5处理器、EV处理器等产品,也就是选择用传统SIMD/DSP架构适配神经网络。中科院计算所开发了ASIC芯片寒武纪。
正是因为人工智能是一个新兴市场,所以在处理器上出现百花齐放的状况。
而谷歌的TPU其实也是一款ASIC。而且根据谷歌披露的资料,TPU采用了脉动阵列机的架构。脉动阵列架构其实是非常老的技术,同时也是非常经典的技术。早在上世纪80年代初,中科院计算所的夏培肃院士和李国杰院士就曾将脉动阵列架构用于石油勘探,计算所曾经研发过的石油勘探专用机就是采用了脉动阵列架构。
因此,TPU在架构方面并没有太多新意,在其架构公开之前,在学术界和工业界其实已经有大量类似的工作,比如MIT于2016年前后发表的Eyeriss也是类似的架构,将传统脉动阵列机的结构用于处理深度学习并非什么新鲜事。
谷歌做的事情是将经典的架构进行完善,并将其用在阿法狗上。诚然,谷歌做出的成果不容抹杀,但也不宜过度吹捧。
TPU上的内部结构
一个TPU相当于15-30个GPU并不客观
为了在人工智能这个新兴市场跑马圈地,科技公司在宣传上取巧已经是常态。在相关论文中,就有TPU相比类似的服务器级Intel Haswell CPU和NVIDIA K80 GPU,TPU在AI运算测试中的平均速度要快15-30倍,TPU的每瓦性能要比普通的GPU高出25-80倍的表述。
但其实这是进行选择性比较的结果——谷歌的TPU和Intel CPU、英伟达GPU的对比中,选择了相对老旧的Intel Haswell和NVIDIA K80 GPU来做对比,而不是Intel和英伟达最新的产品做对比。
对此,英伟达还专门反驳过谷歌的宣传,指出谷歌是用TPU对比英伟达5年前的GPU——Tesla K80采用的是Kepler架构,发布于2012年,谷歌其实是以TPU对比2012年的Tesla K80,然后得出TPU性能是GPU的13倍的结论。而且英伟达还拿出了2016年的Tesla P40来对比TPU,并指出P40加速卡的加速性能达到了TPU的2倍,带宽则是TPU的10倍,还支持TPU没有的FP32运算。
在不久前,谷歌发布了第二代TPU,有媒体称,第二代TPU的浮点运算性能可以达到180TFlops,性能优于英伟达Tesla V100的120TFlops。但这个宣传也是非常艺术的,因为Intel的Knights Mill的双精浮点性能为3TFlops,阿尔特拉针对深度学习开发的FPGA双精浮点性能为1.5TFlops,Tesla V100双精浮点运算性能为7.5TFlops。宣传第二代TPU达到180TFlops的性能,很容易让人产生TPU具有压倒性优势的嫌疑。
第二代TPU
必须说明的是180TFlops并非是之前介绍Knights Mill、Tesla V100时的双精浮点性能。比如英伟达官方公布Tesla V100的单精度浮点性能15 TFlops,双精浮点运算性能为7.5TFlops,双精度浮点性能对科学计算意义较大,单精度和双精度浮点性在深度学习中有意义,半精度的话,要看针对的具体神经网络。由于目前并不了解二代TPU的具体细节,严谨来说并不能推测宣传中第二代TPU 180TFlops到底是什么,但十有八九不是单精度、双精度和半精度。在报道中之所以用180TFlops这个数值,这恐怕就是宣传的艺术吧。
TPU的优点和不足
TPU的开发成本和风险是相对偏高的。TPU是ASIC,ASIC的不足TPU兼有之。ASIC是按照特定需求定制化的特殊芯片,往往在特定功能上进行专门强化以更好服务于特定应用。不过,ASIC专用芯片的属性,使ASIC的开发成本比较高,开发周期也比较长,而如果无法实现特定应用的规模化推广,前期的研发投入很可能会打水漂——因为ASIC的专用属性,这种芯片在其他方面将很难有用武之地。
正是因此,在局势不明朗的情况下,企业更加倾向于通用性较好的CPU、GPU,以及更加灵活的FPGA。谷歌之所以选择ASIC,主要是因为谷歌本身有很多深度学习方面的应用,图像搜索、谷歌翻译等服务都需要大量硬件的支持,依靠自产自销的方式就可以实现TPU的规模化应用,这样就可以平摊TPU相对较高的研发成本。
第一代TPU在一些情形下存在效率偏低的问题。从谷歌公布的资料看,在实际运行中,TPU虽然做卷积神经网路(CNN)时总体效果还是不错,但面对退化情形的卷积上也会遇到困难。做其他类型的神经网络运算,效率也不是那么高,比如在语音识别和自然语言理解中常用的长短期记忆网络(LSTM)上面,TPU只有4%左右的效率。诚然这是第一代TPU的情况,对于第二代TPU到底怎么样,还有待谷歌进一步披露。
TPU的支持的编程模型少于GPU。谷歌的TPU处理器针对TensorFlow,因此无法像英伟达的Tesla V100等GPU可额外支持Caffe、Cognitive Toolkit等编程架构。相比之下,寒武纪虽然同样是ASIC,但没有选择经典的脉动阵列架构,而是选择了更加激进的技术路线,而且寒武纪支持常用的Caffe和TensorFlow等编程架构,在应用弹性上略胜一筹。
不外卖是因为缺乏市场竞争力
谷歌TPU不外卖只是因为这种芯片很难卖出去。不外卖的做法并非是因为TPU太先进,怕出售后技术外泄,因而藏着掖着。而是因为TPU的特殊性使其缺乏市场竞争力。这里的缺乏市场竞争力,并非指其在执行特定任务时性能不够好,而是因为应用面过于狭窄,加上成本偏高所导致的。
因为TPU的通用性不是很好,而且应用场景也相对单一,加上没有规模化部署的情况下,成本是相对偏高的,如果是小公司自己选择硬件的话,会更加青睐于GPU。因为GPU的应用范围更广,而且这些小公司还可以根据自己的实际需求,调整任务的安排。不过,考虑到偏高的搭建成本和维护成本,小公司更可能直接从谷歌等公司那里购买云服务,而非购买TPU或GPU。
而真正可能会采购TPU的只能是百度、阿里、脸书这一类大公司,因为这些大公司有比较大的需求,所以会考虑采购TPU。不过,对于百度、阿里、脸书这一类大公司来说,采购TPU等于把自己命脉交出去。大公司会倾向于自己开发专用硬件,或是采购国内不存在竞争关系的单位开发的硬件,比如百度就和申威有接触,尝试使用申威26010。
正是因此,TPU对于小公司而言不如GPU好用,对于大公司而言完全可以自己开发,或者联合一些单位开发针对深度学习的硬件,TPU不外卖的根源就在于此了。
本文由“科工力量”内容团队制作,未经授权,不得转载,否则将追究法律责任。