开发者
下载

参数说明

通用参数

参数

默认值

含义

--model

deepseek-ai/DeepSeek-V4-Pro

模型权重路径或模型标识,部署导出时应为本地模型目录。

--model_name

deepseek-ai/DeepSeek-V4-Pro

AMCT内部模型适配器名称,需匹配已注册模型,如qwen3、deepseek_v4。

--device

npu:0

指定运行设备。建议选择NPU/GPU,以加速计算。

--granularity

model

工作粒度,即量化或处理的单位,常用选项:

block:按模块进行块处理(更细粒度,可能效果更好但耗时)。

model:整个模型统一处理(粗粒度,速度快),部分流程不支持。

--seed

0

随机种子,用于控制实验中随机行为的一致性(如数据采样、初始化等),设置为固定值可保证结果可复现。

--quant_target

[]

量化目标,支持以下组合:

mlp:Multi-Layer Perceptron,多层感知机。

moe:Mixture of Experts,混合专家模型。

attn-linear:Attention Linear Layer,注意力机制中的线性层。

attn-cache:Attention Cache,注意力缓存。

--seq_len

4096

校准和评估时使用的输入序列长度。用于确定模型在处理多长文本时的表现(尤其在量化校准阶段很重要)。 可选值:1024、2048、4096

--data_dir

空字符串

PTQ中间数据保存/读取目录。

--output_dir

./outputs

输出目录,存放日志文件、PTQ参数配置、最终部署模型等所有生成内容。

PPL 评估参数

参数

默认值

含义

--eval_mode

bf16

评估模式,指定模型在计算困惑度(PPL)时使用的精度格式,支持如下两种格式:

bf16:半精度浮点数(BF16),常用于加速推理并保持较高精度。

quant:量化模式,可能指INT8/INT4等量化格式,用于降低内存和计算开销,但可能牺牲少量精度。

--wikitext_final_out

空字符串

WikiText末端输出路径参数,用于指定WikiText数据集处理后最终输出的文件路径,目前该参数预留。

说明:

  • eval_mode=bf16 时,bit_config中不应存在低于16 bit 的 linear/cache配置。
  • eval_mode=quant时,如果bit_config没有任何低于16 bit的配置,会构建量化模块但关闭量化器。

数据提取参数

参数

默认值

含义

--nsamples

128

校准样本数量,extract_ptq_data从Pileval中加载该数量样本。

量化配置参数

参数

默认值

含义

--quant_dtype

量化后数据的类型,当前适配包括mxfp、int。eval_mode=quant时,为必要参数

--bit_config

None

YAML格式的配置文件路径,该文件定义了具体的位宽策略。如果不提供此参数,则使用默认的W16A16配置。常用配置请参见表格下方解释。

--algos

[]

启用的量化算法列表,算法会根据其注册的 target 自动应用到模型的权重(weight)、激活值(activation)或结构(structure)上。

--is_per_tensor

False

对于LAC(Learned Activation Clipping,学习式激活裁剪)算法,是否使用per-tensor统计信息来确定裁剪范围。

--k_size

128

可学习的Hadamard类结构变换矩阵的尺寸。

常用--bitconfig如下:

文件

含义

配置示例

bf16.yaml

全部保持16 bit

该配置文件无需配置,默认为16bits。

w8a8.yaml

全局W8A8(权重激活都为8bit)

1
2
w_bits: 8
a_bits: 8

w4a8.yaml

全局W4A8(权重8bit,激活4bit)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Uniform W4A8 across all linears.
w_bits: 4
a_bits: 8
moe:
  routed:
    w_bits: 4
    a_bits: 8
  shared:
    w_bits: 8
    a_bits: 8

w4a4.yaml

全局W4A4(权重激活都为4bit)

1
2
3
# Uniform W4A4 across all linears.
w_bits: 4
a_bits: 4

example_w4a8.yaml

