模型量化参数配置说明

BladeLLM通过命令行语句 blade_llm_quantize 来执行模型量化操作,生成的量化模型可直接使用BladeLLM进行推理和部署。本文将为您介绍blade_llm_quantize支持的各项配置参数及其说明。

使用示例

BladeLLM通过执行命令行语句 blade_llm_quantize,进行模型量化操作,示例命令如下:

blade_llm_quantize \
    --model Qwen/Qwen-7B-Chat \
    --output_dir Qwen-7B-Chat-int8 \
    --quant_algo minmax \
    --quant_mode weight_only_quant \
    --bit 8

生成的量化模型可直接使用BladeLLM进行推理和部署,详情请参见服务部署参数配置说明

参数说明

blade_llm_quantize支持配置的参数如下表所示:

参数

类型

必选

说明

model

str

原始浮点模型所在的目录。

output_dir

str

用于存储量化模型的目录。

bit

int

指定量化比特数,可选范围:[8, 4],默认值:8。

quant_mode

str

指定量化模式,取值如下:

  • weight_only_quant(默认值)

  • act_and_weight_quant

quant_dtype

str

量化为整数类型或浮点数类型,取值如下:

  • int(默认值):若指定为int,需结合前述参数bit确定量化类型。若bit=8,则表示量化为int8类型。

  • fp8:若指定为fp8,则默认量化为fp8 e4m3类型,等同于选择fp8_e4m3,建议fp8量化选择该类型。

quant_algo

str

指定量化算法,取值为:minmax、gptq、awq、smoothquant、smoothquant+和smoothquant_gptq。其中minmax算法无需提升校正数据。

默认值:minmax。

block_wise_quant

bool

是否开启block-wise量化(即sub-channel量化),默认block_size=64(同gptq中的group_size参数),目前仅weight_only_quant量化模式支持开启该选项。

  • False(默认值):不开启

  • True:开启

calib_data

list of str

指定校准数据,部分量化算法(如gptq)需校正数据进行权重微调等处理,该参数支持直接将用于校正的文本存于列表中传入。

默认值:[‘hello world!’]。

calib_data_file

str

通过jsonl文件传入校准数据,文件内容格式如下:

  • 文件中每行存放一条校准数据,形式如:{“text”: “hello world!”}。若为vl模型,形式如:{“content”: [{“image”: “https://xxx/demo.jpg”}, {“text”: “这是什么?”}]}

  • 建议传入100-1000条具有代表性的校准数据,贴近实际应用场景即可,数据长度不宜过长,以免增加不必要的量化耗时。

默认值:None。

cpu_offload

bool

若当前GPU显存不足以加载浮点模型进行量化时(即量化时出现OOM等),可启用该选项,能够在量化时维持一部分模型参数加载至CPU。

默认值:False。

max_gpu_memory_utilization

float

cpu_offloadTrue时生效,用于控制cpu_offload预估使用的最大显存比例。越小的值会offload更多的模型层,当开启cpu_offload参数后仍出现OOM时可以适当调低该参数。

默认值:0.9。

fallback_ratio

float

指定回退为量化前浮点数计算的层数比例,当fallback_ratio>0时会开启自动混合精度量化,建议在初始量化精度不满足要求时尝试,将计算每层的量化敏感程度,回退指定比例的计算层以改善量化精度。

默认值:0.0。

tokenizer_dir

str

指定tokenizer目录,不指定时则与模型目录相同。

默认值:None。

tensor_parallel_size

int

指定张量并行度,若原始浮点模型需多卡加载,则通过该参数指定其数目。

默认值:1。

pipeline_parallel_size

int

指定流水线并行度,若原始浮点模型需多卡加载,则通过该参数指定其数目。

默认值:1。