此刻,你应该是在电脑或手机上看这篇文章。不管怎样,这些机器都属于现代计算机,它们都有中央处理器(CPU)和其他为特定功能服务的专用芯片,例如显卡、声卡、网卡、传感器融合等。处理特定任务时,专用处理器往往比通用CPU更快更高效。
计算机发展早期,CPU都会和专用处理器配合使用。1970年代的8位和16位CPU需要依赖软件来模拟浮点指令,因此执行浮点运算非常慢。而由于计算机辅助设计(CAD)和工程模拟等应用对浮点运算的速度要求较高,于是人们开始用数学协处理器(math coprocessor)辅助CPU,让数学协处理器分担所有浮点运算任务,它的浮点运算速度和效率都比CPU更高。这就是专用处理器的一个例子。
关注AI和半导体行业的朋友近来可能听说过“机器学习(ML)专用处理器”(即AI加速器)。最常见的AI加速器莫过于NVIDIA GPU,此外还有Intel的Habana Gaudi处理器、Graphcore的Bow IPU、Google的TPU、AWS的Trainium和Inferentia芯片等。
为什么如今有这么多AI加速器可供选择?它们和CPU有什么不同?算法如何改变才能适应这些 硬件? 硬件又该如何发展才能支持最新的算法? 本文将一一解答。本文主要内容包括:
-
为什么需要专用AI加速器?
-
ML硬件的分类:CPU、GPU、AI加速器、FPGA和ASIC
-
“硬件感知(Hardware-aware)”的算法和“算法感知(Algorithms-aware)”的硬件
-
AI加速器与高效ML算法的协同进化
-
针对推理的AI加速器与高效算法
-
针对训练的AI加速器与高效算法
-
AI加速器的未来
1
为什么需要专用AI加速器?
构建ML专用处理器有三个方面的原因:能效、性能、模型大小及复杂度。近来,要提高模型准确率,通常做法是扩大模型参数量,并用更大型的数据集训练模型。计算机视觉、自然语言处理和推荐系统都采用这种做法。
语言模型方面,前几年诞生的GPT-3有1750亿参数,当时被视为大模型的“天花板”,但后来又出现了GLaM和NVIDIA MT-NLG,参数量分别达到1.2万亿和5300亿。按照历史规律,模型将越来越大,而现有处理器的算力将无法满足大模型在训练时间和推理延迟方面的要求。
不过,构建AI专用加速器的最重要原因还是能效,开发AI专用芯片可节省巨大的能源,可覆盖研发投入有余。
为什么需要高能效的处理器?
ML模型越大,需要执行的内存访问操作就越多。与内存访问相比,矩阵-矩阵运算和矩阵-向量运算的能效高很多。根据斯坦福大学韩松博士的论文( https://arxiv.org/pdf/1506.02626v3.pdf ),读取内存的能耗比加/乘运算操作的能耗高出好几个数量级。大型神经网络由于无法片上存储,需要执行更多DRAM读取操作,因此能耗还要更高。
图源:https://arxiv.org/pdf/1506.02626v3.pdf
用通用处理器运行深度神经网络时,扩大处理器规模可以带来性能提升,但即便只是小幅提升也须以大量能耗和巨额设备成本为代价。
CPU等通用处理器牺牲低能耗换取通用性,AI加速器等专用处理器则牺牲通用性换取低能耗。
使用AI加速器则不一样。AI加速器通过改进设计,可以减少内存访问,提供更大的片上缓存,还可以具备特定的硬件功能(如加速矩阵-矩阵计算)。由于AI加速器是基于特定而构建的设备,可根据算法进行适配改进,因此其运行效率会比通用处理器更高。
2
ML硬件的分类——CPU、GPU、AI加速器、FPGA和ASIC
接下来我们谈谈加速器的不同种类,以及它们的通用和专用程度。