面向云端深度学习推理的fpga虚拟化硬件系统栈设计

文档序号:20519 发布日期:2021-09-21 浏览:34次 >En<

阅读说明:本技术 面向云端深度学习推理的fpga虚拟化硬件系统栈设计 (FPGA virtualization hardware system stack design oriented to cloud deep learning reasoning ) 是由 曾书霖 戴国浩 杨昕昊 刘军 汪玉 于 2021-05-28 设计创作,主要内容包括:本申请公开一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计,涉及人工智能技术领域,该设计包括分布式FPGA硬件辅助虚拟化硬件架构、CPU服务器节点用于运行虚拟机容器、静态编译器和深度神经网络DNN,其中,所述深度神经网络DNN用于获取用户指令,通过所述静态编译器将所述用户指令编译为指令包;FPGA服务器计算节点,用于运行虚拟化系统服务和FPGA加速卡,所述FPGA加速卡包括虚拟化多核硬件资源池和四块双倍速率同步动态随机存储器DDR;总控制节点用于通过控制层管理所述CPU服务器节点和所述FPGA服务器计算节点中的各节点。上述方案的本申请解决了现有技术中面向深度学习推理应用的FPGA虚拟化方案中无法拓展到分布式多节点计算集群的技术问题。(The design comprises a distributed FPGA hardware auxiliary virtualization hardware framework, a CPU (Central processing Unit) server node, a virtual machine container, a static compiler and a Deep Neural Network (DNN), wherein the DNN is used for acquiring a user instruction, and the user instruction is compiled into an instruction packet through the static compiler; the FPGA server computing node is used for operating a virtualization system service and an FPGA accelerator card, and the FPGA accelerator card comprises a virtualization multi-core hardware resource pool and four double-rate synchronous dynamic random access memories DDR; and the master control node is used for managing each node in the CPU server node and the FPGA server computing node through a control layer. The technical problem that the distributed multi-node computing cluster cannot be expanded in an FPGA virtualization scheme oriented to deep learning inference application in the prior art is solved.)

面向云端深度学习推理的FPGA虚拟化硬件系统栈设计

技术领域

本发明涉及人工智能

技术领域

,尤其涉及一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计。

背景技术

我们正处于人工智能快速发展的时代,深度学习在各种领域扮演着越来越重要的角色。其中,深度神经网络(DNN)的推理任务占据了云端数据中心的大部分深度学习任务负载。在数据中心中使用传统的通用处理器CPU已无法满足深度学习巨大的算力需求。因此,现在通常使用专用的硬件平台,比如GPU、FPGA和ASIC,来加速深度学习算法。得益于 FPGA对于可编程性、性能和功耗的良好平衡,越来越多的云端服务商,如亚马逊、阿里巴巴和百度等,都开始在数据中心中部署FPGA来提供面向DNN推理任务的解决方案。

由于云端的DNN应用具有多任务和动态负载的特点,为了提供灵活可重配置的算力资源来匹配云端的应用特性以最大化整体性能和最小化服务成本,一种常用的方法是实现数据中心算力资源的虚拟化。云端虚拟化框架将物理计算节点抽象为计算资源,支持多用户多任务以及计算资源的动态分配。云端虚拟化框架系统栈主要可分为三个抽象层:硬件层、调度编译层、应用层。硬件层一般为多个物理计算节点集群,每个节点部署多个支持虚拟化的多用户加速器核;调度编译层对计算任务生成可执行的指令文件与性能模型,并根据模型对任务分配硬件资源;应用层使用运行时接口远程调用虚拟化资源并向调度编译层发送任务。目前面向多用户的神经网络加速器[1-3]可以实现单计算节点的空分复用。对于硬件层,现有多用户多核虚拟化加速器[3]使用全连接的方式令各核等分片下内存带宽,从而实现多用户性能隔离;对于调度编译层,现有调度器与编译器[2,3,4]遍历所有资源分配和调度方式下的性能表现,选取性能最优调度方式;对于应用层,主流虚拟化框架使用基于应用程序接口(API)的方式远程通过调度编译层配置硬件层虚拟化资源,如[5]GPU虚拟化框架使用用户端CUDA API远程使用计算节点的CUDA Runtime Library,会产生每秒约105次API调用,导致高达5倍的远程访问延时开销

