aclnnNormRopeConcat
产品支持情况
功能说明
接口功能:(多模态)transfomer注意力机制中,针对query、key和Value实现归一化(Norm)、旋转位置编码(Rope)、特征拼接(Concat):
- 归一化(Norm)当前支持层归一化(LayerNorm)和带仿射变换参数层归一化(AFFINE LayerNorm)类型。
- 旋转位置编码(Rope)支持Interleave和Half类型。
- 特征拼接(Concat)支持在sequence维度上进行拼接,拼接有顺序区别。
计算公式(以Query(视频)和EncoderQuery(文本)为例):
说明:
输入输出布局如下:输入
[object Object]的shape为[object Object],输出[object Object]的shape为[object Object],其中 B为batch,S为sequenceLen,N为headNum,D为headDim。LayerNorm有三种模式(
[object Object]):[object Object],其中: 当[object Object]时:当
[object Object]时当
[object Object]时,在上面的基础上Concat指在sequence维度上进行拼接,拼接有顺序区别(
[object Object]),当[object Object]时,在前,当[object Object]时,在后。RoPE有三种模式(
[object Object]):[object Object],其中当[object Object]时直接输出不做变换,其余情况参考如下:[object Object]RoPE的输入
[object Object]的shape为[object Object],其中当场景为训练时,会输出
[object Object]供后续反向使用。
函数原型
每个算子分为,必须先调用“aclnnNormRopeConcatGetWorkspaceSize”接口获取入参并根据计算流程计算所需workspace大小,再调用“aclnnNormRopeConcat”接口执行计算。
[object Object]
[object Object]
aclnnNormRopeConcatGetWorkspaceSize
aclnnNormRopeConcat
约束说明
- query、key、value、encoderQuery、encoderKey、encoderValue数据类型需一致。
- headDim长度在[1~1024]间,且为偶数。
- seqRope长度大小在[1~Min(seqQuery+seqEncoderQuery, seqKey+seqEncoderKey)]之间。
调用示例
[object Object]