AI芯片最需要解决的是宽带问题
2020年备受关注的AI芯片创新峰会上姚颂谈及对行业现状的看法。他说,AI芯片这个词用得特别泛,AI领域本身就特别宽泛,有一小部分才是机器学习,机器学习中的一小部分才是深度学习,深度学习天然切分为训练和推理两个阶段,其中有数不过来的各种神经网络。
一个AI芯片可以指代的东西有很多,因此这是一个很宽泛的概念,按稍严格的分类,它可以分成训练、推理两个阶段,以及云端、终端两个应用场景。大家目前基本不在终端做训练,因此终端的场景象限基本是空的。
▲AI芯片分类:根据AI的阶段与应用场景
AI芯片核心解决的是什么问题?去堆并行算力?实际并不是。
谷歌TPU第一代的论文中写道,其芯片最开始是为了自己设计的GoogLeNet做的优化,CNN0的部分就是谷歌自己设计的Inception network,谷歌设计的峰值性能是每秒92TeraOps,而这个神经网络能跑到86,数值非常高;但是对于谷歌不太擅长的LSTM0,其性能只有3.7,LSTM1的性能只有2.8,原因在于它整个的存储系统的带宽其实不足以支撑跑这样的应用,因而造成了极大的算力浪费。
▲AI芯片最重要解决的是带宽不足的问题
AI芯片最重要解决的问题核心是带宽不足的问题,其中一种最粗暴且奢侈的方式就是用大量的片上SRAM(静态随机存取存储器),比如原来寒武纪用36MB DRAM做DianNao,深鉴科技曾用10.13MB SRAM做EIE,TPU采用过28MB SRAM。
而将这种工程美学发挥到中最“残暴”的公司,叫做Cerebras,它把一整个Wafer只切一片芯片,有18GB的SRAM,所有的数据、模型都存在片上,因此其性能爆棚。
当然这种方式是非常奢侈的,Cerebras要为它单独设计解决制冷、应力等问题,单片芯片的成本就在1百万美元左右,对外一片芯片卖500美元,这一价格非常高昂。因此业内就需要用微架构等其他方式解决这一问题。
业内常用的有两种解决方式:
一是在操作时加一些buffer,因为神经网络是一个虽然并行,但层间又是串行的结构。把前一层的输出buffer住,或把它直接用到下一层作为输入。
二是在操作时做一些切块,因为神经网络规模比较大,每次将它切一小部分,比如16X16,把切出来这一块的计算一次性做完,在做这部分计算的时候同步开始取下一块的数据,让这件事像流水线一样串起来,就可以掩盖掉很多存储、读取的延迟。
现在在数字电路层面,业内更多在做一些架构的更新,根据不同的应用需求做架构的设计。 #AI #芯片
领取专属 10元无门槛券
私享最新 技术干货