18lickc新利
的意见

为多个云用户虚拟化fpga

一个框架,让节点级FPGA虚拟化性能隔离,深度学习加速应用程序的可伸缩性和灵活性。

受欢迎程度

云计算已经成为新的计算模式。对于云计算,虚拟化是必要的,使隔离用户,高灵活性和可扩展性,高安全,硬件资源的最大化利用。

自2017年以来,由于编程的优点,低延迟,和高能源效率、FPGA已经广泛采用为云计算。亚马逊网络服务,阿里巴巴(阿里云),微软Azure,华为云,等都提供Xilinx FPGA在云实例。然而,FPGA实例在云仍然是物理实例,目的是为单一任务和static-workload场景中,这意味着如果有多个用户,他们只能共享一个FPGA实例时分多路复用(TDM)的方式。有一个虚拟化的FPGA需求量增大。

清华大学教授的研究小组于王,多年来一直致力于FPGA虚拟化,最近提出了一个框架,使节点级FPGA为深度学习加速应用程序虚拟化。多个用户的性能隔离是通过一个两级指令调度模块(IDM)和multi-core-based硬件资源池。在线上重新编译的开销减少到约1毫秒tiling-based指令框架包装设计和采用两级动编译。款加速器的基线设计基于Angel-Eye基线设计,一款加速FPGA王教授的研究小组于2017年出版。

本文提出了在28thFCCM,总理在可编程计算地区学术会议。还提供了一个演示为那些想要试一试:https://github.com/annoysss123/FPGA-Virt-Exp-on-Aliyun-f3

总体介绍

如图1所示(一个),一个FPGA实例提供云通常是有很多资源,比如Xilinx VU9P,可以支持大量用户。公共云,有两种典型的用户之间隔离方法:物理资源和性能隔离。物理资源隔离为不同的用户分配不同的硬件资源,而性能隔离意味着性能提供给每个用户都不会被其他用户执行多个任务。私有云、虚拟化旨在最大化总体系统性能。

在本研究中,两个基线设计用于比较两个不同的配置:一个静态单一大型核心设计,支持多个用户使用时分多路复用(TDM)和一个静态的多核设计16小核心支持一个用户的一个核心。虚拟化设计也16小核心但使用空分多路复用动态(SDM)来支持多个任务。


图1:虚拟化方法ISA-based款加速器在FPGA上:(a)为公共云硬件架构;私有云(b)两级编译器设计。

如图1所示(b),提出了一种两级编译流来减少网络开销上重新编译。基本思想是将瓷砖的输出特性映射到块和有一个指令帧包(奖学金)为每个瓷砖一系列指令。离线部署期间,ifp来说生成基于模型和硬件配置基本款共享单位(小核)。在网络部署阶段,我们只需要重新分配预先生成的每个核心基于ifp来说重新分配硬件资源为新用户。提出一个简单的延迟模拟器,这样我们可以预测每个奖学金项目的延迟,实现工作负载平衡在所有分配的核心。


图2:硬件架构的提出虚拟FPGA款加速器。

硬件和编译器设计

实现虚拟化,如图2所示,款加速器的硬件架构不同于传统款加速器。首先,如图2所示(一个)加速器采用了硬件资源池(合)与多核小,专门分配给不同的用户。除此之外,与最初的指令分配模块(IDM),它只用于实现指令分发和依赖关系管理在一个核心,两级IDM旨在实现多核共享和同步,如图2所示(b)。

第一级IDM有4个模块,包括指令分配信息。、指令译码器、Content-Switch控制器和多核同步。控制器。指令分配信息。获取指示DDR,直到下一次重新配置缓存。指令解码器解码,将指令发送给相应的二级IDM核心根据每条指令的核心指标。Content-Switch控制器记录的索引层,款已经执行,以便其他内核可以继续计算中间结果。多核同步。控制器经理layer-wise多核同步。

第二个层次IDM管理每个核心内的计算。上下文切换模块可以重新启动计算基于上下文信息记录的第一级IDM在线重构阶段。系统同步控制器生成本地同步信号的计算当前款层完成,然后等待一个有效的全球同步信号下一层开始。


图3:虚拟化FPGA款加速器的编译流程,包括静态编译(左)和动态编译(右)。

瓷砖是一个重要的概念在设计款加速器实现大规模并行性和重用的数据分区特性映射到瓷砖。我们可以实现不同维度之间的瓷砖,如特征图的高度和宽度。然而,由于编译器生成卷积沿高度尺寸,说明特征地图宽度和输出通道选择尺寸的瓷砖尺寸生成ifp来说。

