在 上一篇文章中,前苹果工程师、普林斯顿大学博士 Adi Fuchs 聚焦 AI 加速器的秘密基石:指令集架构 ISA、可重构处理器等。在这篇文章中,我们将跟着作者的思路回顾一下相关 AI 硬件公司,看看都有哪些公司在这一领域发力。
这是本系列博客的第四篇,主要介绍了 AI 加速器相关公司。全球科技行业最热门的领域之一是 AI 硬件, 本文回顾了 AI 硬件行业现状,并概述相关公司在寻找解决 AI 硬件加速问题的最佳方法时所做的不同赌注。
对于许多 AI 硬件公司来说,最近几年似乎是 AI 硬件发展的黄金时代;过去三年英伟达股价暴涨约 + 500%,超越英特尔成为全球市值最高的芯片公司。其他创业公司似乎同样火爆,在过去几年中,他们已花费数十亿美元资助 AI 硬件初创公司,以挑战英伟达的 AI 领导地位。
AI 硬件初创公司 - 截至 2021 年 4 月的总融资。图源:AnandTech
此外,还有一些有趣的收购故事。2016 年,英特尔以 3.5 亿美元收购了 Nervana,2019 年底又收购了另一家名为 Habana 的人工智能初创公司,该公司取代了 Nervana 提供的解决方案。非常有意思的是,英特尔为收购 Habana 支付了 20 亿美元的巨款,比收购 Nervana 多好几倍。
AI 芯片领域,或者更准确地说,AI 加速器领域(到目前为止,它已经不仅仅是芯片)包含了无数的解决方案和方法,所以让我们回顾这些方法的主要原则。
AI 加速器不同实现方法
英伟达:GPU + CUDA
如果你在耕地,你更愿意使用哪个?两只壮牛还是 1024 只鸡?(西摩・克雷)
英伟达成立于 1993 年,是最早研究加速计算的大公司之一。英伟达一直是 GPU 行业的先驱,后来为游戏机、工作站和笔记本电脑等提供各种 GPU 产品线,已然成为世界领导者。正如在之前的文章中所讨论的,GPU 使用数千个简单的内核。相比来说,CPU 使用较少的内核。
最初 GPU 主要用于图形,但在 2000 年代中后期左右,它们被广泛用于分子动力学、天气预报和物理模拟等科学应用。新的应用程序以及 CUDA 和 OpenCL 等软件框架的引入,为将新领域移植到 GPU 铺平了道路,因此 GPU 逐渐成为通用 GPU (General-Purpose GPU),简称 GPGPU。
ImageNet 挑战赛:使用 GPU 的获胜误差和百分比。图源:英伟达
从历史上看,人们可能会说英伟达是幸运的,因为当 CUDA 流行和成熟时,现代 AI 就开始了。或者有人可能会争辩说,正是 GPU 和 CUDA 的成熟和普及使研究人员能够方便高效地开发 AI 应用程序。无论哪种方式,历史都是由赢家书写的 —— 事实上,最有影响力的 AI 研究,如 AlexNet、ResNet 和 Transformer 都是在 GPU 上实现和评估的,而当 AI 寒武纪爆发时,英伟达处于领先地位。
SIMT 执行模型。图源:英伟达
GPU 遵循单指令多线程 (SIMT) 的编程模型,其中相同的指令在不同的内核 / 线程上并发执行,每条指令都按照其分配的线程 ID 来执行数据部分。所有内核都以帧同步(lock-step)方式运行线程,这极大地简化了控制流。另一方面,SIMT 在概念上仍然是一个多线程类 c 的编程模型,它被重新用于 AI,但它并不是专门为 AI 设计的。由于神经网络应用程序和硬件处理都可以被描述为计算图,因此拥有一个捕获图语义的编程框架会更自然、更有效。
虽然从 CPU 转向 GPU 架构是朝着正确方向迈出的一大步,但这还不够。GPU 仍然是传统架构,采用与 CPU 相同的计算模型。CPU 受其架构限制,在科学应用等领域逐渐被 GPU 取代。因此,通过联合设计专门针对 AI 的计算模型和硬件,才有希望在 AI 应用市场占有一席之地。
英伟达的 GPU、CPU 和 DPU 路线图。图源:英伟达
英伟达主要从两个角度发展 AI:(i) 引入 Tensor Core;(ii) 通过收购公司。比如以数十亿美元收购 Mellanox ,以及即将对 ARM 的收购。
ARM-NVIDIA 首次合作了一款名为「Grace」的数据中心 CPU,以美国海军少将、计算机编程先驱 Grace Hopper 的名字命名。作为一款高度专用型处理器,Grace 主要面向大型数据密集型 HPC 和 AI 应用。新一代自然语言处理模型的训练会有超过一万亿的参数。基于 Grace 的系统与 NVIDIA GPU 紧密结合,性能比目前最先进的 NVIDIA DGX 系统(在 x86 CPU 上运行)高出 10 倍。
Grace 获得 NVIDIA HPC 软件开发套件以及全套 CUDA 和 CUDA-X 库的支持,可以对 2000 多个 GPU 应用程序加速。
Cerebras
Cerebras 成立于 2016 年。随着 AI 模型变得越来越复杂,训练时需要使用更多的内存、通信和计算能力。因此,Cerebras 设计了一个晶圆级引擎 (WSE),它是一个比萨盒大小的芯片。
Andrew Feldman。图源:IEEE spectrum
典型的处理芯片是在一块称为晶圆的硅片上制造的。作为制造过程的一部分,晶圆被分解成称为芯片的小块,这就是我们所说的处理器芯片。一个典型的晶圆可容纳数百甚至数千个这样的芯片,每个芯片的尺寸通常在 10 平方毫米到 830 平方毫米左右。NVIDIA 的 A100 GPU 被认为是最大的芯片,尺寸 826 平方毫米,可以封装 542 亿个晶体管,为大约 7000 个处理核心提供动力。
Cerebras WSE-2 与 NVIDIA A100 规格比较。图注:BusinessWire
Cerebras 不仅在单个大芯片上提供超级计算机功能,而且通过与学术机构和美国国家实验室的合作,他们还提供了软件堆栈和编译器工具链。其软件框架基于 LAIR(Linear-Algebra Intermediate Representation )和 c++ 扩展库,初级程序员可以使用它来编写内核(类似于 NVIDIA 的 CUDA),还可用于无缝降低来自 PyTorch 或 TensorFlow 等框架的高级 Python 代码。
总而言之,Cerebras 的非传统方法吸引了许多业内人士。但是更大的芯片意味着内核和处理器因缺陷而导致失败的可能性更高,那么如何控制制造缺陷、如何冷却近百万个核心、如何同步它们、如何对它们进行编程等等都需要逐个解决,但有一点是肯定的,Cerebras 引起了很多人的注意。
GraphCore
GraphCore 是首批推出商业 AI 加速器的初创公司之一,这种加速器被称为 IPU(Intelligent Processing Unit)。他们已经与微软、戴尔以及其他商业和学术机构展开多项合作。
目前,GraphCore 已经开发了第二代 IPU,其解决方案基于一个名为 Poplar 的内部软件堆栈。Poplar 可以将基于 Pytorch、Tensorflow 或 ONNX 的模型转换为命令式、可以兼容 C++ 的代码,支持公司提倡的顶点编程(vertex programming)。与 NVIDIA 的 CUDA 一样,Poplar 还支持低级 C++ 编程以实现更好的潜在性能。
第二代 IPU 芯片图。图源 GraphCore
IPU 由 tiled 多核设计组成,tiled 架构由 MIT 于 2000 年代初研发,该设计描述了复制结构的 2D 网格,每个网格都结合了网络交换机、小型本地内存和处理核心。第一代 IPU 有 1216 个 tile,目前第二代 IPU 有 1472 个 tile。每个 IPU 内核最多可以执行 6 个线程,这些线程是包含其专有指令集架构 (ISA) 的代码流。
IPU 采用的是大规模并行同构众核架构。其最基本的硬件处理单元是 IPU-Core,它是一个 SMT 多线程处理器,可以同时跑 6 个线程,更接近多线程 CPU,而非 GPU 的 SIMD/SIMT 架构。IPU-Tiles 由 IPU-Core 和本地的存储器(256KB SRAM)组成,共有 1216 个。因此,一颗 IPU 芯片大约有 300MB 的片上存储器,且无外部 DRAM 接口。连接 IPU-Tiles 的互联机制称作 IPU-Exchange,可以实现无阻塞的 all-to-all 通信,共有大约 8TB 的带宽。最后,IPU-Links 实现多芯片互联,PCIe 实现和 Host CPU 的连接。
可重构数据流
Wave Computing、SambaNova 和 SimpleMachines 是三家推出加速器芯片的初创公司。其中 Wave Computing 成立于 2008 年,其使命是「通过可扩展的实时 AI 解决方案,从边缘到数据中心革新深度学习」,该公司由 Dado Banatao 和 Pete Foley 创立。一段时间以来,它一直处于隐身模式,从各种来源获得资金。
Wave Computing 的核心产品是数据流处理器单元(DPU),采用非冯诺依曼架构的软件可动态重构处理器 CGRA(Coarse grain reconfigurable array/accelerator)技术,适用于大规模异步并行计算问题。2019 年前后,Wave Computing 针对边缘计算市场的算力需求,将 MIPS 技术与 Wave 旗下 WaveFlow 和 WaveTensor 技术相结合,推出 TritonAI 64 IP 平台。但不幸的是,它在 2020 年申请了破产保护。
基于时间的 DPU 核映射。图源:Wave Computing
SambaNova 成立于 2017 年底,自那以来,该公司获得了由 Google Ventures,Intel Capital 和 Blackrock 领导的三轮融资以及在美国能源部的 Laurence Livermore 和 Los Alamos 的部署。他们现在已经可以为一些客户提供新产品。
SambaNova 的 RDU 框图。
SambaNova 正在为数据中心构建芯片和软件栈,目标是用 AI 进行推理和训练。其架构的核心是可重构数据流单元(RDU,reconfigurable dataflow unit)。RDU 芯片包含一组计算单元(称为 PCU)和暂存器存储单元(称为 PMU),它们以 2D 网格结构组织起来,并与 NoC 交换机连接。RDU 通过一组称为 AGU 和 CU 的单元结构访问芯片外存储器。
SambaNova 的关键用例。图源:HPCWire
SambaNova 的软件堆栈(称为 Sambaflow)采用高级 Python 应用程序(例如 PyTorch、TensorFlow )并将它们降低为可以在编译时对芯片 PCU、PMU、AGU 和 CU 进行编程的表示。SambaNova 展示了 RDU 架构可以运行复杂的 NLP 模型、推荐模型和高分辨率视觉模型。
SimpleMachines 由威斯康星大学的一群学术研究人员于 2017 年创立。该研究小组一直在探索依赖于结合冯诺依曼(逐条指令)和非冯诺依曼(即数据流)执行的异构数据路径的可重构架构。
该公司提供的数据均参考了在顶级学术会议和期刊发表的原创研究论文。指导架构原则有点类似于 SambaNova 正在做的事情,即开发一个可重新配置的架构,以支持非常规编程模型,实现能够应对高度变化的 AI 应用程序空间的灵活执行。
SimpleMachines 的 Mozart 芯片。图源:SimpleMachines
该公司的首个 AI 芯片是 Mozart,该芯片针对推理进行了优化,在设计中使用了 16 纳米工艺,HBM2 高带宽内存和 PCIe Gen3x16 尺寸。2020 年,SimpleMachine 发布了第一代加速器,该加速器基于 Mozart 芯片,其由一个可配置的 tile 数组组成,它们依赖于控制、计算、数据收集等的专业化。
脉动阵列 + VLIW: TPUv1、Groq、Habana
TPU
世界上首个专门为 AI 量身定制的处理器之一是张量处理单元(TPU),也称张量处理器,是 Google 开发的专用集成电路(ASIC),专门用于加速机器学习。自 2015 年起,谷歌就已经开始在内部使用 TPU,并于 2018 年将 TPU 提供给第三方使用,既将部分 TPU 作为其云基础架构的一部分,也将部分小型版本的 TPU 用于销售。
第一代 TPU 体系架构。图源:arXiv
第一代 TPU 是一个 8 位矩阵乘法的引擎,使用复杂指令集,并由主机通过 PCIe 3.0 总线驱动,它采用 28 nm 工艺制造。TPU 的指令向主机进行数据的收发,执行矩阵乘法和卷积运算,并应用激活函数。
第二代 TPU 于 2017 年 5 月发布,值得注意的是,第一代 TPU 只能进行整数运算,但第二代 TPU 还可以进行浮点运算。这使得第二代 TPU 对于机器学习模型的训练和推理都非常有用。谷歌表示,这些第二代 TPU 将可在 Google 计算引擎上使用,以用于 TensorFlow 应用程序中。
第三代 TPU 于 2018 年 5 月 8 日发布,谷歌宣布第三代 TPU 的性能是第二代的两倍,并将部署在芯片数量是上一代的四倍的 Pod 中。
第四代 TPU 于 2021 年 5 月 19 日发布。谷歌宣布第四代 TPU 的性能是第三代的 2.7 倍,并将部署在芯片数量是上一代的两倍的 Pod 中。与部署的第三代 TPU 相比,这使每个 Pod 的性能提高了 5.4 倍(每个 Pod 中最多装有 4,096 个芯片)。
Groq
谷歌在云产品中提供了 TPU,他们的目标是满足谷歌的 AI 需求并服务于自己的内部工作负载。因此,谷歌针对特定需求量身定制了 TPU。
2016 年,一个由 TPU 架构师组成的团队离开谷歌,他们设计了一种与 TPU 具有相似基线特征的新处理器,并在一家名为 Groq 的新创业公司中将其商业化。
Groq TSP 执行框图。图源:Groq
Groq 的核心是张量流处理器(TSP)。TSP 架构与 TPU 有很多共同之处:两种架构都严重依赖脉动阵列来完成繁重的工作。与第一代 TPU 相比,TSP 增加了向量单元和转置置换单元(在第二代和第三代 TPU 上也可以找到)。
Groq VLIW 指令集和描述。图源:Groq