大语言模型量化方法对比:GPTQ、GGUF、AWQ

原文:大语言模型量化方法对比:GPTQ、GGUF、AWQ - 知乎

在过去的一年里,大型语言模型(llm)有了飞速的发展,在本文中,我们将探讨几种(量化)的方式,除此以外,还会介绍分片及不同的保存和压缩策略。

说明:每次加载LLM示例后,建议清除缓存,以防止出现OutOfMemory错误。

del model, tokenizer, pipe 

import torch 
torch.cuda.empty_cache()

如果在jupyter中无法释放显存,请重启这个jupyter notebook。

模型加载

加载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
)

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

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

outputs = pipe(
    prompt, 
    max_new_tokens=25
<think>好的,我现在需要回答用户关于本地大语言模型部署是否必须使用GGUF格式文件的问题,并探讨替代方案。首先,我得回顾一下用户提供的引用内容,看看有没有相关的信息。 根据引用[1],GGUF是一种常见的大模型文件格式,比如Yi-34B和Llama2-70B都有GGUF版本。之前还有GGML格式,但后来被GGUF取代。这说明GGUF确实在本地部署中被广泛使用,但用户想知道是否只能用它,或者有没有其他选择。 引用[2]提到用户手动下载模型,而不是通过Ollama官方库,这可能涉及到不同格式的支持情况。引用[3]则讨论了本地部署的硬件要求和模型选择的挑战,比如需要GPU和足够的内存,这可能影响文件格式的选择。 接下来,我需要确认除了GGUF之外,还有哪些模型文件格式可用。常见的格式包括PyTorch的.pth、Hugging Face的.bin、TensorFlow的SavedModel,以及ONNX格式。此外,GGML作为GGUF的前身,虽然已被取代,但可能仍有旧模型使用。还有像safetensors这样的安全格式,用于Hugging Face的模型。 然后,要考虑不同框架的支持情况。例如,llama.cpp主要支持GGUF,而Transformers库支持PyTorch或Hugging Face格式。因此,是否必须使用GGUF取决于所用的推理引擎。如果用户使用llama.cpp,可能需要转换模型到GGUF;但如果用其他库,可能有更多选择。 还需要提到量化技术,GGUF支持多种量化级别,而其他格式可能有不同的量化方法。比如,AWQGPTQ也是量化方式,可能对应不同的文件格式。 最后,总结一下:GGUF不是唯一选择,但它在特定工具链中常用。替代方案包括原始框架格式、ONNX、safetensors等,选择取决于部署工具和需求。</think>### 本地大语言模型部署是否仅支持GGUF格式文件? #### 1. **GGUF格式的定位与优势** GGUF(GPT-Generated Unified Format)是专为本地部署设计的模型文件格式,其前身为GGML。GGUF通过以下特点成为主流选择: - **量化支持**:支持多种量化级别(如Q4_K_M、Q5_K_S),降低硬件需求[^1]; - **跨平台兼容性**:适配CPU优先的推理框架(如llama.cpp),适合无GPU环境[^3]; - **工具链成熟**:与Ollama等本地部署工具深度集成[^2]。 #### 2. **替代方案与适用场景** GGUF并非唯一选择,以下格式也可用于本地部署: - **原始框架格式**: - PyTorch的`.pth`或Hugging Face的`.bin`文件,需通过Transformers库加载,依赖GPU和较高内存[^3]。 - 示例代码加载PyTorch模型: ```python from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("model_name") ``` - **ONNX格式**: 通过导出为ONNX文件可提升推理速度,需搭配ONNX Runtime等推理引擎。 - **safetensors格式**: Hugging Face推出的安全张量格式,避免反序列化漏洞,需配合Transformers使用。 - **GGML(旧版)**: 已被GGUF取代,但仍可能用于旧版模型。 #### 3. **选择依据与工具链适配** | 格式 | 适用场景 | 工具链依赖 | 硬件需求 | |------------|-----------------------------------|-------------------------|-----------------| | GGUF | CPU优先、低内存设备 | llama.cpp, Ollama | 低(可无GPU) | | PyTorch | 完整模型、微调任务 | Transformers库 | 高(需GPU) | | ONNX | 跨框架推理优化 | ONNX Runtime | 中等 | | safetensors| 安全敏感场景 | Transformers库 | 中等 | #### 4. **部署流程对比** - **GGUF流程**: 下载GGUF文件 → 使用llama.cpp加载 → 通过CPU推理。 - **PyTorch流程**: 下载Hugging Face模型 → 加载至GPU显存 → 通过Transformers推理。 #### 5. **总结** GGUF是本地部署的**高效选择**,但非强制要求。若需更高灵活性(如GPU加速、模型微调),可选用PyTorch或ONNX格式。工具链支持(如Ollama对GGUF的优化)和硬件条件(有无GPU)是核心决策因素。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值