左边的图3显示了如何得到延迟的结果为每个奖学金项目使用不同的瓷砖尺寸。每个瓷砖瓷砖后,指令是集成到一个奖学金项目,然后一个周期级别延迟模拟器预测每个奖学金项目的延迟(T_1 T_N或T_M)。在动态编译阶段,动态编译器获取的延迟预测和发现多核共享最小化的最优分配策略的总延迟层款。

实验结果

评估这个虚拟化设计的性能,研究小组使用Xilinx Alveo U200, Xilinx VU9P FPGA在阿里巴巴(阿里云)和nVidia Tesla GPU V100运行4款著名模型比较,包括《盗梦空间》v3, VGG16, MobileNet, ResNet50 Xilinx SDAccel 2018.3用于硬件合成和软件部署。硬件资源利用率结果如表1所示。虚拟多核设计,逻辑多了1%和内存资源使用与静态多核设计相比,由于二级IDM成本一点更多的资源。多核设计消耗几乎两倍的资源与单一大型核心设计因为很多模块数据发将复制为每个小核心的多核设计。

首先,上下文切换的成本与不同数量的重新分配核心评估。如表2所示。静态编译需要14.7 - -46.8年代生成离线部署期间ifp来说,而动态编译成本只有0.4 - -1.5 ms。总在线重组开销限制在0.45 - -1.70女士考虑转移指令文件的时间。而非虚拟设计需要几十秒重新编译整个款模型、虚拟设计的在线重组开销可以忽略不计。

一个良好的虚拟化框架应该实现良好的性能隔离,这意味着一个用户的性能不应影响其他任务。第二个实验假设可能有4个用户,提供一个用户资源的固定x(100%, 75%, 50%,和25%的总资源),调整其他用户占领另一(1 - x)资源,最后得到用户的最大和最小的性能。如图4所示,当用户垄断所有资源,没有性能偏差。当资源被单个用户75%,50%,和25%的总资源,GPU虚拟化解决方案7.1 - -13.1%,-10.9% - 5.5,-8.1%和6.5性能偏差,而FPGA虚拟化设计限制在1%。FPGA虚拟化解决方案比GPU实现更好的隔离隔离,同时满足所有的要求。


图4:性能隔离:性能偏离理想情况为一个用户有4个用户时使用不同的硬件资源。

一个良好的虚拟化框架应该让你实现类似的性能线性资源分配给你。图5显示了性能结果与不同的模型和不同的瓷砖策略款。歧视提出了性能与一个大型核心和深蓝色的线提供了一个虚拟设计进行工作负载平衡。

《盗梦空间》v3和VGG16虚拟设计的性能损失的结果仅仅是0.95%和3.93%;但对于MobileNet,有31.64%的性能损失,因为这款紧凑模型需要更多的内存带宽和多核设计进一步增加对带宽的需求。

我们也可以发现VGG16,并行性能几乎是线性的,因为它是一个computation-bounded任务。但对于《盗梦空间》v3和MobileNet,甚至一个大核心设计的性能恶化很多与理想线性与大量的并行性,因为他们都是内存有界。


图5:单任务操作的吞吐量在不同情况下有不同的并行性。

多种用途和多个任务的情况,性能测量的总吞吐量FPGA芯片。如图6所示,四列从浅蓝色到深蓝色代表了吞吐量与虚拟化核心,每个核心虚拟化核心优化单一任务,静态多核设计,大单芯设计。总共16个核心FPGA上实现,这样可以同时支持最多16个任务。

当只有少数的任务1、2或4个任务,如果我们发送每个任务一个小核心,静态多核设计不能实现高吞吐量,而虚拟化设计执行得更好。当有8、12或16个任务,静态的吞吐量大单核设计并不会改善因为TDM的方式执行所有任务。但对于虚拟设计、执行多个任务,可以实现更高的吞吐量。总共有16个任务时,优化的虚拟设计达到最佳的吞吐量。


图6:多任务在不同情况下吞吐量。

总之,我们已经看到,该FPGA虚拟化框架提供了优秀的性能隔离,可伸缩性和灵活性。与一个在线重组开销约1毫秒,单核性能损失1.12%,达到1.07 - 1.69 x 1.88 x 3.12 x与基线相比性能改进设计。虚拟化的FPGA设计也达到很好的隔离和线性硬件资源。这将有助于进一步降低TCO的深度学习应用程序在云中。

如果你对原始论文感兴趣,请不要犹豫地下载在Arxiv:https://arxiv.org/abs/2003.12101



留下一个回复


(注意:这个名字会显示公开)

Baidu