首页> 中国专利> 用于超大规模人工神经网络数值运算的并行计算加速方法

用于超大规模人工神经网络数值运算的并行计算加速方法

摘要

本发明公开了用于超大规模人工神经网络数值运算的并行计算加速方法,包括:S1,对大规模矩阵进行张量分解,转化为小规模张量;S2,将小规模张量分组进行并行运算得到一组新的张量,组间进行并行运算;组内的小规模张量先并行的两两缩并,再将结果并行缩并,直至每组得到新的张量;不同组的新的张量,构成一组新的张量;S3,将新的张量依照理论最优运算方案进行串行运算,将原本参与运算的第一矩阵得到的一组新的张量,依次进行串行缩并得到由第一矩阵元素重排形成的第一新张量;将第一新张量与原本参与运算的第二矩得到的一组新的张量,依次进行串行缩并得到第二新张量;以此类推,直至最后得到最终新张量;将最终新张量的元素重排为矩阵。

著录项

  • 公开/公告号CN112926732A

    专利类型发明专利

  • 公开/公告日2021-06-08

    原文格式PDF

  • 申请/专利权人 之江实验室;清华大学;

    申请/专利号CN202110259060.5

  • 发明设计人 李国齐;陈恒努;刘哲贤;周子栋;

    申请日2021-03-10

  • 分类号G06N3/063(20060101);G06N3/04(20060101);G06N3/08(20060101);

  • 代理机构33213 杭州浙科专利事务所(普通合伙);

  • 代理人杨小凡

  • 地址 310023 浙江省杭州市余杭区文一西路1818号人工智能小镇10号楼

  • 入库时间 2023-06-19 11:19:16

说明书

技术领域

本发明涉及神经网络技术领域,尤其是涉及一种用于超大规模人工神经网络数值运算的并行计算加速方法。

背景技术

随着深度学习的发展与大数据时代的到来,神经网络的模型越来越精细,性能也越来越卓越。然而,神经网络性能的提升往往伴随着规模的扩大与参数量的增加,硬件性能的提升速度无法满足神经网络模型对于计算能力日益庞大的需求,由此带来的存储资源和计算速度方面的问题也逐渐变得严峻,在各种便携式终端设备上的应用前景更是严重受限。通过张量分解将神经网络模型中的数据进行分解,将大规模矩阵转化为小规模的张量,将大规模的矩阵乘法运算转换为小规模的张量运算,可有效降低神经网络模型所需要的存储空间和运算时间。

现有的神经网络模型中的张量分解方法多种多样,传统的张量分解方法,例如CP分解,Tucker分解等,在模型规模较小时能取得良好的效果,但随着网络模型的增大,这些传统方法的局限性也逐渐暴露。对于大规模的神经网络而言,张量链式分解、多层塔克分解、张量环式(Tensor-Ring)分解等,这类用多个小规模张量来表示原来的大规模矩阵/张量的分解方法能取得极高的数据压缩比,是更加适宜的张量分解方法。

但值得一提的是,现有的张量分解方法在人工神经网络的中的应用以降低存储量为主。尽管在理论上,通过张量分解之后,计算复杂度和总计算量都有显著程度的降低,但原本能以极高的并行度进行的矩阵乘法会被转化为并行度较低的、串行步数较多的张量运算,因此在实际的硬件部署之后,实际的总时间开销可能会比原来更高。

发明内容

为解决现有技术的不足,在不影响神经网络性能的同时,实现降低存储数据量,提升运算速度的目的,本发明采用如下的技术方案:

用于超大规模人工神经网络数值运算的并行计算加速方法,包括如下步骤:

S1,对人工神经网络中的大规模数据进行张量分解,将大规模矩阵转化为小规模张量,存储复杂度能得到对数级的降低,能够大幅降低数据的存储量;

S2,将小规模张量分组进行并行运算,得到一组新的张量,使得张量规模增大而总数减少,在不影响数据压缩比的同时,以计算量增加的代价提高并行度,从而取得总计算时间的降低,从而实现硬件资源的充分利用和计算速度的进一步提升,包括如下步骤:

S211,组间进行并行运算;

S212,组内的小规模张量,先并行的两两缩并后,再将结果并行缩并,直至每组得到新的张量;

S213,不同组的新的张量,构成一组新的张量;

在人工神经网络的硬件部署中,为了取得最佳的数据压缩比而导致张量链式分解得到的小规模张量个数过多,在运算过程中会由于理论最优运算方案的串行特性以及参与运算的张量规模过小而导致硬件资源的极大浪费;通过张量分组并行计算得到新的张量,能在理论最优运算方案的基础上减少每个步骤中的串行步数,同时提高每个步骤的并行度,能够降低总计算时间,起到加速计算的作用;

S3,将新的张量依照理论最优运算方案进行串行运算,包括如下步骤:

