微软实时AI系统“脑波计划”有多牛?看完秒懂!

2017-08-26

“全球人工智能”拥有十多万AI产业用户,核心用户来自:北大,清华,中科院,麻省理工,卡内基梅隆,斯坦福,哈佛,牛津,剑桥......以及谷歌,腾讯,百度,脸谱,微软,阿里,海康威视,英伟达......等全球名校和名企。

在 Hot Chips 2017 上,微软推出了一个新的深度学习加速平台,代号为脑波计划(Project Brainwave):在深度学习模型云服务方面实现了性能与灵活性的巨大提升,专为实时人工智能设计了该系统,它可以超低延迟地处理接收到的请求;也可以处理实时数据流,如搜索查询、视频、传感器流,或者与用户的交互!

FPGA 对深度学习的训练和应用变得越来越重要主要表现在:

  1. 性能方面:低批量大小上的优秀推理性能、在现代 DNN 上服务的超低延迟、>10X 且比 CPU 和 GPU 更低、在单一 DNN 服务中扩展到很多 FPGA。

  2. 灵活性方面:FPGA 十分适合适应快速发展的 ML、CNN、LSTM、MLP、强化学习、特征提取、决策树等、推理优化的数值精度、利用稀疏性、更大更快模型的深度压缩。

  3. 规模方面:微软在 FPGA 上拥有全球最大的云计算投资、AI 总体能力的多实例操作、脑波计划运行在微软的规模基础设施上。

脑波计划:一个可扩展的、支持 FPGA 的 DNN 服务平台的三大特性:

  1. 快速性:小批量 DNN 模型有超低延迟、高吞吐量服务

  2. 灵活性:适应性数值精度与自定义运算符

  3. 友好性:CNTK/Caffe/TF/等的交钥匙(turnkey)部署

脑波计划

脑波计划系统的三个层面:

  1. 一个高性能的分布式系统架构;

  2. 一个集成在 FPGA 的硬件 DNN 引擎;

  3. 一个用于已训练模型的低摩擦(low-friction)部署的编译器和运行时间。

第一,脑波计划利用了微软这些年部署的大量 FPGA 基础架构。通过把高性能 FPGA 直接连接到数据中心网络,可以把 DNN 作为硬件微服务,其中 DNN 可以映射到一个远程 FPGA 池,并可被循环中没有软件的服务器调用。这个系统架构不仅可以降低延迟(因为 CPU 并不需要处理传入的请求),还可以获得非常高的吞吐量, FPGA 处理请求可以如网络的流式传输一样快。

第二,脑波计划使用了一个强大的可商业化的 FPGA 上合成的软DNN 处理单元。大量的公司正在构造硬化的 DPU。尽管其中一些芯片具有高峰值性能,但它们必须在设计时选择运算符和数据类型,这限制了其灵活性。脑波计划采取了另一种方法,提供了一个可在一系列数据类型上缩放的设计。这个设计结合了 FPGA 上的 ASIC 数字信号处理模块和可合成的逻辑,以提供一个更大更优化数量的功能单元。这一方法通过两种方式利用了 FPGA 的灵活性。首先,已经定义了高度自定义、窄精度(narrow-precision)的数据类型,无需损失模型精度即可提升性能。其次,可以把研究创新快速整合进硬件平台(通常需要数周时间),这对于快速移动的空间中至关重要。因此,我们取得了可媲美于甚至超过很多硬编码(hard-coded)DPU 芯片的性能,兑现了性能方面的承诺。

脑波软 DPU 架构

核心特征

  1. 单线程 C 编程模型(没有 RTL)

  2. 具有专门指令的 ISA:密集矩阵乘法、卷积、非线性激励值、向量操作、嵌入

  3. 独有的可参数化的窄精度格式,包含在 float16 接口中

  4. 可参数化的微架构,并且扩展到大型 FPGA(~1M ALMs)

  5. 硬件微服务完全整合(附设网络)

  6. 用于 CPU 主机和 FPGA 的 P2P 协议

  7. 易于扩展带有自定义运算符的 ISA

