a&s专业的自动化&安全生态服务平台
公众号
安全自动化

安全自动化

安防知识网

安防知识网

手机站
手机站

手机站

大安防供需平台
大安防供需平台

大安防供需平台

资讯频道横幅A1
首页 > 资讯 > 正文

在数据中心部署FPGA和CPU协同工作成为趋势

资讯频道文章B

二、微软部署 FPGA 的实践

  2016 年 9 月,《连线》(Wired)杂志发表了一篇《微软把未来押注在 FPGA 上》的报道 [3],讲述了 Catapult 项目的前世今生。紧接着,Catapult 项目的老大 Doug Burger 在 Ignite 2016 大会上与微软 CEO Satya Nadella 一起做了 FPGA 加速机器翻译的演示。

  

 

  Ignite 2016 上的演示:每秒 1 Exa-op (10^18) 的机器翻译运算能力

  这里就给大家八一八这个每秒 1 Exa-op 的数字是怎么算出来的。每块生产环境中部署的 Stratix V FPGA 有 1.8 T ops 的计算能力,每台服务器上插一块 FPGA。实际使用时,每 8 台服务器为一组,一台服务器作为 FPGA 的控制节点。控制节点的 CPU 也可以做机器翻译的计算,但是每个 CPU 核只能做 0.1 T ops,相比 FPGA 是聊胜于无。非控制节点上的 FPGA 通过网络从其他 FPGA 收发数据,不需要本地 CPU 处理数据平面。

  截至演示时,微软 Azure 云有 46 万台服务器部署了 FPGA,必应有 1.5 万台,Exchange 服务有 9.5 万台,共计 57 万台。乘起来得到总的计算能力是 103 万 T ops,也就是 1.03 Exa-op,相当于 10 万块顶级 GPU 计算卡。一块 FPGA(加上板上内存和网络接口等)的功耗大约是 30 W,仅增加了整个服务器功耗的十分之一。

  A 并不是一帆风顺的。对于把 FPGA 部署在哪里这个问题,大致经历了三个阶段:

  专用的 FPGA 集群,里面插满了 FPGA

  每台机器一块 FPGA,采用专用网络连接

  每台机器一块 FPGA,放在网卡和交换机之间,共享服务器网络

  

 

  微软 FPGA 部署方式的三个阶段,来源:[3]

  第一个阶段是专用集群,里面插满了 FPGA 加速卡,就像是一个 FPGA 组成的超级计算机。下图是最早的 BFB 实验板,一块 PCIe 卡上放了 6 块 FPGA,每台 1U 服务器上又插了 4 块 PCIe 卡。

  

 

  最早的 BFB 实验板,上面放了 6 块 FPGA。来源:[1]

  只要规模足够大,对 FPGA 价格过高的担心将是不必要的。

  

 

  最早的 BFB 实验板,1U 服务器上插了 4 块 FPGA 卡。来源:[1]

  像超级计算机一样的部署方式,意味着有专门的一个机柜全是上图这种装了 24 块 FPGA 的服务器(下图左)。这种方式有几个问题:

  不同机器的 FPGA 之间无法通信,FPGA 所能处理问题的规模受限于单台服务器上 FPGA 的数量;

  数据中心里的其他机器要把任务集中发到这个机柜,构成了 in-cast,网络延迟很难做到稳定。

  FPGA 专用机柜构成了单点故障,只要它一坏,谁都别想加速了;

  装 FPGA 的服务器是定制的,冷却、运维都增加了麻烦。

  

 

  部署 FPGA 的三种方式,从中心化到分布式。来源:[1]

  一种不那么激进的方式是,在每个机柜一面部署一台装满 FPGA 的服务器(上图中)。这避免了上述问题 (2)(3),但 (1)(4) 仍然没有解决。

  第二个阶段,为了保证数据中心中服务器的同构性(这也是不用 ASIC 的一个重要原因),在每台服务器上插一块 FPGA(上图右),FPGA 之间通过专用网络连接。这也是微软在 ISCA'14 上所发表论文采用的部署方式。

  

 

  Open Compute Server 在机架中。来源:[1]

  

 

  Open Compute Server 内景。红框是放 FPGA 的位置。来源:[1]

  

 

  插入 FPGA 后的 Open Compute Server。来源:[1]

  

 

  FPGA 与 Open Compute Server 之间的连接与固定。来源:[1]

  FPGA采用Stratix V D5,有172K个ALM,2014个M20K片上内存,1590个 DSP。板上有一个8GB DDR3-1333内存,一个PCIe Gen3 x8接口,两个10 Gbps网络接口。一个机柜之间的FPGA采用专用网络连接,一组10G网口8个一组连成环,另一组10G网口6个一组连成环,不使用交换机。

  

 

  机柜中 FPGA 之间的网络连接方式。来源:[1]

  这样一个 1632 台服务器、1632 块 FPGA 的集群,把必应的搜索结果排序整体性能提高到了 2 倍(换言之,节省了一半的服务器)。如下图所示,每 8 块 FPGA 穿成一条链,中间用前面提到的 10 Gbps 专用网线来通信。这 8 块 FPGA 各司其职,有的负责从文档中提取特征(黄色),有的负责计算特征表达式(绿色),有的负责计算文档的得分(红色)。

  

 

  FPGA 加速必应的搜索排序过程。来源:[1]

  除了加速搜索结果的排序(RaaS,Ranking as a Service),FPGA 还被用来加速从倒排索引中取出相关文档并译码的过程(SaaS,Selection as a Service)。为了加快文档数据结构的访问,FPGA 把服务器主存里常用的 4K 内存页面缓存在 FPGA 板上的 DDR 上。

  

 

  FPGA 不仅降低了必应搜索的延迟,还显著提高了延迟的稳定性。来源:[4]

  

 

  本地和远程的 FPGA 均可以降低搜索延迟,远程 FPGA 的通信延迟相比搜索延迟可忽略。来源:[4]

  FPGA 在必应的部署取得了成功,Catapult 项目继续在公司内扩张。微软内部拥有最多服务器的,就是云计算 Azure 部门了。Azure 部门急需解决的问题是网络和存储虚拟化带来的开销。Azure 把虚拟机卖给客户,需要给虚拟机的网络提供防火墙、负载均衡、隧道、NAT 等网络功能。由于云存储的物理存储跟计算节点是分离的,需要把数据从存储节点通过网络搬运过来,还要进行压缩和加密。

  在 1 Gbps 网络和机械硬盘的时代,网络和存储虚拟化的 CPU 开销不值一提。随着网络和存储速度越来越快,网络上了 40 Gbps,一块 SSD 的吞吐量也能到 1 GB/s,CPU 渐渐变得力不从心了。例如 Hyper-V 虚拟交换机只能处理 25 Gbps 左右的流量,不能达到 40 Gbps 线速,当数据包较小时性能更差;AES-256 加密和 SHA-1 签名,每个 CPU 核只能处理 100 MB/s,只是一块 SSD 吞吐量的十分之一。

  

 

  网络隧道协议、防火墙处理 40 Gbps 需要的 CPU 核数。来源:[5]

  为了加速网络功能和存储虚拟化,微软把 FPGA 部署在网卡和交换机之间。如下图所示,每个 FPGA 有一个 4 GB DDR3-1333 DRAM,通过两个 PCIe Gen3 x8 接口连接到一个 CPU socket(物理上是 PCIe Gen3 x16 接口,因为 FPGA 没有 x16 的硬核,逻辑上当成两个 x8 的用)。物理网卡(NIC)就是普通的 40 Gbps 网卡,仅用于宿主机与网络之间的通信。

  

 

  Azure 服务器部署 FPGA 的架构。来源:[6]

  FPGA(SmartNIC)对每个虚拟机虚拟出一块网卡,虚拟机通过 SR-IOV 直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了 FPGA 里面,虚拟机收发网络数据包均不需要 CPU 参与,也不需要经过物理网卡(NIC)。这样不仅节约了可用于出售的 CPU 资源,还提高了虚拟机的网络性能(25 Gbps),把同数据中心虚拟机之间的网络延迟降低了 10 倍。

  

 

  网络虚拟化的加速架构。来源:[6]

  这就是微软部署 FPGA 的第三代架构,也是目前「每台服务器一块 FPGA」大规模部署所采用的架构。FPGA 复用主机网络的初心是加速网络和存储,更深远的影响则是把 FPGA 之间的网络连接扩展到了整个数据中心的规模,做成真正 cloud-scale 的「超级计算机」。第二代架构里面,FPGA 之间的网络连接局限于同一个机架以内,FPGA 之间专网互联的方式很难扩大规模,通过 CPU 来转发则开销太高。

  第三代架构中,FPGA 之间通过 LTL (Lightweight Transport Layer) 通信。同一机架内延迟在 3 微秒以内;8 微秒以内可达 1000 块 FPGA;20 微秒可达同一数据中心的所有 FPGA。第二代架构尽管 8 台机器以内的延迟更低,但只能通过网络访问 48 块 FPGA。为了支持大范围的 FPGA 间通信,第三代架构中的 LTL 还支持 PFC 流控协议和 DCQCN 拥塞控制协议。

  

 

  纵轴:LTL 的延迟,横轴:可达的 FPGA 数量。来源:[4]

  

 

  FPGA 内的逻辑模块关系,其中每个 Role 是用户逻辑(如 DNN 加速、网络功能加速、加密),外面的部分负责各个 Role 之间的通信及 Role 与外设之间的通信。来源:[4]

  

 

  FPGA 构成的数据中心加速平面,介于网络交换层(TOR、L1、L2)和传统服务器软件(CPU 上运行的软件)之间。来源:[4]

  通过高带宽、低延迟的网络互联的 FPGA 构成了介于网络交换层和传统服务器软件之间的数据中心加速平面。除了每台提供云服务的服务器都需要的网络和存储虚拟化加速,FPGA 上的剩余资源还可以用来加速必应搜索、深度神经网络(DNN)等计算任务。

  对很多类型的应用,随着分布式 FPGA 加速器的规模扩大,其性能提升是超线性的。例如 CNN inference,当只用一块 FPGA 的时候,由于片上内存不足以放下整个模型,需要不断访问 DRAM 中的模型权重,性能瓶颈在 DRAM;如果 FPGA 的数量足够多,每块 FPGA 负责模型中的一层或者一层中的若干个特征,使得模型权重完全载入片上内存,就消除了 DRAM 的性能瓶颈,完全发挥出 FPGA 计算单元的性能。当然,拆得过细也会导致通信开销的增加。把任务拆分到分布式 FPGA 集群的关键在于平衡计算和通信。

  

 

  从神经网络模型到 HaaS 上的 FPGA。利用模型内的并行性,模型的不同层、不同特征映射到不同 FPGA。来源:[4]

  在 MICRO'16 会议上,微软提出了 Hardware as a Service (HaaS)的概念,即把硬件作为一种可调度的云服务,使得 FPGA 服务的集中调度、管理和大规模部署成为可能。

  

 

  Hardware as a Service (HaaS)。来源:[4]

  从第一代装满 FPGA 的专用服务器集群,到第二代通过专网连接的 FPGA 加速卡集群,到目前复用数据中心网络的大规模 FPGA 云,三个思想指导我们的路线:

  硬件和软件不是相互取代的关系,而是合作的关系;

  必须具备灵活性,即用软件定义的能力;

  必须具备可扩放性(scalability)。

  

参与评论
回复:
0/300
文明上网理性发言,评论区仅供其表达个人看法,并不表明a&s观点。
0
关于我们

a&s是国际知名展览公司——德国法兰克福展览集团旗下专业的自动化&安全生态服务平台,为智慧安防、智慧生活、智能交通、智能建筑、IT通讯&网络等从业者提供市场分析、技术资讯、方案评估、行业预测等,为读者搭建专业的行业交流平台。

免责声明:本站所使用的字体和图片文字等素材部分来源于互联网共享平台。如使用任何字体和图片文字有冒犯其版权所有方的,皆为无意。如您是字体厂商、图片文字厂商等版权方,且不允许本站使用您的字体和图片文字等素材,请联系我们,本站核实后将立即删除!任何版权方从未通知联系本站管理者停止使用,并索要赔偿或上诉法院的,均视为新型网络碰瓷及敲诈勒索,将不予任何的法律和经济赔偿!敬请谅解!
© 2020 Messe Frankfurt (Shenzhen) Co., Ltd, All rights reserved.
法兰克福展览(深圳)有限公司版权所有 粤ICP备12072668号 粤公网安备 44030402000264号
用户
反馈