AI/ML/DNN硬件加速设计怎么入门?

2018 年 12 月 4 日 StarryHeavensAbove

斯坦福在今年秋季开了一门机器学习硬件加速器的课程,“Hardware Accelerators for Machine Learning (CS 217)”,目前已经进入尾声。虽然课程本身的内容还没有放出来,但课程的阅读列表还是可以给我们一个很好的参考。AI/ML/DNN硬件加速设计怎么入门?希望这篇文章可以给你答案。

这门课程是专门针对机器学习硬件加速器设计的课程,网站上的简介是这样的:

This course provides in-depth coverage of the architectural techniques used to design accelerators for training and inference in machine learning systems. This course will cover classical ML algorithms such as linear regression and support vector machines as well as DNN models such as convolutional neural nets, and recurrent neural nets. We will consider both training and inference for these models and discuss the impact of parameters such as batch size, precision, sparsity and compression on the accuracy of these models. We will cover the design of accelerators for ML model inference and training. Students will become familiar with hardware implementation techniques for using parallelism, locality, and low precision to implement the core computational kernels used in ML. To design energy-efficient accelerators, students will develop the intuition to make trade-offs between ML model parameters and hardware implementation techniques. Students will read recent research papers and complete a design project.

可以看出,这门课程覆盖的相关内容还是比较丰富的,从算法模型到硬件架构,从Training到Inference,从trade-off到scale up等等。除了课程本身的内容之外,阅读清单也很有意思。

之前,我在知乎写过一篇文章:“做人工智能芯片,最好学学这几本书”,其中列举了几本经典书籍,作为做人工智能芯片的基础知识(其实就是一些CS的基础课)。不过,对于已经具备了相关基础的朋友来说,要在较短时间内开始AI芯片设计应该准备哪些更专门的知识呢?斯坦福这门课程是一个不错的入口。下面,我会根据自己的经验,按照一定的顺序介绍一下这些文章,可能会和课程讲授者的思路不同,也不一定能覆盖所有相关内容,仅供大家参考,也欢迎大家批评指正。

首先,需要了解的是大背景。可以先看看“Is Dark Silicon Useful? Harnessing the Four Horsemen of the Coming Dark Silicon Apocalypse”这篇文章。我们现在都在说摩尔定律难以为继,实际上Dark Silicon的问题早已出现。虽然晶体管的尺寸还在不断缩小,密度和性能得到提升,但由于阈值电压已经没办法继续降低,导致功耗无法等比例下降。换句话说,如果保持芯片整体面积不变,我们虽然能塞进更多的晶体管,但是如果这些晶体管同时工作,其功耗就会超出系统的供电能力。在这种情况下,芯片上必须有些部分的电路处于dark(关闭)或者dim(低速工作)的状态,或者只能缩小芯片的面积。而且随着芯片的工艺尺寸继续缩小,这个问题会越来越严重。为什么这个背景对AI加速很重要呢?因为目前的AI专用加速器对于AI应用能够大幅提高功耗效率,而这正是应对Dark Silicon问题的方向(SPECIALIZED,专用化)之一。Dark Silicon问题和AI芯片的联系在Graphcore CTO,Simon Knowles的talk(阅读列表里有链接)里也有充分的解释(也可参考“Graphcore AI芯片:更多分析”,和“解密又一个xPU:Graphcore的IPU”)。从这篇文章,大家还可以延伸阅读一下列表中的另一篇文章,“Dark Memory and Accelerator-Rich System Optimization in the Dark Silicon Era”,分析了由大量加速器组成的系统如何优化的问题,提出了一些综合分析PPA的指标和曲线。于此相对应,大家还应该好好看看“Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures”。Roofline模型是我们在分析一个设计是计算受限(comput bound)还是访存受限(memory bound)的时候常用的模型,也是我们找到计算和访存间平衡点的重要工具(在Google TPU论文里有很好的体现)。