发明内容

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种云端场景下的分布式FPGA硬件辅助虚拟化硬件架构,以实现支持高效的多核多节点动态负载的多用户共享。

本发明的第二个目的在于提出一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计,以实现减少大部分API调用,以及降低远程访问开销。

为达上述目的,本发明第一方面实施例提出了一种云端场景下的分布式FPGA硬件辅助虚拟化硬件架构,包括硬件架构与数据流优化,所述硬件结构在基于多核指令集架构ISA 的深度神经网络DNN加速器架构的基础上,通过引入转发广播数据同步、动态带宽分配和数据量优化的方法优化单核等效带宽,其中,所述深度神经网络DNN包括卷积神经网络CNN;

所述数据流优化包括在使用多核加速器的深度神经网络DNN推理加速中,按照输入特征图宽度方向和输出特征图通道方向对所述卷积神经网络CNN的每一层进行切分,并将其分配给每个核进行并行计算。

在本发明实施例中,所述硬件结构还包括FPGA加速卡,所述FPGA加速卡上有N块双倍速率同步动态随机存储器DDR;

根据所述FPGA加速卡上DDR的块数对虚拟化加速器核进行分组,其中,通过 Load/Save模块对每组数据的读写请求进行管理。

在本发明实施例中,所述Load/Save模块包括Unpack/Pack模块和指令解码器;其中, Unpack/Pack模块,用于对帧进行解包和打包;

指令解码器,用于解码来自本组核与转发的命令,决定是否从本组DDR取数,是否对请求进行转发。

在本发明实施例中,在所述指令解码器中,若来自核的指令所需要的数据是相同的,则合并请求,从DDR取一次数据,将取得的数据广播给所有的核,并且控制带宽分配器将所有带宽分配给端口0。

在本发明实施例中,所述数据流优化包括在使用多核加速器的深度神经网络DNN推理加速中,按照输入特征图宽度方向或/和输出特征图通道方向对所述卷积神经网络CNN的每一层进行切分,并将其分配给每个核进行并行计算;其中,

通过所述按照输入特征图宽度方向和输出特征图通道方向的的切分方式将产生四种数据搬运模式,所述的四种数据搬运模式分别为全转发无广播、全转发全广播、部分转发无广播、无转发无广播。

在本发明实施例中,所述硬件结构通过单向环形片上网络进行数据转发,在深度神经网络DNN的计算过程中,所述单向环形片上网络将从片下内存读取的输入特征图与权重数据在各组核之间转发,每一层的计算通过切分特征图或权重实现并行化。

在本发明实施例中,所述的云端场景下的分布式FPGA硬件辅助虚拟化硬件架构,还包括虚拟化系统应用层,所述虚拟化系统应用层包括用户运行时库、服务器守护程序、数据层和控制层;其中,

用户运行时库,包括用户端开发套件、DNN模型输入输出接口、数据输入接口、调用虚拟化FPGA资源接口、释放虚拟化FPGA资源接口,其中,运行时库在所述虚拟机容器中运行;

服务器端守护程序,FPGA服务器端运行的守护程序控制指令生成过程,根据调度器的资源分配结果调用动态编译器产生指令文件,并把指令文件发送给分配的虚拟化核中,同时负责控制动态重配置与运行状态、计算时延的监控记录;

数据层,用于在用户环境与所述FPGA服务器计算节点之间传送数据;

控制层,通过TCP/IP协议发送控制信号,由所述总控制节点控制整个集群虚拟化框架的运行。

在本发明实施例中,所述深度神经网络DNN还包括循环神经网络RNN,在使用多核加速器的深度神经网络DNN推理加速中,按照所述输入特征图宽度方向对所述卷积神经网络RNN的每一层进行切分,并将其分配给每个核进行并行计算。