S31,将原本参与运算的第一矩阵得到的一组新的张量,依次进行串行缩并,得到由第一矩阵元素重排形成的第一新张量;

S32,将第一新张量,与原本参与运算的第二矩得到的一组新的张量,依次进行串行缩并,得到第二新张量;

S33,将第二新张量,与原本参与运算的第三矩得到的一组新的张量,依次进行串行缩并,得到第三新张量,以此类推,直至最后得到最终新张量;

S34,将最终新张量的元素重排为矩阵,得到矩阵乘法的结果。

进一步地,所述原本参与运算的矩阵,参与的是乘法运算。

进一步地,所述步骤S2中对分解得到的张量进行分组,每个张量仅出现在一个组之中;同一组内的张量,在张量分解过程中的顺序是连续的;对于任意一组张量,其第一个张量和前一组张量的最后一个张量,以及其最后一个张量和后一组张量的第一个张量,在张量分解过程中的顺序是连续的;由个人经验选取第一组张量的数量,之后的每一组张量的数量,都按照以下规则进行选取,使得每组张量运算得到的新张量的规模尽量接近相同:

S221,首先选取和第一组相同的张量数量;

S222,若该组张量运算得到的新张量规模大于第一组张量运算得到的新张量规模,则将该组的张量数量逐个减少,直至该组张量得到的新张量规模第一次小于第一组张量运算得到的新张量规模为止,然后将当前张量的数量减一后定为该组张量的预计数量;

S223,若该组张量运算得到的新张量规模小于第一组张量运算得到的新张量规模,则将该组的张量数量逐个增加,直至该组张量得到的新张量规模第一次大于第一组张量运算得到的新张量规模为止,然后将当前张量的数量定为该组张量的预计数量;

S224,对于最后一组张量,若该组张量运算得到的新张量规模大于等于第一组张量运算得到的新张量规模的预设比例,则将当前所有组的预计数量定为最终每组的张量数量,若小于预设比例,则取消该组,将所有张量并入倒数第二组,得到一个新的最后一组张量;

S225,对于最后一组至第三组进行如下操作:若该组张量运算得到的新张量规模小于第一组张量运算得到的新张量规模,则将当前张量的数量定为最终该组的张量数量,否则将该组的张量从第一个开始依次移入前一组,直至该组张量得到的新张量规模第一次小于第一组张量运算得到的新张量规模为止,然后将当前张量的数量加一后定为该组张量的最终数量;

S226,对于第二组张量,若该组张量运算得到的新张量规模小于等于第一组张量运算得到的新张量规模的预设倍数,则将当前张量数量定为最终该组的张量数量,若大于预设倍数,建议重新选取第一组的张量数量。

所述步骤S224,所述预设比例为十分之一,所述步骤S226,所述预设倍数,是十倍。

进一步地,所述步骤S1中的大规模数据,是神经网络模型中的大规模且无严格精度要求的数据,包括权重、未标定的输入数据,以及其他容许一定程度误差的大规模数据。

进一步地,所述步骤S1中将神经网络模型中的权重矩阵进行张量分解,将超大规模矩阵乘法转化为小规模的张量运算,能显著地降低人工神经网络数值运算过程中的存储量与计算量。

进一步地,所述张量分解,包括张量链式(Tensor-Train)分解、分层塔克(Hierarchical Tucker)分解,能获得远大于传统方法的数据压缩比和运算加速效果,在此基础上,在矩阵经过张量链式分解转化为张量之后,能取得最佳计算复杂度的理论最优运算方案。

本发明的优势和有益效果在于:

本发明有效解决了目前大规模神经网络运算中,由于数据规模过大带来的硬件资源不足的问题,使得超大规模神经网络的硬件部署成为可能;本发明对权重数据的张量分解能更加有效地进行数据的特征提取,提升神经网络性能;本发明带来的巨大的数据量降低、计算加速和分布式计算的优势,可以将人工神经网络模型由服务器集群等云设备推向手机、智能终端等端设备;本发明具有很高的普适性,可广泛用于各种大规模人工神经网络,如长短时记忆神经网络、深度卷积网络、图神经网络、张量神经网络等。

附图说明

图1是本发明的方法流程图。

图2是本发明中张量分解示意图。

图3是本发明中分组并行示意图。

图4是本发明中理论最优方案示意图。

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

随着人工神经网络的发展,在性能飞速提升的同时,人工神经网络的规模也在不断扩大,不可避免的,在人工神经网络中对大规模矩阵乘法运算的需求也水涨船高。考虑到硬件固有的存储资源限制和运算速度限制,通常需要对人工神经网络运行过程中的大规模矩阵乘法进行加速。矩阵的张量分解是一种能对大规模矩阵运算进行高效的数据量压缩和计算加速的方法。通过将神经网络模型中的权重矩阵进行张量分解,将超大规模的矩阵数据近似转化为规模较小的张量数据,并将超大规模矩阵乘法转化为小规模的张量运算,能显著地降低人工神经网络数值运算过程中的存储量与计算量。

