【AIGC】大模型面试高频考点-LLM量化方法对比:GPTQ、GGUF、AWQ

LLM量化方法对比:GPTQ、GGUF、AWQ

    • (一)模型加载
    • (二)分片
    • (三)量化
    • (四)预量化(GPTQ、AWQ、GGUF)
      • (1)GPTQ
      • (2)GGUF
      • (3)AWQ
    • (五)总结
      • (1)GPTQ:基于GPT的量化方法
      • (2)GGUF:基于GPU的通用量化框架
      • (3)AWQ:基于自适应权重的量化方法

随着大型语言模型(LLM)在自然语言处理领域的广泛应用,如何有效降低模型大小和计算复杂度,同时保持模型性能,成为了研究的热点。量化作为一种有效的模型压缩技术,受到了广泛关注。本文将对比三种主流的LLM量化方法:GPTQ、GGUF和AWQ,分析它们的原理、优缺点及适用场景。

(一)模型加载

加载LLM的最直接、最普通的方式是通过Transformers。HuggingFace已经创建了一个套件,我们能够直接使用

pip install git+https://github.com/huggingface/transformers.git
pip install accelerate bitsandbytes xformers

安装完成后,我们可以使用以下管道轻松加载LLM:

from torch import bfloat16
from transformers import pipeline
 
# Load in your LLM without any compression tricks
pipe = pipeline(
    "text-generation", 
    model="HuggingFaceH4/zephyr-7b-beta", 
    torch_dtype=bfloat16, 
    device_map="auto"
)

我们这里使用zephyr-7b-beta作为示例

这种加载LLM的方法通常不会执行任何压缩技巧。我们来做个使用的示例

messages = [
    {
   
        "role": "system",
        "content": "You are a friendly chatbot.",
    },
    {
   
        "role": "user", 
        "content": "Tell me a funny joke about Large Language Models."
    },
]
prompt = pipe.tokenizer.apply_chat_template(
    messages, 
    tokenize=False, 
    add_generation_prompt=True
)

使用内部提示模板生成的提示是这样构造的:

【AIGC】大模型面试高频考点-LLM量化方法对比:GPTQ、GGUF、AWQ_第1张图片

然后,我们可将提示传递给LLM来生成答案:

outputs = pipe(
    prompt, 
    max_new_tokens=256, 
    do_sample=True, 
    temperature=0.1, 
    top_p=0.95
)
print(outputs[0]["generated_text"])

这是一个最直接的使用流程,但是对于纯推理&#x

你可能感兴趣的:(AIGC高频面试题,AIGC,人工智能,agi,计算机视觉,自然语言处理)