返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

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

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 20:43 |阅读模式 打印 上一主题 下一主题

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 仓库克隆到本地,它包含了转换模型所需的工具。在终端里执行如下命令:

gitclonehttps://github.com/ggerganov/llama.cpp.git

2、安装llama.cpp的python包

condacreate-nllamacpppython==3.10-ycondaactivatellamacpppipinstall-rllama.cpp/requirements.txt

llama

二、转化

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

#如果不量化,保留模型的效果#python llama.cpp/convert_hf_to_gguf.py 模型的绝对路径 --outtype f16 --verbose --outfile 输出的文件路径pythonllama.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
#如果需要量化(加速并有损效果),直接执行下面脚本就可以pythonllama.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-Lhttps://ollama.com/download/ollama-linux-amd64.tgz-oollama-linux-amd64.tgzsudotar-C/usr-xzfollama-linux-amd64.tgz

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


2、启动Ollama服务

ollamaserve

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


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” 。名字要保证唯一。

ollamacreateqwen2.5-3B-Instruct--fileModeFile

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

5、 运行模型

#可以加上:latest,也可以不加#ollamarunqwen2.5-3B-Instruct:latestollamarunqwen2.5-3B-Instruct

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