You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在vLLM中加载量化微调的LLaMA 3-8B模型实现高效推理

解决vLLM加载bitsandbytes量化微调LLaMA 3-8B模型的问题

问题原因

你遇到的ValueError: Unknown quantization method: bitsandbytes错误,本质是vLLM不支持bitsandbytes的动态量化格式。bitsandbytes的4bit/8bit量化是加载时动态量化,而vLLM仅支持静态量化格式(如AWQ、GPTQ等),当合并后的模型保留了bitsandbytes的量化配置时,vLLM会尝试识别该量化方法,进而触发报错。

解决方案

方法1:转换为vLLM支持的AWQ量化格式(推荐)

这是兼顾推理速度和显存占用的最优方案,步骤如下:

  1. 重新合并PEFT模型为全精度格式
    之前合并时你是基于bitsandbytes量化的base模型,需要先加载全精度base模型再合并PEFT权重:
    from peft import PeftModel
    from transformers import AutoModelForCausalLM, AutoTokenizer
    import torch
    
    base_model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
    peft_model_id = "BojanaBas/Meta-Llama-3-8B-Instruct-pqa-10"
    
    # 加载全精度base模型(禁用bitsandbytes量化)
    base_model = AutoModelForCausalLM.from_pretrained(
        base_model_id,
        torch_dtype=torch.bfloat16,
        device_map="auto",
        token=MYTOKEN
    )
    # 合并并卸载PEFT权重
    merged_model = PeftModel.from_pretrained(base_model, peft_model_id)
    merged_model = merged_model.merge_and_unload()
    
    # 保存全精度合并模型
    merged_model.save_pretrained("./merged_full_precision")
    tokenizer = AutoTokenizer.from_pretrained(base_model_id)
    tokenizer.save_pretrained("./merged_full_precision")
    
  2. 将全精度模型转换为AWQ量化格式
    使用autoawq库完成量化:
    from awq import AutoAWQForCausalLM
    from transformers import AutoTokenizer
    
    model_path = "./merged_full_precision"
    quant_save_path = "./merged_awq_model"
    # AWQ 4bit量化配置
    quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
    
    # 加载模型并执行量化
    model = AutoAWQForCausalLM.from_pretrained(model_path, device_map="auto")
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    model.quantize(tokenizer, quant_config=quant_config)
    
    # 保存量化后的模型
    model.save_quantized(quant_save_path)
    tokenizer.save_pretrained(quant_save_path)
    
  3. 用vLLM加载AWQ量化模型
    from vllm import LLM
    
    llm = LLM(model="./merged_awq_model", quantization="awq", dtype="bfloat16")
    

方法2:直接加载全精度合并模型(显存充足时可选)

如果你的GPU显存足够(LLaMA 3-8B的bfloat16版本约占8GB显存),可以跳过量化步骤,直接加载全精度合并模型,vLLM会自动优化推理:

from vllm import LLM

merged_peft_model_name="lcass00/Meta-Llama-3-8B-Instruct-pqa-10-merged-peft"
llm = LLM(model=merged_peft_model_name, dtype="bfloat16")

注意:如果之前合并的模型仍保留bitsandbytes量化配置,需要手动删除模型目录下config.json中的quantization_config字段,避免vLLM误识别。

内容的提问来源于stack exchange,提问作者Lorenzo Cassano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:42:02