本发明实施例的方法,通过提出了多节点、多用户、动态负载的云端场景下高性能DNN 推理加速虚拟化框架和系统栈,在硬件架构、系统应用层提出了探索与改进。硬件架构层通过引入转发广播数据同步、动态带宽分配、数据量优化三种方法最大程度优化单核等效带宽,使得单节点推理相比先前设计更高速,在严格服务质量要求的条件下吞吐量更高效;在系统应用层,提出了底层控制、硬件协助的动态重配置方法,相比其他基于应用接口的虚拟化方法,远程访问重配置的开销极大降低。

为达上述目的,本发明第二方面实施例提出了一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计,包含上述实施例中所述的云端场景下的分布式FPGA硬件辅助虚拟化硬件架构、总控制节点、中央处理器CPU服务器节点和分布式FPGA硬件辅助虚拟化硬件架构;其中,

所述CPU服务器节点,用于运行虚拟机容器、静态编译器和深度神经网络DNN,其中,所述深度神经网络DNN用于获取用户指令,通过所述静态编译器将所述用户指令编译为指令包;

所述FPGA服务器计算节点,用于运行虚拟化系统服务和FPGA加速卡,所述FPGA 加速卡包括虚拟化多核硬件资源池和四块双倍速率同步动态随机存储器DDR;

总控制节点,用于通过控制层管理所述CPU服务器节点和所述FPGA服务器计算节点中的各节点。

在本发明实施例中,所述的CPU服务器节点还包括运行时库,其中,所述运行时库包含于所述运行虚拟机容器;

所述的FPGA服务器计算节点还包括动态编译器和系统守护程序,所述动态编译器和所述系统守护程序均包含于所述运行虚拟化系统服务;

所述的总控制节点还包括调度器,其中,所述调度器用于给DNN推理任务分配虚拟化硬件资源。

本发明实施例的方法,针对面向深度学习推理应用的FPGA虚拟化方案中无法拓展到分布式多节点计算集群的问题,提出一套分布式多节点FPGA硬件辅助虚拟化硬件架构和系统栈设计,旨在最大程度优化数据搬运的有效带宽并有效降低远程访问延时开销。在现有的虚拟化系统栈的三个抽象层中,硬件层设计无法解决加速器核数增加等效带宽迅速恶化的问题;编译调度层现有的编译方法未结合深度神经网络的数据流特点对指令优化,存在冗余数据搬运的情况,带来额外的通信代价,导致调度算法无法扩展到分布式集群场景;现有的应用层基于API远程访问控制编译调度层发送任务与分配资源,而不是从硬件层进行任务调度与资源分配,造成大量API远程访问时间开销。因此,本发明分析了现有虚拟化框架的优缺点,综合基于ISA的DNN加速器数据流特点,提出了最大化等效带宽的硬件设计方法,利用片上网络、动态分配带宽、广播转发等技术避免了带宽随核数增加迅速恶化的问题;在应用与系统层面使用动态编译器和系统服务守护程序直接控制虚拟化的加速器核,减少了大部分API调用,极大降低了远程访问开销。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例所提供的基于ISA的DNN加速器虚拟化的硬件架构实现;

图2为本发明实施例所提供的一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计的完整结构图;

图3为本发明实施例所提供的Load/Save模块硬件架构示意图;

图4为本发明实施例所提供的全转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

图5为本发明实施例所提供的全转发全广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

图6为本发明实施例所提供的部分转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

图7为本发明实施例所提供的无转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

图8为本申请实施例所提供的单节点时延测试实验结果图;

图9为本申请实施例所提供的硬件层设计与基线设计在不同核数与节点数下的吞吐量对比图;

图10为本申请实施例所提供的1-4个FPGA节点1-64核的时延测试结果图;以及

图11为本申请实施例所提供的DNN分类任务推理加速过程中FPGA、GPU虚拟化平台本地与远程时延结果对比图。

具体实施方式

下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计。

图1为本发明实施例所提供的基于ISA的DNN加速器虚拟化的硬件架构实现。