在了解了大背景和分析手段之后,我们可以看看这两篇文章“Anatomy of High-Performance Matrix Multiplication”,“Codesign Tradeoffs for High-Performance, Low-Power Linear Algebra Architectures”。由于目前AI加速器最重要的目标算法是矩阵乘法(比如GEMM),对于所有相关的工程师(包括算法,硬件,软件和Compiler)来说都应该对矩阵乘法的实现方法,优化技巧和Tradeoff非常熟悉。其实矩阵乘法的优化和加速问题已经是个经过充分研究的问题,如果大家遇到这两篇论文没有覆盖的问题应该也不难找到答案。

另外,列表里一定要看看的还有来自前Nervana Systems的经典论文“Fast Algorithms for Convolutional Neural Networks”。列表中的另一篇,“A Systematic Approach to Blocking Convolutional Neural Networks”,则关注面向存储的CNN优化,也是一个比较通用的方法。

在有了这些背景知识之后,我们就应该可以比较轻松的阅读各种专门讨论AI/ML/DNN加速器的文章了。这里,还是建议大家从“Efficient Processing of Deep Neural Networks: A Tutorial and Survey”这篇开始(也可以参考“AI会给芯片设计带来什么?”,“深度神经网络的模型·硬件联合优化”)。到目前为止,这篇文章以及Eyeriss团队的“Tutorial on Hardware Architectures for Deep Neural Networks”,仍然是这个领域最好的综述。

再进一步就是学习一些经典的加速器架构,比如在阅读列表里的,Google TPU,NVIDIA Tesla V100,Eyeriss(现在有了Eyeriss 2),EIE等等。在看TPU的时候,最好先读一下Why Systolic Architectures?”(也可参考,脉动阵列 - 因Google TPU获得新生)。这篇论文除了提出脉动阵列架构,其相关的思考也非常有启发。此外,大家当然还应该看看这个领域的开创性工作,Diannao系列。到此,相信大家已经可以轻松的看明白各种相关的论文了。如果需要了解学术界最新动向,可以看看涂博士在Github上的这个页面,“Neural Networks on Silicon”,包括了主要学术会议的相关论文。

在这门课程的内容中,看起来主要讨论的还是比较传统的加速器设计,并没有太多讨论一些新的架构和“未来”架构,比如存内计算,模拟计算,异步设计,光计算等等,这些就只能大家自己找相关的论文来看了。毕竟到目前为止,传统方法提升的空间已经非常有限,我们还是得把眼光放远一些。我的公众号也对一些有趣的架构做过分析,比如“如何设计一颗40PFLOPS量级的AI芯片?”,““传说中”的异步电路是否能在AI芯片中异军突起?”,“Petascale AI芯片Vathys:靠谱项目?清奇脑洞?还是放卫星?”,大家可以参考。另外,这门课程讨论的比较多的还是机器学习部分的加速,而对一个完整的应用系统如何优化似乎没有涉及,这里也稍有遗憾。

除了上述这些问题,斯坦福的这门课程里面还讨论了一些“进阶问题”,比如Training相关的问题(毕竟Kunle Olukotun还是SambaNova的founder)。到目前为止,在对专用硬件加速器架构的研究中,大部分还是在Inference方面。Inference场景多,需求差异大,架构优化目标多样,可创新的点也相应比较多。相对来说,Training的场景比较单一,硬件部分的重点就是强大算力,与之匹配的存储容量和访存带宽,以及规模化的能力,硬件架构设计的选择不是很多。在这门课程里讨论的Training优化,大多也都不在硬件层面,而是在模型和训练方法上,比如Batch size的选择,低精度训练等等。该课程在Training方面关注的另一个重要问题是“规模化训练”(Scaling Training),因此在课程的阅读列表里这方面的内容比较丰富,比如“Serving DNNs in Real Time at Datacenter Scale with Project Brainwave”(微软,参考“智慧云中的FPGA”),“Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training”,以及“NIPS 2017 Workshop: Deep Learning At Supercomputer Scale”(包括了来自不同公司和学术界的文章)。

