| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 10 天前 | ||
| 5 天前 | ||
| 3 个月前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 5 天前 | ||
| 8 个月前 | ||
| 1 个月前 |
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算子。 |