Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

黄教主的开源NVDLA,“核”爆还是“核”平?

万众期待的GPU Tech Conference中国站终于揭开了面纱,坊间流传已久的英伟达开源DLA项目也在9月26日早上公布了RTL代码、DC综合脚本和testbench。我们也是备好水与面包,在电脑面前静静地看了一天的代码,迫不及待的和大家一起膜一膜黄教主的开源新信仰。这到底将导致未来深度学习芯片产品的爆发还是NV一统天下后的宁静?

架构篇:不是亲儿子也一样优秀么?

那么多年来,Nvida只靠一条产品线——GPU独步天下,即使近年来的Tegra Jetson (SoC=ARM+GPU)计划,卖点也依赖于N家长久以来在GPU领域的技术累积。但由于复杂的多线程控制,GPU这一架构在低功耗嵌入式应用中缺乏能效上的竞争力(详见矽说与机器之心合作的脑芯编系列:专题 | 脑芯编: 为什么 GPU 是 AI 的神外挂?)。而此次推出的开源DLA计划,彻底推翻GPU架构,重新定义了加速器架构,还能展现NV家优势么?

上图是目前发表的release中DLA的架构,其数据流主要包含卷积、激活(单数据操作 , Single Data),池化(平面数据操作,Planar Data),归一化(多维数据操作,Multi-Plane Data)以及Reshape。从架构看,其很好地对接了CNN神经网络的主流框架,并且支持多种精度(整数4/8/16,浮点16/32)的Inference计算。

然而,DLA的可编程性相较于GPU却弱了很多。目前卷积核主要支持Channel数为16,Kernel数为64的矩阵运算。对于无法填满这个巨无霸矩阵的卷积核,其利用率就会降低很多,比如只有RGB三个Channel的图形第一层。当总体而言,16x64在目前的图像深度学习中仍然是一个较小的单元,因此其对AlexNet,VGG等主流网络的加速仍然是可观的。

【矽说点评——深度怀疑,该卷积架构在技术上传承了采用年初Tesla V100的新一代Cuda 核心中的Tensor Core技术,值得重点观察!】

炫技篇:Winograd卷积法与稀疏压缩

相比于架构上的中规中矩,NV家在加速实现上却对最先进的高性能计算技术好不吝啬。其中首推就是Winograd的卷积法。Winograd卷积法是对小矩阵的高速实现算法,是由Nervana(当时可能还没有被Intel收购呢)发表在2016年CVPR上的新算法,其灵感来自80年代S. Winograd对于FFT加速的算法的实现。

(如果您对数学没有信心,请跳跃至下一个括号)

对于一个4输入,3系数,2输出的卷积,采用直接的卷积计算,需要6次乘法才能得到记过。但实际上由于向量化以后的输入数据的重复性很高,可以用过一组中间向量,仅采用4次乘法即可得到结果,即一维Winograd卷积法。该方法使乘法数量降低了1.5倍。

将一维卷积拓展成两维,对于一个,4x4输入,3x3系数,2x2输出的卷积,采用直接计算,需要36个乘法器,采用Winograd乘法后仅需16个乘法器,但两者在数学上的计算结果是等价的。由此至少一半的乘法器资源被节省了。

(数学结束了,你只要记住,对于Kenel尺寸较小的2维卷积,Winograd卷积法可以节省一半的乘法器数量与功耗得到相同的结果。)

除了Winograd,DLA还针对全连接网络的稀疏特点采用了压缩传输算法,当一组数据的60%中为0时,通过压缩传输编码,将传输数据带宽降低一半。该算法的代码级实现

【矽说点评——这两种方法都是高效率的硬件加速法,虽然在理论成熟后的RTL并不困难,但是想NV这样工业级的代码水准仍然值得我们学习!】

战略篇:把蛋糕做大才能吃得更多?

Nvidia的人工智能生态以硬件为本,并伴随着推出高度优化的深度学习训练/推理加速framework(如CuDNN和TensorRT),其愿景是未来只要是深度学习相关的应用,就一定会用到由Nvidia出品的硬件或者软件工具。考虑到人工智能未来巨大的潜力以及目前Nvidia在人工智能加速硬件赛道上遥遥领先的地位,Nvidia在这个时间点的选择并不是继续消灭打压其他竞争对手,而是更多考虑如何推动释放人工智能的潜力并加速人工智能应用的普及,这样Nvidia才能从中获得更多利润。DLA之前最著名的开源芯片项目是RISC-V微处理器,而NvidiaDLA的目标,就是让人工智能加速器像微处理器一样普及,在智能设备中随处可见。相信不远的未来基于RISCV+NVDLA的深度学习SoC就会成为开源硬件的代表作。

