微信扫码
添加专属顾问
我要投稿
AI大模型时代的新突破,GGUF格式引领模型存储与转换新趋势。 核心内容: 1. GGUF格式定义及其对AI大模型的意义 2. GGUF格式在存储效率、加载速度和兼容性方面的优势 3. Hugging Face模型转换为GGUF格式的步骤及工具使用指南
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
二、转化
可以对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
# 安装ollama
curl -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+中大型企业
2025-05-12
豆包电脑版不讲武德降维打击本地部署AI知识库的开源选手
2025-05-12
JManus - 面向 Java 开发者的开源通用智能体
2025-05-12
阿里直接硬刚Google!
2025-05-12
字节跳动开源扣子coze、飞书工作流引擎!FlowGram.AI
2025-05-12
已经狂揽了15.2k!Cursor 的开源平替 Void 来了!
2025-05-12
微软出手开源 UFO²,系统级自主智能体如何引爆企业级 AI 应用?
2025-05-11
字节大模型应用开发框架 Eino 全解(一)|结合 RAG 知识库案例分析框架生态
2025-05-11
字节放大招:Deep Research项目DeerFlow正式开源
2024-07-25
2025-01-01
2025-01-21
2024-05-06
2024-09-20
2024-07-20
2024-07-11
2024-06-12
2024-12-26
2024-08-13
2025-05-12
2025-04-30
2025-04-29
2025-04-28
2025-04-28
2025-04-28
2025-04-21
2025-04-19