Stratix10 NX:超越GPU的人工智能时代“最强”FPGA?
任何科学技术的发展和进步都离不开两个主要的推动力量,一个是科学研究,另外一个是工程实践。这两者是相互补充、相互促进的关系。科学研究主要考虑的是做什么,而工程实践主要考虑的是怎么做。
拿芯片行业举例,我们需要不断思考和研究很多问题,才能保持这个行业的不断发展和前进。比如,怎么去设计更有效的芯片架构,让芯片的性能更强、功耗更低;怎么去提升芯片设计软件的性能,从而简化芯片设计的过程、缩短开发时间;怎么结合其他领域的知识,比如人工智能,来帮助我们做芯片的设计和制造。
在12月刚刚结束的名叫FPT的国际会议上,英特尔、多伦多大学、康奈尔大学的学者发表了一篇论文,详细介绍了Stratix10 NX FPGA的主要微架构创新,以及它与英伟达GPU进行实际算力对比时取得的性能提升。本文将对这项成果的具体内容进行深入解读,让各位先睹为快。
本篇论文的原文以及老石的注释版本,已上传至知识星球“老石谈芯 – 进阶版”,请在文末扫码进入星球查看。
FPGA领域的主要研究热点
首先值得一提的是,可编程逻辑芯片和FPGA领域一共有四个顶级的国际学术会议,前面提到的FPT,也就是Field Programmable Technology,就是其中之一。它常年在亚太地区巡回举办。剩下的三个,分别是FPGA、FCCM和FPL。在之前的文章里,曾经介绍过“FPGA”这个会议,以及当时发表在“FPGA”大会上的一些成果,有兴趣的读者朋友可以去看看。
根据这次FPT的论文收录情况,从整体上看,目前可编程逻辑芯片和FPGA在学术界的研究方向主要集中在两个方面:
- 一个是和人工智能相关的领域,比如根据AI应用进行FPGA微架构的优化、或者做一些跨学科的结合。
- 另一个方向,就是将FPGA作为硬件加速器,应用在云计算或者数据中心里。
这两部分内容,也是这个公众号一直在关注和讨论的重中之重。除此之外,关于FPGA高层次综合的内容也仍然是热点之一,但是在AI大火的这几年,HLS的热度好像在最近稍显褪色。
根据我的不完全统计,今年FPT这个会和AI相关的研究至少有8篇论文,和硬件加速器相关的有6篇,超过了会议接受的全部论文的一半。
在今天的文章里,我就着重介绍关于英特尔Stratix10 NX FPGA的具体内容。我也会简单介绍论文主要作者的背景和代表性研究,方便各位读者朋友把握当前最新的FPGA发展动态。
AI芯片“峰值算力”和“实际算力”的对比
这个研究探讨的第一个问题,也是一个业界一直颇有争论的议题,那就是对于AI芯片的算力而言,峰值性能和实际性能到底是不是一回事。
比如对于英伟达基于12纳米工艺的T4和V100 GPU,它们的INT8峰值性能可以达到130TOPS和62.8TOPS。但这是否意味着,在实际的AI推理应用中,特别是对实时性要求比较高的应用里(比如batch-32或者更低时),GPU仍然能够实现并且保持这种峰值性能呢?
下图是这项研究取得的一些实验结果,其中蓝色代表关闭了GPU中的张量单元(Tensor Core – TC),红色代表开启了张量单元。实线代表实测结果,虚线代表理论的峰值性能。从图中可以看到,对于各种矩阵大小和数字表达形式(fp32、fp16、int8),实测结果都无法达到GPU理论上的峰值性能。实际上,这里测到的实际算力可能只有峰值性能的10分之一甚至更低。
这项研究探讨的第二个问题,就是和FPGA的架构有关。在之前的文章里,我们也曾经介绍过,性能或者算力只是衡量AI芯片的五个维度之一。除此之外,还有同构性、功耗等等。
所以尽管从峰值性能来看,FPGA可能比不上GPU,但是我们能否通过改进FPGA的架构和编程方法,使得FPGA在某些AI应用的性能上可以和GPU相比,甚至超过GPU呢?这个就是这个研究讨论的第二个问题。
总体来说,本文要介绍的这篇论文,就详细阐述了英特尔的Stratix10 NX FPGA针对AI应用做出的一系列架构调整和改进,并且比较了它和GPU在实际应用中能够取得的实际算力。这项研究通过一系列的基准测试和对比,证明了对于实时性要求比较高的AI推理应用,这个S10 NX FPGA比英伟达的T4和V100 GPU在性能上平均提升了24.2倍和11.7倍,可以说是非常惊人的提升,见下图。此外在能效方面,也就用之前视频里介绍过的每瓦性能这个标准来衡量的话,FPGA也比GPU平均高8到16倍。
英特尔Stratix10 NX FPGA微架构创新
那么,为什么在实际应用中,FPGA和GPU有这么大的差距呢?这主要有两个原因,这也是这篇文章主要的创新点。
首先,这个S10 NX FPGA针对深度学习应用进行了微架构的优化。目前,业界对于FPGA的AI优化主要有两种手段。一个是将FPGA的可编程逻辑单元作为单独的一部分,并辅以专门用来计算AI应用的加速引擎。这种架构的典型代表,就是赛灵思ACAP里的AI引擎,这个在之前的文章里也曾详细介绍过,我把它称之为“轻耦合”的集成方式。
赛灵思ACAP架构示意图,AI引擎阵列在顶部
相比之下,Stratix10 NX采用了“紧耦合”的集成方式,也就是在更细的粒度下,把DSP单元全部换成可变精度的张量单元,从而实现对AI计算的加速。这里的张量单元的架构示意图如下所示。
有了专为AI优化的Tensor Core的加持,就使得FPGA里的硬核乘法器数量增加了至少3倍,同时能够支持多种精度的乘加运算。所以相比同系列的其他FPGA,S10 NX的int8峰值性能提升了至少4倍,见下表。
Stratix10 NX的系统层面优化
第二个原因,也是更重要的原因,就是FPGA能更有效的利用芯片上的这些张量单元,从而使得实际性能和峰值性能没有太大的差距。这个属于系统层面的优化,它基于的是微软脑波项目的架构,也就是在FPGA上实现了一个多核的神经处理单元NPU,以及完整的指令集和编译工具链,如下图所示。关于脑波项目的具体介绍,可以看之前的文章《FPGA脑波项目:基于FPGA的实时AI系统》。
NPU的本质是一个Overlay,这是一个虚拟化技术,也就是在FPGA原有的可编程逻辑资源上方,添加了一个逻辑层,方便用户编程和使用,而无需过多关心底层的资源使用和实现细节。这个在之前的文章《FPGA虚拟化:突破次元壁的技术》里也详细介绍过,这里就不再赘述了。
值得注意的是,这项研究还讨论了如何选取合适的内核数量、层数、并行性等Overlay的架构参数,使得整体性能和延时、资源使用等性能指标取得良好的平衡,这个是在很多之前的文章中没有讨论的。
Stratix10 NX FPGA与GPU的实际算力对比
通过上面介绍的这些优化,可以使得FPGA的张量单元可以被更加充分的调用起来。在这个研究里,FPGA平均可以用到芯片上30%的张量单元,而T4和V100 GPU只能用到1.5%和3%,这也直接导致了GPU的实际性能与峰值性能的巨大差距。
前面提到,很多GPU内部也集成了大量的张量单元,比如英伟达的V100里就集成了640个这种专门用来加速矩阵运算的单元。如果这些张量单元都被充分利用起来,那么GPU的算力就会非常的惊人,这也是GPU峰值性能这么高的原因。但是,由于GPU里的这些张量单元并不是直接相连的,每次运算的中间结果都要放到全局内存里,并且在各个张量单元之间进行同步,然后才能进行下一步计算,这就极大的增加了计算的延时,也降低了张量单元的利用率。比如在batch-256时,T4和V100 GPU的使用率只有13.3%和17.8%,batch-6时,二者的使用率只有1.5%和3%。
相比之下,FPGA里的张量单元之间是直接相连的,这就像工厂的流水线一样,前面一个步骤完成后可以立刻传递给下一个,而不需要经过全局内存和同步。例如在batch-6时,FPGA的NPU使用率就平均高达37.1%,是GPU的10倍多。
所以,这篇论文告诉我们的最重要的一点,就是作为AI加速芯片,不仅要有大量的张量单元或者AI加速引擎,还要尽可能的充分利用这些芯片上的资源,这样才能取得更高的实际性能。
肯定会有同学说为什么不比较英伟达的A100GPU呢,这篇文章也给出了解释,一个是在做实验的时候还没有拿到A100,另外一个更重要的原因是A100是基于台积电7纳米工艺制造的,和S10 FPGA不是同一代工艺,因此不好直接比较。不同节点的芯片之间进行任何对比,都应该进行归一化处理,这个在严谨的学术研究里是非常重要的,之前在介绍苹果M1芯片的时候就讨论过这个事情。
最后简单介绍下这篇论文的作者,他们来自英特尔的FPGA部门PSG,多伦多大学和卡耐基梅隆大学。最后三位作者都是FPGA领域的大佬,James Hoe是CMU教授和IEEE Fellow;Vaughn Betz是多伦多大学教授,也是著名的开源FPGA后端工具VPR的发明者;Martin Langhammer是英特尔的资深主任工程师(Senior Principle Engineer),有200多项美国专利,包含各种FPGA架构和微架构设计以及EDA工具的创新。
结语
本文通过对AI芯片“峰值算力”和“实际算力”的对比,揭示了提升AI芯片算力的两大原因。一个是对芯片架构进行一定的AI优化,比如添加大量张量单元(Tensor Core),另外更重要的是充分利用片上的张量单元,这样才能使“实际算力”在最大程度上接近“峰值算力”。
在此基础上,这项研究向我们展示了英特尔Stratix10 NX FPGA针对AI应用进行的架构创新,以及它在微软脑波项目里的具体应用,也让我们得以一窥这款“传说中”的FPGA的庐山一角。
(注:本文仅代表原作者个人观点,与老石任职单位无关。谨提供多元化的内容,供各位读者参考。)
本篇论文的原文以及老石的注释版本,已上传至知识星球“老石谈芯 – 进阶版”,请在文末扫码进入星球查看。
更多芯片技术解读和资料分享,并与老石一对一交流,欢迎加入知识星球:“老石谈芯-进阶版”,一个关乎技术与观点的互动社区