文件最后提交记录最后更新时间
9 个月前
8 个月前
5 个月前
5 个月前
5 个月前
10 个月前
6 个月前
README

Conv3DV2

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT √
Atlas A3 训练系列产品/Atlas A3 推理系列产品 √
Atlas A2 训练系列产品/Atlas A2 推理系列产品 √

功能说明

  • 算子功能:实现 3D 卷积功能。

  • 计算公式:

    • 假定输入(x)的 shape 是 (N,Cin,D,H,W)(N, C_{\text{in}}, D, H, W) ,(filter)的 shape 是 (Cout,Cin,Kd,Kh,Kw)(C_{\text{out}}, C_{\text{in}}, K_d, K_h, K_w),输出(y)的 shape 是 (N,Cout,Dout,Hout,Wout)(N, C_{\text{out}}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}})

    • 对于 INT8 类型的输入,输出将被表示为:

    out(Ni,Coutj)=bias(Coutj)+scale×∑k=0Cin−1filter(Coutj,k)⋆x(Ni,k) \text{out}(N_i, C_{\text{out}_j}) = \text{bias}(C_{\text{out}_j}) + \text{scale} \times \sum_{k = 0}^{C_{\text{in}} - 1} \text{filter}(C_{\text{out}_j}, k) \star \text{x}(N_i, k)

    • 对于其他数据类型的输入,输出将被表示为:

    out(Ni,Coutj)=bias(Coutj)+∑k=0Cin−1filter(Coutj,k)⋆x(Ni,k) \text{out}(N_i, C_{\text{out}_j}) = \text{bias}(C_{\text{out}_j}) + \sum_{k = 0}^{C_{\text{in}} - 1} \text{filter}(C_{\text{out}_j}, k) \star \text{x}(N_i, k)

    其中,⋆\star 表示卷积计算,支持空洞卷积、分组卷积。NN 代表 batch size,CC 代表通道数,DD、HH 和 WW 分别代表深度、高和宽,相应输出维度的计算公式如下:

    Dout=(D+pad_head+pad_tail−(dilation_d×(Kd−1)+1))/stride_d+1Hout=(H+pad_top+pad_bottom−(dilation_h×(Kh−1)+1))/stride_h+1Wout=(W+pad_left+pad_right−(dilation_w×(Kw−1)+1))/stride_w+1 D_{\text{out}} = (D + \text{pad\_head} + \text{pad\_tail} - (\text{dilation\_d} \times (K_d - 1) + 1)) / \text{stride\_d} + 1 \\ H_{\text{out}} = (H + \text{pad\_top} + \text{pad\_bottom} - (\text{dilation\_h} \times (K_h - 1) + 1)) / \text{stride\_h} + 1 \\ W_{\text{out}} = (W + \text{pad\_left} + \text{pad\_right} - (\text{dilation\_w} \times (K_w - 1) + 1)) / \text{stride\_w} + 1

参数说明

参数名 输入 / 输出 / 属性 描述 数据类型 数据格式
x 输入 公式中的输入张量 x。 FLOAT16、FLOAT、BFLOAT16、INT8、HIFLOAT8 NCDHW、NDHWC、NDC1HWC0
filter 输入 公式中的卷积权重张量 filter。 FLOAT16、FLOAT、BFLOAT16、INT8、HIFLOAT8 NCDHW、DHWCN、FRACTAL_Z_3D
bias 可选输入 卷积偏置张量 bias。 FLOAT16、FLOAT、BFLOAT16 ND
scale 可选输入 缩放因子张量 scale。 FLOAT ND
offset 可选输入 偏移张量 offset(未使用)。 FLOAT ND
offset_w 可选输入 量化偏移张量 offset_w(未使用)。 INT8 -
y 输出 公式中的输出张量 y。 FLOAT16、FLOAT、BFLOAT16、HIFLOAT8 NCDHW、NDHWC、NDC1HWC0
strides 属性 卷积扫描步长,stride_d ∈ [1,1000000],stride_h, stride_w ∈ [1,63]。 INT32 -
pads 可选属性 对输入的填充,pad_h, pad_w ∈ [0,255],paddingD ∈ [0,1000000]。 INT32 -
dilations 可选属性 卷积核中元素的间隔,dilation_h, dilation_w ∈ [1,255],dilation_d ∈ [1,1000000]。 INT32 -
groups 可选属性 从输入通道到输出通道的块链接个数,必须满足 groups × filter 的 in_channels 维度 = x 的 in_channels 维度。支持范围 [1, 65535]。 INT32 -
data_format 可选属性 输入数据格式,支持 "NCDHW"、"NDHWC"、"NDC1HWC0"。 STRING -
offset_x 可选属性 量化算法中的偏移 offset_x(未使用)。 INT32 -
pad_mode 可选属性 填充模式,支持 "SPECIFIC"、"SAME"、"VALID"。 STRING -
enable_hf32 可选属性 是否启用 HF32 计算,支持 true、false。 BOOL -
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品:
    • 不支持 HIFLOAT8 数据类型。
    • scale 和 offset 参数仅支持 FLOAT 类型。
    • 输入为 INT8 数据类型时,bias 为必选输入,groups 仅支持 1。
    • filter、y 不支持 DHWCN 数据格式。
    • 不支持 pad_mode 属性。
    • 当不满足 Pointwise 分支情况时,x 支持 NDC1HWC0,filter 支持 FRACTAL_Z_3D。

