AI芯片:寒武纪Cambricon-X结构分析

Cambricon-X

Cambricon-X是针对稀疏系数的矩阵计算架构。
深鉴科技的韩松等人的研究发现,可以将传统的深度学习网络模型的许多权重系数去掉,甚至能去掉90%以上,而并不影响模型的计算精度。如下图所示。
这里写图片描述
目前的深度学习模型的权重系数太多,造成需要的乘法计算非常多,计算时间长,速度慢。
相信,未来的模型会更加复杂,需要的计算更多,时间更久。
未来把模型进行系数删减,就成了必然。

但是,删减了大量权值系数后,模型网络所需要的乘法计算次数明显变少,但是因为系数的稀疏带有不可控的随机性,不同filter的有效权重可能是不同位置的,所以,这就造成了大量权重并行计算时,无法做到同步,导致目前现有的处理器设计都并不能充分利用系数稀疏带来的加速效果。

Cambricon-X就是寒武纪在这个方面的一个探索。

Cambricon-X架构

下图为Cambricon-X的架构。
这里写图片描述
可以看出,整个架构还是和DianNao很像。
当然还是有不同的。
最大的不同是,为了利用到稀疏系数带来的加速效果,首先就需要将系数为0的权重所对应的输入数据去掉。这个,由Fig4中的Buffer Controller来实现。
Buffer Controller的具体结构见Fig5,主要由indexing实现数据的筛选。
Indexing从输入神经元数据(input neurons)中挑选出非0权重对应的输入数据,按顺序排列好,然后传输给对应的PE。然后,由PE去执行乘法/加法等操作。
PE结构如下图所示。
这里写图片描述
可以看到,PE中有个小SB,用于存放有效的权重。

权重的存储方式是,将单个神经元的所有不为0的权重存储在一起,如下图所示。
这里写图片描述
假设每个地址能存储4个权重。
在图7中,假设只有2个神经元:
神经元0,只有0和4,两个权重参数w00 和 w40,存储在address0。
神经元1,有5个权重参数w11, w21 , w31, w51, w61, 这样一个地址不能完全存储,于是需要2个地址,存储在address1和address2.

权重的稀疏性,造成每个神经元计算时,需要读取权重的次数不相同,比如,神经元0只需要读一次权重memory,神经元1需要读2次权重memory,这种不规律,造成难以大量神经元同步计算,无法直接利用脉动阵列的优势。

Indexing Module

既然权重是无规律稀疏的分布。那么,怎么将权重与对应的输入数据匹配起来呢?

Cambricon引入了Indexing Module(IM)
在这里插入图片描述
Cambricon-X的每个PE都配置有一个单独的Indexing Units。
依然采用了输入数据在不同神经元上复用的思想。
按照上方图7的例子,依然是2个神经元,在非稀疏情况下每个神经元计算一个卷积结果需要八个输入数据和8个权重(n0, n1,…,n7,共8个),现在是稀疏的,还是一次读取了8个数据,但是神经元0只需要其中2个数据,神经元1需要其中5个数据。
这就需要一种机制去实现权重与输入数据的对应关系。
Cambricon采用的是用标志位connections[i]表示是否有对应连接关系,如图9所示。

Direct Indexing

直接想到的映射机制是直接映射,每个connections的每个bit对应一个输入数据,如图10所示。
在这里插入图片描述
这种方式的优点:简单直接;缺点:当稀疏性较大时,会有许多connections[i]是无效的0,浪费芯片内的空间资源。

为了降低空间浪费的问题,又引入了step indexing。

Step Indexing

顾名思义,只存储非零的connections[i],并存储相邻两个非零的connections[i]的距离step(中间间隔的无效0的个数),然后通过累加step,就能恢复出原始的稀疏阵列。如图11所示。(论文原图中有小错误,如图红色标注所示)

在这里插入图片描述
这种方式的优点是:可以节省无效0占据的空间;缺点是:需要额外的计算器去累加step,并且需要耗费一些时间。
不过,由于目前用到的模型的尺寸都很大,比如yolo_v3中的网络就往往是416X416的,如果能去除90%的冗余权重,那么step indexing就能明显减少无效0占据的空间。

Cambricon-X的设计中,经过综合考虑,选择的是step indexing。

总结

到了这里,Cambricon-X的内部结构就很清晰了。
整体来看,结构类似DianNao,只有一列(或一行)计算单元,而不是TPU的那种二维的脉动阵列,输入数据的复用效率就低了不少。
估计Cambricon-X,是按照复用输入数据的思路来控制的。猜测其运算方式是:每次读取一次卷积需要的输入数据,然后将数据传输给当前的所有PE的IM,然后每个IM根据step indexing去计算并匹配权重和输入数据,完成数据的匹配后,统一或者各自自主传输给各自的PE(计算单元,内部是乘法器及加法器等),当所有PE计算完成后,将结果写入NBout(buffer),才能进行下一次的计算.
有个缺点:因为要复用输入数据,所以是按照输入数据来控制计算的,就算有PE提前算完,估计也必须等着别的PE计算完成。所以,一次计算的时长,是计算最慢的那个PE决定的,这就表明,Cambricon-X的频率不会非常高。

不过,如果矩阵非常稀疏,那么Cambricon的优势还是非常明显的。

而且,随着之后模型尺寸越来越大,计算量也越来越大,算力非常紧缺,研究稀疏性矩阵的计算,非常有应用前景,特别是嵌入式终端方面,比如手机。

不管怎么样,Cambricon-X还是一个很不错的探索!!

感谢寒武纪!!

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
寒武纪芯片是一种人工智能(AI)算力加速芯片,由中国创业公司寒武纪科技推出。该芯片采用独特的架构和设计理念,能够高效地进行深度学习和计算机视觉等人工智能任务。寒武纪芯片以其出色的性能和功能,备受业界关注。 寒武纪芯片具有以下特点: 1. 高能效:寒武纪芯片采用了自主研发的架构设计,将电路与算法优化结合,实现了高能效的计算能力。相较于传统的通用型处理器,寒武纪芯片在相同功耗下能够提供更强大的AI计算能力,进而降低了数据中心和边缘设备的能耗和运营成本。 2. 高性能:寒武纪芯片内置了大量的计算单元和高速缓存,能够快速而准确地进行数据处理和模型推理。这使得寒武纪芯片在深度学习和计算机视觉等AI任务中具备出色的性能表现,能够满足各种复杂应用的需求。 3. 易用性:寒武纪芯片支持多种编程框架和开发工具,方便开发者进行人工智能应用的开发和优化。无论是在大规模的数据中心还是在边缘设备上,寒武纪芯片都提供了丰富而便捷的开发环境,帮助开发者快速实现AI应用。 4. 多样化的应用场景:寒武纪芯片广泛应用于各个领域,包括自动驾驶、智能视频监控、智能语音助手、智能制造等。其强大的计算能力和低能耗的特点,使得寒武纪芯片在提升生产效率、改善生活品质和推动社会进步方面具有巨大潜力。 总之,寒武纪芯片通过其高能效、高性能和易用性,为人工智能应用带来了新的可能性。它成为了中国在AI芯片领域的代表之一,为国内外用户提供了强大的计算支持,推动了人工智能产业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值