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 格式的原始模型目录。

  1. 导入依赖库。

    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
    
  2. 准备输入参数。

    • 设置原始模型路径。示例如下:

      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"
      
  3. 调用 xhquant_init 接口,初始化量化环境。示例如下:

    xhquant_init(None, debug=args.debug)
    
  4. 通过 Class QuantScheme 设置量化方案。示例如下:

    quant_scheme = QuantScheme(target_device=DeviceType.XH2a, quant_type=w8a8_sefp)
    

    示例中,设置推理目标设备类型为后摩M50芯片(DeviceType.XH2a),并设置权重与激活均保留 8-bit 尾数位,使用SEFP格式的量化方案(w8a8_sefp)。

  5. 通过 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

  6. 量化模型。示例如下:

    LLMConverter.from_pretrained(hf_model_path, "Qwen3ForCausalLM_legacy", config, str(work_dir))
    

    量化后模型保存在 work_dir 指定文件夹中。

    不同模型对应的模型量化类和接口可能不同,如Stable Diffusion需调用 SD3Converter.from_pretrained

完整示例参看 Qwen3-14B模型量化示例