本篇文章3960字,读完约10分钟

雷锋。(公开号码:雷锋。出版社:星光大道,作者:唐珊,雷锋翻印。com。

在人工智能普及之前,云或数据中心已经开始使用fpga进行各种加速。随着深度学习的爆发,这种需求越来越强烈。本文主要讨论云计算巨头亚马逊和微软的fpga策略。

智慧云中的FPGA

在微软构建2017大会上,微软azure云计算平台首席技术官Mark Russinovich做了一个题为“在微软基于fpga的可配置云内部”的演讲,介绍了FPGA在azure平台中的应用(你可以点击文章末尾阅读原文观看视频);此外,亚马逊ec2f1instances网站上有一个网络研讨会视频,介绍aws的fpga服务。本文将讨论这两个讲座,以下分别称为ms和aws。

智慧云中的FPGA

智能云对数据处理的需求

从需求层面来看,云智能对数据处理有更高的要求,这体现在巨大的规模、低延迟和高吞吐率上。从这些角度来看,fpga有其独特的优势。

aws计划在云中部署fpga的应用主要包括:实时视频处理、金融分析、基因组研究、大数据搜索和分析以及安全性。虽然这里没有特别提到人工智能和深度学习,但这些应用实际上与人工智能技术有关。他们希望实现以下目标:

智慧云中的FPGA

fpga的背景知识被称为“现场可编程门阵列”。其基本原理是在芯片中集成大量数字电路的基本门、存储器和互连资源。用户可以通过“编程”fpga(烧录配置文件)来定义这些门的功能和模块之间的连接。这种“编程”不是一次性的。你可以把fpga设计成一个编解码器,它可以通过改变配置文件成为一个中央处理器。这也是所谓的可重新配置概念。当然,fpga不仅为我们提供了随意实现硬件电路的灵活性,也要求设计人员具备硬件设计的知识和能力。这与cpu和gpu的软件编程方法有很大的不同,或者有较高的应用门槛。

智慧云中的FPGA

目前,主要的fpga芯片制造商是xilinx和英特尔(altera),aws主要使用xilinx fpga,ms使用英特尔fpga。在看fpga的内部结构之前,我们还是通过比较来看它的特性。

智慧云中的FPGA

事实上,正如我在上一篇文章中提到的,最近有很多这样的比较。Ms从灵活性和效率的角度比较了cpu、gpu、fpga和asic,这也是我们经常使用的方法。同样,灵活性(普遍性)必然意味着效率的损失,反之亦然。

智慧云中的FPGA

此外,从ms的图表中可以看出,他们认为fpga主要用于评估(或我们常说的推理)。有趣的是,他们认为asic方案在培训和评估方面仍处于“调查之中”,这似乎已经忘记了谷歌的tpu。

智慧云中的FPGA

Aws从另一个角度进行了比较。为了实现最大的灵活性和多功能性,芯片中很大一部分芯片面积用于提供控制功能(包括高速缓存等复杂的存储架构);在gpu中,用于运算的芯片面积比例大大增加,可以支持大规模并行处理;但是说到fpga,没有预先定义的指令集概念,也没有明确的数据位宽。你可以根据你的应用来设计这些。你可以设计一个只支持几条指令的处理器;也可以只设计数据通道和简单的控制逻辑,而不需要任何指令。

智慧云中的FPGA

下图来自微软的讲座,比较了cpu和fpga的数据处理特性。

Cpu可以看作是一个时间计算模型,其中指令按顺序进入,每条指令处理一定的数据。Fpga可以看作是空之间的计算模型,可以并行处理大量数据。深度学习处理,如cnn卷积运算,就是一个非常适合于空.之间的计算模型的例子这一点在前面的文章“深度神经网络的模型和硬件联合优化”中已经介绍过。让我们具体看看fpga的内部结构。

智慧云中的FPGA

现场可编程门阵列的内部结构现场可编程门阵列中的几个重要基本模块包括(根据xilinx):

Clb(可配置逻辑块):FPGA最基本的部件,可以实现基本的组合逻辑和时序电路。其中,lut(查找表)是实现组合逻辑的部分,它可以用N个输入实现任意组合逻辑运算(不同的fpga不同,下面的例子中有6个输入)。在clb的输出位置,还有一个提供时序电路功能的寄存器。

智慧云中的FPGA

Dsp片:它是一个比clb粒度粗的运算单元,直接实现乘法、累加等功能。它类似于我们在dsp处理器中使用的mac单元,如下图所示:

此外,fpga还提供片内存储模块(块ram、ultraram)、各种高速接口、ip和许多辅助电路。根据不同的应用需求,有些类型的fpga也是soc,并且还集成了处理器内核(如arm),甚至视频编解码等功能。

智慧云中的FPGA

下表列出了xilinx virtex ultrascale+ fpga系列的具体参数。稍后将介绍的aws f1实例使用vu9p。

这里,通过观察clb触发器、clb lut和dsp片的数量以及存储器的数量,我们可以基本上了解fpga的规模,即在这个fpga上可以实现多大的数字电路。

首先,作为加速功能,fpga需要与主机cpu一起工作。例如,在下图中,一个应用程序有一个过滤功能,这需要很多操作,更适合fpga处理;其他主要与控制有关的功能,都放在cpu上运行。

智慧云中的FPGA

由于fpga应用通常需要支持大数据吞吐量,因此需要高内存带宽和i/o互连带宽。如果数据传输的带宽有限,fpga提供的巨大并行计算能力将根本不起作用。在云中部署fpga的另一个重要挑战是如何将fpga的计算能力集成到云中的大规模灵活计算架构中。

智慧云中的FPGA

让我们分别看看ms和aws的fpga部署。值得注意的是,目前微软azure中的fpga主要用于内部,而不是作为公共服务;Aws已经为ec2 f1实例提供了fpga服务。

让我们先来看看Ms弹射器v2架构,如下所示:

在弹射器v2板上,有一个altera stratix fpga和本地dram,该卡有三个外部连接接口,一个pcie和两个qsfp。在这种架构中,fpga和wcs服务器刀片之间的连接非常灵活,并且还支持较高的吞吐速率。fpga可以支持网络应用(从网卡到交换机的通道)、存储应用(从cpu到交换机的通道)和计算应用(cpu和fpga)的加速。如下图所示,这种体系结构也是高度可扩展的。

智慧云中的FPGA

连接在一起的fpga可以形成一个独立的操作层。许多fpga可以组合实现不同的加速功能,如深度神经网络、网络搜索排名、sql、sdn卸载等。

ms还提出了硬件微服务的概念:“一种只包含硬件的独立服务,可以在整个数据中心计算结构中进行分布和访问。”使用这种微服务的优势如下:

一般来说,更有效地共享和利用fpga资源有更大的灵活性。对于dnn应用,ms还提出了一种特殊的体系结构。首先,在fpga上提供dnn引擎,包括神经fu(数据通道)和指令解码与控制(控制平面功能)。多个fpga可以作为大规模硬件微服务部署,实现分布式处理。

智慧云中的FPGA

因此,微软正在开发一套“编译”工具,可以自动将在通用深度学习框架中训练的模型部署到一个或多个fpga(包括gpu和cpu)。

然而,这些看似不错的设计和功能还不能使用,只能在ms准备好公开发布时使用。因此,mark russinovich最后说,“我们期待着今晚向你们展示这一点,这是用FPGA的力量实现人工智能民主化的重要一步。”我希望这一次不会太远。

智慧云中的FPGA

例如,Aws的fpga云服务离我们更近。其规格如下图所示:

其中,f1.16xlarge由8个fpga组成,配合64个vcpus,接近1t内存,规模相当大。其中每个fpga与4个DDR相连。fpga之间有两种互连方式,第一种是Fpga链路,它是一种双向环形连接,用于支持与多个Fpga串联的流媒体应用;另一种是直接fpga,这是一种点对点pcie链路,可以从一个fpga连接到任何其他fpga。此外,为了简化fpga i/o的设计,aws还提出了fpga外壳的概念。如下图所示:

智慧云中的FPGA

我在这里看不太清楚贝壳的概念。我觉得fpga的i/o是封装的。fpga内部逻辑通过axi4接口与外壳相连,外壳提供外部pcie和ddr接口。现场可编程门阵列链接和上面提到的其他三个ddr接口似乎仍在核心逻辑中。如果我看错了,请纠正我。

智慧云中的FPGA

aws f1使用的开发流程和工具如下图所示:

这个过程类似于我们常见的fpga开发过程。然而,我们仍然需要使用FPGA Developer AMI(AWS提供的工具映像)和硬件开发工具包(hdk),最后我们需要生成亚马逊的FPGA映像(afi)。fpga设计和实现工具使用xilinx自己的工具vivado。

智慧云中的FPGA

目前,aws似乎没有提供专门用于深度学习推理的工具和硬件架构(如前面ms提到的dnn引擎和相应的软件工具)。因此,做相关工作的学生必须设计自己的软件和硬件系统。

智慧云中的FPGA

阿里巴巴云和腾讯云最后,让我们看看国内玩家。目前,阿里巴巴云和腾讯云也推出了fpga服务,但都在申请试运行阶段。其中,阿里巴巴云的f1例子明确介绍了规格和工具链:

智慧云中的FPGA

Fpga计算实例规范家族(f1)

规格系列的特征:

采用英特尔阿里亚10 gx 1150计算卡

中央处理器与内存的比例是1:7.5

处理器:英特尔至强e5-2682 v4 (broadwell),2.5 ghz

高性能本地固态硬盘存储

示例网络性能对应于计算规格(规格越高,网络性能越强)

适用场景:

1.适用于深度学习推理

2.基因组研究和金融分析

3.计算工作负载,如视频处理和安全性

它的工具链使用altera fpga自己的工具,方法类似于aws。腾讯云的公共信息比较少,所以这里就不讨论了。

摘要:

本文简要分析了亚马逊和微软利用fpga在云中加速的实现方法。与谷歌为深度学习设计的tpu(asic)相比,fpga在灵活性上有其自身的优势,尽管在效率上有差距。无论是在aws还是azure中,fpga都可以广泛应用于不同的加速任务。如果我们能配合一个更好的开发环境,形成一个完整的生态,我相信它在未来的云中会有更大的发展。

智慧云中的FPGA

雷锋的特别贡献。严禁擅自转载。详情请参考转载说明。

标题:智慧云中的FPGA

地址:http://www.hcsbodzyz.com/hcxw/4917.html