在深度学习的概念中,通常可以简化为两大工作流,一是训练,二是推理。两者完美融合才是一个现代化的完整深度学习网络,缺一不可。训练用于调整神经网络模型的参数,从而在给定的数据上实现良好的表现;推理则用于执行训练过的神经网络模型,以在新数据上获得输出。
为了让一个模型用于特定的用例,比如图像识别、语音识别等,开发者必须要先训练这个模型。一旦模型训练完成后,就可以投入使用(用于推理)。这两大工作流有着类似的特点,但对硬件资源的要求却存在一定的差距。
以训练来说,硬件需要的是大带宽大容量的内存,所以芯片之间的互联相当重要,当然了这些需求会极大地增加BOM和功耗。而推理则常用于自然语言处理、推荐系统和语音识别这样的实时应用中,因此必须做到低延迟、高吞吐量,再者由于更加贴近应用端,所以低功耗和低成本也是这类AI推理硬件的首选特性。
而这几年间,不少半导体公司、云服务厂商和初创AI芯片公司都在AI推理上频频布局,甚至收购了不少企业来放大优势或补全短板,尤其是“御三家”英伟达、英特尔和AMD。笔者这里特地选择了三家的代表性产品,以及他们走的不同技术路线。
市场与生态的宠儿——GPU王牌部队
自英伟达从2010年推出M2050专业GPU,并大肆推行GPGPU在AI推理上的应用后,英伟达DGX产品线在AI推理算力上的占比就在一路走高。2020年阿里云、AWS和腾讯云等公有云平台中,英伟达GPU AI推理算力超过了100 exaflops,也首次夺下了云端CPU统治多年的推理算力宝座,这其中的旗舰就是A100 GPU。
A100 SXM / 英伟达
我们以旗舰型号A100 80GB SXM为例,318 TFLOPS的TF32算力,1248 TOPS的INT8算力,80GB的GPU内存带宽达到了2039GB/s。不仅支持NVLink 600GB/s的互联,也支持64GB/s的PCIe 4.0互联。A100还可以被分为7个独立的GPU实例,无论是端到端AI还是数据中心的HPC平台,都适合该GPU大显身手。
但A100的缺点也相当明显,第一就是功耗,高达400W的功耗让这张卡成了很多AI推理加速器竞相对比能效比的对象。其次就是价格,高达一万美元以上的单价让不少人望而却步,至少个人开发者使用GPU或基于该GPU的云服务器的话,不免会肉疼好一阵了。
灵活的代表——FPGA抵抗军
对于AMD来说,过去主要是与英伟达、英特尔在一些通用计算领域进行交锋,而在AI训练和推理上,AMD其实并没有推出太多针对这类应用的方案,直到对Xilinx的收购。不可置否的是,AMD在数据中心和HPC已经崭露头角,甚至开始拔尖,但AI推理可以说一直是AMD的弱势所在。
其实收购的部分原因,也要归功于Xilinx在AI市场上得天独厚的优势,而这种优势在两家联手之下更加明显,这一点早在过去的合作中就可以看出来。2018年的Xilinx开发者论坛上,AMD的EPYC CPU和Xilinx的Alveo U250在GoogLeNet CNN框架上实现了3万张图片每秒的世界纪录级吞吐量。目前不少公有云厂商也在用Xilinx的FPGA方案,比如阿里云就有基于Xilinx VU9P的方案。
VCK5000 / Xilinx
Xilinx最近也推出了全新的VCK5000 AI加速器,该卡基于Xilinx 7nm的Versal ACAP架构,专为高吞吐量的AI推理打造。从纸面参数上看,这张卡好像性能不算强大,在ResNet-50的吞吐量上只能算优于英伟达的T4显卡,但VCK5000还准备了一些奇招。
电路中有个叫做暗硅(Dark Silicon)的概念,指的就是在功耗限制下,处理器电路上常常出现“一方有难,多方看戏”的情况,所以实际的效能根本达不到纸面参数。而Xilinx称VCK5000将实际效率推至90%,相较英伟达GPU普遍低于50%的效率可谓秒杀了,甚至高过A100。成本上,VCK5000的单价也做到了2745美元,从性价比和TCO来说,FPGA方案可以说是真香了。
初创公司首选——ASIC异军突起
作为英特尔在2019年收购的一家以色列人工智能公司,Habana倒是很少出现在人们的视线中,远不如同被英特尔收购的以色列自动驾驶芯片公司Mobileye或是晶圆代工厂Tower Semiconductor那般高调,但他们给英特尔带来的AI方案还是有点东西的。
HL-100 / Habana
Habana拥有两大产品线,一是主打训练的Gaudi系列,二是主打推理的Goya系列。虽然两者采用了不同的芯片设计,但仍基于相同的基本架构(TPC),只不过是针对两种工作负载做了优化而已。同样以ResNet50的吞吐量作为比较,在Batch大小为10时,基于Goya的HL-100加速卡可以做到15488张图片每秒的吞吐量,更吃惊的是其延迟可以做到0.8ms。对于延迟敏感型应用来说,Goya很可能就是最佳的选择。
不过HL-100的TPC还只是基于台积电的16nm工艺而已,而基于更先进的工艺的TPC和HL-200系列迟迟没有消息公布。不知是不是Habana打算在新产品上直接用上英特尔的工艺。
孰优孰劣?还是取决于生态和市场选择
要想对比这三家AI推理加速器的性能着实有些困难,且不说三者在规模和功耗上的不同,所用系统、软件、模型、数据集和测试环境也都是各不一样。那么对于AI开发者来说,应该如何选择呢?我们不妨从市场和生态的角度来看。
首先是市场的主流选择,无疑目前市面应用占比最多的还是英伟达旗下的加速器,这在数据中心和超算等场景中都能看出来,无论是训练还是推理,云服务厂商推出最多的旗舰实例基本都是基于英伟达的A100、A30等GPU,在其TensorRT推理框架的大力推动下,英伟达占据了绝对的主导位置。然而作为通用方案,英伟达的A100在总体性能上虽然不错,但泛用性还是无法覆盖到一些特定的应用。比如主打超低延迟或超高吞吐量的场景,可能还是不如FPGA或推理专用ASIC给到的吸引力高,更不用说这些方案在成本上的优势了。
反观Xilinx的VCK5000,单纯比算力的话,FPGA与GPU、ASIC相比优势不大,倒是FPGA的可编程灵活性为开发带来了不少便利,可随时更新和优化硬件加速而无需重新设计硬件。但不少AI开发者可能看到Xilinx这个大名就望而生畏,纷纷表示自己一个深度学习“炼丹师”,可不想学Verilog之类的RTL编程设计。这也是为何英特尔和Xilinx等FPGA厂商近年来开始在软件上发力的原因,像Xilinx Vitis这样的统一软件,可以说给了一个面向全平台开发者的方案,直接支持到Pytorch和TensorFlow这些主流的框架和模型。
至于Habana的Goya这种产品形式,其实是目前不少初创公司走的路线。与以上GPU和FPGA方案相比,他们在软件开发上要花费更多的心力,所以不少初创企业的AI加速器支持的框架和模型都不是太多,支持的程度也尚未完善。至于市场反响来看,Goya也不比Habana的Gaudi训练加速器,后者已经有了基于该硬件的AWS实例,而Goya目前已知的应用还是超算。未来Goya面向的,可能还是比较“专”的场景。