文件最后提交记录最后更新时间
1 个月前
15 天前
15 天前
15 天前
15 天前
5 个月前
1 个月前
README

GroupNormSiluQunat

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT x
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 x
Atlas 训练系列产品 ×

功能说明

  • 接口功能:计算输入self的组归一化,输出均值meanOut,标准差的倒数rstdOut,以及对silu的输出结果进行量化的结果out。

  • 计算公式:

    • GroupNorm:

      E[x]=xˉE[x] = \bar{x}代表xx的均值,Var[x]=1n∗∑i=1n(xi−E[x])2Var[x] = \frac{1}{n} * \sum_{i=1}^n(x_i - E[x])^2代表xx的方差,则

      {groupNormOut=x−E[x]Var[x]+eps∗γ+βmeanOut=E[x]rstdOut=1Var[x]+eps\left\{ \begin{array} {rcl} groupNormOut& &= \frac{x - E[x]}{\sqrt{Var[x] + eps}} * \gamma + \beta \\ meanOut& &= E[x]\\ rstdOut& &= \frac{1}{\sqrt{Var[x] + eps}}\\ \end{array} \right.

    • Silu:

      siluOut=groupNormOut1+e−groupNormOutsiluOut = \frac{groupNormOut}{1+e^{-groupNormOut}}

    • Quant:

      out=round(siluOut/quantScale)out = round(siluOut / quantScale)

参数说明

参数名 输入/输出 描述 使用说明 数据类型 数据格式 维度(shape) 非连续Tensor
self 输入 计算公式中的x。 - FLOAT16、BFLOAT16 ND 2-8,其中第0维为N,第1维为C
gamma 输入 公式中的γ。 数据类型与self保持一致,元素数量需与输入self的第1维度保持相同。 FLOAT16、BFLOAT16 ND 1
beta 输入 公式中的β。 数据类型与self保持一致,元素数量需与输入self的第1维度保持相同。 FLOAT16、BFLOAT16 ND 1
quantScale 输入 公式中的quantScale。 元素数量需为1或与输入self的第1维度保持相同。 FLOAT32 ND 1
group 输入 表示将输入self的第1维度分为group组。 group需可以整除self的第一维度 INT64 - - -
eps 输入 公式中的eps。 eps需要大于0 DOUBLE - - -
activateSilu 输入 是否开启silu计算。 当前仅支持开启。 BOOL - - -
out 输出 量化后的结果,公式中的out。 - INT8 ND 与self一致 x
meanOut 输出 公式中的meanOut。 数据类型与self保持一致,shape中N与self的第0维度保持一致。 FLOAT16、BFLOAT16 ND (N, group) x
rstdOut 输出 公式中的rstdOut。 数据类型与self保持一致,shape中N与self的第0维度保持一致。 FLOAT16、BFLOAT16 ND (N, group) x
workspaceSize 输出 返回需要在Device侧申请的workspace大小。 - - - - -
executor 输出 返回op执行器,包含了算子计算流程。 - - - - -

约束说明

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_group_norm_silu_quant.cpp 通过aclnnGroupNormSiluQuant.md接口方式调用GroupNormSiluQuant算子。