一夜回到解放前--掀起“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公众号,后台输入:百宝箱 ,查看更多相关内容:

  1. 10分钟!用初中数学知识看懂深度学习!

  2. AI芯片|浅析Yann LeCun提到的两款Dataflow Chip

  3. 走进深度学习,你需要先了解这25个概念和术语...

  4. AI芯片踏入红海

  5. 解读AI:快速获取样本将成重点研究方向

  6. 机器学习和深度学习的最佳框架大比拼

  7. 深入浅出机器学习

  8. 机器学习和深度学习的最佳框架大比拼

  9. 哪些国家和大学人工智能研究领先?中国第一?

  10. 人工智能的“脑洞”有多大?院士:目前太依赖计算

  11. 浅说深度学习:核心概念

  12. 深度学习简易入门

  13. 几张图读懂机器学习:基本概念、五大流派与九种常见算法

  14. 通过生活案例读懂机器学习五大算法思维

  15. 腾讯云FPGA的深度学习算法

  16. 如何在单块GPU上训练超大型深度学习模型

  17. AI芯片怎么降功耗?从ISSCC2017说起

  18. AI驾临人间 四大芯片流派华山论剑

  19. 机器学习追根溯源:和计算机技术一样久远

  20. [透析] 卷积神经网络CNN究竟是怎样一步一步工作的?

  21. 中国正在引领人工智能?纽约时报说:“是的!”

  22. Nvidia是如何成为AI圈的弄潮儿

  23. 人工智能芯片: AI巨轮的引擎

  24. 李开复|如何给非专业人士讲解什么是深度学习

  25. 神经网络入门

  26. 从人工智能能机器学习到深度学习,不容错过的人工智能简史

  27. 浅析:人工智能的前沿—机器视觉的种类

  28. 浅析深度学习

  29. 在机器学习中机器是怎么从资料中「学」到东西的?

  30. 12张图生动地告诉你,深度学习中的卷积网络是怎么一回事?

  31. 从人工智能机器学习到深度学习,不容错过的人工智能简史

  32. 【高盛AI研究报告】人工智能是时代的拐点

  33. 一文带你理解深度学习的局限性

  34. 无解的神经网络内在逻辑

  35. FPGA是如何实现30倍速度的云加速的?都加速了哪些东西

  36. 深度学习 语音识别 FPGA 实现

  37. 2017年人工智能行业分析:芯片企业最少,计算机视觉与图像企业数量最多

  38. 关于人工智能的七大常见误解与七个真相!

  39. 一个故意不通过图灵测试的人工智能-Part 1

  40. 最适合人工智能开发的5种编程语言

  41. 一文说清楚机器学习、深度学习、人工智能的区别与联系

  42. 机器学习与人工智能究竟有何区别?

  43. 机器学习算法比较

  44. 云中的机器学习:FPGA 上的深度神经网络

  45. 什么是机器学习?

  46. 机器学习导入芯片设计领域

  47. AI技术大爆发背景下,开源深度学习框架的发展趋势如何?

  48. 中国初创公司在AI芯片(IP)领域的机会

  49. 深度学习简易入门

  50. 浅谈Alpha Go所涉及的深度学习技术

  51. 深度学习 语音识别 FPGA 实现

(0)

相关推荐