| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 |
RmsNorm算子样例
概述
样例概述:本样例介绍了利用ATVOSS实现RmsNorm单算子并完成功能验证
- 算子功能:RmsNorm算子是大模型常用的归一化操作,相比LayerNorm算子,其去掉了减去均值的部分
- 调用方式:Kernel直调
样例支持的产品
- Ascend 950PR/Ascend 950DT
算子描述
-
算子数学计算公式:
RmsNorm(xi)=xiRms(x)gi, where Rms(x)=1n∑i=1nxi2\operatorname{RmsNorm}(x_i)=\frac{x_i}{\operatorname{Rms}(\mathbf{x})} g_i, \quad \text { where } \operatorname{Rms}(\mathbf{x})=\sqrt{\frac{1}{n} \sum_{i=1}^n x_i^2}
-
算子规格:
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| in1 | 输入 | 表示进行归一化计算的输入。公式中的`x`。 | float | ND |
| in2 | 输入 | 表示进行归一化计算的缩放因子(权重),公式中的`g`。 | float | ND |
| out | 输出 | 表示进行归一化后的最终输出,公式中的`RmsNorm(x)`。 | float | ND |
- 当前只支持二维输入
- 总的输入Shape(M, N)要满足:
- M < 8160,N <= 7168
- N需要32元素对齐
- Tile块的Shape(m, n),要满足n = N,m * n <=7168
- 目前只支持float类型
目录结构
| 文件名 | 描述 |
|---|---|
| rms_norm.cpp | RmsNorm样例算子代码实现 |
| CMakeLists.txt | RmsNorm样例算子的编译构建文件 |
| README.md | RmsNorm样例算子的说明文档 |
RmsNorm样例算子的编译和运行
- 编译 在代码仓根目录下执行:
bash scripts/build.sh -DSOC=ascend950 rms_norm
- 运行 在代码仓目录下执行:
output/bin/rms_norm --help // 查看帮助
output/bin/rms_norm --shape=16,32 // 运行样例