昇腾社区首页
中文
注册

LinearQAT

产品支持情况

产品

是否支持

Atlas A2 训练系列产品/Atlas 800I A2 推理产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

功能说明

构造Linear的QAT算子。

函数原型

  • 直接构造接口:
    1
    qat = amct_pytorch.nn.module.quantization.linear.LinearQAT(in_features, out_features, bias, device, dtype, config)
    
  • 基于原生算子构造接口:
    1
    qat = amct_pytorch.nn.module.quantization.linear.LinearQAT.from_float(mod, config)
    

参数说明

表1 直接构造接口参数说明

参数名

输入/输出

说明

in_features

输入

含义:输入特征数。

数据类型:int

out_features

输入

含义:输出特征数。

数据类型:int

bias

输入

含义:是否开启偏值项参与学习。

数据类型:bool,其他数据类型(比如整数,字符串,列表等)按照Python真值判断规则转换。

默认值为True

device

输入

含义:运行设备。

默认值:None

dtype

输入

含义:torch数值类型。

数据类型:torch数据类型, 仅支持torch.float32

config

输入

含义:量化配置,配置参考样例如下,量化配置参数的具体说明请参见量化配置参数说明

config = {
    "retrain_enable":true,
    "retrain_data_config": {
        "dst_type": "INT8",
        "batch_num": 10,
        "fixed_min": False,
        "clip_min": -1.0,
        "clip_max": 1.0
    },
    "retrain_weight_config": {
        "dst_type": "INT8",
        "weights_retrain_algo": "arq_retrain",
        "channel_wise": False
    }
}

数据类型:dict

默认值:None

表2 基于原生算子构造接口

参数名

输入/输出

说明

mod

输入

含义:待量化的原生Linear算子。

数据类型:torch.nn.Module

config

输入

含义:量化配置。配置参考样例如下,量化配置参数的具体说明请参见量化配置参数说明

config = {
    "retrain_enable":true,
    "retrain_data_config": {
        "dst_type": "INT8",
        "batch_num": 10,
        "fixed_min": False,
        "clip_min": -1.0,
        "clip_max": 1.0
    },
    "retrain_weight_config": {
        "dst_type": "INT8",
        "weights_retrain_algo": "arq_retrain",
        "channel_wise": False
    }
}

数据类型:dict

默认值:None

返回值说明

  • 直接构造:返回构造的qat单算子实例。
  • 基于原生算子构造:torch.nn.Module转化后的qat单算子。

调用示例

  • 直接构造:
    1
    2
    3
    4
    from amct_pytorch.nn.module.quantization.linear import LinearQAT
    
    LinearQAT(in_features=1, out_features=1, bias=True,
              device=None, dtype=None, config=None)
    
  • 基于原生算子构造:
    1
    2
    3
    4
    5
    6
    import torch
    
    from amct_pytorch.nn.module.quantization.linear import LinearQAT
    
    linear_op = torch.nn.Linear(in_features=1, out_features=1, bias=True, device=None, dtype=None)
    LinearQAT.from_float(mod=linear_op, config=None)