脑波项目:源起
微软在数据中心里大规模部署和应用 FPGA 的最初实践,来自于他的“Catapult 项目”。这个项目的主要成就,是搭建了一个基于 FPGA 的数据中心硬件加速平台,包括各种必要的软硬件基础设施。通过三个阶段的发展,Catapult 已经成功的帮助微软在其遍布全球的云数据中心里部署了成千上万的 FPGA 加速资源。
从 2015 年末开始,微软就在其购买的几乎每台新服务器上部署 Catapult FPGA 板卡。这些服务器被用于微软的必应搜索、Azure 云服务以及其他应用。这也使得微软成为了世界上最大的 FPGA 客户之一。
Catapult FPGA 加速卡及服务器
更重要的是,Catapult 项目通过深入的学术研究和工程实践,为微软积累了丰富的 FPGA 开发、部署、运维的相关经验和人才。在人工智能快速发展的今天,使用 Catapult 平台进行 AI 应用的 FPGA 加速,就成了合理自然的下一步。这便是微软“脑波项目(Project Brainwave)”的源起。
Catapult 团队
FPGA 如何解决实时 AI 的两大痛点
与现有的其他 FPGA 云平台相比,Catapult 平台的最主要特点就是构建了一个遍布全球的 FPGA 资源池,并能对资源池中的 FPGA 硬件资源进行灵活的分配和使用。相比其他方案,这种对 FPGA 的池化有着巨大的优势。
首先,FPGA 池化打破了 CPU 和 FPGA 的界限。在传统的 FPGA 使用模型中,FPGA 往往作为硬件加速单元,用于卸载和加速原本在 CPU 上实现的软件功能,因此与 CPU 紧耦合,严重依赖于 CPU 的管理,同时与 CPU 泾渭分明。
在 Catapult 平台里,FPGA 一跃成为“一等公民”,不再完全受限于 CPU 的管理。如下图右所示,在 Catapult 加速卡中,FPGA 直接与数据中心网络的 TOR 交换机相连,而不需要通过 CPU 和网卡的转发,这使得同一数据中心、甚至不同数据中心里的 FPGA 可以直接通过高速网络互连和通信,从而构成 FPGA 资源池。管理软件可以直接对 FPGA 资源进行划分,而无需通过与资源池中每个 FPGA 互连的 CPU 完成,从而实现了 FPGA 与 CPU 的有效解耦。
与 CPU 平行的 FPGA 资源池
第二,FPGA 池化打破了单一 FPGA 的资源界限。从逻辑层面上看,Catapult 的数据中心池化 FPGA 架构相当于在传统的基于 CPU 的计算层之上,增加了一层平行的 FPGA 计算资源,并可以独立的实现多种服务与应用的计算加速,如上图左所示。在微软当前的数据中心里,池化 FPGA 的数量级以十万记,而这些 FPGA 的通信延时只有大约十微秒左右。
对于人工智能应用,特别是基于深度学习的应用来说,很多应用场景对实时性有着严格的要求,例如搜索、语音识别等等。同时对于微软来说,它有着很多富文本的 AI 应用场景,例如网络搜索、语音到文本的转换、翻译与问答等。与传统 CNN 相比,这些富文本应用和模型对内存带宽有着更加严苛的需求。
如果结合“低延时”和“高带宽”这两点需求,传统的深度学习模型和硬件的通常解决方法是对神经网络进行剪枝和压缩,从而减少模型的大小,直到满足 NPU 芯片有限的硬件资源为止。然而,这种方法最主要的问题就是会对模型的精度和质量造成不可避免的损失,而且这些损失往往是不可修复的。
与之相比,Catapult 平台里的 FPGA 资源可以看成是“无限”的,因此可以将一个大的 DNN 模型分解成若干小部分,每个小部分可以完整映射到单个 FPGA 上实现,然后各部分再通过高速数据中心网络互连。这样不仅保证了低延时与高带宽的性能要求,也保持了模型的完整性,不会造成精度和质量损失。
脑波项目:系统架构
脑波项目的主要目标,是利用 Catapult 的大规模 FPGA 基础设施,为没有硬件设计经验的用户提供深度神经网络的自动部署和硬件加速,同时满足系统和模型的实时性和低成本的要求。
为了实现这个目标,脑波项目提出了一个完整的软硬件解决方案,主要包含以下三点:
对已训练的 DNN 模型根据资源和需求进行自动区域划分的工具链;
对划分好的子模型进行 FPGA 和 CPU 映射的系统架构;
在 FPGA 上实现并优化的 NPU 软核和指令集。
下图展示了使用脑波项目进行 DNN 加速的完整流程。对于一个训练好的 DNN 模型,工具会首先将其表示为计算流图的形式,称为这个模型的“中间表示”(Intermediate Representation - IR)。
脑波项目 DNN 加速的完整流程
其中,图的节点表示张量运算,如矩阵乘法等,而连接节点的边表示不同运算之间的数据流,如下图所示。
IR 表示完成后,工具会继续将整张大图分解成若干小图,使得每个小图都可以完整映射到单个 FPGA 上实现。对于模型中可能存在的不适合在 FPGA 上实现的运算和操作,则可以映射到与 FPGA 相连的 CPU 上实现。这样就实现了基于 Catapult 架构的 DNN 异构加速系统。
在 FPGA 上进行具体的逻辑实现时,为了解决前文提到的“低延时”与“高带宽”两个关键性需求,脑波项目采用了两种主要的技术措施。
在脑波项目所使用的英特尔 Stratix 10 FPGA 上,有着 11721 个 512x40b 的 SRAM 模块,相当于 30MB 的片上内存容量,以及在 600MHz 运行频率下 35Tbps 的等效带宽。这 30MB 片上内存对于 DNN 应用是完全不够的,但正是基于 Catapult 的超大规模 FPGA 的低延时互联,才使得在单一 FPGA 上十分有限的片上 RAM 能够组成看似“无限”的资源池,并极大的突破了困扰 DNN 加速应用已久的内存带宽限制。
第二,脑波项目采用了自定义的窄精度数据位宽。这个其实也是 DNN 加速领域的常见方法。项目提出了 8~9 位的浮点数表达方式,称为 ms-fp8 和 ms-fp9。与相同精度的定点数表达方式相比,这种表达需要的逻辑资源数量大致相同,但能够表达更广的动态范围和更高的精度。
与传统的 32 位浮点数相比,使用 8~9 位浮点表示的精度损失很小,如下图所示。值得注意的是,通过对模型的重新训练,就可以补偿这种方法带来的精度损失。
脑波项目的核心单元,是一款在 FPGA 上实现的软核 NPU,及其对应的 NPU 指令集。这个软核 NPU 实质上是在高性能与高灵活性之间的一种折中。从宏观上看,DNN 的硬件实现可以使用诸如 CPU、GPU、FPGA 或者 ASIC 等多种方式实现。在前文中讲过,CPU 有着最高的灵活性,但性能不尽如人意;ASIC 方案与之相反。而 FPGA 能够在性能和灵活性之间达到良好的平衡。
从微观上看,FPGA 方案本身对于 DNN 的实现,既可以使用编写底层 RTL 的方式,对特定的网络结构进行针对性的优化;也可以采用高层次综合(HLS)的方法,通过高层语言对网络结构进行快速描述。
但是,前者需要丰富的 FPGA 硬件设计与开发经验,并伴随着很长的开发周期;而后者由于开发工具等限制,最终得到的硬件系统在性能上往往很难满足设计要求。
因此,微软采用了软核 NPU 与特定指令集的方式。这种方法一方面兼顾了性能,使硬件工程师可以对 NPU 的架构和实现方式进行进一步优化,另一方面兼顾了灵活性,使软件工程师可以通过指令集对 DNN 算法进行快速描述。
脑波 NPU 的架构图如下所示,NPU 的核心是一个进行矩阵向量乘的算术单元 MVU。它针对 FPGA 的底层硬件结构进行了深度优化,并采用了上文提到的“片上内存”和“低精度”的方法进一步提高系统性能。
NPU 的最主要特点之一是采用了“超级 SIMD”的指令集架构,这与 GPU 的 SIMD 指令集类似,但是 NPU 的一条指令可以生成超过一百万个运算,等效于在英特尔 Stratix 10 FPGA 上实现每个时钟周期 13 万次运算。
脑波项目:性能提升
脑波 NPU 在不同 FPGA 上的峰值性能如下图所示,当使用 ms-fp8 精度时,脑波 NPU 在 Stratix 10 FPGA 上可以得到 90 TFLOPS 的峰值性能,这一数据也可以和现有的高端 NPU 芯片方案相媲美。
脑波项目还对微软的必应搜索中的 Turing Prototype(TP1)和 DeepScan 两个 DNN 模型进行了加速试验。由于必应搜索的严格实时性要求,如果使用 CPU 实现这两种 DNN 模型,势必要对参数和运输量进行大规模削减,从而严重影响结果精度。相比之下,脑波方案可以实现超过十倍的模型规模,同时得到超过十倍的延时缩减。
在 Stratix 10 FPGA 的测试版产品上,当运行在 300MHz 的频率时可以得到的等效算力和峰值算力分别为 39.5 TFLOPS 和 48 TFLOPS。预计在量产版的 Stratix 10 上,稳定运行频率将达到 550MHz,从而再带来 83%的性能提升,以期达到将近 90 TFLOPS。同时,Stratix 10 FPGA 的满载功耗约为 125W,这意味着脑波项目可以达到 720 GOPs/watt 的峰值吞吐量。
结语
脑波项目充分利用了微软遍布全球数据中心的 FPGA 基础架构,使用 FPGA 解决了 AI 应用中“低延时”和“高带宽”两大痛点,并成功构建了基于软核 NPU 和自定义指令集的实时 AI 系统。
脑波项目的成功实践,再一次为业界使用 FPGA 作为 AI 加速器提供了崭新的思路和借鉴。老石相信,在人工智能时代,FPGA 必将在更多应用领域得到更加广泛的使用。
阅读全文
版权声明:与非网经原作者授权转载,版权属于原作者。文章观点仅代表作者本人,不代表与非网立场。文章及其配图仅供工程师学习之用,如有侵权或者其他问题,请联系本站作侵删。
侵权投诉
人工客服
(售后/吐槽/合作/交友)
人工客服(售后/吐槽/合作/交友)
23