来源:CSDN
https://blog.csdn.net/shooter1098/article/details/82057420
0. 弁言

AI发展及其意义:
学术界和家当界对付人工智能的研究由来已久,但直到近期的2006年,伴随着CNN、GPU加速和海量数据,人工智能才伴随着机器学习(Machine Learning)/深度学习(Deep Learning)的分支再次起飞,这一次,飞到现实运用。谷歌AlphaGo打败人类最高棋手使得人工智能引起普通民众的把稳。
深度学习为现实天下普遍存在繁芜非线性问题供应了一种通用框架——不是写程序,而是通过框架和大量的数据经由高性能打算进行求解(演习和预测)。深度学习更加靠近人类智能,并且有人类智能无可比拟的一些优胜性,这为从现实天下已有的大量数据中挖掘代价供应了有效的手段。
本文:
- 剖析人工智能在详细实现上的3个特点
- 磋商AI芯片设计和开拓的6个寻衅,以及相应的家当界方案、发展趋势。
1. AI实现的特点
1.1 AI属于范例的打算密集型运用
AI以密集运算为主,范例的是向量点积,基本单元是乘累加(MAC),动辄在TFLOPS量级;且对付数据带宽哀求高,相应的运算延时哀求紧张在运用级,不像CPU一样敏感。
范例的通用途理器以ALU为中央,构建外围掌握、中断和非常处理电路;为了高性能处理单元能够填满流水和快速运转构建乱序和预测、cache等机制,为了对付事宜快速相应。然而运算能力不强,并且全体芯片运算所占的面积比重也很少。
高性能运算的一个极度情形是全硬件并行实现,对付10点的点积运算利用多个MAC并行打算;以是打算速率快但是面积花费也很大。
1.2 AI哀求芯片具有灵巧性
AI算法以CNN、RNN等为主干,分支浩瀚;同样的算法系统编制,其详细参数(层数、宽度等)也不一样;AI算法本身在不断的演进;AI算法优化的一个方向是稀疏矩阵处理、低运算精度实现高精度类似的性能。
然而,芯片设计的投入高、周期长、风险高;要让芯片开拓能够应对算法多样化和快速演进的寻衅,须要一款芯片能够应对不同类型的运用需求,这对付芯片的灵巧性提出寻衅。
1.3 AI芯片设计超过算法和软硬件
鉴于上面的两个寻衅,AI芯片设计从算法开始,经历架构设计、逻辑设计和验证、物理设计和验证。对付芯片开拓和运用方法,乃至处理器架构和编程提出了寻衅。
2. AI芯片开拓寻衅、现状和趋势
2.1 基于算法框架实现算法和芯片设计的接口
AI芯片的涉及到算法、软件、硬件三个专业方向,为了有效的分工和协作、实现相互之间的可移植性,界面的划分和定义很主要。
运用层面见到的无非是演习和测试数据,模型选择和基本参数,空想情形下办理方案可以自动有效完成演习和预测,正如当今没有体系构造和编程措辞根本的的用户可以快速节制和利用office软件。而下层实现当今深度学习的主流算法,并且具有一定的可配置性和可调试性。这部分在业界有多个算法框架,范例的如谷歌的TensorFlow、亚马逊的cafee等,也有在这些框架之上构建的封装更好的平台如Keras。
框架的相互交互和底层实现多种多样,平台不同实现方案也不同。一个有益的事情是定义中间层格式(IR),IR的一个主要根本是核心算子。这里有ONNX、NNVM等。
2.2 AI芯片架构
前文提到,AI芯片密集型运算和可编程性的哀求,普通处理器不能够有效应对,须要大规模并行打算。
FPGA和GPU相对付普通的CPU和DSP更加折中实现并行性和可编程性。然而,FPGA核心是LUT,实现相同功能所需的器件面积远大于ASIC,同时运行频率受限。GPU是传统技能中最适宜可编程并走运算的,但是GPU实质上是为了图像处理构建,架构与通用并行打算仍旧有不少的间隔;虽然GPGPU针对通用打算做了一些优化,但是仍旧有不少的差距。
通用可编程并行打算最适宜的是流处理器和可重构处理器。早些年在寻求打破传统处理瓶颈的时期不少学术和家当界项目做过考试测验,但是当时对付高性能打算的哀求并不普遍、不急迫以是没有有效的发展。随着AI对付打算的需求,这些技能正如深入学习算法走上算法舞台一样,走向架构设计舞台。
详细来说,很多原来只是探索的技能会走上AI架构设计的舞台,传统的程序优化技能会普遍运用的架构设计。如深度流水、并行打算、数据局部性事理干系的局部存储、延时隐蔽、循环展开等。后面会有专门的文章先容。
2.3 层次化实现和验证
AI芯片的大规模和并行特点,导致AI芯片的设计繁芜并且有很大难度:展平式寻优策略在打算机算法上是NP问题,芯片设计每个流程的运行韶光也很长,因而短韶光找到最优方案并实现极具寻衅,以是须要利用分治策略分层实现,以寻求现实的次优解。
分层表示在系统设计的处理单元(processing elements)-簇(cluster)-子系统-SoC芯片;表示在构造设计关注关键参数-逻辑设计关注微架构和周期一级-后端设计关注详细频率sign-off,不同的阶段有不同的关注点,通过上层设计明确关键参数,逐步往下渐进明细。相应的验证也是如此,常日架构设计明确紧张参数和主体运算周期,逻辑设计除了关注详细时序,很多的是担保与算法设计bit对准来验证行为,而后端验证紧张关注微架构的时序是否能够实现。
这方面紧张是开拓流程的方案和整合,不同的IP供应商会供应C++/SystemC模型供架构设计仿真,仿真平台有纯SystemC,也有Synopsys PA(集成了不少常用模型和系统构建调试机制)
2.4 算法和软硬件协同设计
传统芯片顶层设计中软硬件划分是一个主要主题。而AI芯片设计还须要关注算法,比如:卷积核的运算需求,数据存储和传输需求;卷积核的运算协作和数据交互需求等。以及弁言部分提到的利用低精度运算实现类似高精度运算的算法精度,利用矩阵稀疏性简化运算同时担保算法性能等。这些优化实质上源于算法,但是须要芯片设计合营,但其在架构及优化对全体芯片PPA的优化吹糠见米。对付熟习传统芯片设计流程的芯片团队式巨大的寻衅。
这里紧张是算法优化方案在算法和模型层面,涉及到C/Python/SystemC。
2.5 运用开拓工具链
AI芯片的大规模和并行特点,导致AI芯片的开拓也极具寻衅。以编译器为例,运算单元或者cluster内部涉及到并行编译和调度;全体算法在芯片上的实现也是很难展平开拓,更多的是运算单元或者cluster为单位,根据数据流特色进行划分和映射,以及相应的通信和存储配备设计进行分治处理。
实质上当今的算法描述措辞C/Python只描述算法的逻辑功能,不具备时空信息,不具备存储和传输信息,以是很多算法是先经由同时熟习芯片架构和算法的工程师的方案,再通过工具链预定的指令指示工具链处理。这方面通用意义上有StreamC/KernalC,家当界NVIDIA的CUDA针对其GPU比较成功,谷歌针对TensorFlow的XLA,华盛顿大学针对GPU的TVM。更为普遍的利用LLVM的开放型构建自己的工具链。但目前工具链的自动化和性能与实际哀求差别较大,很多大规模案例会有工具链和手工优化结合,方案供应商多以SDK形式供应,不同的运用供应不同的SDK,且SDK的版本不断更新。
大规模并行打算的调试和跟踪也是一个寻衅,传统意义上的单步调试须要折衷不同处理器核心之前的状态;而跟踪除了核间折衷还须要dump大量的实时运行数据,这须要占用大量的片上带宽和芯片接口资源,还涉及到数据压缩和可视化。这方面比较范例的是UltraSoC。
2.6 家当格局
算法设计、芯片设计、运用设计、系统方案供应商、运用方案供应商、详细企业和个人用户是AI潮流的干系者。但是由于家当尚在迅速发展,尚未成熟,尚不能形成明确的的专业分工。并且一体化设计和运用也是不同方案差异化竞争力的表示,是构建技能壁垒的一种主要路子。
在这种环境下,AI的从业者大体可以分为供应商、用户、供应商和用户三种。前者紧张是传统的芯片设计公司如英特尔、华为和新兴独角兽公司。后者紧张是大的互联网公司,他们是AI的企业用户主体,由于业务体量的需求开始逐步构建自己的AI芯片方案,如谷歌、BAT等。中间的是中小用户,须要并认可AI的代价,但尚不具备构建AI芯片和全栈方案的资金和技能实力,须要寄托专门的AI公司,或者在互联网公司的云端方案构建自己的方案。
笔者打仗到的行业前后两类的公司差别很大,传统的芯片设计公司具有很强的IC设计开拓能力,但是不能够很好地理解AI运用,因而设计的芯片针对性欠缺;同时由于过多的传统芯片设计包袱,不能够果断地拥抱新的芯片设计架构和方法学。互联网公司的芯片设计团队芯片设计能力略有欠缺,但是可以很好的理解运用,拥抱新的架构和方法学;其余,由于目前AI尚不能明确分工的特点,互联网公司的芯片设计和运用可以有效协作,补充设计流程上不能自动化的寻衅,尽早实现AI芯片的代价,纵然设计可能不是很精良。以是,哪一派终极能够胜出尚不明了。