那么,目前人工智能普及的瓶颈在哪里呢?在云端训练市场,搭配多块GPU的超级计算机已经能很好地完成训练任务,而且该市场已经被Nvidia牢牢掌控;但是在终端,硬件仍然是制约人工智能普及的最大问题。目前基于深度学习的人工智能计算量很大,传统的移动SoC无法达到流畅运行深度学习模型所需要的性能,而基于GPU的方案又功耗太大,应用场景受限。在智能手机、智能摄像头、智能家电、物联网等等场景,人们早已经构想了无数中人工智能的应用,然而由于市面上没有合适的硬件,人工智能在这些领域的普及,在Nvidia眼中只能说是蹒跚前进,远远没有达到它想要的速度。

于是,Nvidia开源了DLA,目标受众就是那些为终端应用开发芯片,没有能力、资源或者决心开发自己的人工智能加速模块但又不想错过人工智能大潮的厂商。为什么Nvidia自己不做终端芯片而是要开源其DLAIP呢?因为终端芯片是一个长尾市场,应用种类太多,每一种芯片都有其对于性能和功耗不同的设计。Nvidia如果想亲自占领每一个终端芯片市场,就必须增设多条产品线(摄像头,语音,智能家电…),每款芯片在拥有深度学习加速的同时还要兼容这些芯片的原有功能(你能想象Nvidia去做摄像头ISP芯片吗),另外还要面临这些市场里的原有芯片公司的竞争,最后的结果就是Nvidia疲于奔命,反而无法集中精力把自己最擅长的深度学习加速做好(之前Nvidia试水手机芯片推出Tegra系列结果铩羽而归,内部一定也有反思)。而开源DLA IP与推出芯片不同,针对不同的芯片需求芯片厂商可以在DLA的基础上进行一定程度的定制和优化,从而开发出适合自己芯片的DLA版本并集成进自己的芯片,于是Nvidia只要把自己擅长的深度学习加速架构做好就行,芯片的其他部分由专业的芯片厂商负责,同时Nvidia与这些厂商的关系也由竞争变成了合作。

【矽说点评——既然终端芯片市场太大没法在近期一口吃下,NV转而做长期布局,提供DLA IP帮助大家把人工智能加速功能集成进不同的芯片里便成了其主要选项,这样一方面加速了人工智能在终端市场的发展,与众友商一起把蛋糕做大,虽然DLA IP不收费但是终端人工智能市场起飞后模型的训练和优化还是要用Nvidia的解决方案,最后还是会转化为Nvidia的利润;另一方面在终端卡位,避免有其他芯片厂商从终端芯片发力在人工智能硬件站稳脚跟,进而继续向上挑战Nvidia在人工智能领域的位置。】

血腥篇:AI芯片公司还有活路么?

那么,DLA对于目前众多人工智能加速芯片初创公司有什么影响呢?是不是Nvidia出场,这些初创公司的发展空间就被扼杀了呢?

事实并非如此。参考嵌入式处理器/MCU市场。在这个市场,ARM的Cortex-M0可以以近乎免费的价格使用,同时也有RISC-V这样的开源核新起之秀。然而,在这个领域还是有许多芯片初创公司(如SiFive,Ambiq Micro等等)证明自己的价值。同样的,在人工智能芯片领域,初创公司在Nvidia DLA推出之后还是大有可为。

首先,目前大部分深度学习芯片的初创公司还是聚焦专用的领域的,吸取DLA技术对SoC的开发无疑是有利无害的,特别是NV大幅降低了License门槛。高性能的DLA作为SoC的重要组成部分,反而考验了各类初创公司的集成电路设计能水平。以和DRAM的通信接口为例,即使在给出综合约束文件(SDC)后,对于一般的后端工程师,满足高速DRAM PHY的设计要求仍然是一个不小的课题,否则就是空有屠龙宝刀却砍不了苍蝇的禁地。

在目前给出的两种系统方案(small/large)距离实用场景还远远不够细致,特别在工具链层面,自有编译器与未来的DLA编译器直接如何融会贯通都将成为重要的课题,决定了初创公司的成败。

其次,DLA架构也有自己的瓶颈,Nvidia为了照顾通用性,其实在很多需要极致性能(超低功耗,超强性能)的场合,使用DLA架构无法满足需求。所以,完全抛开DLA另辟蹊径也不失为一条可行的路,例如可扩展性极好的众核CGRA配合分布式存储用于超高性能计算外加非常好的可配置性,或者使用硬件支持动态网络模型压缩实现极高能效比等等,都是值得探索的路。

【矽说点评——NVDLA并非是深度学习芯片公司的末日,而更像是一个提供标准的通用参考。基于这一设计初创公司将避免自己重新发明轮子的低附加值重复,转而发展自己最擅长的部分,实现高附加值创新。因此,Nvidia DLA对于人工智能芯片初创公司更多的是一个参考,一种激励,能促使这些公司更多的思考自己的独特之处在哪里,而不是把过多的时间放在基础的轮子设计上。这是一件好事。

矽说
矽说

入门产业英伟达芯片DLA开源
暂无评论
暂无评论~