aclnnRotaryPositionEmbeddingV2
产品支持情况
功能说明
接口功能:执行单路旋转位置编码计算。
计算公式:
[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]、[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
不传入rotate参数(推荐half模式1D使用):
(1)half模式(mode等于0):
(2)interleave模式(mode等于1):
传入rotate参数时(由开发者生成rotate矩阵,参考调用示例生成部分):
rotate推荐使用场景
interleave模式,且B * N * S > 28800。
half模式仅在以下场景时推荐使用:输入矩阵x需要在最后一个维度切分多份时,每一份都需要调用aclnnRotaryPositionEmbedding接口进行旋转位置编码计算,可以通过构造旋转编码矩阵实现一次调用获得性能收益,以x的layout为BSND需要切分为3份为例: x切分为3份,,那么可以构造一个rotate矩阵,实现调用一次aclnnRotaryPositionEmbeddingV2接口完成x的旋转位置编码计算功能,rotate矩阵构造如下:
其中rotate1、rotate2、rotate3分别为x1、x2、x3的旋转编码矩阵,单个旋转矩阵构建参考调用示例。
函数原型
每个算子分为,必须先调用“aclnnRotaryPositionEmbeddingV2GetWorkspaceSize”接口获取入参并根据流程计算所需workspace大小,再调用“aclnnRotaryPositionEmbeddingV2”接口执行计算。
aclnnRotaryPositionEmbeddingGetWorkspaceSizeV2
参数说明
[object Object]参数mode约束:
- [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]、[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:0=half,1=interleave。V2接口不同mode参数约束和V1接口相同,开发者可以根据mode在调用示例的辅助矩阵rotate生成中选择合适的rotate生成方式。
参数rotate当前仅支持BFLOAT16类型。
返回值:
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
aclnnRotaryPositionEmbeddingV2
约束说明
[object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]、[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
输入张量x支持BNSD、BSND、SBND、TND排布。 输入张量x、cos、sin及输出张量y的D维度大小必须相同,满足D<896,且必须为2的倍数。 输入张量x和输出张量y的shape必须完全相同。 输入张量cos和sin的shape必须完全相同.
- half模式:
- B,N < 1000;
- 当x为BNSD时,cos、sin支持11SD、B1SD、BNSD
- 当(D/2)% (32/inputDtypeSize) == 0时,需满足B * N <= S * 8
- 当(D/2)% (32/inputDtypeSize) != 0时,需满足B * N * 2 <= (S + coreNum -1) / coreNum 或者 D >= 80
- 当x为BSND时,cos、sin支持1S1D、BS1D、BSND
- 当x为SBND时,cos、sin支持S11D、SB1D、SBND
- 当x为TND时,cos、sin支持T1D、TND
- interleave模式:
- B * N < 1000(N<1000当x为TND)
- 当x为BNSD时,cos、sin支持11SD
- 当x为BSND时,cos、sin支持1S1D
- 当x为SBND时,cos、sin支持S11D
- 当x为TND时,cos、sin支持T1D
- half模式:
调用示例
- 辅助矩阵rotate生成示例: