InterleaveRope
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | × |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Kirin X90 处理器系列产品 | √ |
| Kirin 9030 处理器系列产品 | √ |
功能说明
-
算子功能:针对单输入 x 进行旋转位置编码。
-
计算公式:
q=reshape(x,[B,N,S,D//2,2])⋅transpose(−1,−2)⋅reshape([B,N,S,D])q = \text{reshape}(x, [B, N, S, D//2, 2]) \cdot \text{transpose}(-1, -2) \cdot \text{reshape}([B, N, S, D])
qembed=q⋅cos+RotateHalf(q)⋅sinq_{\text{embed}} = q \cdot \text{cos} + \text{RotateHalf}(q) \cdot \sin
其中:RotateHalf(q) 表示将 q 的 D 维后半部分元素移至前半部分并乘以 -1,后半部分用前半部分的值。
RotateHalf(q)i={−qi+D//2if i<D//2qi+D//2otherwise\text{RotateHalf}(q)_{\text{i}} = \begin{cases} -q_{i+D//2} & \text{if } i < D//2 \\ q_{i+D//2} & \text{otherwise} \end{cases}
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 表示待处理张量,对应公式中的 x。 | FLOAT16、BFLOAT16 | ND |
| cos | 输入 | 表示 RoPE 旋转位置的余弦分量,对应公式中的 cos。 | FLOAT16、BFLOAT16 | ND |
| sin | 输入 | 表示 RoPE 旋转位置的正弦分量,对应公式中的 sin。 | FLOAT16、BFLOAT16 | ND |
| y | 输出 | 表示旋转编码后的结果,对应公式中的 q_embed。 | FLOAT16、BFLOAT16 | ND |
- Kirin X90/Kirin 9030 处理器系列产品: 不支持BFLOAT16。
约束说明
- 该接口支持推理场景下使用。
- x,y 要求为 4 维张量,shape 为(B,N,S,D)。
- cos,sin 要求为 4 维张量,shape 为(B,N,S,D),S 可以为 1 或与 x 的 S 相同,数据类型、数据格式与 x 一致。
- 输入x、cos、sin 的 D 维度必须等于 64。
- cos、sin 的 N 维度必须等于 1。
- x、cos、sin、y 都不支持非连续的 Tensor。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_interleave_rope | 通过aclnnInterleaveRope接口方式调用InterleaveRope算子。 |