GroupNorm 算子 API 描述【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench1. 算子简介计算分组归一化。主要应用场景计算机视觉模型中的归一化层ResNeXt、EfficientNet 等当 batch size 较小时替代 BatchNormGroupNorm 不依赖 batch 统计量生成模型GAN、Diffusion Model中的归一化层算子特征难度等级L2Normalization三输入x、gamma、beta单输出涉及分组、均值、方差、归一化、仿射变换等多步计算将通道维度分为 num_groups 组每组内独立计算均值和方差2. 算子定义数学公式基本公式$$ y \frac{x - \mu}{\sqrt{\sigma^2 \epsilon}} \cdot \gamma \beta $$其中均值和方差按组计算$$ \mu_g \frac{1}{|S_g|}\sum_{i \in S_g} x_i, \quad \sigma_g^2 \frac{1}{|S_g|}\sum_{i \in S_g}(x_i - \mu_g)^2 $$其中S_g为第 g 组所包含的元素集合同组通道的所有空间位置num_groups组数C 必须能被 num_groups 整除gamma和beta分别为逐通道的缩放和偏置参数shape 为 (C,)epsilon为数值稳定性参数防止除零3. 接口规范算子原型cann_bench.group_norm(Tensor x, Tensor gamma, Tensor beta, int num_groups, float epsilon) - Tensor y输入参数说明参数类型默认值描述xTensor必选输入张量shape 为 (N, C, ...)gammaTensor必选缩放参数shape 为 (C,)betaTensor必选偏置参数shape 为 (C,)num_groupsint必选分组数epsilonfloat1e-5数值稳定性参数输出参数Shapedtype描述y与输入 x 相同与输入 x 相同分组归一化后的张量数据类型x dtypegamma dtypebeta dtype输出 dtypefloat16float16float16float16float32float32float32float32bfloat16bfloat16bfloat16bfloat16规则与约束x 的 shape 为 (N, C, ...) 或 (N, C)其中 N 为 batch sizeC 为通道数C 必须能被 num_groups 整除gamma 和 beta 的 shape 均为 (C,)dtype 需与 x 一致num_groups1 时等价于 LayerNorm对所有通道归一化num_groupsC 时等价于 InstanceNorm每个通道独立归一化需注意数值稳定性当组内方差极小时归一化结果可能不稳定4. 精度要求采用生态算子精度标准进行验证。误差指标平均相对误差MERE采样点中相对误差平均值$$ \text{MERE} \text{avg}(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)\text{1e-7}}) $$最大相对误差MARE采样点中相对误差最大值$$ \text{MARE} \max(\frac{\text{abs}(actual - golden)}{\text{abs}(golden)\text{1e-7}}) $$通过标准数据类型FLOAT16BFLOAT16FLOAT32HiFLOAT32FLOAT8 E4M3FLOAT8 E5M2通过阈值(Threshold)2^-102^-72^-132^-112^-32^-2当平均相对误差 MERE Threshold最大相对误差 MARE 10 * Threshold 时判定为通过。5. 标准 Golden 代码import torch GroupNorm 算子 Torch Golden 参考实现 计算分组归一化 公式: y (x - mean) / sqrt(var eps) * gamma beta 参考 PyTorch API: torch.nn.functional.group_norm https://pytorch.org/docs/stable/generated/torch.nn.functional.group_norm.html Parameters: - x: (N, C, ...) 输入张量Nbatch size, C通道数 - gamma: (C,) 缩放参数 - beta: (C,) 偏置参数 - num_groups: int - 分组数C 必须能被 num_groups 整除 - epsilon: float, 默认 1e-5 - 数值稳定性参数 def group_norm( x: torch.Tensor, gamma: torch.Tensor, beta: torch.Tensor, num_groups: int, epsilon: float 1e-5 ) - torch.Tensor: 计算分组归一化 Args: x: 输入张量shape (N, C, ...) 或 (N, C) N batch size, C 通道数 C 必须能被 num_groups 整除 gamma: 缩放参数shape (C,) beta: 偏置参数shape (C,) num_groups: 分组数将 C 个通道分为 num_groups 组 每组内独立计算均值和方差 epsilon: 数值稳定性参数防止除零 默认值 1e-5 Returns: 分组归一化后的张量shape 与输入相同 Examples: x torch.randn(8, 32, 64, 64) gamma torch.ones(32) beta torch.zeros(32) y group_norm(x, gamma, beta, num_groups8, epsilon1e-5) y torch.nn.functional.group_norm( inputx, num_groupsnum_groups, weightgamma, biasbeta, epsepsilon ) return y6. 额外信息算子调用示例import torch import cann_bench x torch.randn(8, 32, 64, 64, dtypetorch.float32, devicenpu) gamma torch.ones(32, dtypetorch.float32, devicenpu) beta torch.zeros(32, dtypetorch.float32, devicenpu) y cann_bench.group_norm(x, gamma, beta, num_groups8, epsilon1e-5) y cann_bench.group_norm(x, gamma, beta, num_groups4, epsilon1e-5) y cann_bench.group_norm(x, gamma, beta, num_groups32, epsilon1e-5)【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考