接口功能:推理网络为了提升性能,将sin和cos输入通过cache传入,执行旋转位置编码计算。该接口相较于接口,新增cacheMode参数,指示拼接cos和sin的方式:
计算公式:
1、mrope模式:positions的shape输入是[m, numTokens], m为mropeSection的元素数,支持3或4:
(1)cacheMode为0:
mropeSection的元素数为3:
mropeSection的元素数为4:
(2)cacheMode为1:
(1)rotate_half(GPT-NeoX style)计算模式:
(2)rotate_interleaved(GPT-J style)计算模式:
2、rope模式:positions的shape输入是[numTokens]:
(1)rotate_half(GPT-NeoX style)计算模式:
(2)rotate_interleaved(GPT-J style)计算模式:
每个算子分为,必须先调用“aclnnRopeWithSinCosCacheV2GetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器,再调用“aclnnRopeWithSinCosCacheV2”接口执行计算。
[object Object]
[object Object]
- 确定性计算:
- aclnnRopeWithSinCosCacheV2默认确定性实现。
- queryIn、keyIn、cosSinCache只支持2维shape输入。
- queryIn、keyIn、cosSinCache输入的数据类型需要保持一致。
- headSize:数据类型为BFLOAT16或FLOAT16时为32的倍数,数据类型为FLOAT32时为16的倍数。
- rotaryDim:始终小于等于headSize;数据类型为BFLOAT16或FLOAT16时为32的倍数,数据类型为FLOAT32时为16的倍数;mrope模式下应满足mropeSection所有元素累加和为rotaryDim值的一半。
- 输入tensor positions的取值应小于cosSinCache的0维maxSeqLen。
- mrope模式下,mropeSection:取值当前仅支持[16, 24, 24]、[24, 20, 20]、[8, 12, 12]和[16, 16, 16, 16]。
- mrope模式下,cacheMode仅支持0和1, 当mropeSection为[16, 16, 16, 16]时,仅支持0。
[object Object]