跳转至

trainable_linear_quant 配置说明

1. 配置概述

可训练线性量化(TLQ)处理器配置。

项目 内容
配置类 TrainableLinearQuantProcessorConfig
源码 processor_config.py

2. 参数列表

2.1 TrainableLinearQuantProcessorConfig

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
type string 可选 trainable_linear_quant trainable_linear_quant 处理器类型,固定为 trainable_linear_quant
operations list[object] 可选 [MinmaxTuneOpConfig(type='minmax_tune', lr=None), RoundTuneOpConfig(type='round_tune', lr=None)] 最少1项 可训练量化管线 OP 配置列表;每项含 type,其余字段由各插件定义 本页 §2.2
strategies list[object] 可选 [] 0项或≥1项 量化策略配置列表;未提供时为空列表,不应用量化策略;若显式提供则至少1项。 本页 §2.6
train_with_act_quant bool 可选 false 块级训练前向是否对激活做伪量化(经 x_kernel);false 与 autoround 的 train_with_act_quant=False 一致;导出 IR 仍由 qconfig.act 决定,不受此项影响
enable_quanted_input bool 可选 false 是否将本层量化前向结果作为下一层训练/量化传播的旁路输入(q_input);不影响浮点 teacher:Runner 层间 datas 始终传递 teacher 输出
train_config object 可选 见嵌套配置默认值 块级 Trainer 超参:iters、gradient_accumulate_steps、select_best、lr(或 learning_rate)、loss_type;各 OP 可单独配置 lr 覆盖全局值 本页 §2.9

配置约束

  • 归一化 operations:接受单个 dict 或列表;未提供或格式不合法时回退为默认 minmax_tune + round_tune 管线。

2.2 TLQOpConfig

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
type string 必选 算子类型,分派具体 TLQ 算子(如 minmax_tuneround_tune)。
lr float / null 可选 null >0.0;或 null 该 Op 可训练参数学习率;未指定时使用 train_config.lr

配置约束

  • 无。

派生类

  • MinmaxTuneOpConfigtype: minmax_tune) — MinmaxTuneOpConfig 是嵌套配置。 本页 §2.3
  • RoundTuneOpConfigtype: round_tune) — RoundTuneOpConfig 是嵌套配置。 本页 §2.4
  • TrainableSmoothOpConfigtype: trainable_smooth) — TrainableSmoothOpConfig 是嵌套配置。 本页 §2.5

2.3 MinmaxTuneOpConfig

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
type string 可选 minmax_tune minmax_tune 插件类型:minmax_tune
lr float / null 可选 null >0.0;或 null

配置约束

  • 无。

2.4 RoundTuneOpConfig

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
type string 可选 round_tune round_tune 插件类型:round_tune
lr float / null 可选 null >0.0;或 null

配置约束

  • 无。

2.5 TrainableSmoothOpConfig

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
type string 可选 trainable_smooth trainable_smooth 插件类型:trainable_smooth
lr float / null 可选 null >0.0;或 null
enable_subgraph_type list[string] 可选 ['norm-linear', 'linear-linear', 'ov', 'up-down', 'non-fusion'] 启用的 Smooth 子图类型,须为 SMOOTH_SUPPORTED_SUBGRAPH_TYPES 子集
include list[string] / null 可选 null 子图入口 include 通配
exclude list[string] / null 可选 null 子图入口 exclude 通配

配置约束

  • 无。

2.6 QuantStrategyConfig

trainable_linear_quant 量化策略:对匹配的线性层应用一组可训练量化配置。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
qconfig object 必选 激活与权重的量化配置,见《LinearQConfig 配置说明》。 本页 §2.7
include list[string] 可选 ['*'] 包含的模块名称模式,默认 * 匹配全部模块
exclude list[string] 可选 [] 排除的模块名称模式,优先级高于 include

配置约束

  • 校验 qconfig:dtype/method 组合须有对应 TLQ kernel 支持,否则报错。

2.7 LinearQConfig

线性层(Linear)的量化配置,含激活与权重两路量化。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
act object 可选 {'dtype': 'float', 'scope': 'per_tensor', 'symmetric': True, 'method': 'none', 'ext': {}} 激活值的量化配置。默认 float(不量化激活),仅对权重做量化。 本页 §2.8
weight object 必选 权重的量化配置,必选。 本页 §2.8

配置约束

  • 无。