此外,该课程还讨论了Benchmark的问题,也链接了MLPerf网站和DAWNBench的论文,这个话题我之前聊的很多了,这里不再多说;讨论了FPGA和CGRA的话题,“Plasticine: A Reconfigurable Architecture For Parallel Patterns”,“CATERPILLAR: Coarse Grain Reconfigurable Architecture for Accelerating the Training of Deep Neural Networks”;以及对模型进行性能和功耗分析的方法,“Spatial: A Language and Compiler for Application Accelerators”。

最后提醒一点,该这份阅读清单有一些是Kunle Olukotun教授团队自己的Paper,但就一个话题来看,不一定能代表最高水平。不过,毕竟是大牛,他们对问题的讨论有完整的体系,建模,分析,架构,优化,实现,工具等方面都有涉及,从这个角度也还是值得一读的。


- END- 


P.S. 本文提到的文章,大部分在课程主页都有链接,如果没有请自己搜索。课程的主页也有Lecture slides的页面,不知道是不是在课程结束之后能放出来。还有就是页面里也有一些其它资源,大家自己发掘吧。



题图来自网络,版权归原作者所有

本文为个人兴趣之作,仅代表本人观点,与就职单位无关


长按二维码关注

登录查看更多
10

相关内容

专知会员服务
78+阅读 · 2020年6月20日
【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
85+阅读 · 2020年5月11日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
【机器学习课程】Google机器学习速成课程
专知会员服务
161+阅读 · 2019年12月2日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
107+阅读 · 2019年10月26日
深度神经网络模型压缩与加速综述
专知会员服务
126+阅读 · 2019年10月12日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
89+阅读 · 2019年10月10日
移动端机器学习资源合集
专知
8+阅读 · 2019年4月21日
硬件加速神经网络综述
计算机研究与发展
24+阅读 · 2019年2月1日
开发者应当了解的18套机器学习平台
深度学习世界
5+阅读 · 2018年8月14日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
CNN模型压缩与加速算法综述
微信AI
6+阅读 · 2017年10月11日
【推荐】MXNet深度情感分析实战
机器学习研究会
16+阅读 · 2017年10月4日
【推荐】深度学习目标检测全面综述
机器学习研究会
21+阅读 · 2017年9月13日
干货|CNN 模型压缩与加速算法综述
全球人工智能
9+阅读 · 2017年8月26日
TResNet: High Performance GPU-Dedicated Architecture
Arxiv
7+阅读 · 2020年3月30日
Arxiv
3+阅读 · 2018年6月1日
Arxiv
7+阅读 · 2018年3月22日
VIP会员
相关VIP内容
专知会员服务
78+阅读 · 2020年6月20日
【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
85+阅读 · 2020年5月11日
【Google】利用AUTOML实现加速感知神经网络设计
专知会员服务
28+阅读 · 2020年3月5日
【机器学习课程】Google机器学习速成课程
专知会员服务
161+阅读 · 2019年12月2日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
107+阅读 · 2019年10月26日
深度神经网络模型压缩与加速综述
专知会员服务
126+阅读 · 2019年10月12日
2019年机器学习框架回顾
专知会员服务
35+阅读 · 2019年10月11日
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
机器学习入门的经验与建议
专知会员服务
89+阅读 · 2019年10月10日
相关资讯
移动端机器学习资源合集
专知
8+阅读 · 2019年4月21日
硬件加速神经网络综述
计算机研究与发展
24+阅读 · 2019年2月1日
开发者应当了解的18套机器学习平台
深度学习世界
5+阅读 · 2018年8月14日
分布式TensorFlow入门指南
机器学习研究会
4+阅读 · 2017年11月28日
CNN模型压缩与加速算法综述
微信AI
6+阅读 · 2017年10月11日
【推荐】MXNet深度情感分析实战
机器学习研究会
16+阅读 · 2017年10月4日
【推荐】深度学习目标检测全面综述
机器学习研究会
21+阅读 · 2017年9月13日
干货|CNN 模型压缩与加速算法综述
全球人工智能
9+阅读 · 2017年8月26日
Top
微信扫码咨询专知VIP会员