6. LLM和多模态模型量化
HMQuantool量化工具支持在GPU上量化LLM和多模态模型,当前已支持以下模型:
Qwen2.5-7B
Qwen3-8B
Qwen3-14B
DeepSeek-R1-Qwen3
Qwen2VL
Stable Diffusion 3
模型覆盖通用语言生成和多模态任务,适用于文本生成、推理、对话、代码生成及图像生成等场景。
工具兼容 HuggingFace Transformers 格式,便于主流模型的集成与部署,支持灵活接入现有推理框架和服务流程。
6.1. 开发流程
以下步骤以 Qwen3-14B 模型为例,展示了 HMQuantool 工具在LLM上的典型量化流程。用户需提前准备好 Hugging Face 格式的原始模型目录。
导入依赖库。
import argparse import os.path as osp from pathlib import Path from xh_model_zoo.utils import MemoryTracker, TimeProfiler from xh_model_zoo.xh_llm import LLMConverter from xh_model_zoo.xh_llm.models.qwen2 import Qwen2ConvertConfig from xhquant.api import DeviceType, get_root_logger, xhquant_init, QuantScheme # isort:skip
准备输入参数。
设置原始模型路径。示例如下:
hf_model_path = "qwen3-14b"
设置量化后输出路径。示例如下:
# Get model name from path (last part of the path) model_name = Path(hf_model_path).name # Set work directory name prefix prefix = f"{model_name}-{target_device}-{args.context_length//1024}k-{quant_type}" # Define work directory path work_dir = Path("work_dirs") / prefix # Create the work directory work_dir.mkdir(exist_ok=True, parents=True) # Set path for log file log_file = work_dir / "convert.log"
调用 xhquant_init 接口,初始化量化环境。示例如下:
xhquant_init(None, debug=args.debug)
通过 Class QuantScheme 设置量化方案。示例如下:
quant_scheme = QuantScheme(target_device=DeviceType.XH2a, quant_type=w8a8_sefp)
示例中,设置推理目标设备类型为后摩M50芯片(
DeviceType.XH2a),并设置权重与激活均保留 8-bit 尾数位,使用SEFP格式的量化方案(w8a8_sefp)。通过 Class Qwen2ConvertConfig 构建模型量化配置。示例如下:
config = Qwen2ConvertConfig( batch_size=1, # Set batch size to 1 context_length=8192, # Set context token length input_sequence_length=256, # Set input sequence length quant_scheme=quant_scheme, # Set quantization scheme quant_weight=None, )不同模型对应的量化配置类名可能不同,如Stable Diffusion需调用 Class SD3ConvertConfig。
量化模型。示例如下:
LLMConverter.from_pretrained(hf_model_path, "Qwen3ForCausalLM_legacy", config, str(work_dir))
量化后模型保存在
work_dir指定文件夹中。不同模型对应的模型量化类和接口可能不同,如Stable Diffusion需调用 SD3Converter.from_pretrained。
完整示例参看 Qwen3-14B模型量化示例。