针对这一问题,如图1所示,本申请第一方面实施例提供了一种云端场景下的分布式 FPGA硬件辅助虚拟化硬件架构,包括硬件架构与数据流优化,硬件结构在基于多核指令集架构ISA的深度神经网络DNN加速器架构的基础上,通过引入转发广播数据同步、动态带宽分配和数据量优化的方法优化单核等效带宽,其中,深度神经网络DNN包括卷积神经网络CNN和循环神经网络RNN;

数据流优化包括在使用多核加速器的深度神经网络DNN推理加速中,按照输入特征图宽度方向和输出特征图通道方向对卷积神经网络CNN的每一层进行切分,并将其分配给每个核进行并行计算。

图3为本申请实施例所提供的Load/Save模块硬件架构示意图;

在本申请实施例中,硬件结构还包括FPGA加速卡,FPGA加速卡上有N块双倍速率同步动态随机存储器DDR;

如图3所示,根据FPGA加速卡上DDR的块数对虚拟化加速器核进行分组,其中,通过Load/Save模块对每组数据的读写请求进行管理。

在本申请实施例中,Load/Save模块包括Unpack/Pack模块和指令解码器;其中,

Unpack/Pack模块,用于对帧进行解包和打包;

指令解码器,用于解码来自本组核与转发的命令,决定是否从本组DDR取数,是否对请求进行转发。

在本申请实施例中,在指令解码器中,若来自核的指令所需要的数据是相同的,则合并请求,从DDR取一次数据,将取得的数据广播给所有的核,并且控制带宽分配器将所有带宽分配给端口0。

在本申请实施例中,在基于多核指令集架构ISA的DNN加速器架构的DNN推理加速中,卷积神经网络CNN的每一层按照输入特征图宽度方向切分和输出特征图通道方向切分的切分方式分配给每个核进行并行计算;其中,

通过按照输入特征图宽度方向切分,或输出特征图通道方向切分的切分方式产生四种数据搬运模式,的四种数据搬运模式分别为全转发无广播、全转发全广播、部分转发无广播、无转发无广播。

在本申请实施例中,深度神经网络DNN还包括循环神经网络RNN,在使用多核加速器的深度神经网络DNN推理加速中,按照输入特征图宽度方向对卷积神经网络RNN的每一层进行切分,并将其分配给每个核进行并行计算。也就是说,当对循环神经网络RNN进行数据流优化时,只需对输入特征图按宽度方向切分即可,与采用卷积神经网络CNN的方案相比,对循环神经网络RNN进行数据流优化的方法更为简单。

在本申请实施例中,硬件结构通过单向环形片上网络进行数据转发,在深度神经网络 DNN的计算过程中,单向环形片上网络将从片下内存读取的输入特征图与权重数据在各组核之间转发,每一层的计算通过切分特征图或权重实现并行化。

在本申请实施例中云端场景下的分布式FPGA硬件辅助虚拟化硬件架构,还包括虚拟化系统应用层,虚拟化系统应用层包括用户运行时库、服务器守护程序、数据层和控制层;其中,

用户运行时库,包括用户端开发套件、DNN模型输入输出接口、数据输入接口、调用虚拟化FPGA资源接口、释放虚拟化FPGA资源接口,其中,运行时库在虚拟机容器中运行;

服务器端守护程序,FPGA服务器端运行的守护程序控制指令生成过程,根据调度器的资源分配结果调用动态编译器产生指令文件,并把指令文件发送给分配的虚拟化核中,同时负责控制动态重配置与运行状态、计算时延的监控记录;

数据层,用于在用户环境与FPGA服务器计算节点之间传送数据;

控制层,通过TCP/IP协议发送控制信号,由总控制节点控制整个集群虚拟化框架的运行。

图2为本发明实施例所提供的一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计的完整结构图;

基于上述实施例,本申请实施例还提供了一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计,以实现面向深度学习推理应用的FPGA虚拟化方案中拓展到分布式多节点计算集群的技术问题,如图2所示,本申请实施例提出的面向云端深度学习推理的FPGA虚拟化硬件系统栈设计包括:包含上述实施例的云端场景下的分布式FPGA硬件辅助虚拟化硬件架构、总控制节点、中央处理器CPU服务器节点和分布式FPGA硬件辅助虚拟化硬件架构;