2.8 QConfig

描述单个张量(权重或激活)的量化方式。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
dtype string 必选 floatint8int4mxfp8mxfp4fp8_e4m3 量化数据类型,如 int8int4mxfp8mxfp4fp8_e4m3float 表示该张量不量化。
scope string 必选 per_tensorper_channelper_groupper_blockper_tokenpd_mixper_headdual_scale 量化粒度,即 scale/zero_point 的计算范围:per_tensor(整张量一个尺度)、per_channel(按通道)、per_group/per_block(按分组或固定块)、per_token(按 token)、per_head(按注意力头)、dual_scale(双尺度)等;合法取值组合取决于 dtype 与量化器实现。
symmetric bool 必选 是否对称量化。对称量化只保存 scale;非对称量化额外保存 zero_point,可用性取决于 dtype/scope 组合。
method string 必选 量化参数估计算法,如 minmaxmse_roundhistogramssznone 等;可用取值取决于 dtype/scope/symmetric 组合,none 表示不估计参数(配合 float 使用)。
ext object 可选 {} 量化器扩展参数,随 method 与量化器实现而定(如 gptq 的 percdamp/group_size);空对象表示无扩展参数。

配置约束

  • 无。

2.9 BlockTrainConfig

块级训练(block train)超参配置。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
iters int 可选 50 ≥0 块级训练迭代次数;为 0 时 Trainer 跳过优化
gradient_accumulate_steps int 可选 8 ≥1 梯度累加步数,用于在有限显存下调节等效 batch
lr float 可选 0.01 >0.0 全局基础学习率(别名 learning_rate
select_best object 可选 见嵌套配置默认值 最优 iter 快照策略(按 mode 区分字段:ema / min_loss / last) 本页 §2.10
loss_type string 可选 l1 l1custom_outlier 块级训练损失:l1(L1Loss reduction=none)、custom_outlier(0.3全量 L1 + 0.73σ 内区域 L1)
train_seed int 可选 42 块级训练随机种子(用于 sample 打乱与确定性算子)

配置约束

  • 无。

2.10 SelectBestConfig(按 `mode` 分派)

派生类

  • EmaSelectBestmode: ema) — EMA 滑动平均选最优;支持 early stop。 本页 §2.11
  • MinLossSelectBestmode: min_loss) — 当轮 loss 历史最小值选最优;支持 early stop。 本页 §2.12
  • LastSelectBestmode: last) — 仅保存 iter 0 与最后一轮;无 early stop。 本页 §2.13

2.11 EmaSelectBest

EMA 滑动平均选最优;支持 early stop。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
mode string 可选 ema ema 选取策略:ema
ema_beta float 可选 0.7 >0.0;≤1.0 best_loss 的 EMA 衰减系数
ema_window_size int 可选 5 ≥1 mean_loss 滑动平均窗口长度
early_stop_patience int 可选 -1 ≥-1 连续多少 iter 无更优快照后早停;-1 表示禁用

配置约束

  • 无。

2.12 MinLossSelectBest

当轮 loss 历史最小值选最优;支持 early stop。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
mode string 可选 min_loss min_loss 选取策略:min_loss
early_stop_patience int 可选 -1 ≥-1 连续多少 iter 无更优快照后早停;-1 表示禁用

配置约束

  • 无。

2.13 LastSelectBest

仅保存 iter 0 与最后一轮;无 early stop。

字段路径 类型 必选/可选 默认值 取值范围或格式 含义 引用配置
mode string 可选 last last 选取策略:last

配置约束

  • 无。

3. 完整配置参考

apiversion: modelslim_v1
spec:
  process:
  - type: trainable_linear_quant
    operations:
    - type: minmax_tune
      lr: null
    - type: round_tune
      lr: null
    strategies:
    - qconfig:
        act:
          dtype: float
          scope: per_tensor
          symmetric: true
          method: none
          ext: {}
        weight:
          dtype: int8
          scope: per_channel
          symmetric: true
          method: minmax
          ext: {}
      include:
      - '*'
      exclude: []
    train_with_act_quant: false
    enable_quanted_input: false
    train_config:
      iters: 50
      gradient_accumulate_steps: 8
      lr: 0.01
      select_best:
        mode: ema
        ema_beta: 0.7
        ema_window_size: 5
        early_stop_patience: -1
      loss_type: l1
      train_seed: 42