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)⋅sin⁡q_{\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算子。