其中,现场可编程门阵列FPGA服务器计算节点包括第一方面实施例所提出的云端场景下的分布式FPGA硬件辅助虚拟化硬件架构;

CPU服务器节点,用于运行虚拟机容器、静态编译器和深度神经网络DNN,其中,深度神经网络DNN用于获取用户指令,通过静态编译器将用户指令编译为指令包;

FPGA服务器计算节点,用于运行虚拟化系统服务和FPGA加速卡,FPGA加速卡包括虚拟化多核硬件资源池和四块双倍速率同步动态随机存储器DDR;

总控制节点,用于通过控制层管理CPU服务器节点和FPGA服务器计算节点中的各节点。

在本申请实施例中,CPU服务器节点还包括运行时库,其中,运行时库包含于运行虚拟机容器;

FPGA服务器计算节点还包括动态编译器和系统守护程序,动态编译器和系统守护程序均包含于运行虚拟化系统服务;

总控制节点还包括调度器,其中,调度器用于给DNN推理任务分配虚拟化硬件资源。

本申请实施例的方法,针对面向深度学习推理应用的FPGA虚拟化方案中无法拓展到分布式多节点计算集群的问题,提出一套分布式多节点FPGA硬件辅助虚拟化硬件架构和系统栈设计,旨在最大程度优化数据搬运的有效带宽并有效降低远程访问延时开销。在现有的虚拟化系统栈的三个抽象层中,硬件层设计无法解决加速器核数增加等效带宽迅速恶化的问题;编译调度层现有的编译方法未结合深度神经网络的数据流特点对指令优化,存在冗余数据搬运的情况,带来额外的通信代价,导致调度算法无法扩展到分布式集群场景;现有的应用层基于API远程访问控制编译调度层发送任务与分配资源,而不是从硬件层进行任务调度与资源分配,造成大量API远程访问时间开销。因此,本申请分析了现有虚拟化框架的优缺点,综合基于ISA的DNN加速器数据流特点,提出了最大化等效带宽的硬件设计方法,利用片上网络、动态分配带宽、广播转发等技术避免了带宽随核数增加迅速恶化的问题;在应用与系统层面使用动态编译器和系统服务守护程序直接控制虚拟化的加速器核,减少了大部分API调用,极大降低了远程访问开销。

本申请实施例的方法,通过提出了多节点、多用户、动态负载的云端场景下高性能DNN 推理加速虚拟化框架和系统栈,在硬件架构、系统应用层提出了探索与改进。硬件架构层通过引入转发广播数据同步、动态带宽分配、数据量优化三种方法最大程度优化单核等效带宽,使得单节点推理相比先前设计更高速,在严格服务质量要求的条件下吞吐量更高效;在系统应用层,提出了底层控制、硬件协助的动态重配置方法,相比其他基于应用接口的虚拟化方法,远程访问重配置的开销极大降低。

本申请的完整技术方案包括硬件辅助虚拟化系统栈、硬件架构与数据流优化、系统应用层三部分。本申请提出的虚拟化框架旨在提供多节点、多用户、动态负载的云端场景下高性能DNN推理加速。

图1为本申请实施例所提供的基于ISA的DNN加速器虚拟化的硬件架构实现;本申请的硬件架构包含多个DDR、分组的虚拟化ISA加速器核、实现数据广播转发、数据量优化与指令级数据同步的Load/Save模块、实现动态带宽控制的AXI带宽控制器、以及节点之间数据同步的以太网接口。

在本申请实施例中,本申请的硬件架构是在基于多核ISA的DNN加速器架构的基础上,通过引入转发广播数据同步、动态带宽分配、数据量优化三种方法最大程度优化单核等效带宽。

