一种基于Softmax运算的硬件加速器、神经网络处理器及芯片的制作方法
本技术涉及神经网络模型计算的硬件加速,具体而言,涉及一种基于softmax运算的硬件加速器、神经网络处理器及芯片。
背景技术:
1、softmax是深度神经网络中广泛使用的算子,尤其在transformer架构的注意力机制中扮演关键角色。其数学表达式为:;该计算包含求最大值、指数运算、求和归一化等多个子步骤,各子步骤之间存在严格的数据依赖关系,即后一步骤的计算必须等待前一步骤的结果。
2、在相关npu硬件架构中,softmax的计算通常被拆分为4-5个独立的计算任务(job),每个job由不同的执行单元依次完成,具体流程为:job0计算最大值,job1计算指数偏移,job2计算指数和,job3计算倒数,job4完成归一化乘法。
3、相关技术存在以下缺陷:job数量多,调度开销大,每个job的启动、调度、同步均消耗控制资源;数据反复搬运,各job之间通过存储器读写传递中间结果,消耗大量存储器带宽;执行单元利用率低,各执行单元在等待前置job完成时处于空闲状态;整体计算延迟高,影响transformer等模型的推理性能。
技术实现思路
1、本技术实施例的目的在于提供一种基于softmax运算的硬件加速器、神经网络处理器及芯片,旨在解决相关技术中softmax计算job数量多、访存开销大、执行单元利用率低的问题,用以实现减少任务调度和访存开销,提升计算效率的技术效果。
2、本技术实施例第一方面提供了一种基于softmax运算的硬件加速器,所述硬件加速器包括:
3、执行单元流水线,包括数据运算单元和张量引擎,所述数据运算单元用于执行第一计算任务,所述张量引擎用于执行第二计算任务,所述第一计算任务和所述第二计算任务共同涵盖求最大值运算子步骤、指数运算子步骤、求和运算子步骤、求倒数运算子步骤、以及归一化运算子步骤;
4、所述数据运算单元内部包括树形比较器阵列和repeat电路,所述树形比较器阵列用于对输入数据的每一行进行并行比较,得到每行的最大值;所述repeat电路用于将每行的最大值复制为与所述输入数据相同形状后写回片上存储器;所述片上存储器的端口处设置有近存计算单元,所述近存计算单元用于在每行的最大值写回所述片上存储器的过程中,以存储器接口满带宽从所述片上存储器读出所述输入数据并执行减法运算,得到差值数据,并将所述差值数据写回所述片上存储器;
5、所述张量引擎内部包括查表单元、规约单元、第一写数据通路、第二写数据通路、以及多路选择器,所述多路选择器用于在softmax模式下将数据通路切换为:输入数据依次经所述查表单元进行指数查表后,一路经所述第一写数据通路输出指数值,另一路经所述规约单元进行求和运算后经所述第二写数据通路输出指数和。
6、在上述实现过程中,通过将softmax计算的全部子步骤融合为少量计算任务,由数据运算单元和张量引擎分别执行,并在数据运算单元中设置树形比较器阵列和repeat电路、在片上存储器端口处设置近存计算单元、在张量引擎中设置可切换数据通路的多路选择器及第二写数据通路,从而将相关技术中需要4至5个独立job的softmax计算缩减为少量job,减少了任务调度次数和同步开销;同时,近存计算单元在最大值写回存储器的过程中随路完成减法运算,消除了最大值中间结果的写回再读取操作,降低了存储器带宽消耗;此外,多路选择器使张量引擎能够在不同模式之间灵活切换,在实现softmax加速的同时最大程度复用了现有硬件资源,避免了为softmax新增大量专用运算单元所带来的面积开销。
7、进一步地,所述数据运算单元在处理第i+1行数据的最大值求取和减法运算时,所述张量引擎同步处理第i行数据的指数查表和规约求和运算;i为非负整数,且i+1小于总行数。
8、在上述实现过程中,通过限定数据运算单元在处理第i+1行数据时张量引擎同步处理第i行数据,构建了两级流水线并行方案,使两个执行单元在不同行数据上重叠执行,隐藏了因数据依赖导致的等待时间,提升了硬件利用率和计算吞吐量。
9、进一步地,所述树形比较器阵列用于将每行的数据元素按照预设数量分组,各组内部经多级两两比较得到各组最大值,再经一级比较将各组的最大值进行比较,得到每行的一个标量最大值。
10、在上述实现过程中,通过将每行数据元素按照预设数量分组、各组内部经多级两两比较得到组最大值、再经一级比较得到行最大值的树形归约结构,降低了最大值求取的时间复杂度,在硬件面积与计算速度之间实现了平衡。
11、进一步地,所述片上存储器为ocm片上存储器,所述近存计算单元设置于所述ocm片上存储器的数据端口处,减法器位于所述ocm片上存储器的附近。
12、在上述实现过程中,通过将近存计算单元设置于ocm片上存储器的数据端口处、减法器位于ocm物理近旁,使读原始数据、减最大值、写回差值的全过程在存储器端口附近以接口满带宽完成,不占用数据运算单元的核心计算通路,既避免了最大值中间结果通过片上网络长距离搬运至远端执行单元再写回的往返开销,又使数据运算单元在将最大值写回ocm后即可立即开始下一行数据的处理,与减法运算并行执行,最大程度释放了存储器带宽并消除了执行单元的等待时间。
13、进一步地,所述多路选择器设置于所述查表单元的输入端,所述多路选择器的控制端连接至job配置寄存器,所述多路选择器包括第一输入端、第二输入端、以及输出端,所述第一输入端连接所述张量引擎的数据输入端口,所述第二输入端连接所述规约单元的输出端,所述多路选择器的输出端连接所述查表单元的输入端;
14、当控制位处于第一状态时,所述多路选择器选择所述第一输入端连通至所述查表单元的输入端,以使输入数据送入所述查表单元进行指数查表,查表结果经所述第一写数据通路输出,所述查表单元的输出送入所述规约单元进行求和运算后经所述第二写数据通路输出;
15、当所述控制位处于第二状态时,所述多路选择器选择所述第二输入端连通至所述查表单元的输入端,以使输入数据经过所述规约单元处理后送入所述查表单元进行查表,查表结果经所述第一写数据通路输出。
16、在上述实现过程中,通过将多路选择器设置于查表单元输入端,并以job配置寄存器中的单个控制位实现两种数据通路的切换,使得张量引擎仅通过增设一个多路选择器和一路写数据通路即实现了指数查表与规约求和的单job融合,同时保留了teng对通用张量运算的完整支持,以极小的硬件面积增量换取了softmax专用计算与通用计算的双重能力。
17、进一步地,所述第一计算任务包括:所述数据运算单元对每一行数据求取最大值,经所述repeat电路复制为与所述输入数据相同形状后写回所述片上存储器,同时触发所述近存计算单元执行减法运算得到所述差值数据并写回所述片上存储器,所述差值数据作为所述第一计算任务的输出;
18、所述第二计算任务包括:所述张量引擎从所述片上存储器读取所述差值数据,按所述softmax模式执行指数查表和规约求和运算,输出所述指数值和所述指数和。
19、在上述实现过程中,界定了两个计算任务各自完成的子步骤边界和输出数据流向,使调度器能够以最少的信息配置完成两个job的下发,同时确保第一计算任务输出的差值数据在片上存储器中的存储位置与第二计算任务的读取地址之间形成确定性的数据流衔接,为流水线并行提供了时序保障。
20、进一步地,所述硬件加速器还包括:
21、求倒数与归一化执行单元,用于对所述指数和求取倒数,并将所述指数值与倒数相乘,得到softmax归一化结果。
22、在上述实现过程中,通过设置独立的求倒数与归一化执行单元,将softmax计算中的求倒数和归一化乘法两个子步骤从张量引擎中分离出来由专用硬件完成,使得张量引擎在完成指数查表和规约求和输出后即可开始下一批数据的处理,无需等待求倒数和归一化操作完成。
23、进一步地,所述输入数据的形状为(m,n);其中,m为批处理维度,n为序列长度维度,每行的n个数据元素被分成多批输入所述树形比较器阵列。
24、在上述实现过程中,各批数据依次进入比较器阵列进行组内归约、各组最大值再经末级比较得到行最大值,当n远大于预设分组数量时,这种分批处理方式使有限的比较器硬件资源能够处理任意长度的序列,能够适配transformer中不同的序列长度配置,有良好的可扩展性。
25、本技术实施例第二方面提供了一种神经网络处理器,包括第一方面任一所述的硬件加速器。
26、本技术实施例第三方面提供了一种芯片,所述芯片上集成有第一方面任一所述的硬件加速器,或第二方面所述的神经网络处理器。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com