AI芯片:清华天机芯片内部结构分析(TianJic)

最近,清华七年磨一剑,放出一大招,文章直接登上NATURE的封面。
《Towards artificial general intelligence with hybrid Tianjic chip architecture》。
文章介绍了整个TianJic的结构及具体应用。
本文延续以往一贯的风格,仅仅研究文章中公开的内部计算架构。

一、整体思路

人工智能通常有两个主要方向:
(1)一种是面向计算科学的方向
(2)一种是面向神经科学的方向
如下图所示。
AI芯片:清华天机芯片内部结构分析(TianJic)

1.面向计算科学方向

这个方向,整体思路是用大量精确计算来实现人工智能。比如ANN,具体会引入CNN,LSTM等计算。

2.面向神经科学方向

这个方向,整体思路是模仿人类大脑的工作原理,实现人工智能。比如SNN。

3.小结

这两个方向,可以看作原理不同的两类实现方式。之前的研究都是各自分离的。清华天机首次尝试将两种计算方式融合到一个芯片架构中,相辅相成,建立新的人工智能系统。
想必这也是为啥能登上Nature封面的一个重大原因吧。

二、计算核心结构

2.1 ANN与SNN

因为ANN与SNN的计算流程如下,存在一定程度的相似,可以共用部分运算逻辑。
比如,ANN中的CNN,主要做的是乘累加;
SNN,会用到加法。
具体,如下图所示。

AI芯片:清华天机芯片内部结构分析(TianJic)

2.2 融合ANN与SNN

二者可以共用加法逻辑。
清华用一个MUX去选择,当是SNN时,就跳过乘法逻辑,直接进入加法逻辑。
如下图所示。
AI芯片:清华天机芯片内部结构分析(TianJic)

2.3 TianJic FCore

上方的基础单元结构确定后,然后多个这样的逻辑组合起来,形成了TianJic的整体架构,成为FCore。
如下图所示。
AI芯片:清华天机芯片内部结构分析(TianJic)
可以看出,左侧的Axon,输入的是activition,右侧的Synapse mem,输入的是权重,经过中间的Dendrite的乘加逻辑后,将计算中间结果传递给下方的Soma,根据是SNN或者ANN,选择对应的计算路径,分别处理。

2.4 FCore Array

单个FCore可以通过配置,成为执行SNN或ANN的逻辑功能。
多个FCore,通过配置成SNN或ANN,再组合在一起,可以灵活配置组合形成不同拓扑结构。有点FPGA的可重构思想在里面。
比如某个SNN的FCore的输出可以作为另外一个ANN的FCore的输入。
如下图所示。
AI芯片:清华天机芯片内部结构分析(TianJic)

三、核心计算架构 FCore

3.1 FCore

FCore的整体结构可以从文章后面的补充附图略窥一二。
如下图所示。

AI芯片:清华天机芯片内部结构分析(TianJic)
从上图中可知,整个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内部的传输。
所以,我单纯觉得算力太弱,如果组成足够算力的阵列,功耗又真的不小,感觉挺鸡肋的。

别打我,不说了~~~

上一篇:清华天机AI芯片登Nature封面:全球首款异构融合类脑芯片,实现自行车无人驾驶...


下一篇:用手写数据集验证 ANN 与 CNN 模型的泛化能力