进一步地,转发广播数据同步:如图1所示,FPGA加速卡一般有4块DDR,于是将虚拟化加速器核分为四组,每组的数据读写请求统一由Load/Save模块管理。在使用多核加速器的DNN推理加速中,卷积神经网络的每一层可按照输入特征图宽度方向切分,或输出特征图通道方向切分两种方式分配给每个核进行并行计算。两种切分方式会产生共四种数据搬运模式:全转发无广播、全转发全广播、部分转发无广播、无转发无广播。在这些数据搬运模式中,核之间有时需要读取相同的数据,或者一份数据需要送给所有的核。因此,我们使用Load/Save模块统一管理组内各核的数据读写需求,若需要相同的数据,则仅从DDR取一次数,然后广播给所有核即可;有时,本组内的核需要从其他组对应的DDR 取数,或者某一份数据需要送给所有的核,此时就需要对数据进行组间转发。本申请在硬件设计中采取单向环形片上网络进行数据转发,其特点是高速轻量级,因此可以支持多核的高数据位宽。若数据需要转发,则由Load/Save模块从片上网络发送请求,请求经过一级或多级转发到达目的组,然后取到的数据再经过片上网络转发回到起始Load/Save模块,再传送给需要的核。

图2为本申请实施例所提供的一种面向云端深度学习推理的FPGA虚拟化硬件系统栈设计的完整结构图;该虚拟化系统栈由总控制节点、CPU服务器节点与FPGA服务器计算节点组成,CPU服务器与FPGA服务器通过数据层进行数据交互,总控制节点和服务器通过控制层连接发送接收控制信号。

在本申请实施例中,如图2所示,该虚拟化系统栈包含一个总控制节点、CPU服务器节点与FPGA服务器计算节点。对于CPU节点,其主要功能在于运行包含运行时库的虚拟机容器作为用户环境,同时包含静态编译器,将用户输入的DNN应用编译为指令包;FPGA 节点包含虚拟化的多核硬件资源池以及虚拟化系统服务,包括动态编译器与系统守护程序(daemon);总控制节点通过控制层管理集群内各个节点,其包含一个调度器负责给DNN推理任务分配虚拟化硬件资源。

图3为本申请实施例所提供的Load/Save模块硬件架构示意图;(a)Load命令读取时的数据与控制通路(b)Save命令写入时的数据与控制通路。

在本申请实施例中,如图3所示为表示清晰分别使用两个子图展示Load读取和Save 写入的数据与控制通路。首先,在传输的过程中指令与数据打包为一帧(Frame),在Load/Save 模块内存在Unpack/Pack模块对帧进行解包和打包。指令解码器是Load/Save模块的控制中心,它解码来自本组核与转发的命令,决定是否从本组DDR取数,是否对请求进行转发;另外,若来自核的指令所需要的数据是相同的,则合并请求,仅从DDR取一次数据,广播给所有的核,并且控制带宽分配器将所有带宽分配给端口0。多路选择器B0到B3控制是否对核进行广播、F0控制是否进行转发、S0则控制是否将以太网写入的数据存入本组DDR。

在本申请实施例中,在深度神经网络的计算过程中,每层计算需要分别从片下内存读取输入特征图与权重数据。每一层的计算通过切分特征图或权重实现并行化。切分特征图是把输入特征图在宽度维度进行切分,每个DDR内分别存储一部分输入特征图、每个加速器虚拟化核使用切分后的一部分输入特征图计算,称为输入特征图的W(Width)切分;另一种并行方式是每个虚拟化核分配一部分权重,相当于各核分别计算输出特征图的一部分通道,因此称为输出特征图的OC(Output Channel)切分。因此对于神经网络的任意一层计算,有W-W、W-OC、OC-W、OC-OC四种输入输出切分方式,对应四种特征图数据搬运的模式;对于权重的数据搬运模式,由于各DDR内分别存储了完整的权重,所以权重的数据搬运模式仅与输出切分方式有关。搬运特征图与权重的数据流可以总结为四种模式,下面依次对四种数据流优化进行说明:

图4为本申请实施例所提供的全转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

进一步地,如图4所示为OC-W读取特征图的数据流优化方式,由于上一层按照OC切分,各DDR存储一部分输入个特征图的通道,而本层计算按照W切分,故每个虚拟化核需要完整特征图的几列元素,上述切分方式可见图4左。在不同DDR中的数据需要通过转发取数,本组对应的DDR中存有的数据则可并行取出,同时其他组虚拟化核需要的数据也要从本组DDR取出并向右转发。以第0组为例,上述的取数方式与端口传输时间顺序可见图4中图与图4右图。