相比于传统的CP和Tucker张量分解方法,采用的张量链式(Tensor-Train)分解方法能获得远大于传统方法的数据压缩比和运算加速效果。在此基础上,提出在矩阵经过张量链式分解转化为张量之后,能取得最佳计算复杂度的理论最优运算方案。在人工神经网络的硬件部署中,为了取得最佳的数据压缩比而导致张量链式分解得到的小规模张量个数过多,在运算过程中会由于理论最优运算方案的串行特性以及参与运算的张量规模过小而导致硬件资源的极大浪费。

为解决这一问题,提出了一种用于超大规模人工神经网络数值运算的并行计算加速方法,在超大规模人工神经网络的数值运算中,将超大规模的矩阵乘法近似地转换为小规模张量的并行运算,从而完成计算过程的极大加速和存储资源的大幅降低。具体地,通过将小规模张量分组并行运算,实现硬件资源的充分利用和计算速度的进一步提升。主要过程包括:通过张量分解对人工神经网络中的大规模矩阵转化为小规模张量,将小规模张量进行分组并行运算,使得张量规模增大而总数减少,在不影响数据压缩比的同时,以计算量增加的代价提高并行度,从而取得总计算时间的降低,将得到的张量依照理论最优运算方案进行串行运算三个部分。

本方法通过转化大规模矩阵乘法为小规模张量运算,能够在不影响神经网络性能的同时,有效降低存储数据量,提升运算速度,尤其能够大幅提升规模大、稀疏性低的数据的运算效率。本方法可广泛应用于人工神经网络中的长短时记忆神经网络、深度卷积网络、图神经网络、张量神经网络等模型的数据压缩与并行加速,降低存储和计算资源消耗,提升模型计算速度。基于本方法带来的巨大的数据量降低、计算加速和分布式计算的优势,以上人工神经网络模型的相关应用,例如图像分类与识别、目标追踪与推荐系统等,将有希望从服务器集群这类昂贵且集中的云设备转移向手机、智能终端等廉价且便携的端设备,使人工智能应用更加亲近人类社会与日常生产生活。

如图1所示,对于人工神经网络模型中的大规模矩阵,可选地,包括权重、未标定的输入数据以及其他容许一定程度误差的大规模数据,将其进行张量分解得到多个小规模张量。将大规模矩阵或张量分解得到多个小规模张量的方法,可选地,可以是张量链式分解,也可以是分层塔克(Hierarchical Tucker)分解等。通过对大规模数据的张量分解,需要被存储的数据由原本的大规模矩阵数据变为了一些小规模张量数据,存储复杂度能得到对数级的降低,能够大幅降低数据的存储量。

对分解得到的张量进行分组,可选地,每组的张量个数可以相同,也可以不同;每个张量出现且仅出现在一个组之中;同一组内的张量在张量分解过程中的顺序是连续的,每组中的张量经过运算后得到一个新张量,新张量的规模尽量接近相同。对分组之后的张量进行并行运算以得到新的张量,可选地,对于不同的组之间,张量运算是并行的;对于同一组内的张量,张量运算也是并行的。

将得到的新的张量按照如下理论最优方案进行运算:

步骤一,将原本参与乘法运算的第一个矩阵通过张量分解所得到的张量依次进行运算,得到一个由该矩阵元素重排形成的张量;

步骤二,将该张量与原本参与乘法运算的第二个矩阵通过张量分解所得到的张量依次进行运算,得到一个新的张量;

步骤三,将该张量继续依次与原本参与乘法运算的各个矩阵通过张量分解所得到的张量依次进行运算,最后得到最终的张量;

步骤四,将该张量的元素进行重排为矩阵,得到矩阵乘法的结果。

依照理论最优方案进行运算,总计算复杂度能够降低一个数量级。

数值运算以两个矩阵的乘法为例,张量分解的方式以张量链式分解为例,原始的两个矩阵A、B大小分别为M×N和N×M,其中M=m

如图2所示,A、B经过张量分解分别得到2d个小规模张量

如图3所示,将小规模张量连续地每4个一组分组,并行地对多组中的张量进行缩并运算,而在计算每个组的张量时,也是先并行的两两缩并后再将结果缩并。最后得到共d/2个新的张量

如图4所示,依照理论最优方案对新的张量进行运算,具体而言为,先缩并

通过张量分组并行计算得到新的张量,能在理论最优方案的基础上减少每个步骤中的串行步数,同时提高每个步骤的并行度,能够降低总计算时间,起到加速计算的作用。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号