矩阵向量单元

主要特点

  1. 优化以适用于批量为 1 的矩阵向量乘法

  2. 矩阵逐行分布在 BRAM 的 1K-10K 个内存块上,最高 20 TB/s

  3. 可扩展以使用芯片上所有可用的 BRAM、DSP 和软逻辑(soft logic)

  4. 将 float 16 权重和激活值原位转换成内部格式

  5. 将密集的点积单元高效映射到软逻辑和 DSP

第三,脑波计划纳入了一款支持多个流行深度学习框架的软件栈。目前已经支持微软 Cognitive Toolkit 和谷歌的 Tensorflow,未来会支持其他框架。定义了一个基于图的中间表示(intermediate representation),先在流行框架中训练的模型转换成中间表示,然后再将其编译成我们的高性能基础架构。

  1. 编译器 & 运行模式:框架中立的联合编译器和运行时,用于将预训练的 DNN 模型编译至软 DPU

  2. 架构:自适应 ISA,用于窄精度 DNN 接口;灵活、可扩展,可支持快速变化的人工智能算法

  3. 微架构:BrainWave Soft DPU 微架构;高度优化,适用于窄精度和小批量

  4. 扩展一致性:在 FPGA 芯片内存中一致的模型参数;可在多个 FPGA 中扩展以支持大模型

  5. 英特尔 FPGA 上的 HW 微服务:英特尔 FPGA 大规模部署,带有硬件微服务 [MICRO'16]

脑波编译器和运行时

该系统已展示其在多个复杂模型中的高性能,同时无须执行批处理。公司和研究人员构建 DNN 加速器通常使用卷积神经网络(CNN)展示性能 demo。CNN 是计算密集型,因此它取得高性能相对比较简单,但那些结果通常无法代表其他域的更复杂模型上的性能,如自然语言处理中的 LSTM 或 GRU。DNN 加速器经常用来提升性能的另一项技术是用高度批处理运行深度神经网络。尽管该技术对基于吞吐量的架构和训练等离线场景有效,但它对实时人工智能的效果没有那么好。使用大批量,一个批次中的第一个查询必须等待该批次中的其他查询完成。我们的系统适用于实时人工智能,无须使用批处理来降低吞吐量,即可处理复杂、内存密集型的模型,如 LSTM。

即使在早期 Stratix 10 silicon 中,移植的 Brainwave 系统可运行大型 GRU 模型,它们可能比不使用批处理的 ResNet-50 还要大 5 倍,同时该系统也实现了最高的性能。演示使用的是微软定制的 8 位浮点格式(「ms-fp8」),它在很多模型中都不会遭受到平均准确度损失。展示了 Stratix 10 在大型 GRU 模型中保持了 39.5 Teraflops,并且每一个请求的运行时间都在毫秒级。性能方面,脑波架构每一个周期保持了超过 130000 个计算操作,并且由每 10 个周期发布的宏指令驱动。脑波在 Stratix 10 上运行,实现了实时 AI 的强大性能,特别是在非常具有挑战性的模型上。未来,我们将继续优化该系统,希望实现显著的性能提高。

传统的加速方法:Local Offload and Streaming

通过批处理提升硬件效用

FPGA 上的窄精度接口

总结:我们把这种强大的实时 AI 系统介绍给 Azure 平台的用户。这样,用户就能从脑波计划中直接获益,并间接补充了访问我们的服务的路径,如 Bing。未来,我们将具体说明 Azure 用户可以怎样使用该平台运行他们复杂的深度学习模型,并达到创纪录的性能。因为脑波计划系统是大规模集成系统并对我们用户是可用的,所以 Microsoft Azure 在实时人工智能上有行业领先的性能。

原文:https://www.microsoft.com/en-us/research/blog/microsoft-unveils-project-brainwave/