云服务器内容精选

  • Step3 启动kv-cache-int8量化服务 在使用OpenAI接口或vLLM接口启动推理服务时添加如下参数: --kv-cache-dtype int8 #只支持int8,表示kvint8量化 --quantization-param-path kv_cache_scales.json #输入Step2 抽取kv-cache量化系数生成的json文件路径; 如果只测试推理功能和性能,不需要此json文件,此时scale系数默认为1,但是可能会造成精度下降。
  • Step1使用tensorRT量化工具进行模型量化 在GPU机器上使用tensorRT 0.9.0版本工具进行模型量化,工具下载使用指导请参见https://github.com/NVIDIA/TensorRT-LLM/tree/v0.9.0。 量化脚本convert_checkpoint.py存放在TensorRT-LLM/examples路径对应的模型文件夹下,例如:llama模型对应量化脚本的路径是examples/llama/convert_checkpoint.py。 执行convert_checkpoint.py脚本进行权重转换生成量化系数,详细参数解释请参见https://github.com/NVIDIA/TensorRT-LLM/tree/main/examples/llama#int8-kv-cache。 python convert_checkpoint.py \ --model_dir ./llama-models/llama-7b-hf \ --output_dir ./llama-models/llama-7b-hf/int8_kv_cache/ \ --dtype float16 \ --int8_kv_cache 运行完成后,会在output_dir下生成量化后的权重。量化后的权重包括原始权重和kvcache的scale系数。
  • Step2 权重格式转换 AutoAWQ量化完成后,使用int32对int4的权重进行打包。昇腾上使用int8对权重进行打包,需要进行权重转换。 进入llm_tools/AutoAWQ代码目录下执行以下脚本: 执行时间预计10分钟。执行完成后会将权重路径下的原始权重替换成转换后的权重。如需保留之前权重格式,请在转换前备份。 python convert_awq_to_npu.py --model /home/ma-user/Qwen1.5-72B-Chat-AWQ 参数说明: model:模型路径。
  • 使用SmoothQuant量化工具转换权重 当前对Llama/Llama2/Llama3系列、Qwen系列、Qwen1.5系列模型支持AWQ(W4A16)和SmootQuant(W8A8)两种量化方案。 AWQ(W4A16)量化方案能显著降低模型显存以及需要部署的卡数。降低小batch下的增量推理时延。 SmootQuant(W8A8)量化方案能降低模型显存以及需要部署的卡数。也能同时降低首token时延和增量推理时延。 本章节介绍如何使用SmoothQuant量化工具如何进行权重转换。 SmoothQuant量化工具使用到的脚本存放在代码包AscendCloud-3rdLLM-x.x.x.zip的llm_tools目录下。 代码目录如下: AutoSmoothQuant #量化工具 ├── ascend_autosmoothquant_adapter # 昇腾量化使用的算子模块 ├── autosmoothquant # 量化代码 ├── requirements.txt # 第三方依赖 ├── setup.py # 安装量化模块的脚本 ... 量化方法:当前只支持激活值per-token,权重per-channel,动态量化。 具体操作如下: 配置环境。 cd llm_tools/AutoSmoothQuant/ pip install -r requirements.txt pip install -e . 配置需要使用的NPU卡,例如:实际使用的是第1张和第2张卡,此处填写为“0,1”,以此类推。 export ASCEND_RT_VISIBLE_DEVI CES =0,1 NPU卡编号可以通过命令npu-smi info查询。 执行权重转换。 cd autosmoothquant/examples/ python smoothquant_model.py --model-path /home/ma-user/llama-2-7b/ --quantize-model --generate-scale --dataset-path /data/nfs/user/val.jsonl --scale-output scales/llama2-7b.pt --model-output quantized_model/llama2-7b --per-token --per-channel 参数说明: --model-path:原始模型权重路径。 --quantize-model:是否生成量化模型权重,需指定。 --generate-scale:是否生成量化系数,如不指定--scale-input参数,则需要指定。 --dataset-path:数据集路径,推荐使用:https://huggingface.co/datasets/mit-han-lab/pile-val-backup/resolve/main/val.jsonl.zst。 --scale-output:量化系数保存路径。 --scale-input:量化系数输入路径,若之前已生成过量化系数,则可指定该参数,跳过生成scale的过程。 --model-output:量化模型权重保存路径。 --smooth-strength:平滑系数,推荐先指定为0.5,后续可以根据推理效果进行调整。 --per-token:激活值量化方法,若指定则为per-token粒度量化,否则为per-tensor粒度量化,当前必须指定。 --per-channel:权重量化方法,若指定则为per-channel粒度量化,否则为per-tensor粒度量化,当前必须指定。 转换Qwen系模型可能比较耗时,72b权重大致需要3-5h。 启动smoothQuant量化服务。 参考Step6 启动推理服务,启动推理服务时添加如下命令。 --q smoothquant 或者 --quantization smoothquant 父主题: 推理模型量化