AI的张量世界:所有张量暗地里都想做自己!


640?wx_fmt=jpeg


全文共4429字,预计学习时长9分钟


640?wx_fmt=jpeg

图片来源:pexels.com/@pixabay

 

16并不是一个很大的数字。那么,在64个时钟周期内,计算一个卷积神经网络(Convolutional Neural Network,简称CNN),使其能够从16个输入通道、3*3张量卷积中生成具有16*16张瓦片图(tile)的16个输出通道,将需要多少MAC(Multiply-Accumulate Unit,乘加器)呢?


如果不使用快速算法,那么答案将会是至少9216个。通常,9216个MAC可以用来构建一个96*96的脉冲阵列,但是计算一个96*96的矩阵乘法(matrix multiplication,简称MM)将延迟至少96个时钟周期。也就是说,构建这个脉动阵列需要96个96*96矩阵乘法。


欢迎来到AI的张量世界。是时候直面维度灾难了。


640?wx_fmt=jpeg

张量vs矩阵


本文标题灵感来自Charles F.Van Loan教授在2010年所作的关于张量的模展开矩阵的演讲中的一句话——所有张量暗地里都希望它们是矩阵!


这一陈述表明了张量研究领域想要先把张量展开成矩阵,然后利用成熟的矩阵理论框架对其进行研究。同时,尽管主流AI框架认为张量是最基本的数据类型,但在行业标准实践中,也常将张量展开为矩阵,以便利用高度优化的矩阵乘法(MM)库和矩阵乘法加速器(MMAs)库。通常,AI领域认为矩阵是特殊的张量。


一些主流的看法认为:


1. 可以利用MM中的并行性和数据共享模式。


2. 和张量相比,矩阵更适用于可编程硬件。


3. MM有原生硬件加速方法,即脉动阵列。


然而,


1. 从结构上来说,CNN和MM是相同的。展开张量来利用和MM相同的并行性和数据共享模式是完全没有必要的。


2. 在从存储层次的下层向上层运行的过程中,由于时间局部性,矩阵会递归式分块;由于空间局部性,矩阵会压缩打包。最终,矩阵会变成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值