图5为本申请实施例所提供的全转发全广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

进一步地,如图5所示为全转发全广播的数据流,对应OC-OC,W-OC切分方式读取特征图与任意-W切分方式读取权重。由于本层计算按照输出通道切分,因此所有虚拟化核都需要完整的输入特征图,这些数据分别存储在4个DDR中,因此所有虚拟化核需要相同数据,则全部转发且全部广播。对于本层按照W切分的方式读取权重数据情况类似,由于本层按照W切分输出特征图,各虚拟化核都需要所有的权重数据,因此同样对所有数据进行转发广播。如图5中数据流可视化与端口数据传输时间顺序图,在进行广播的时候所有带宽都分配给端口0,且转发与广播可以同时进行。

图6为本申请实施例所提供的部分转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

进一步地,如图6所示为部分转发无广播的数据流图,其对应的切分方式为W-W,即上层输出特征图与本层输出特征图都按W切分。其特点在于大部分本组虚拟化核需要的数据都存储在本组DDR中,在计算到输出特征图边缘时需要少量来自其他组的特征图数据。另外由于组内各核需要的数据不相同,故无法进行广播。

图7为本申请实施例所提供的无转发无广播数据流的数据存储位置与分配方式、数据流可视化、各端口数据传输时间顺序;

进一步地,如图7所示为无转发无广播的数据流图,对应为本层按照输出通道(OC)切分输出特征图。在这种情况下,组内各核需要的权重数据不同,又因权重数据分别在四个DDR中存有相同的拷贝,所以无需转发。因此这种情况既不需要转发也不需要广播,各核并行读取自己需要的权重数据,带宽均分。

在本申请实施例中,动态带宽分配:在每一组虚拟化核中,Load/Save模块与DDR之间存在一个AXI带宽控制器。其可以通过时分复用的方式动态分配四个接口的带宽。若四个口同时对DDR中并行读写数据,则为四个接口分配相同的带宽;若为广播模式,也即4 个核需要读取相同的数据,则AXI带宽控制器将带宽全部分配给其中一个接口,然后再由 Load/Save模块将数据广播给需要的核。

在本申请实施例中,数据量优化:节点之间在传送数据时仅传送必要的一部分数据,而不是完整的中间结果。比如在宽度维度切分的并行方式中,节点仅需要相邻两节点中一小部分边缘数据,且这些数据的位置在编译过程中就已经确定,因此仅需选择传送该部分数据。另外,先前的虚拟化硬件设计在DNN的每一层计算结束后进行一次数据同步,这样的方法会造成节点进行计算时网络端口空闲。因此,本申请提出在计算进行过程中进行指令级别的数据同步,重叠计算与数据传输,最大化数据端口利用率。

在本申请实施例中,本申请提出的虚拟化系统应用层包括用户运行时库、服务器守护程序、数据层和控制层,下面分别对四个主要部分说明:

用户运行时库:包括用户端开发套件,DNN模型输入输出接口,数据输入接口,调用、释放虚拟化FPGA资源接口,运行时库可在虚拟机容器中运行;

服务器端守护程序:FPGA服务器端运行的守护程序控制指令生成过程,根据调度器的资源分配结果调用动态编译器产生指令文件,并把指令文件发送给分配的虚拟化核中,同时负责控制动态重配置与运行状态、计算时延的监控记录,从而实现底层、控制硬件协助的动态重配置。

数据层:处理DNN应用过程中,数据层用于在用户环境与FPGA计算节点之间传送数据。数据层支持多种传送协议,如TCP/IP以太网协议,RoCE RDMA,Infiniband RDMA 等。

控制层:控制层使用TCP/IP协议发送控制信号,由总控制节点负责控制整个集群虚拟化框架。