约束说明

  • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品:

    • filter 的 H、W 维度范围:[1,511]。
    • 不支持空 tensor。
    • 当groups为 1, dilation全为 1,padding全为 0,filter没有为 1 的维度,x的DHW小于 65536,bias为FLOAT时,会进入 Pointwise 分支,可以使用 NCDHW 格式。
    张量 x filter bias scale offset y
    数据类型 FLOAT16 FLOAT16 FLOAT16 FLOAT FLOAT FLOAT16
    BFLOAT16 BFLOAT16 FLOAT FLOAT FLOAT BFLOAT16
    FLOAT FLOAT FLOAT FLOAT FLOAT FLOAT
    INT8 INT8 FLOAT FLOAT FLOAT BFLOAT16
    数据格式 NCDHW、NDC1HWC0 NCDHW、FRACTAL_Z_3D ND ND ND NCDHW、NDC1HWC0
  • Ascend 950PR/Ascend 950DT:

    • 对于 x 输入,N 维度大小应该大于等于 0。D、H、W 维度大小应该大于等于 0(等于 0 的场景仅在输出 y 的 D、H、W 维度也等于 0 时支持)。C 维度大小应该大于等于 0(等于 0 的场景仅在输出 y 的任意维度也等于 0 时支持)。
    • 对于 filter 输入,H、W 的大小应该在 [1, 511] 的范围内。N 维度大小应该大于等于 0(等于 0 的场景仅在输入 bias、输出 y 的 N 维度也等于 0 时支持),C 维度大小的支持情况与输入 x 的 C 维度一致。
    张量 x filter bias scale y
    数据类型 FLOAT16 FLOAT16 FLOAT16 / FLOAT16
    BFLOAT16 BFLOAT16 BFLOAT16 / BFLOAT16
    FLOAT FLOAT FLOAT / FLOAT
    HIFLOAT8 HIFLOAT8 FLOAT / HIFLOAT8
    INT8 INT8 FLOAT/FLOAT16 FLOAT FLOAT16
    INT8 INT8 FLOAT/BFLOAT16 FLOAT BFLOAT16
    数据格式 NCDHW NCDHW ND / NCDHW
    NDHWC DHWCN ND / NDHWC
    NCDHW NCDHW ND ND NDHWC
  • x、filter、bias、scale、y 中每一组 tensor 的每一维大小都应不大于 1000000。

  • 当 x 数据类型为 INT8 时,x、filter 的数据格式仅支持 NCDHW,output 的数据格式仅支持 NDHWC。

  • groups ∈ [1, 65535]。

  • 如果任何参数超出上述范围,算子的正确性无法保证。

  • 由于硬件资源限制,算子在部分参数取值组合场景下会执行失败,请根据日志信息提示分析并排查问题。若无法解决,请单击 Link 获取技术支持。

调用说明

调用方式 调用样例 说明
aclnn调用 test_aclnn_conv3d_v2 通过 aclnnConvolution 接口方式调用 Conv3DV2 算子的非INT8数据类型计算。
aclnn调用 test_aclnn_quant_conv3d 通过 aclnnQuantConvolution 接口方式调用 Conv3DV2 算子的INT8数据类型计算。