CANN深度卷积算子评测
DepthwiseConv2D 算子 API 描述【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench1. 算子简介二维深度卷积运算。主要应用场景MobileNet、EfficientNet 等轻量级网络中的深度可分离卷积边缘设备上的高效特征提取图像处理中的逐通道滤波操作算子特征难度等级L3Contraction三输入特征图、卷积核、偏置单输出支持分组卷积和膨胀卷积输入 x 为 [N, C_in, H, W]卷积核 weight 为 [C_out, 1, K_h, K_w]2. 算子定义数学公式$$ y \text{bias} \text{weight} * x $$深度卷积对输入的每个通道分别使用独立的卷积核进行卷积运算再加上偏置。与标准卷积不同深度卷积中 groups 等于输入通道数每个通道独立计算。3. 接口规范算子原型cann_bench.depthwise_conv2_d(Tensor x, Tensor weight, Tensor bias, int[] kernelSize, int[] stride, int[] padding, int[] dilation, int groups) - Tensor y输入参数说明参数类型默认值描述xTensor必选输入特征图shape 为 [N, C_in, H, W]weightTensor必选卷积核shape 为 [C_out, 1, K_h, K_w]biasTensor必选偏置kernelSizeint[]必选卷积核大小strideint[]必选步长paddingint[]必选填充dilationint[]必选膨胀率groupsint必选分组数输出参数Shapedtype描述y由输入尺寸、卷积核、步长、填充和膨胀率决定与输入 x 相同输出特征图数据类型输入 (x, weight, bias) dtype输出 dtypefloat16float16float32float32bfloat16bfloat16规则与约束x 的 shape 格式为 [N, C_in, H, W]weight 的 shape 格式为 [C_out, 1, K_h, K_w]每个通道使用独立的卷积核x、weight、bias 的 dtype 须一致kernelSize 指定卷积核大小stride 指定卷积步长padding 指定填充dilation 指定膨胀率groups 指定分组数深度卷积中通常 groups C_in4. 精度要求采用生态算子精度标准进行验证。误差指标平均相对误差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 DepthwiseConv2D算子Torch Golden参考实现 二维深度卷积运算 公式: y bias weight * x def depthwise_conv2_d( x: torch.Tensor, weight: torch.Tensor, bias: torch.Tensor, kernelSize: list, stride: list, padding: list, dilation: list, groups: int ) - torch.Tensor: 二维深度卷积运算 公式: y bias weight * x Args: x: 输入特征图 weight: 卷积核 bias: 偏置 kernelSize: 卷积核大小 stride: 步长 padding: 填充 dilation: 膨胀率 groups: 分组数 Returns: 输出特征图 stride_val (stride[0], stride[1]) padding_val (padding[0], padding[1]) dilation_val (dilation[0], dilation[1]) y torch.nn.functional.conv2d(x, weight, bias, stridestride_val, paddingpadding_val, dilationdilation_val, groupsgroups) return y6. 额外信息算子调用示例import torch import cann_bench x torch.randn(1, 64, 56, 56, dtypetorch.float16, devicenpu) weight torch.randn(64, 1, 3, 3, dtypetorch.float16, devicenpu) bias torch.randn(64, dtypetorch.float16, devicenpu) y cann_bench.depthwise_conv2_d(x, weight, bias, kernelSize[3, 3], stride[1, 1], padding[1, 1], dilation[1, 1], groups64)【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考