用于深度学习训练加速的自适应框架设计

更新时间:2023-06-25 18:52:58 阅读: 评论:0

第33卷第6期计算机辅助设计与图形学学报Vol.33No.6 2021年6月Journal of Computer-Aided Design & Computer Graphics Jun. 2021用于深度学习训练加速的自适应框架设计
范涛1), 樊平2), 成元庆1)*
1) (北京航空航天大学集成电路科学与工程学院北京  100191)
2) (北京深维科技有限公司北京  100191)
(*****************)
摘要: 用FPGA加速深度学习算法的训练过程通常需要较长的开发周期和丰富的硬件设计经验. 为了应对这一挑战, 设计了一种基于自适应模板技术的深度学习算法训练加速框架, 在应用规模、并行调度策略、资源使用和功能扩展上进行了深入的研究并提出了相应的优化策略. 采用CPU-FPGA异构加速模板技术, 提出了自适应的上层模型编译框架实现与不同硬件加速资源的适配. 这种基于定制模板的软硬件协同设计可以很好地适配不同的FPGA芯片并支持算法的快速迭代. 用图神经网络算法数据进行加速对比实验, 实现了与CPU相比7~41倍的速度提升.
关键词: 深度学习; 图神经网络; 异构加速器; 现场可编程门阵列关于诚信的论文
瘦肉
中图法分类号: TP391.41      DOI: 10.3724/SP.J.1089.2021.18587
Template-Bad Adaptive Training Acceleration Framework for Deep Learning Algorithms
Fan Tao1), Fan Ping2), and Cheng Yuanqing1)*
1) (School of Integrated Circuit Science and Engineering, Beihang University, Beijing 100191)
2) (DeePoly Technology Inc., Beijing 100191)
Abstract: Field-programmable gate array (FPGA) is usually ud to accelerate the training pha of deep learning algorithms, but it usually requires a long development cycle and rich hardware design experti for satisfied exe-cution performance. In order to deal with this challenge, an adaptive acceleration framework for deep learning algorithm is propod in this paper. We investigate the application scale, parallel scheduling strategy, resource usage and the scalability of functionality. With the CPU-FPGA heterogeneous acceleration template bad tech-nology, an adaptive model compiler is propod to customize the accelerator bad on the algorithm’s complexity and hardware resources available. The propod hardware and software co-design framework can effectively adapt to different FPGA hardware resources and support the fast evolution of deep learning algorithms. Taking the graph neural network as an example, it can obtain 7~41x performance improvements compared to the general purpo CPU platform.
Key words: deep learning; graph convolutional networks (GCN); heterogeneous accelerator; field-programmable gate array (FPGA)
收稿日期: 2020-08-15; 修回日期: 2020-12-22. 基金项目: 北京市自然科学基金(4192035); 北京市首都科技创新项目(XM20200028-C). 范涛(1998—), 男, 硕士研究生, 主要研究方向为数字集成电路设计; 樊平(1979—), 男, 高级工程师, 主要研究方向为神经网络加速器设计和优化; 成元庆(1981—), 男, 博士, 助理教授, 硕士生导师, CCF高级会员, 论文通讯作者, 主要研究方向为三维集成电路设计自动化、低功耗和高可靠计算机体系结构设计.
第6期
范涛, 等: 用于深度学习训练加速的自适应框架设计 975
近年来, 随着新型神经网络的出现, 深度学习算法的结构越来越复杂. 这些复杂模型包含多达数十亿个操作和数百万个参数, 训练和部署这些模型需要大量的计算资源[1-4]. 这对通用处理器(general purpo processor, GPP)是一个巨大挑战. 一些新兴的基于图形处理器(graphics processing unit, GPU)、现场可编程逻辑门阵列(field programmable gate array, FPGA)和专用集成电路(application specific integrated circuit, ASIC)的硬件加速技术不断涌现[5].
通常, 在评估硬件平台的加速效果时, 必须考虑灵活性和性能之间的权衡. 一方面, GPP 可提供高度的灵活性和易用性, 但效率低下; 另一方面, ASIC 可提供高性能, 但不够灵活且开发周期长、开发难度大
[6-8]
.
FPGA 是这2个极端之间的折中[9]
, 它属于一类更通用的可编程逻辑设备. FPGA 的可编程逻辑元件可用于实现普通逻辑功能中的数据和控制通路, 而不依赖于冯·诺伊曼架构. 它们也能够利用分布式片上存储器, 以及深度流水线实现并行, 这与深度学习方法自然契合. 再者, 在进行机器学习和深度学习算法开发时, 较少强调算法与硬件结构的绑定, 从而留出更多的自由度去探索算法层面的优化. 然而, 上层算法快速迭代所需的下层复杂逻辑硬件实现对ASIC 芯片设计提出了巨大挑战, 但FPGA 可以很灵活地满足算法迭代的需求. 因此, FPGA 既能提供ASIC 的性能优势, 又具备GPP 的灵活性[10-14].
目前, 有很多将FPGA 应用于机器学习加速的工作[15-20], 且加速效果显著. 功能不断强化的FPGA 设计工具使其对机器学习中经常使用的上层算法兼容性更强, 从而使FPGA 更容易为模型搭
童年乐园建和部署者所采用. 而且FPGA 架构灵活, 使研究者能够在诸如GPU 的固定架构之外进行模型优化. 但
是FPGA 的开发周期较长, 需要具有丰富经验的FPGA 硬件工程师. 伴随各种机器学习算法的不断提出, 其中一些算法的存在周期也很短暂, 如何提出一种可推广的、研发周期短的加速器框架是当下的一个挑战.
1  TABLA 平台简介
TABLA 机器学习加速框架[15]实现了利用自适应模板技术对机器学习训练过程的加速.
如图1所示, TABLA 旨在从编程模式上提供一个全面的解决方案, 能够自动地生成针对一类机器学习算法的训练阶段的加速器架构.
(1) 高级编程模型. TABLA 提供了一个高级编程模型, 程序员只需提供训练所需的初始输入、参数和算法, 编程模型会自动实现算法加速模板的配置.
(2) 设计生成器包括自动生成加速器及接口逻辑.
(3) 预先设计的模板. 模板预先设计并且在所有机器学习算法中是统一的. 支持所有在TABLA 编程接口中定义的语言结构.
2  TABLA 平台的局限性
TABLA 平台如图1所示, 在使用规模、调度策略和数据传输等方面存在着较大局限性, 限制了其在深度学习算法加速的应用.
图1  TABLA 平台
2.1  调度策略
调度加速单元(processing unit, PE)的策略要满足以下约束条件和优化目标.
什么展翅约束条件1. 同一PE 不能在一个周期内分配给多个运算节点.
约束条件2. 不能有运算节点未被分配PE, 分配的PE 不能超过资源总数.
优化目标: 在有多个PE 满足约束条件时, 以最小传输代价调度PE.
约束条件1是硬件电路工作的基本条件, 是时
976 计算机辅助设计与图形学学报第33卷
间和空间上的基本约束, 一个PE在某一周期只能处于一种状态或执行某一确定的运算功能, 而不能在某一周期处于多个状态或执行多个功能. 约束条件2是硬件资源的限制, 在有限的电路资源下, PE的个数与规模也会受到限制.
优化目标是最小传输代价. 最小传输代价是指传输路径最短, 运算的总体时间最少. 数据传输的方式有2种, 一种为PE内部之间的数据传输, 这种传输方式不会发生阻塞, 而且传输的路径较短; 另一种为PE之间的总线传输, 由于不同PE 的总线优先级不同, 低优先级的PE在传输时会出现等待、阻塞等情况, 因此这种方式传输的路径较长.
TABLA的调度策略较为简单, 并且调度策略是针对某一特定的机器学习算法而设计的, 不具备通用性. 采用的思路为先给最初始的运算节点随机分配不同的PE, 再让剩余运算节点继承其父节点的PE, 针对在特定算法中某些不能继承的节点, 再提出专门的优化策略. 以线性回归为例, 该机器学习算法的运算多为乘和累加, 所以每个运算节点的输入个数为2, 输出个数为1, 如图2a所示. 这种数据流图复杂度很低. 由于运算节点输出的个数为1, 用简单的基于继承的算法会自动满足约束条件1, 即让当前运算节点随机继承父节点的PE, 直到所有运算节点都被分配PE.
图2  运算节点
然而, 该策略无法调度规模大且复杂的数据流图, 如图神经网络(graph convolutional networks, GCN). 如图2b所示, GCN中会出现大量的多输出运算节点. 若沿用TABLA的调度算法会不满足约束条件2. 因为该节点的输出个数过多, 若其中2个输出指向的运算节点在后续周期属于同一周期, 则必然会使同一PE被分配多次, 产生硬件资源冲突.
2.2总线冲突与读冲突
总线冲突. 对于大规模的运算, PE的运算量和数据传输量也是巨大的. 在大量数据传输时, 总线的优先级会使某些低优先级的PE的运算结果不能及时地传到其他PE.
读冲突. TABLA的设计是针对于传统的机器学习算法. 机器学习算法的输入数据一般分为参数型、常数型、数据型和梯度型等, 这些不同类型的数据存储在硬件不同的随机存取存储器(random access memory, RAM)内. 在运算时2个输入的数据来自不同的类型, 故不会出现冲突. 但在复杂的运算节点图(如GCN)中会出现2个数据来自同一类型, 该情况下就会出现读冲突.
2.3总线优先级
每个PE执行的是相应的指令文件, 该指令文件是经过上层软件并行化分析后生成的数条指令. 理论上这些指令是有时间顺序的, 但由于总线传输有优先级, 数据传送到PE的顺序未必按照该PE 指令执行的顺序, 这样在进行深度学习算法加速的时候, 运算结果可能会出错. 以图3为例, 图中的每个节点上的数字表示PE的标签, 该标签与PE 一一对应. 标签越小, 表示总线传输优先级越高. 在该加速器运算时, 在第2周期中标签为1, 2和3的PE会传输数据给其他PE. 标签为1的PE最先传输, 标签为3的PE最后传输. 但标签为3的PE(褐色节点), 需要先在第3周期处理第2周期标签为2和3的PE传来的数据(图3中褐色线标出), 之后在第5周期处理第2周期标签为1的PE传来的数据(图3中蓝色线标出). 由于总线优先级的原因, 第2周期标签为1的PE传来的数据先到, 会使标签为3的PE运算出错.
图3  数据流图中依据总线优先级的数据传输
2.4应用规模
TABLA平台的核心PE类似于一个个小CPU. 该单元的硬件功能存在冗余, 所以每个PE占用的硬件资源较多. 在对每个数据流图配置PE时, PE 的规模必须与算法规模相适应. 若开发板没有足
第6期范涛, 等: 用于深度学习训练加速的自适应框架设计 977
够的硬件资源去支持相应数量的PE, TABLA平台是无法处理这种情况的, 这也是阻碍TABLA平台推广到深度学习领域的主要原因. 为解决这些局限性, 本文在第4节提出了相应的解决方案.
3  深度学习加速器框架设计
3.1调度策略的优化
为使PE支持深度学习算法, 本文提出基于PE 使用率和子节点与父节点之间继承关系的调度策略. 具体算法如下所示.
算法. 基于使用率和节点继承关系的调度算法.
输入. 运算节点集合N, 可调度的PE R.
输出. 配置方案S.
初始化. i←1.
Step1. 对初始运算节点进行加速单元的配置*←
R R:
Step1.1. 在初始运算节点选出运算节点n, 在*
R随机选出一个PE;
Step1.2. 给该节点n配置PE, 将该PE使用率加1, 从集合*R中删除该PE;
Step1.3. 执行Step1.1, 直到所有初始节点被配置.
Step2. 对距离初始节点距离为i的运算节点调度*←
R R:
Step2.1. 选取距离初始节点为i的运算节点n;
Step2.2. 若节点n满足以下任意一个条件, 则执行Step2.3, 否则执行Step2.4: (1) n的父节点有且仅有一个子节点; (2) n的父节点有多个子节点且其他距离初始节点为i的节点未继承n的父节点的PE;
Step2.3. n节点继承其父节点的PE;
Step2.4. 给n节点配置使用率最低的PE;
Step2.5. 被配置的PE使用率加1, 从集合*R
中删除该PE;好处用英语怎么说
Step2.6. 执行Step2.1, 直到所有距离初始节点为i的运算节点n都被配置.
Step3. i←i+1, 执行Step2, 直到集合N中的全部运算节点被配置.
3.2总线冲突、读冲突的解决方案
为了解决可能出现的总线冲突, 增加了冲突控制电路与寄存器单元, 将传输的PE的当前运行状态保存, 直到总线没有被占用时再重新发送数据.
对于读冲突, 将原先的执行周期再增加一周期, 一共分为3个周期, 前2个周期读/写数据, 第3周期进行具体的运算, 并将这3步实现流水化. 3.3总线优先级的优化
在规模较大并且复杂的运算中, 每个PE可能会接收到在时域上无关的数据, 为了区别这些数据还需要一些其他的信息. 所以本文把总线的位数扩增n位(2n为PE总数). 这n位信息用来表示传输该数据的PE的信息, 作为标签对PE进行区分, 如图4所示. 但在传输时也会有多个数据的标签相同的情况, 在运算时无法区分这些标签相同的数据信息. 针对这种情况, 还需对同一标签的数据进行时域上的区分. 本文根据上层编程模型的工作特性设计出了相应的存储方案. 在最初PE调度与指令文件生成的时候都是按照时间上的先后关系, 依据这一特性, 将所有传输到达的数据依据不同的标签存储在不同的buffer中. 在PE工作时从相应buffer中读取的数据即为此次运算所需要的数据. buffer先入先出的特性正好与数据先后使用的特性相符合, 在这种存储方案下, 不需要再设计额外的控制电路, 只需依次从buffer中读取数据即能保证运算结果的正确.
图4  扩展位数
假设每个PE需要增加的buffer个数为N(N 为PE的总数), 额外增加的buffer总数为2
N, 如图5所示. 若PE的总数较多, 可能会消耗很多buffer 资源. 此外, buffer的深度决定了能容纳标签相同的数据个数, 随着运算规模的扩大, 该buffer的深度也要相应增加. 在本文中, 把buffer深度设置为4, 由此带来的存储开销为2(16)
N N
⨯+.
图5  扩展buffer
3.4硬件电路功能扩展与优化
本文所提出的加速框架对PE的算术逻辑单元(arithmetic and logic unit, ALU)模块增加了一些常用的运算功能, 如深度学习中常用的ReLU, Sig-moid激活函数. 对于特定的深度学习算法, 如GCN, 需要求拉普拉斯矩阵, 本文增加了
1
2
X
-
早操视频>if函数的使用方法和
1
X-的指数运算功能, 在设计这种较为复杂的运算功能时采用查找表的方式.
978
计算机辅助设计与图形学学报
第33卷
为使该加速平台能在有限的资源上工作, 还需提高资源的利用率. 假设结构和规模都是固定的, 一种有效地减少硬件资源使用的技术是量化. CPU 和GPU 通常很少从量化中获益, 因为它们支持一组固定的操作和数据类型, 而基于FPGA 解决方案通过量化技术可以实现更高的计算能效. 另外, 对于GCN 这种深度网络, 它的一个独特之处在于, 它们往往能很好地应对输入中的高噪声. 这种能力意味着它们可以把低精度的计算看做另一种噪声的来源, 即使用包含较少信息的数字格式, 仍然可以产生准确的结果.
量化的方式可以采用开源的低精度矩阵乘法库(general matrix to matrix multiplication low preci-sion, GEMMLOWP). 通过内部使用b 位量化策略避免运算的溢出. 为了将这些中间运算的结果重新分配到0~2b 的输出域, 本文采用了与GEMMLOWP 相同的基于偏移/多重移位操作序列的方法. 若b =8, 是指输入8位, 相乘后输出8位, 但中间运算
过程会按32位计算, 然后输出结果取32位的高8位; 否则, 中间运算若直接按8位算会溢出而损失精度.
4  GCN 加速
深度学习算法的规模较机器学习相比要大得多, 本文选择重量级深度学习算法GCN 作为典型例子, 说明本文的深度学习加速器框架设计所涉及的关键技术.
4.1  GCN 与CORA 数据集
近年来, 图上学习引起了人们的广泛关注. 通过从非结构化高维图中提取结构化、低维特征, 可以轻松地完成许多任务, 如节点分类[21]、链路预测[22]、图分类[23]、聚类[24]等. 在众多的具有代表性的学习方法中, GCN 能够比传统方法更好地学习特征[25-26].
尽管GCN 很受欢迎, 但是在训练时间和计算资源方面需要强大的算力. 目前如何利用FPGA 硬件加速训练的相关工作很少.
CORA 数据集是GCN 的一种应用, 该数据集共2 708个样本点, 每个样本点都是一篇科学论文, 所有样本点被分为8个类别. 每篇论文都由一个1 433维的词向量表示, 所以, 每个样本点具有1 433个特征向量, 特征向量为0或1, 共有5 429个节点边.
(1)()()Re LU()i i i +=X LX W
(1) 其中, X 为特征矩阵; L 为拉普拉斯矩阵,
27082708
⨯∈L
, 一般情况为11
22
-
-D
AD 或1-D A , D
为节点图的度矩阵; A 为节点图的邻接矩阵; ∈X
27081433⨯ ; 1433⨯∈f W  为权重矩阵; f 为层数.
矩阵LX 在经过数据流图的分析后, 有最多2 708×2 708×1 433个可以并行化的操作, 即第1个周期执行2 708×2 708×1 433次乘法, 在之后的周期对结果进行累加.
4.2  可加速部分的提取
以式(1)为例, 特征矩阵X 与权重矩阵W 的相乘为主要耗时部分. 该部分是由大量的非0数进行乘和累加运算, 运算量较大, 并且具有大量可以并行化的操作, 即GCN 传播公式中X 矩阵与W 矩阵相乘适合于硬件上的加速.
GCN 的运算量很大, 一般的FPGA 开发板不足以提供相应的硬件资源, 所以要对GCN 算法先进行算法层面的划分, 如将GCN 训练切割成许多小的运算, 加速器在进行每个小运算时提取该运算的全部节点数据, 以这种方式来降低在开发板资源上开销. 这种在算法层面分解的方式已在以往的设计中取得了很好的效果[27-28].
GCN 在硬件加速上的重点应该在稠密矩阵的乘法运算中. 针对稠密矩阵的乘法运算, 本文不采取基于节点的关联性进行分解. 因为基于节点关联性的分解主要应用于非欧几里得空间的不规则图, 在欧几里得空间的规则图上不具备可推广性. 本文采用一般的分块矩阵乘法运算.
分块矩阵乘法: 设A 为m l ⨯阶矩阵, B 为
l n ⨯阶矩阵, 即A 的列数等于B 的行数, 分块四轮动平衡
[,]()u v s r ⨯=A A , [, ]()v w r t B ⨯=B , 即A 的列分块法等
于B 的行分块法. 则A 与B 的乘积为s t ⨯阶分块矩阵
[,][,][,]=1=r
u w u v v w v ∑C A B
(2)
其中, 1,2,,;1,2,,u s w t ==  .
4.3  GCN 模型编译器
矩阵乘法分块进行模型编译器的处理后, 式(2)的数据流图如图6所示. 该算法的最大并行度在第2周期, 横向并行化操作次数为r u v w ⨯⨯⨯, 纵向周期为M +m , 横向并行化操作次数的r 参数会随着原矩阵的改变而改变. 在GCN 中该参数很大, 本文期望将最大并行度稳定在一定范围内, 并且可以自定义配置, 故对TABLA 的数据流图的生成方式进行修改. 将式(2)的数据流图的最大并行度通过矩阵分解设置为u v w ⨯⨯, 周期设置为×+M r m , u v w ⨯⨯

本文发布于:2023-06-25 18:52:58,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1054667.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:学习   节点   算法   运算
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图