支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


GGUF文件详解

发布日期:2025-03-24 21:21:21 浏览次数: 1600 来源:Python伊甸园
推荐语

深入了解GGUF文件格式,掌握大模型部署的关键技术。

核心内容:
1. GGUF格式的定义及其设计目的
2. GGUF格式在大模型部署中的优势
3. GGUF格式的高效性与量化支持应用实例

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家
目前,市面上有各种不同的大模型部署工具,比如ollama、vllm、sglang等,但是很多人还并不了解大模型文件格式之间的区别,本次我们来聊一下ollama专用的GGUF格式。
1、什么是GGUF
GGUF 格式的全名为(GPT-Generated Unified Format),由llama.cpp创始人Georgi Gerganov设计的二进制文件格式,专为高效存储和加载大模型优化。
简单来说就是,模型在训练完成之后需要对架构、参数等进行存储,用的格式是GGUF
以下为GGUF文件示例:
2、为什么采用GGUF
在传统的大模型开发中多数使用 PyTorch 进行开发,但在部署时会面临依赖包太多、版本管理等问题,因此才有了GGUF格式(GGUF是长时间优化后的产物)。
GGUF文件主要是因为它针对大模型的存储、加载和部署场景进行了多项优化,解决了传统格式的痛点。包含了所有的模型信息(如元数据、张量数据),同时支持跨平台使用,无需依赖外部文件或复杂配置。
3、GGUF的特点
3.1  高效性
GGUF作为一种二进制格式,相较于文本格式的文件,可以更快地被读取和解析。二进制文件通常更紧凑,减少了读取和解析时所需的I/O操作和处理时间。
3.2  量化支持
GGUF支持多种量化类型(如Q8_K、Q6_K等),通过降低模型精度减少文件大小,适用于不同硬件资源场景。
GGUF支持多种量化类型,每种类型都有其特定的位宽和量化方法,以满足不同的性能和精度需求。以下是一些常见的量化类型:
    4、GGUF的适用框架
    主要用于llama.cpp项目,支持GPU、CPU推理。
    常见的llama.cpp项目有ollamaLMStudioLocalAI等。
    5、GGUF压缩计算示例
    以ollama平台为例,其默认下载的模型通常是 4-bit 量化,也就是 Q4_0 的压缩方式。
    以DeepSeek-R1:32B模型为例。B指参数量为10亿,那么32B就是存在320亿模型参数。
    • 那么原始模型大小的计算如下
    (1)确定参数数量

    模型有 32×10**9个参数。

    (2)确定每个参数的精度
    原始精度为 FP16,每个参数占用 16 位或 2 字节
    (3)计算总字节数

    总字节数=32×10**9×2=64×10**9字节=64GB

    • 以4比特量化后模型大小的计算如下
    (1)理解4位量化
    4位量化意味着每个参数用 4 位表示
    (2)计算量化后的总位数

    总位数(量化后)=32×10**9×4=128×10**9位

    (3)将位转换为字节
    总字节数(量化后)=128×10**9/8=16×10**9字节=16GB
    但是,通过实际加载模型可以看到,其占用的显存近22G。
    主要原因在于:
    (1)量化元数据
    量化过程中,每个参数组的权重需要存储额外的元数据(如缩放因子和零点),用于反量化计算。
    例如,若采用分组量化(Group-wise Quantization),每64个参数为一组,每组需存储1个FP16缩放因子(2字节)和1个零点(1字节)。
    对于32B参数(320亿个参数),分组数 = 32B / 64 = 5亿组 → 元数据总大小 = 5亿组 × (2+1)字节 ≈ 1.5GB
    (2)中间激活值(Activations)
    推理过程中,每层输出的中间结果(激活值)需暂存在显存中。
    以32B模型为例,处理2048 tokens的序列时,激活值占用约3-5GB显存(具体与模型架构和序列长度强相关)。
    (3)推理框架的额外开销
    硬件(如GPU)要求内存地址按特定字节对齐(如128位对齐),导致实际分配的显存可能略大于理论值。
    某些框架会预分配缓存空间以加速计算(如KV Cache),进一步增加显存占用。
    总之,对于ollama拉取的32B模型来说,24G显存是刚刚好
    6、离线加载GGUF模型
    我们以“DeepSeek-R1-Distill-Qwen-7B-Q8_0.gguf”部署为例:
    1、创建一个Modelfile文件,文件内容如下。
    FROM C:/Users/admin/.ollama/models/DeepSeek-R1-Distill-Qwen-7B-GGUF/DeepSeek-R1-Distill-Qwen-7B-Q8_0.gguf
    PARAMETER temperature 0.6SYSTEM """你是乐于助人的帮手,擅长中文多轮对话,回答需严谨且符合事实。>"""
    其中FROM为量化的gguf模型,根据自己电脑上模型位置进行修改。
    2、引入离线模型
    打开终端,运行以下命令创建模型:
    ollama create model-name -f Modelfile
    其中model-name为自己命名,以下为命名示例:
    ollama create deepseek-r1-distill-qwen-7b -f ./Modelfile
    3、离线模型测试

    53AI,企业落地大模型首选服务商

    产品:场景落地咨询+大模型应用平台+行业解决方案

    承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

    联系我们

    售前咨询
    186 6662 7370
    预约演示
    185 8882 0121

    微信扫码

    添加专属顾问

    回到顶部

    加载中...

    扫码咨询