自定义量化方案示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
w_bits: 4
a_bits: 8
attn-linear:
  # Bump attention output projection (sees concatenated heads).
  o_proj: { w_bits: 8, a_bits: 16 }
  # MLA layers (deepseek_v4 / longcat / glm5). Listed only as examples — any
  # not present in the actual model are silently ignored.
  comp_wgate:       { w_bits: 8,  a_bits: 8 }    # compressor scoring head
  idx_weights_proj: { w_bits: 16, a_bits: 16 }   # indexer scoring head — tiny, keep fp16
mlp:
  down_proj: { w_bits: 4, a_bits: 16 }   # down-proj sees larger activations
moe:
  routed:
    down_proj: { w_bits: 4, a_bits: 16 }
  shared:
    w_bits: 8                              # group-level: bump all shared-expert
    a_bits: 8                              # layers to W8A8
attn-cache:
  k: 8
  v: 8
  # q / p not listed -> stay at 16
  • --bit_config支持顶层w_bits、a_bits,也支持按attn-linear、mlp、moe、attn-cache分组覆盖。linear组内如果写w_bits或a_bits,必须两者同时出现。
  • --quant_dtype传入int时,权重采用per-channel量化,激活采用dynamic-per-token量化,均采用对称量化。

PTQ 参数

参数

默认值

含义

--cali_bsz

4

PTQ校准训练batch size。

PTQ过程中,需要使用一小部分数据(称为校准数据集)来调整量化参数(如缩放因子和零点),该参数定义了每次处理多少个样本进行校准。

--base_lr

1e-5

基础学习率,该参数决定了模型参数在每次迭代中更新的步长。

--optimizer

adamw

优化器,指定用于更新模型参数的算法;支持如下几种优化器。

adamw:Adam的改进版,通常能更好地处理权重衰减。

adam:经典的Adam优化器。

sgd:随机梯度下降。

cayley:一种较少见的优化器。

--weight_decay

0.0

权重衰减,适用于部分优化器;一种正则化技术,通过在损失函数中加入一个与权重大小成正比的惩罚项,来防止模型过拟合。值为0.0表示在此优化过程中不使用权重衰减。

--momentum

0.9

SGD动量。

当使用SGD优化器时,动量可以帮助加速收敛并帮助模型跳出局部最优解,它通过累积之前梯度的指数加权移动平均来更新参数。

--lr_scheduler

cosine

学习率调度器,定义了在训练过程中如何动态地调整学习率;支持如下几种:

  • none:学习率保持不变。
  • cosine:余弦退火,学习率会按照余弦函数的曲线平滑地降低。
  • step:阶梯式衰减,每隔固定的步数将学习率乘以一个系数。

默认使用cosine,因为它能提供更平滑的学习率下降,有助于模型收敛到更好的状态。

--min_lr

0.0

最小学习率参数,当前通用scheduler中未直接使用。

在使用某些调度器(如cosine或step)时,可以设置学习率的下限。即使调度器要求继续减小,学习率也不会低于这个值。

--lr_step_size

1

StepLR的step size

该参数仅在--lr_scheduler设置为step时生效,它定义了每隔多少个epoch(轮次)对学习率进行一次衰减。

--lr_gamma

0.1

StepLR 的衰减系数。

该参数仅在--lr_scheduler为step时有效,它定义了每次衰减时学习率要乘以的系数。

--epochs

15

PTQ优化epoch 数,指定了校准和优化过程的总轮数,一个epoch意味着整个校准数据集被遍历一次。

--start_block_idx

0

起始block下标,包含该层。

该参数用于指定从模型的哪个部分(block)开始进行优化。

--end_block_idx

61

结束 block 下标(指定优化的最后一个block),索引不包含该层。

--attn_linear_param_dir

空字符串

指定注意力机制(attention)中线性层(linear)的PTQ参数目录。

--attn_cache_param_dir

空字符串

指定注意力机制(attention)中缓存(cache)部分的PTQ参数目录。

--moe_mlp_param_dir

空字符串

指定混合专家模型(MoE)或多层感知机(MLP)部分的PTQ参数目录。

如果ptq时未显式传入对应参数目录,系统会按以下形式自动创建:

{output_dir}/ptq_params/{model_name}/{quant_target}/ 

每个PTQ unit的参数文件命名通常为:

layer_{layer_idx}_{unit_name}.pt