参数说明
通用参数
参数 |
默认值 |
含义 |
|---|---|---|
--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) |
|
||
w4a8.yaml |
全局W4A8(权重8bit,激活4bit) |
|
||
w4a4.yaml |
全局W4A4(权重激活都为4bit) |
|
||
example_w4a8.yaml |
自定义量化方案示例 |
|
- --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 |
学习率调度器,定义了在训练过程中如何动态地调整学习率;支持如下几种:
默认使用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