AI 计算架构百百种,有使用 GPU,也有 FPGA、DSP,或者是目前流行在各种嵌入式计算架构的类神经网络 ASIC,也就是 NPU 技术等。这些都是很常见的计算架构,在各种不同的应用中也发挥各自的计算特性和效能表现。
虽然目前有各种测试方式来比较不同架构的性能落差,但追根究底,不同架构原本的设计目的就有不同,有的必须要兼顾通用计算,因此在芯片布局中必须塞入更多逻辑管理单元,有的专注于纯粹的计算能量,完全不考虑其他工作,因此可能在芯片几乎大部分都塞乘加法器(MAC)之类的计算单元,也有的计算架构考虑的是各种情境下的通用计算需求,这些不同的考虑就产生的不同的效能/能效结果。
而近来欲在人工智能领域挑战 GPU 架构的各类计算新秀,都不约而同的号称可提供相较于 GPU 计算倍数以上的算力输出。GPU 性能变成这些新架构最直观的比较基准。
比如说包含寒武纪、华为的达芬奇架构,甚至是美国的 Habana 公司,都在产品发布时号称可在同样的规模设定下达到最高 1~3 倍于 NVIDIA 方案的性能输出。
后起之秀超越 GPU 的算力已经变成常识,且其宣称的性能优势也越来越大,所以 GPU 这种传统 AI 计算架构注定已经是末路黄花?其实这也还言之过早。当然,以行销而言,直接点出自己产品和竞品之间的技术落差是最直接有效的方法,但厂商往往只会指出对自己有利的部分,而对那些较不利的部分略之不谈,因此讨论这些新架构时,还是得从其设计目的、具体架构的真实际算效率来观察,才不会被厂商宣称的数字所蒙蔽。
最后,若这新架构在计算能量方面远优于旧架构,为何市场不选择这些理论上效率更高的计算架构?反而偏好既有的、没那么有效率的架构?
寒武纪与 TPU 渊源深,达芬奇、Habana 则都借鉴 GPU,精简以求效率为共通点
其实近几年崛起的多数 AI 计算架构都可以说是脱胎自 GPU 计算架构,由于 GPU 必须肩负庞大的通用计算工作,所以计算单元内包含了更复杂的逻辑、分支预测、缓存、绘图管线、暂存设计,而新近的 AI 计算架构通常把 GPU 复杂的 ALU(算法逻辑计算单元) 中他们认为多馀的部分去除,只留下纯粹的乘加法器,并根据需要添加自己的算法框架支持,或者是为了泛用而增加的可编程逻辑处理能力,再通过 SDK 包装之后就变成 AI 方案。
DT 君就以近来几个比较热门的 AI 计算架构来观察,可以发觉其实寒武纪与 Google TPU 的渊源较深,而华为的达芬奇与美国 Habana 则可以说有异曲同工之妙。
图|寒武纪的基础架构(来源:寒武纪)
寒武纪和 TPU 都是基于庞大乘加法器建构而成的类神经元计算架构。从生物观点来看,神经元中有许多突触,负责为别的神经元传递信息。同样,个别神经元也会接收来自许多其他神经元的信息。
以寒武纪 DianNao 相关论文中所揭露的内部结构来观察,可以发现其计算体系分为三层,分别是 NFU-1 部分的乘法单元。总共有 16X16=256 个乘法器。这些乘法器同时计算,也就是说,一个周期可以执行 256 个乘法。
NFU-2 则是是加法树。总共有 16 个。每个加法树是按照 8-4-2-1 这样组成的结构,每个加法数有 15 个加法器。NFU-3 是激活单元,共 16 个,主要工作是根据前面两个单元计算得到的刺激量,从而判断是否需要激活操作。
除了这三个 NFU 阶段的计算逻辑部分,还有三个 Buffer 分别负责存储输入数据、存储权值(filter 值),以及存储计算结果。从整体架构来看,其实非常单纯,也不需要进行任何逻辑判断,所以效能/能效可以达到非常高的程度。
而最新的 Cambricon-X 架构其实就是在 DianNao 的基础之下针对近来流行的稀疏系数矩阵计算架构,稀疏计算可以牵涉到前段时间火了一阵子,号称中国 NVIDIA,但后来卖给 Xilinx 的深鉴科技,其联合创始人韩松经过研究发现,传统的深度学习网络模型的许多权重系数是可以去除的,甚至能去掉 90% 以上还不会不影响模型的计算精度。
传统作法中,要删除权值系数必须花费很长的时间去分析模型,这也是之前深鉴方案之所以曾提到压缩神经网络模型与建立模型所需的时间相仿甚至还要更长的主要原因。
虽然删减了大量权值系数后,模型网络所需要的乘法计算次数可大幅减少,但因为系数的稀疏具有不可控的随机性,不同 filter 的有效权重可能是不同位置的,所以,这就造成了大量权重并行计算时,无法做到同步,导致目前现有的处理器设计都并不能充分利用系数稀疏带来的加速效果。
寒武纪的 Cambricon-X 就是在 DianNao 的基础之下,追求对稀疏系数优化的架构。而 Google 的 TPU 架构发展也邀请了曾经参与寒武纪核心技术研发的核心人物 Olivier Temam,甚至 Google 在 TPU 的论文也引用了寒武纪团队成员前期发表的 6 篇论文,因此寒武纪与 Google 的 TPU 在设计上有相当深的渊源。
二者较大的差异主要是在稀疏权值处理方面:TPU 属于二维的脉动阵列,输入数据的复用效率明显较低。而寒武纪的 Cambricon-X 在矩阵越稀疏的情况下效率越高,但反之,效率就可能会明显降低。
图|华为达芬奇架构。(来源:DT 君)
而华为的达芬奇架构主要也是众多乘加法器构成的架构,华为将这个乘加法器丛集称为 Cube,不过与其他类神经网络芯片不同的是,华为在数据流调度方面用了特殊的手法,让数据流量可以最大化,从而创造更高的能效表现。
而华为在达芬奇架构所强调的 3D Cube 计算架构,其实与 NVIDIA 的 CUDA 和 TensorCore 有着异曲同工之妙,同样都是以矩阵处理阵列的立体形式来处理 MAC 中的乘加计算,而华为正也因此将之称为 3D Cube。
但达芬奇架构有个更特殊的作法是,其在达芬奇核心中整合了标量,矢量,张量等各种指令集,可以配合其软件堆栈定制、优化数据打包和处理流程,是可自定义的 SIMD(单一指令多重数据流) 架构。依其号称的效能推论,应该是从个别应用情境进行针对性的深度优化才有办法达成,因此可能会非常倚赖编译器。
而另一个最近才冒出头的 AI 加速架构 Habana,根据该公司的自述资料,其创立于 2016 年,通过为处理性能、成本和功能带来数量级改进解锁人工智能的真正潜力。该公司着手从头开发人工智能处理器,为深度训练神经网络的特定需求以及生产环境中的推理部署进行优化。
图|Habana 公司的 Goya 芯片架构示意图。(来源:Habana)
乍看之下和中国此起彼落的 AI 芯片架构诉求相当一致,甚至在效能诉求上,也和寒武纪、达芬奇架构一样,都号称是以倍数的优势超越 GPU,不过 Habana 相较其他计算架构,其实更类似 GPU。
Habana 的 Goya HL-1000 推理芯片的核心是配备可编程能力自有指令集的 8 个 VLIW(超长指令集)TPC 内核,该公司声称,该架构具备了在所有的神经网络推理任务创建的 400 个内核库类型,也支持 8 至 32 位浮点和整数格式计算工作。
其 VLIW 架构是比较特殊的设计,过去 VLIW 通常只会在高端专业计算架构才会出现,比如说英特尔的 IA64,这种技术是基于一种非常长的指令组合,它把许多条指令进行打包连接并批次处理,从而增加计算的速度。VLIW(超长指令字)体系结构是美国 Multiflow 和 Cydrome 公司于 20 世纪 80 年代设计的体系结构。
乍看之下,若以目前 NVIDIA 的技术来比较,其 GPU 架构属于 SIMD 技术,但 Goya 架构却是基于 VLIW,似乎距离有点遥远?
不过 TPC 的计算单元包裹方式其实和 GPU 基于 ALU 丛集的 SM 块也是类似的概念,而另外一个 GPU 主流体系,也就是 AMD 的 GPU,也曾经采用过 VLIW 的设计方式,过去 GPU 使用 VLIW 有其理论性能上的优势,尤其非常适合进行大量的规则化数据的处理,但驱动非常难以设计优化,尤其娱乐 GPU 要面对复杂的游戏引擎和图形计算环境,更让 AMD 过去的架构很难在一开始与 NVIDIA 直接粗暴的计算方式在性能上相提并论,但 AMD 的 VLIW 架构往往在经过长时间的驱动更新之后能有着明显赢过同世代对手 GPU 的实力,也因此 AMD 的GPU产品也常常被戏称为战未来架构。
不过因为优化的难度高,后来 AMD 放弃 VLIW 转而走 RISC 架构。所以要说 Goya 比较像早期的 AMD GPU,而达芬奇架构则类似于后期 AMD GPU 的概念,其实也说得通。
Goya 采用了 VLIW 方式,目的应该与华为的达芬奇的作法类似,就是作为管理数据流与指令打包方式的优化作法,目的都是为了要在个别应用情境下有更高的性能表现,而因为 AI 计算环境远比游戏应用单纯,因此优化难度明显较低。
而根据 Habana 公司提供的测试数据,基于其 Goya HL-1000 处理器的 PCIe 计算 卡可在 ResNet-50 推理基准实现每秒 15000 张图片的吞吐量,延迟时间为 1.3 毫秒,功耗仅为 100 瓦,我们以熟悉的麒麟 980 芯片的同样测试项目来比较,该架构的性能是每分钟 4500 张,约为每秒 75 张,而麒麟 980 内建 NPU 的峰值功耗推估约在 2W 左右,换算之下,Goya 计算卡的每瓦性能是 150 张,而麒麟 980 的 NPU 每瓦计算性能约 37.5 张,可见其架构效率的优势。
当然,由于架构针对的应用情境和内建缓存、总线的规模都不同,这样的比较并不精确,但稍微可看出 Goya 架构的效率表现达到什么程度。对了,麒麟 980 是 7nm,而 Goya 计算卡则是 16nm。
根据官方表示,与如今数据中心部署的一般解决方案相比,Habana Labs 人工智能处理器的性能要高出一到三个数量级,若以 GPU 计算卡为比较基准,则可达到 3 倍的能效输出。相当令人熟悉的说法,是吧?
后起之秀强压老架构?
不要忘了,即便是 NVIDIA 最新的 Volta 和图灵架构中的 CUDA 核心,也就是 GPU 的基础计算单元,虽然架构效率有随着时间进行修改、提升,但多数集中在内存子系统的强化,整体架构和老旧的 Pascal 并没有太大的不同,其在专业计算中所呈现出来的训练性能表现增长主要还是因为工艺的改进,使得 CUDA 数量和时钟速度增长所带来的结果。换言之,这些在 AI 计算的后起之秀用以作为比较基准的,是个已经有两三年历史的老架构。
若理论效率能够很好的转换为实际表现,那么现有的 AI 计算架构应该早就很快的被这些新的给取代,但实际上,NVIDIA 仍然在市场上拥有接近独占的地位,即便其计算效率并不是最高。
另外,以架构纯粹的纯人工智能加速计算架构和 GPU 相提并论是否适当,其实也是值得探讨的问题。
肩负多重任务,GPU不只是GPU
前面也提到,GPU 过去依靠其庞大的计算单元能够很好的处理机器学习工作,但因为 GPU 的主要功能还是绘图计算,有相当大比重的晶体管并非使用在计算工作上,为弥补整体计算架构的效率,NVIDIA 也为其增加了 TensorCore 核心,弥补原本纯粹 GPGPU 架构针对推理工作的短板,该核心也能同时进行训练加速工作。
以同样晶体管规模的纯粹训练或推理性能而言,TensorCore 远超过标准 CUDA 单元,比如说 FP16 深度学习的性能,使用 TensorCore 的性能表现在理想情境下可达纯粹 CUDA 的 3 倍以上。
那大家可能会好奇,为何 NVIDIA 不推出纯粹使用 TensorCore 的芯片,以该架构全面取代效率较低的 CUDA 单元?那要在同样的芯片规模下取得和寒武纪等后起之秀类似或更好的性能其实不是难事。
但重点是有没有意义。若不久之后系统对于纯粹 AI 性能的要求更高了,而半导体设计和制造技术又遭遇瓶颈,或许 NVIDIA 可能会这么做,以纯粹的 TensorCore 芯片来对抗竞争对手。但就目前而言,维持 GPU 架构的延续对 NVIDIA 有更重要的战略意义,毕竟专业计算虽然利润高,但市场规模小,而娱乐绘图市场规模大,且可应用的空间广,只要是包含视觉处理的工作,基本上都和 GPU 脱不了关系,对 NVIDIA 而言,是极为重要的现金来源。
另外,以单一架构进行量产,可在芯片制造上取得较好的经济规模,对利润率的提升有更好的帮助,而 NVIDIA 近年来的财务数字表现也证明了这个观点。
而根据 NVIDIA 方面的论点,TensorCore 不只能在 AI 计算环境中发挥作用,未来也将肩负着游戏或虚拟环境中的 AI、物理模拟工作,对 NVIDIA 而言,任何硬件功能区块的加入都不会是只有针对单一工作,而是要针对更广,且适合未来应用发展的的计算考虑。
当然,FPGA 和 DSP 等不同类型的计算架构也和 GPU 有类似的状况,不过这二者不在本文的讨论范围中。
也因此,如果要把只能用于单一用途的架构拿来和多功能的架构相比,就好比拿同样 1000cc 汽缸的摩托车和汽车比较,摩托车肯定在加速方面可以有很亮眼的表现,可能更快到达目的地。但是汽车能用来承载更多乘客,也能载更多货物,孰优孰劣,端看应用目的,其实没有办法很直观的进行比较。
而目前 GPU 在特定效能数字上的弱势也不是没有办法解决,如果未来 NVIDIA 把针对不同应用的 GPU 进行更彻底的特化,比如说给专业计算的就配备更大的 TensorCore,给娱乐绘图的就更大的 GPU 区块,GPU 仍是共通的逻辑处理核心,但依照应用而给予的晶体管分配比重各有不同,那么现在动辄号称能效数倍于 GPU 的后起 AI 计算架构能否维持优势就很难说了。
重点在于生态的养成
生态这两个字已经是老生常谈,所有的新架构在推出时都往往会在其行销材料上挂上这两个字,但实际上能做到的却少之又少。
举例来说,NVIDIA 当初之所以能够成功,主要还是在开发环境与教育训练的完备,当初为了推动 CUDA 开发环境,NVIDIA 与许多行业、学校合作,并且把相关的开发环境和学校课程进行结合,且同步举办多种竞赛活动,不仅是炒作市场气氛,也同时是在检视其教育手段的成效如何。
但反观目前国内外的新创 AI 架构推动者,多半都是针对特定的应用着眼,而非真正创造泛用架构,对于创造生态并没有太多兴趣,而有意愿打进教育体系的更是少之又少,毕竟对这些架构开发者而言,能顾好自己的目标市场就好,要顾及更大的领域,其实力有未逮。
但如果是拥有庞大资本的 AI 方案公司,却不进行这些长远计划,只求以性能表现来“弯道超车”,这样的生态或许能拿到少数合作伙伴的支持,但能在市场上维持多久,其实也是令人存疑。
在这种产业背景下,华为所推动的“AI 开发者启动计划”在中国 AI 计算市场就显得相当特立独行,该公司承诺将会投资 1.4 亿美元来教育培训 AI 人才,其实算是有意要仿效 NVIDIA 之前经营生态的作法。该计划将帮助华为与开发者、合作伙伴、大学和研究机构合作打造更好的开发生态系统,从而支援 AI 资源、平台、课程和联合解决方案。其次,华为也会提供资金和技术支持,提供测试平台给开发者、合作伙伴。
金额虽然并不算特别大,且起步也有点晚,但其在建立生态上定下了相当远大的目标:利用 3 年时间,发展 100 万 AI 开发者及伙伴。
由华为正在推动的计划可看出,在公布达芬奇架构以及基于该架构发展出来的昇腾方案后,打的就是长远的生态战争。
建立生态依靠的是长期的经营与资源的投入,期间可能付出多回收少,但要是成功以技术和商业模式优势说服开发者以及相关供应渠道,往后对相关市场经营的黏着性将有立竿见影的效果。虽然现在要判断达芬奇架构以及昇腾方案的前景如何仍为时尚早,但其市场策略基本上已经走到正确的道路上了。