问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一种神经网络矩阵乘法加速器及其部署方法

创作时间:
作者:
@小白创作中心

一种神经网络矩阵乘法加速器及其部署方法

引用
1
来源
1.
https://www.xjishu.com/zhuanli/55/202411806772.html

本发明涉及人工智能的神经网络推理计算领域,特别是一种神经网络矩阵乘法加速器,及其部署方法。

背景技术

  1. 随着数字信号处理(digital signal processing,dsp)技术的发展,矩阵乘法已成为该领域中一项基础且关键的操作。特别是在深度学习领域,矩阵乘法是实现各种神经网络算法模型的核心。传统的cpu和gpu虽然能够处理这些运算,但随着模型规模的不断扩大,其性能瓶颈日益凸显。因此,为了提高计算效率,非结构化裁剪技术和配套的硬件加速器设计应运而生。

  2. 非结构化裁剪技术是对深度学习模型中的权重进行逐个剪枝,与结构化裁剪相比,它能够在较少牺牲模型性能的前提下,实现更高的压缩比和加速效果。这种裁剪方式直接修改权重,使得裁剪后的0值分布几乎随机,没有规律可循。尽管非结构化裁剪在部署上可能较为复杂,但它提供了更大的灵活性,允许针对特定应用进行定制化的优化。

  3. 然而,非结构化裁剪后的矩阵具有高度的随机性,这要求硬件平台能够高效地处理裁剪后的矩阵运算。传统的cpu和gpu在处理这类运算时,由于其架构并非专为该结构矩阵设计,因此无法充分发挥非结构化裁剪的优势。这就凸显了设计专门硬件加速器的必要性。

  4. 定制化的硬件加速器能够针对特定的算法需求进行定制化设计,以实现最大化的性能和效率。通过利用脉动阵列等技术,硬件加速器可以高效地进行并行处理,提高吞吐率。此外,通过优化硬件设计,还可以降低运算过程中的功耗,使其适用于对能效比有严格要求的应用场景。更重要的是,通过对脉动阵列技术进行改进,硬件加速器可以专门设计来支持裁剪后的矩阵的运算,从而进一步提高计算效率。

  5. 文献(xu r,ma s,wang y,et al.cmsa:configurable multi-directionalsystolic array for convolutional neural networks[c]//2020ieee 38thinternational conference on computer design(iccd).ieee,2020:494-497)提出了一种用于卷积神经网络的脉动阵列运算硬件加速器,通过可配置输入输出方向的运算单元(process element,pe),该加速器可在普通卷积和逐通道卷积运算中获得更好的性能,但没有对于量化和剪枝的针对性设计;此外,专利cn116820743a与cn118797227a均是对稀疏矩阵的乘法进行优化的方法,但没有涉及非结构化裁剪的稠密矩阵的运算调度。

技术实现思路

  1. 为方便后文的叙述,此处列出本文所使用的所有符号及其含义:

  2. 续表

  3. 本发明旨在针对上述现有的问题,提出一种新的矩阵乘法硬件加速器,能够在同一套硬件结构下,进行任意掩码的矩阵乘法运算部署及优化,同时加入统一缓存系统,以减小加速器硬件对内存的需求。本发明为解决上述问题采用以下技术方案:

  4. 根据本发明提出的一种基于脉动阵列的矩阵乘法加速器,包括脉动阵列计算模块,控制指令链模块,以及统一缓存及内存读写模块;其中,

  5. 控制指令链模块,用于接受cpu的控制操作,协调各个模块并行运算时的同步问题;

  6. 统一缓存及内存读写模块,用于从内存读取、暂存各个配置项及输入矩阵,以及向内存写入输出矩阵;

  7. 脉动阵列计算模块,由可配置的r行c列改进pe,以及输入同步模块,输出同步模块,重排序模块组成,用于接受来自统一缓存模块的pe配置项和输入矩阵,配置项在加载入pe模块后停驻,输入矩阵在pe模块间流动,与配置项中的权重进行乘法运算,输出结果在pe模块中向与输入正交的方向流动,输出至输出同步模块。其中,

  8. 脉动阵列计算模块中的输入同步模块,用于将同一拍的输入进行不同的延时,以匹配脉动阵列的时序要求;

  9. 脉动阵列计算模块中的输出同步模块,用于接受来自统一缓存模块的同步延迟配置项,并将脉动阵列输出结果的每一行进行不同周期的延时,形成输出矩阵,送至重排序模块;

  10. 脉动阵列计算模块中的重排序模块,用于接受来自统一缓存模块的排序配置项,以硬件并行双调排序的方式进行输出矩阵的行重排列,将排序结果输出至统一缓存;

  11. 脉动阵列计算模块中的改进pe,在传统的权重固定脉动阵列pe模块设计基础上,加入了输入流水路径上用于对输入数据寄存器进行旁路的流水旁路控制寄存器,以及同时控制加法器部分和输入端、部分和输出寄存器的计算旁路控制寄存器,两个旁路控制寄存器有效时,相应寄存器的输出与输入短接且使能端无效,相应输入端输入逻辑0。

  12. 作为本发明所述的矩阵乘法加速器的脉动阵列中pe控制寄存器的配置值计算方法,通过对非结构化裁剪后的权重矩阵进行行重排列和流水延时计算,得到pe中计算旁路寄存器及流水旁路寄存器的值,包括如下步骤:

  13. 步骤1、根据原始权重矩阵worg计算原始掩码矩阵morg;

  14. 步骤2、计算原始掩码矩阵morg每一行对应的排序权重bin(i)(1≤i≤r);

  15. 步骤3、基于排序权重bin(i)计算矩阵行交换索引值ki(1≤i≤r);

  16. 步骤4、根据矩阵行交换索引值ki将原始掩码矩阵morg和原始权重矩阵worg的对应行进行重排序,得到新的掩码矩阵m和权重矩阵w;

  17. 步骤5、对步骤4得到的掩码矩阵m和权重矩阵w进行流水延时计算,得到初始延时矩阵d;

  18. 步骤6、根据实际芯片中pe的物理特性,对步骤5得到的初始延时矩阵d进行时序修正,得到修正后的延时矩阵d′;

  19. 步骤7、根据步骤6得到的修正后的延时矩阵d′,计算对应每个pe中计算旁路寄存器的值的计算旁路矩阵bc及对应每个pe中流水旁路寄存器的值的流水旁路矩阵bf。

  20. 作为本发明所述的矩阵乘法加速器的重排序模块的排序配置项的计算方案,依据pe控制寄存器的配置值计算方法中步骤3得到的行交换索引值ki,对其进行2的整数次幂补齐和排序,通过记录对补齐后的索引值排序时每次比较时进行交换与否,得到重排序模块的排序配置项。

  21. 作为本发明所述的矩阵乘法加速器的调度方案,将输入和权重矩阵根据脉动阵列硬件大小进行分块后,对权重的每一块子矩阵,预先计算pe中两配置寄存器的值,和重排序模块排序配置项;实际计算时,依次枚举每个分块,首先将权重以及预先计算的各个配置项加载进对应硬件,然后向脉动阵列的输入端送入本输入子矩阵,从重排序模块处接受本次输出。

  22. 本发明的优点主要包括:

  23. 1.本发明方法具备通用性,能够在同一个硬件加速器结构下,通过分块计算任意大小的稠密矩阵乘法;

  24. 2.本发明能有效利用fpga高并发的特性,通过利用加速器内部各总线的高位宽及各模块的高度并行,可以显著减少矩阵乘法计算时间;

  25. 3.本发明通过预处理非结构化剪枝后的权重矩阵,并在计算时旁路部分流水寄存器,可以在进行神经网络计算推理时,达到比相同资源使用量、相同频率的相同硬件结构非旁路时计算总耗时更短的效果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号