RISC-V的开源架构能给智能芯片带来什么机遇?
本帖最后由 宇智波鼬 于 2020-8-10 17:34 编辑最近人工智能芯片很火,华为发布了两款 AI 芯片—升腾 910 和 310,阿里成立的芯片公司“平头哥”,首款 AI 芯片最快明年下半年面世,人工智能依然是风口。行业的另一个热点是 RISC-V,65 家机构发起成立了中国 RISC-V 产业联盟。那么,RISC-V 的开源架构可以给人工智能芯片带来什么机遇呢?
RISC-V 的首席构架师 Krste Asanovic 告诉我们:“Mi-V 生态系统和 PolarFire 可为功率受限的嵌入式系统提供深度学习解决方案。”
Mi-V RISC-V 生态系统开发平台是美高森美(Microsemi)加速生态系统计划的一部分,聚集了许多参与 RISC-V 开发的行业领导者,为客户充分利用其功能并简化 RISC-V 设计。Mi-V 生态系统为固件和硬件工程师提供了全面的生态系统,让第三方能够使用这个平台推动 RISC-V 采用和创新。
在最近 SiFive 举办的 RISC-V 中国巡回研讨会上,Krste Asanovic 博士向我们讲述了人工智能的进化史以及 RISC-V 给人工智能芯片所带来的机遇。
一、人工智能的三波浪潮
人工智能(Artificial Intelligence)始于人工神经网络。人工神经网络经历了三波浪潮:第一波是上世纪五十年代和六十年代,人类发明了感知器(模拟人类视神经控制系统的图形识别机);第二波是上世纪八十年代和九十年代,称为“反向传播”的浪潮;第三波浪潮是自 2010 年以来的深度神经网络。值得注意的是,所有开发出来的理念比实际最终流行都要早很多年。
在上世纪五十年代和六十年代,人们发明了单层感知器。这个感知器最早是为图像处理开发的单层感知器(例如 Rosenblatt),它只是一个“线性可分分类器”,不能捕获有趣函数,例如 XOR 函数。到了七十和八十年代,AI 逐渐从统计方法转移到符号方法。
图一、人工神经网络单层(来源:网络)
到了 1986 年,有影响力的 PDP 书籍出版,从单层感知器发展到了多层感知器与反向支撑。人们发现两层方向支撑训练网络在实现许多艰巨任务时明显好很多,但专家们一个广泛的抱怨是结果不可解释,而且用通用计算机训练的过程太慢了,所以要赶快建立定制机器。
这样就有了定制神经计算机。大的定制神经网络计算机的努力主要发生在九十年代。在上世纪九十年代逐渐有了 DSP 阵列、矢量处理器、脉动阵列(Systolic arrays),以及其他更多的仿神经方法,例如:具有 EEPROM 权重的模拟、位系列技术、尖峰方法、异步处理器等等。
这里特别要提出的是 1989 年发明的环形阵列处理器(ICSI 1989),发明人是 Nelson Morgan, Jim Beck, Phil Kohn, Jeff Bilmes。这是为快速训练建立的号称为“大转储”神经网络的 RAP 机,开辟了语音识别领域;九十年代美国德州仪器公司的环形浮点 DSPs TMS320C30 问世,每个 DSP 提供 32MFLOPS(32-bit FP),每个板子上有 4 个 DSP,10 个电路板连接在一起(大于 1GFLOP/s 峰值,640MB DRAM)。其神经网格训练率大于 100MCUPS(每秒百万级的链接升级),全部加起来有 10 个电路板。FPGA 环连接用来为所有脉动阵列 - 即在训练和推理时的所有通讯,其快速、灵活的设计使其成为当时人工智能领域的一个“明星”,但是价格昂贵,每个电路板达 10 万美金。
二、专用和通用计算机之争
矢量微处理器(例如:Crays)在科学计算领域非常成功,它是一种全新的编程模型。给一个标准的 MIPS RISC 标量处理器增加一个矢量协处理器,并全部集成在一个芯片,可用于神经网络训练。
第一台矢量微处理器是 SPERT-II/T0,它产生于 1995 年。其系统被 9 个国际网站采用,作为人工智能的研发平台整整工作了 9 年,2004 年它在最后一次“上班”后黯然下岗。
1997 年出现了 TetraSpert,它是一台可快速训练的矢量微处理器,使用 SPARC 工作站,通过 Sbus 总线连接若干台(4 台)SRAM T0,进行神经网络的快速训练。西门子在 1992 年 5 月推出了 SYNAPSE-1,这是一台“脉动阵列 - 多重引擎(16b*16b)”的处理器,可实现四级程序控制(68000s+微码)。
这个时代的人工智能处理器是“用简化的矢量处理填充掩模版,添加高宽带本地存储器,并向服务器附加多个以加速神经网络训练。”
九十年代的人工智能市场特点一个是很小,一个是神经网络开始“人气消退”,只有一小部分人还在坚持做这个,因为摩尔定律的微缩理论更看好通用型处理器。
1996 年,Intel 发布了奔腾 MMX(Pentium MMX),从多能奔腾开始,英特尔就对其生产的 CPU 开始锁倍频了,但是 MMX 的 CPU 超外频能力特别强,而且还可以通过提高核心电压来超倍频,所以那个时候超频是一个很时髦的行动。
MIT 计算机科学实验室的 Krste Asanovic 发表了一篇论文“可编程神经计算方法”,文章说: “尽管迄今为止实现的多媒体扩展证实了基于定点矩阵码的通用微处理器有一个有限的提升,他们预示着商业微处理器制造商的意图是这种编码工作的很好,由于商业设计团队在新的微处理器设计中加入了多媒体内核的工作量,我们期待 ANN 算法的功能也能够大大增加,连续大量的投资都瞄准了高容量微处理器,以确保这些器件能使用最先进的制造工艺和更激进能够产生更高快速时钟速率的电路设计风格。在这种趋势下,势必减少了对于未来专用的神经计算机的兴趣。”
另外,随着年代,微处理器的功能提高速率在减慢:
•1980~1985: 提升 22%/ 年;
•1985~2003: 提升 52%/ 年;
•2003~2011: 23%/ 年;
•2011~2015: 9.3%/ 年;
•2015 年以后:2.3%/ 年。
图二、微处理器功能演进的 40 年(数据来源:Hennessy & Patterson, 2017)
“现在的微处理器功能已经相当于将近 10 万个 VAX-11/780 工作站,进步惊人,但提升速率在下降,” Krste Asanovic 博士说。“九十年代开始神经计算机已不能和微缩的通用计算机进行竞争了,但现在通用微处理器的工艺微缩停止了。”
本帖最后由 宇智波鼬 于 2020-8-10 17:33 编辑
三、图像处理器(GPU)
GPU 和 CPU 之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU 需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得 CPU 的内部结构异常复杂。而 GPU 面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
图像处理器是在 90 年代中后期出现的,GPU 的主要功能是产生 3D 图像,包括高端的浮点单元,提供工作站—像 PC 的图形,配置图形管道等,但在初期它并不能真正的进行编程。
进入 21 世纪以后,特别是 2001 年到 2005 年之间,随着时间的推移图像处理器加入了更多的可编程性能。例如,用来写小程序的新语言 Cg 在每个格点或每个像素进行,也在 Windows DirectX 变体上进行。出现了大量并行的(每框约上百万的格点或像素)但是非常严格的编程模型,某些用户注意到它也可以做通用计算,将输入输出数据映射到图像,计算格点和像素阴影。这些难以置信的编程模型,必须使用图像管道模型进行通用计算。
通用图像处理器(GP-GPU)的里程碑是 2006 年英伟达发布的 GeForce 8800GPU,它可以支持一个新的可编程语言:CUDA,这是一个“统一计算设备架构”。接着,行业更广泛地推动了一个有同样想法的中立供应商版本 OpenCL,其想法是,利用 GPU 的计算性能和存储器带宽来加速某些内核通用计算性能。这样就产生了附加处理器模型:主机 CPU 将数据并行内核发布到 GPU 执行,时间久了,就演变成为了速度最快的执行神经网络训练的标准方式。
图三、CPU 和 GPU 的架构示意
(图片来自 nVidia CUDA 文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元)
此时 GPU 已经不再局限于 3D 图形处理了,GPU 通用计算技术发展引起业界的关注,事实也证明在浮点运算、并行计算等部分计算方面,GPU 可以提供数十倍乃至于上百倍于 CPU 的性能。
GPU 采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了 Cache。而 CPU 不仅被 Cache 占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是 CPU 很小的一部分。
所以与 CPU 擅长逻辑控制和通用类型数据运算不同,GPU 擅长的是大规模并发计算(Concurrent computing),这也正是人工智能等所需要的。所以 GPU 除了图像处理,也越来越多的参与到计算当中来。
四、定制 AI 芯片的广泛努力
在图像处理器 GPU 逐渐演变为通用计算处理器的时候,许多定制芯片厂商也在努力开发定制 AI 芯片。例如 Google 推出的 TPU(张量处理器)、TPUv2、TPUv3 等云计算系列芯片,也有人称之为 AI 协同处理器。TPU 的性能比现代 CPU 和 GPU 高 15-30 倍,每瓦性能提高 30-80 倍。
AI 加速器设计的原型是边缘推理(Inference at edge),它最关切的因素是成本、性能和功耗,需要高压缩的模块来减少系统成本和功耗,以及成本性能绩效。
云端推理最关切的是(交互)延迟、吞吐量和成本,响应用户要求的快速性和可预见力,因为有许许多多的用户,因此降低每个用户的成本是关键。
云端训练关切的是性能。价值是得出的数据模型,要为高的成本 / 功耗辩解。单次训练可达数周,优化技能人才开发稀缺资源。这个更像传统的 HPC,而不像传统的云,追求极限的工艺,最先进的工艺节点,互连、冷却技术等等。
总的来说,云 AI 加速器的共性包括,专用矩阵引擎、压缩的定点 / 浮点格式、多片片上暂存存储器、先进节点中的全掩模板、最高带宽的外部 DRAM、最高带宽的串行链路等。
假设以上条件全部成立,AI 能够成功吗?Krste Asanovic 博士给出了三点预测:第一、算法变化很快但模式经久;第二、摩尔定律死了但阿姆达尔定律(Amdahl’s Law)还活着;第三、软件最重要,但你永远无法完成它。阿姆达尔定律表明,即使到了多核时代,并发程序的开发或者说提升程序的并发度仍然具有十分重要的意义。
阿姆达尔定律是一个计算机科学界的经验法则,可用于指导 CPU 的可扩展设计。阿姆达尔定律指出,CPU 的发展有两个方向,更快的 CPU 或者更多的核。目前看来发展的重心偏向了 CPU 的核数。但有时我们会发现虽然拥有更多的核,当我们同时运行几个程序时,只有少数几个线程处于工作中,其它的并未做什么工作,实践当中,并行运行多个线程往往并不能显著提升性能,程序往往并不能有效的利用多核,在多核处理器中加速比是衡量并行程序性能的一个重要参数。
AI 的算法在流片和布局中一直在改变,按照伯克利的观点:“Dwarfs 侏儒”是任何计算问题的最基本因素。Krste Asanovic 博士说,“我不知道 AI 算法的未来是什么样子,但是他们将使用这些模式,设计永远是这些模式的灵活组合。”
摩尔定律死了,阿姆达尔定律活着,而且是活蹦乱跳地活着。
图四、谷歌推出的 TPUv2(上)和 TPUv3(下)pod(来源:网络)
五、应用于 AI 加速器的 RISC-V
软件被定义为通过优化算法训练的神经网络构架以解决特定的任务。今天,神经网络是用来学习解决问题的实际工具,其中涉及通过大数据集进行分类学习。
做研发的人有深切的体会,“在流片前永远结束不了软件工作,在流片前不太可能完成 1%的软件工作,倾向于只编码了内核(1%)还剩 99%,但你要记着阿姆达尔定律!”Krste Asanovic 博士强调,“如果系统很难编程,那么就不会有软件了;如果你没有软件,你就不会有一个加速器!”
RISC-V 是免费且开放的 ISA,通过开放标准协作推动实现处理器创新的全新时代。RISC-V 也可成为定制加速器的设计基础。
应用一个简单的基础 ISA 对所有核可以大大简化软件。例如,在你需要一个高性能 Unix 兼容核去运行操作系统时,建立一个超标量体系结构 OoO 核;在你微代码调度需要 VLIW 的时候,按顺序构建超标体系结构;在你需要低精度 SIMD 的地方,使用标准矢量扩展;在你想需要利用 2D 优化的地方(例如:多路脉动阵列、卷积),使用 2D 扩展(正在进行中);在你需要中断 / 响应 I/O 管理核的地方,建立嵌入式核;以及相同的存储器模块,同步基元,编程工具流程(C- 结构包),查错,跟踪……等等。
RISC-V 可定制化核有许多丰富的选择,包括被连接到相干高宽带结构的核和即将到来的矢量扩展、客户自定义指令扩展、依附在相干构造上的 AI 加速器等。
一个好消息是开源的 Nvidia NVDLA 在其 SiFive 流行芯片上已经得到演示,SiFive Design Sharer 提供了简洁全面的 ASIC 设计服务,以及提供应用于高宽带存储系统的 HBM2 IP 和应用于柔性芯片连接的 Interlaken IP 等众多人工智能 RISC-V IP 核。
本篇完
页:
[1]