代码拉取完成,页面将自动刷新
同步操作将从 Ascend/MindSpeed 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
npu_rotary_position_embedding(x, cos, sin, mode=0)
输入:
输出:
属性:
输入:
输出:
属性:
输入 | RotateHalf(mode: 0) | RotateInterleaved(mode: 1) |
---|---|---|
x | layout支持: BNSD、BSND、SBND; B,N < 1000; D < 2000,且为2的倍数; 反向算子中,当需要计算cos/sin的反向梯度时,B*N <= 1024 |
layout支持: BNSD、BSND、SBND; B * N <=20; D <= 256, 且D为32的倍数; |
cos | 数据范围:[-1, 1]; 对应x layout的支持情况: x为BNSD: 11SD、B1SD、BNSD; x为BSND: 1S1D、BS1D、BSND; x为SBND: S11D、SB1D、SBND. |
数据范围:[-1, 1]; 对应x layout的支持情况: x为BNSD: 11SD; x为BSND: 1S1D; x为SBND: S11D. |
sin | 同cos | 同cos |
备注:反向算子暂不支持确定性计算。
RotateInterleaved模式会随后续泛化支持逐步放宽输入约束限制。
import os
import torch
import torch_npu
import numpy as np
import math
from ascendspeed.ops import npu_rotary_position_embedding
x = np.random.uniform(-2, 2, (4, 8192, 4, 128))
cos = np.random.uniform(-1, 1, (1, 8192, 1, 128))
sin = np.random.uniform(-1, 1, (1, 8192, 1, 128))
x_npu = torch.from_numpy(x).float().npu()
cos_npu = torch.from_numpy(cos).float().npu()
sin_npu = torch.from_numpy(sin).float().npu()
x_npu.requires_grad = True
cos_npu.requires_grad = True
sin_npu.requires_grad = True
# 正向接口案例
result = npu_rotary_position_embedding(x_npu, cos_npu, sin_npu, 0)
# 反向接口案例
result.backward(torch.ones_like(result).npu())
x_npu.grad
cos_npu.grad
sin_npu.grad
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。