一夜回到解放前--掀起“NVDLA”的盖头来(Nvidia刚发布的NVDLA是何方神圣?)
为了更好地便于大家交流学习,EETOP组建了
GPU&FPGA深度学习群
欢迎行业内朋友加入,加群方法:长按二维码加群主好友,发送如下信息:加群+深度学习+所在公司(或院校)
长按二维码,加群主为好友,拉你入群
加群前请务必在朋友圈分享至少一篇EETOP的微信文章
引言
AI加速器的一桌麻将刚刚凑齐,一桌牌还没打完,就来了一个踢馆砸场的-NVDLA。NVDLA是何方神圣,颜值如何,下面我们就掀起她的盖头来。
一、NVDLA是什么?
NVDLA是NVIDIA Deep Learning Accelerator的简称(瞎猜的),由NVIDIA公司在2017年9月26日正式发布在github上(https://github.com/nvdla),关于NVDLA的文档可以在NVDLA的官方网站(http://nvdla.org)找到。目前,文档可分为两部分,粗略的介绍可直接看http://nvdla.org/primer.html,跟架构相关的较详细的介绍可参考http://nvdla.org/contents.html,本文中主要信息也是从以上两个文档而来。
二、NVDLA的PPA如何?
2.1 performance
首先是Performance方面的数据:
需要注意的是以上数据是针对某个配置下的性能数据,毕竟NVDLA是“变形金刚”,如果不给定configuration,单独给出的性能数据是不可信的。
2.2 Power
很遗憾,目前还没有NVDLA相关的Power数据,不过据官方人士介绍,NVDLA是从他们内部项目实际使用的版本进化(阉割)而来,功耗估计不会像一般的开源项目那样太离谱。
2.3 area
最后是面积相关的数据:
注:以上面积数据不包括onchip memory,毕竟4MB的on chip memory对于嵌入式场景来说实在是太奢侈了。
三、掀起盖头来,NVDLA有哪些值得关注的亮点
3.1 变形金刚
毫无疑问,掀起盖头之后,首先映入眼帘的无疑就是其‘多变’的特性,从低端到高端,用户可以根据PPA自行trade-off,得到适合自己的NVDLA版本。在我看来“多变”实属无奈,谁让这世界变化快。在深度学习算法日新月异的状态下,不具备“多变”的属性估计也活不了多久。
3.2 专款专用
对于Deep Learning中的不同layer,NVDLA基本都有与之对应的、相互独立的硬件模块。各模块之间均可单独决定“去留”。这和我们在进行硬件架构时追求的“尽量让运算单元复用”的思想是完全不同的。
NVDLA的整体架构如下:
其中convolution buffer由RAM组成,其容量可佩,默认为512KB,里面存放coefficient和feature map数据,供convolution core使用。
convolutioncore专门负责conv和fc层的运算,包括大量的MAC单元,这些MACd单元以C * K的形式组织,其中C为同时处理的input channel的数量,K为同时处理的output channel的数量。
SDP负责ReLU, PReLU, precision scaling,batch normalization, bias addition, sigmoid , hyperbolic tangent等简单的线性非线性运算,其中sigmoid和tanh通过LUT的形式实现。
PDP主要负责pool运算,包括max_pool,min_pool,avg_pool三种。暂时还没想明白为啥要搞个min_pool,希望designer能给个解释。
CDP负责cross channel的LRN。但with in channel的LRN在哪实现呢?目前看来可能性最大的是SDP实现with inchannel LRN,原因是with inchannel的LRN可以用LUT实现(这个,一般人我不告诉他)。
RUBIK,名字很好,体现了designer的情怀。但我觉得RUBIK这个模块有更好的实现方式,比如,通过配置寄存器来约定读取数据的规则,毕竟,玩魔方的时候,不管怎么转也不会多出一面,也不会少掉一面。看官,你说呢?
BridgeDMA,不生产数据,只是数据的搬运工。
3.3 第二战场
众所周知,memory limit是AI 加速器设计者需要面对的头等大事。NVDLA为了解决这个问题祭出了secondarymemory interface这个大招(其实,这个大招,俺也想到了)。可以想象,这个SMI(自己为了省事,暂且简写)可连接ISP,可连接CPU的cache,可连接on chip memory,可连接。。。
第二战场是SMI,那第一战场是啥?当然是sparsity compression,这个已经烂大街了,我就不絮叨了。总之,要是哪个加速器不支持sparsitycompression,都没脸见人。
3.4 砍头也能活
NVDLA有两个版本:head和headless。这次发布的NVDLA是headless,没有头,只有身子,也能活,至于活的好赖,拭目以待。个人觉得,这要看NVDLA对controller的依赖程度如何,考验NVDLA的CSB的设计功力,设计的好,headless就会活的好。这次为什么没发布head版本呢?我猜可能是MCU的版权问题(NVIDIA好像没有自己的CPU架构),或许,只是老黄要求太急,NVDLA的工程师兄弟们没抗住,就先发了个headless的。
四、个人观点
下面扯一下我个人对NVDLA的一些理解。
4.1 secondary memory interface
看到这个feature,确认被震撼到了,这是我前几天还在犹豫不决的问题,NVDLA竟然已经实现了,个人觉得,这个feature真的为NVDLA留了后路,打开了一个新世界的窗口。
4.2 convolution buffer
大言不惭的说,这个俺也是这么搞的。但看遍学术圈的AI加速器的paper,很少有将coefficient和feature map放在一起的。这样设计有好处,也有坏处。大锅饭和各开炉灶的好处和坏处,比较好理解,在此略过。
4.3 bias addition在SDP做
开始还是比较意外,现在想,也顺理成章。
4.4 NVDLA并非完美
4.4.1 NVDLA目前没看到对locallyconnection convolution的支持,这可是face detection领域常见的一个需求。
4.4.2 NVDLA也没有从硬件层面支持dilationconvolution,如果靠离线处理kernel,再加上compression的大招,或许对性能影响不大,但没能看到评估数据,心里还是不踏实。
4.4.3 NVDLA不支持ROIPoolling,这个有点说不过去。毕竟目前objectdetection领域,Fasterr-cnn可占据多半江山,缺少ROIPOOL比较遗憾。
4.4.4 PDP模块不能直接从convolutionbuffer读取数据,这也是个小遗憾,这个遗憾可能是上面遗憾的‘遗产’,因为如果要支持ROI pooling的话,这个PDP必须具备直接读取convolutionbuffer的能力,否则,只能呵呵了。
五、一夜回到解放前
NVDLA的砸场,目前看来是“阴谋得逞”了,一桌麻友必须要评估手里的牌的价值了,我等小辈,冥思苦想,绞尽脑汁想出来的东西,就这样大白天下了。这是好事(流着泪说的-_-!),大家已经起跑的,没有起跑的,一起站在了起跑线上,兄弟们,革命尚未开始,就已经失败了!
赶紧修改一下简历:“熟悉NVDLA架构,掌握基于NVDLA的深度学习开发流程”。
六. NVDLA项目的几个参考链接
https://github.com/nvdla/hw
https://github.com/silicontalks01/OpenDLA
http://nvdia.org
关注EETOP公众号,后台输入:百宝箱 ,查看更多相关内容:
10分钟!用初中数学知识看懂深度学习!
AI芯片|浅析Yann LeCun提到的两款Dataflow Chip
走进深度学习,你需要先了解这25个概念和术语...
AI芯片踏入红海
解读AI:快速获取样本将成重点研究方向
机器学习和深度学习的最佳框架大比拼
深入浅出机器学习
机器学习和深度学习的最佳框架大比拼
哪些国家和大学人工智能研究领先?中国第一?
人工智能的“脑洞”有多大?院士:目前太依赖计算
浅说深度学习:核心概念
深度学习简易入门
几张图读懂机器学习:基本概念、五大流派与九种常见算法
通过生活案例读懂机器学习五大算法思维
腾讯云FPGA的深度学习算法
如何在单块GPU上训练超大型深度学习模型
AI芯片怎么降功耗?从ISSCC2017说起
AI驾临人间 四大芯片流派华山论剑
机器学习追根溯源:和计算机技术一样久远
[透析] 卷积神经网络CNN究竟是怎样一步一步工作的?
中国正在引领人工智能?纽约时报说:“是的!”
Nvidia是如何成为AI圈的弄潮儿
人工智能芯片: AI巨轮的引擎
李开复|如何给非专业人士讲解什么是深度学习
神经网络入门
从人工智能能机器学习到深度学习,不容错过的人工智能简史
浅析:人工智能的前沿—机器视觉的种类
浅析深度学习
在机器学习中机器是怎么从资料中「学」到东西的?
12张图生动地告诉你,深度学习中的卷积网络是怎么一回事?
从人工智能机器学习到深度学习,不容错过的人工智能简史
【高盛AI研究报告】人工智能是时代的拐点
一文带你理解深度学习的局限性
无解的神经网络内在逻辑
FPGA是如何实现30倍速度的云加速的?都加速了哪些东西
深度学习 语音识别 FPGA 实现
2017年人工智能行业分析:芯片企业最少,计算机视觉与图像企业数量最多
关于人工智能的七大常见误解与七个真相!
一个故意不通过图灵测试的人工智能-Part 1
最适合人工智能开发的5种编程语言
一文说清楚机器学习、深度学习、人工智能的区别与联系
机器学习与人工智能究竟有何区别?
机器学习算法比较
云中的机器学习:FPGA 上的深度神经网络
什么是机器学习?
机器学习导入芯片设计领域
AI技术大爆发背景下,开源深度学习框架的发展趋势如何?
中国初创公司在AI芯片(IP)领域的机会
深度学习简易入门
浅谈Alpha Go所涉及的深度学习技术
深度学习 语音识别 FPGA 实现