AI芯片:清华天机芯片内部结构分析(TianJic)
作者:互联网
最近,清华七年磨一剑,放出一大招,文章直接登上NATURE的封面。
《Towards artificial general intelligence with hybrid Tianjic chip architecture》。
文章介绍了整个TianJic的结构及具体应用。
本文延续以往一贯的风格,仅仅研究文章中公开的内部计算架构。
一、整体思路
人工智能通常有两个主要方向:
(1)一种是面向计算科学的方向
(2)一种是面向神经科学的方向
如下图所示。
1.面向计算科学方向
这个方向,整体思路是用大量精确计算来实现人工智能。比如ANN,具体会引入CNN,LSTM等计算。
2.面向神经科学方向
这个方向,整体思路是模仿人类大脑的工作原理,实现人工智能。比如SNN。
3.小结
这两个方向,可以看作原理不同的两类实现方式。之前的研究都是各自分离的。清华天机首次尝试将两种计算方式融合到一个芯片架构中,相辅相成,建立新的人工智能系统。
想必这也是为啥能登上Nature封面的一个重大原因吧。
二、计算核心结构
2.1 ANN与SNN
因为ANN与SNN的计算流程如下,存在一定程度的相似,可以共用部分运算逻辑。
比如,ANN中的CNN,主要做的是乘累加;
SNN,会用到加法。
具体,如下图所示。
2.2 融合ANN与SNN
二者可以共用加法逻辑。
清华用一个MUX去选择,当是SNN时,就跳过乘法逻辑,直接进入加法逻辑。
如下图所示。
2.3 TianJic FCore
上方的基础单元结构确定后,然后多个这样的逻辑组合起来,形成了TianJic的整体架构,成为FCore。
如下图所示。
可以看出,左侧的Axon,输入的是activition,右侧的Synapse mem,输入的是权重,经过中间的Dendrite的乘加逻辑后,将计算中间结果传递给下方的Soma,根据是SNN或者ANN,选择对应的计算路径,分别处理。
2.4 FCore Array
单个FCore可以通过配置,成为执行SNN或ANN的逻辑功能。
多个FCore,通过配置成SNN或ANN,再组合在一起,可以灵活配置组合形成不同拓扑结构。有点FPGA的可重构思想在里面。
比如某个SNN的FCore的输出可以作为另外一个ANN的FCore的输入。
如下图所示。
三、核心计算架构 FCore
3.1 FCore
FCore的整体结构可以从文章后面的补充附图略窥一二。
如下图所示。
从上图中可知,整个FCore由多个模块组合而成。
Axon模块,主要提供输入的图像数据(activision);
Synapse模块,主要提供权重参数;
Dendrite模块,执行乘法和加法计算;
Soma模块,执行后续的激活/pooling等功能。
Router模块,调配数据的传递,类似一个DMA结构,或者,实现可重构配置的功能。
这么一看,其实清华TianJic的架构,也很常见。
乍一看,比较像谷歌的TPU。但是,再看,又更像寒武纪的DianNao。
仔细一看,就是这二者的结合。
整体来说,架构的安排更加类似DianNao。
因为FCore的16个MAC并没有串联在一起形成阵列,而是单独的存在,非常类似寒武纪的DianNao架构。但是呢,又不是完全学的寒武纪的DianNao,大概就是,融合了PuDianNao与TPU的设计思路。
FCore怎么计算呢?
举个例子,计算某个卷积时,假设该卷积是3X3的,那么,就是9个乘法结果的累加。
由于FCore的每个MAC并没有串联一起,反而类似单独并行的存在,所以,估计是一个MAC,单独完成某个卷积需要的9次乘法,将每次的乘法结果传递给下面的加法,然后,等下一次的乘法结果到了就继续累加,一直等到9个乘法结果都累加在一起了,然后将计算结果传递给Soma模块的Potential Memory。
这么一看,FCore的计算方法,反而与寒武纪的PuDianNao比较像。
当然,我也只是单纯凭借文章中的文字及图片做的猜测,或许会有不准确的地方,所以只是写出来给大家当作娱乐一下,不要当真,我也不负责的,解释归清华啊。
四、TianJic 优缺点分析
从上面的分析中,简单认识了一下FCore的计算方式。
那么就顺势来看看TianJic的优点及缺点。
4.1 优点
这个就很明显了,最大的优点是融合了ANN与SNN两种不同类型的计算于一体。
单个的FCore,通过复用存储逻辑、计算逻辑,达到同一块芯片通过灵活配置可计算SNN和ANN。(感觉清华系的芯片,总是有一种可重构的思路在里面)
多个的FCore,通过配置成可执行ANN或SNN,然后再串联组合,形成功能多变的系统。多个FCore组成阵列,配置成不同的功能,就能够适应不同的需求。
整体来说,比较灵活。
4.2 缺点
清华毕竟是我考不上的学校,里面的人那自然是很厉害了,设计的芯片想必是没有缺点全是优点的。
不过,我就吹毛求疵吧,提一下吧。
最大的感受是:算力不够!
从截图看,一个Dendrite模块,才16个MAC,这个算力就很小了。
对比一下:
DianNao 16X16=256个乘法器, 16个加法器
TPU1 256X256=64K个MAC(乘加单元,等同包含一个乘法器,一个加法器)
TianJic 的FCore 只有 16个MAC
这么一对比,就发现,TianJic的运算单元太少了,别说与多年前的TPU1比了,就是DianNao都能秒杀FCore。FCore表现出来就是算力不够。如果是在DianNao那个年代,还行,但是现在都是9102年了,这点算力根本不够的。
估计,这也是为啥TianJic会有组成阵列的需要了。
不过,就算能够用多个FCore组合成算力更强大的阵列,但是感觉还不如增大单个FCore的计算资源。
多个FCore组合在一起,数据的传输延迟,功耗,都远远大于单个FCore内部的传输。
所以,我单纯觉得算力太弱,如果组成足够算力的阵列,功耗又真的不小,感觉挺鸡肋的。
别打我,不说了~~~
标签:TianJic,芯片,ANN,AI,FCore,计算,SNN,DianNao 来源: https://blog.csdn.net/evolone/article/details/100036990