支持私有化部署
AI知识库

53AI知识库

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


AI大模型火热,将 Hugging Face大模型转换为 GGUF 为何受关注?

发布日期:2025-04-21 15:57:12 浏览次数: 1517 作者:AI悠悠
推荐语

AI大模型时代的新突破,GGUF格式引领模型存储与转换新趋势。

核心内容:
1. GGUF格式定义及其对AI大模型的意义
2. GGUF格式在存储效率、加载速度和兼容性方面的优势
3. Hugging Face模型转换为GGUF格式的步骤及工具使用指南

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

GGUF到底是什么?

GGUF 是一种专为大语言模型设计的二进制文件存储格式,全称为 GPT - Generated Unified Format 。它是一种新型的文件格式,通常用于表示和存储神经网络模型及其相关数据。它是一种统一的、通用的图形格式,旨在简化不同深度学习框架和硬件平台之间的模型交换和转换。

GGUF 的主要目标是提供一个标准化的格式,使得神经网络的图结构、权重、参数以及其他相关信息可以在各种平台和工具之间顺利传递。它可以减少不同框架(如 TensorFlow、PyTorch 等)之间的互操作性问题,并帮助优化硬件资源的使用,特别是在多卡训练和分布式训练的场景下。

应用范围

  • 框架支持:Huggingface Transformers、llama.cpp 等主流工具链均支持加载 GGUF 格式模型。

  • 模型生态:谷歌 Gemma、阿里 Qwen 等官方发布的模型默认提供 GGUF 版本。

  • 工具兼容:LM Studio,Ollama 等本地推理工具支持 GGUF 格式。 


GGUF 格式的大模型具有以下优点

  • 存储高效:通过优化数据结构和编码方式,显著减少了模型存储空间的占用。对于包含大量参数的大型模型来说,能有效降低存储成本。

  • 加载快速:支持内存映射等技术,可直接从磁盘映射数据到内存地址空间,无需完全加载整个文件,加快了数据的加载速度,满足在线聊天机器人或实时翻译系统等对即时响应有要求的应用场景。

  • 兼容性强:作为一种统一的格式,设计考虑了跨平台和跨框架的兼容性,能在不同的硬件和软件环境中无缝运行,使得模型可以在多种设备和框架中方便地使用,促进了大型模型的广泛应用。

  • 扩展性好:采用键值对元数据结构,允许灵活扩展,能在不破坏与现有模型兼容性的情况下添加新的元数据、新特征或新信息,以适应未来更大规模模型和更复杂数据结构的发展需求。

  • 量化支持:支持多种量化类型,如 Q8_K、Q6_K 等,通过降低模型精度减少文件大小,适用于不同硬件资源场景,在节省计算资源的同时,还能保证模型性能不受显著影响。

  • 使用便捷:GGUF 文件自包含所有模型信息,如元数据、张量数据等,无需依赖外部文件或复杂配置,单文件即可轻松分发和加载,且加载模型所需的代码量少,无需外部库,简化了模型部署和共享的流程。

将 Hugging Face(HF)模型转换为 GGUF(Guanaco General Universal Format)格式,通常需要借助 llama.cpp 工具。


一、 安装llama.cpp

1、下载llama.cpp源码到本地

首先,要把 llama.cpp 仓库克隆到本地,它包含了转换模型所需的工具。在终端里执行如下命令:

git clone https://github.com/ggerganov/llama.cpp.git

2、安装llama.cpp的python包

conda create -n llamacpp python==3.10 -yconda activate llamacpppip install -r llama.cpp/requirements.txt

llama

二、转化

可以对hf模型直接转gguf,不量化;也可以量化转。

#如果不量化,保留模型的效果#python llama.cpp/convert_hf_to_gguf.py 模型的绝对路径 --outtype f16 --verbose --outfile 输出的文件路径python llama.cpp/convert_hf_to_gguf.py /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-merge --outtype f16 --verbose --outfile /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-merge-gguf.gguf
#如果需要量化(加速并有损效果),直接执行下面脚本就可以python llama.cpp/convert_hf_to_gguf.py /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-merge --outtype q8_0 --verbose --outfile /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-merge-gguf_q8_0.gguf


这里--outtype是输出类型,代表含义:

q2_k:特定张量(Tensor)采用较高的精度设置,而其他的则保持基础级别。

q3_k_l、q3_k_m、q3_k_s:这些变体在不同张量上使用不同级别的精度,从而达到性能和效率的平衡。

q4_0:这是最初的量化方案,使用4位精度。

q4_1和q4_k_m、q4_k_s:这些提供了不同程度的准确性和推理速度,适合需要平衡资源使用的场景。

q5_0、q5_1、q5_k_m、q5_k_s:这些版本在保证更高准确度的同时,会使用更多的资源并且推理速度较慢。

q6_k和q8_0:这些提供了最高的精度,但是因为高资源消耗和慢速度,可能不适合所有用户。

fp16和f32:不量化,保留原始精度。

转换后的模型如下:

三、Ollama运行gguf

1、安装Ollama

Ollama官网:

https://ollama.com/download/linux

https://github.com/ollama/ollama/blob/main/docs/linux.md

我们选择ubuntu环境部署。

# autodl算力云学术加速# source /etc/network_turbo
# 安装ollamacurl -fsSL https://ollama.com/install.sh | sh

这个过程耗时较长,请耐心等待。也可以手动下载:

curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgzsudo tar -C /usr -xzf ollama-linux-amd64.tgz

下载可以使用本地下载好后上传到服务器。


2、启动Ollama服务

ollama serve

注意这个命令窗口要一直开着。不然服务就断了。也可以使用后台执行方式。


3、创建ModelFile

复制模型路径,创建名为 “ModelFile” 的 meta 文件,内容如下

#GGUF文件路径FROM /root/autodl-tmp/llm/Qwen/Qwen2.5-3B-Instruct-merge-gguf.gguf

4、创建自定义模型

使用 ollama create命令创建自定义模型。模型名称可自定义,比如下面的“qwen2.5-3B-Instruct” 。名字要保证唯一。

ollama create qwen2.5-3B-Instruct --file  ModeFile

看到success就说明成功了。可以用命令 ollama list 查看。

5、 运行模型

# 可以加上 :latest,也可以不加# ollama run qwen2.5-3B-Instruct:latestollama run qwen2.5-3B-Instruct

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

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

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

联系我们

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

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询