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模型量化示例。