在本申请实施例中,本申请在Intel Xeon 4210CPU服务器和Xilinx Alveo U200FPGA 服务器组成的计算集群对提出的虚拟化框架进行了实验,节点之间使用100Gbps带宽的 TCP/IP以太网通信,FPGA加速卡配备4块DDR4内存共64GB,带宽为77GB/s。实验使用的基于ISA的DNN加速器为16核,时钟周期为200MHz,各核的并行度为512操作数 /时钟周期(Ops/cycle)。所测试的8种神经网络为YoloV3-Tiny,YoloV3,SSD-MobileNet, SSD-VGG,VGG-16、ResNet-50、MobileNet v1和GoogleNet(InceptionV3)。

图8为本申请实施例所提供的单节点时延测试实验结果(a)MobileNetV1本申请提出的单卡硬件架构对比基线设计的1-16核加速比;(b)测试的8种神经网络相比于基线设计平均加速比;

本申请首先在单节点测试了MobileNetV1与先前的单节点基线设计时延加速比。如图 8(a)所示,实验测试了从1核到16核的时延,与基线设计相比加速了1.4-4.9倍,说明本申请提出的单节点数据同步机制有效优化了最大等效带宽。如图8(b)所示,对于测试的8种神经网络,本申请提出的硬件架构设计均能加速平均1.2-3.3倍,进一步说明了优化等效带宽的有效性。

图9为本申请实施例所提供的硬件层设计与基线设计在不同核数与节点数下的吞吐量对比,(a)SSD-VGG(b)MobileNet-v1;

本申请进行了多节点的吞吐量实验,如图9所示分别为SSD-VGG与MobileNet-v1在1-4个节点的吞吐量对比。无服务质量要求的系统最大吞吐量主要由单核处理DNN推理任务的时延决定,图9中本申请提出的设计相比先前的基线设计吞吐量提升1.07到1.36倍。

图10为本申请实施例所提供的1-4个FPGA节点1-64核的时延测试结果,使用不同的网络带宽与优化策略,a)SSD-VGG(b)MobileNet-v1;

然后,本申请对比了1-4卡FPGA1-64核使用不同网络带宽与优化策略的时延测试结果。图10中分别是SSD-VGG与MobileNet-v1的时延结果,测试分别有4种条件:100Gbps 网络带宽不使用本申请提出的带宽优化方法、100Gbps网络带宽使用带宽优化、200Gbps 不使用带宽优化、200Gbps使用带宽优化。可以观察到SSD-VGG在100Gbps下使用优化在32核2卡、48核3卡、64核4卡的情况下时延分别加快了1.24倍、1.26倍和1.57倍。对于MobileNet-v1,当核数超过32,节点数超过2数据同步带来的通信代价使时延升高,使用数据量和带宽优化可以缓解这一问题,使得对于通信瓶颈的DNN加速可以扩展到多个节点。

图11为本申请实施例所提供的DNN分类任务推理加速过程中FPGA、GPU虚拟化平台本地与远程时延结果对比;

最后,本申请对比了FPGA与GPU虚拟化平台本地与远程访问的时延结果。如图11所示为四种DNN任务加速中本地与远程时延的对比,可见GPU平台因为大量的远程访问 API调用,造成了很大的远程访问时间开销。而对比FPGA平台,使用本申请提出的重配置方法可极大程度减少远程访问API调用次数,有效降低了远程访问时间开销。

本申请提出了多节点、多用户、动态负载的云端场景下高性能DNN推理加速虚拟化框架和系统栈,在硬件架构、系统应用层提出了探索与改进。硬件架构层通过引入转发广播数据同步、动态带宽分配、数据量优化三种方法最大程度优化单核等效带宽,使得单节点推理相比先前设计加速了4.9倍,在严格服务质量要求的条件下吞吐量提高了2.98-3.75倍;在系统应用层,提出了底层控制、硬件协助的动态重配置方法,相比其他基于应用接口的虚拟化方法,远程访问重配置的开销降低至1%。

为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器被执行时,使得能够执行一种方法,所述方法包括:。

为了实现上述实施例,本发明还提出一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行一种基于人工智能的方法,所述方法包括:。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:晶体管级电路仿真的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类