昇腾社区首页
中文
注册

torch_npu.contrib.module.QuantConv2d

功能说明

QuantConv2d是对torch_npu.npu_quant_conv2d接口的封装类,为用户提供Conv2d算子量化相关功能,实现的计算公式如下:

函数原型

[object Object]

参数说明

  • in_channels:int类型,必选参数,Conv2d的输入的channel值。

  • out_channels:int类型,必选参数,Conv2d的输出的channel值。

  • kernel_size:int或者tuple类型,必选参数,卷积核大小,支持单个数字输入或者2维tuple输入。当前仅支持kernel_size范围为[1, 255]。

  • output_dtype:torch.dtype类型,必选参数,输出数据类型,当前仅支持输入torch.float16。

  • stride:int或者tuple类型,可选参数,默认值为1,Conv2d的stride,支持单个数字输入或者2维tuple输入。当前仅支持stride范围为[1, 63]。

  • padding:int或者tuple类型,可选参数,默认值为0,Conv2d的padding,支持单个数字输入或者2维tuple输入。当前仅支持padding范围为[0, 255]。

  • dilation:int或者tuple类型,可选参数,默认值为1,Conv2d的dilation,支持单个数字输入或者2维tuple输入。当前仅支持dilation范围为[1, 255]。

  • groups:int类型,可选参数,默认值为1,Conv2d的group。当前仅支持取1。

  • bias:bool类型,可选参数,默认值为True,代表是否需要bias计算参数。如果设置成False,则bias不会加入QuantConv2d计算。

  • offset:bool类型,可选参数,默认值为False,预留参数,暂未使用

  • offset_x:int类型,可选参数,默认值为0,补的pad中填入的实际值。

    示例:如果padding为[1,1],offset_x为1,fmap变化如图所示:

  • round_mode:str类型,可选参数,默认值为"rint"。预留参数,暂未使用

  • device:可选参数,默认值为None。预留参数,暂未使用

  • dtype:可选参数,默认值为None。预留参数,暂未使用

输入说明

quant_conv2d_input(计算输入):Tensor类型,数据类型支持int8,数据格式支持NCHW,shape为4维。

变量说明

  • weight:Tensor类型,数据格式支持int8。数据格式支持NCHW,shape为4维。
  • scale:Tensor类型,数据类型支持float32和int64。数据格式支持ND,shape是1维(n,),其中n与weight的out_channels一致。
  • bias:Tensor类型,可选参数。数据类型支持int32,数据格式支持ND,shape支持1维(n,),n与weight的out_channels一致。

输出说明

一个Tensor类型的输出,代表QuantConv2d的计算结果:

  • 如果output_dtype为float16,输出的数据类型为float16。
  • 如果output_dtype非以上数据类型,则不支持。

约束说明

  • 该接口支持推理场景下使用。
  • 该接口仅支持PyTorch静态图模式在线推理(目前仅支持PyTorch 2.1版本)。
  • [object Object]Atlas 推理系列产品[object Object]:不支持output中w轴为1的场景。

支持的型号

  • [object Object]Atlas A2 训练系列产品/Atlas 800I A2 推理产品/A200I A2 Box 异构组件[object Object]
  • [object Object]Atlas A3 训练系列产品/Atlas A3 推理系列产品[object Object]
  • [object Object]Atlas 推理系列产品[object Object]

调用示例

图模式调用:

[object Object]