接口功能:完成chunk版的Gated Delta Rule计算。
计算公式:
Gated Delta Rule(门控Delta规则,GDR)是一种应用于循环神经网络的算子,也被应用于一种线性注意力机制中。在每个时间步 ,GDR根据当前的输入 、、、上一个隐藏状态 、衰减系数 以及更新强度 ,计算当前的注意力输出 和新的隐藏状态 ,其计算公式如下:
其中,,,,,,。
Chunked Gated Delta Rule是GDR的chunk版实现(),它通过将输入序列切块,实现了一定的并行效果,在长上下文场景其计算效率相对Recurrent Gated Delta Rule更高,适用于prefill阶段。输入一个长度为L的序列,该算子可以计算出每一步的输出 以及最终的状态矩阵 。
每个算子分为,必须先调用“aclnnChunkGatedDeltaRuleGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnChunkGatedDeltaRule”接口执行计算。
[object Object]
[object Object]
参数说明
[object Object]其中 表示batch size,令 表示第i个序列的长度,则 表示累积序列长度。 表示key的头数, 表示value的头数, 表示key的隐藏层维度, 表示value的隐藏层维度。
返回值
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
- 确定性计算:
- aclnnChunkGatedDeltaRule默认确定性实现。
- 维度约束:
- ,且
- ,
- ,
- 由于算法特性,用户需保障以下数值约束,否则计算结果可能出现溢出:
[object Object]