搜索
首页科技周边人工智能如何将模型转换为GGUF格式?

随着大型语言模型(LLM)的规模不断增长,需要有效的方法来存储,部署和运行它们在低资源设备上。尽管这些模型具有强大的功能,但它们的大小和内存需求可能会使部署成为挑战,尤其是在消费者硬件上。这是模型量化和专门的存储格式(例如GGUF)(通用GPT统一格式)开始发挥作用的地方。

在本指南中,我们将深入研究GGUF格式,探索其好处,并为将模型转换为GGUF提供逐步的教程。在此过程中,我们将介绍模型量化的历史以及GGGUF如何发展以支持现代LLM。最后,您将对GGUF为何重要以及如何开始为自己的模型开始使用它有深刻的了解。

学习目标

  • 理解GGUF格式的目的和结构及其从GGML演变。
  • 定义量化并描述其在减少模型大小和提高部署效率方面的重要性。
  • 认识GGUF命名约定的组成部分以及它们如何帮助模型识别和管理。
  • 使用Llama.CPP将模型定量为GGUF格式。
  • 将GGUF和量化的概念与实际用例相关联,从而有效地部署了资源受限环境中的AI模型。

本文作为数据科学博客马拉松的一部分发表

目录

  • 模型量化的演变
  • 什么是GGUF?
  • 为什么要使用GGUF?
  • GGUF格式结构和命名约定
  • 设置转换为GGUF格式
  • 将模型转换为GGUF
  • GGUF转换的最佳实践
  • GGUF和模型存储格式的未来
  • 结论
  • 常见问题

模型量化的演变

GGUF的旅程始于了解模型量化的演变。量化降低了模型参数的精度,有效地压缩了它们以减少记忆和计算需求。这是一个快速概述:

早期格式和挑战

在早期,深度学习模型存储在Tensorflow和Pytorch等框架的天然格式中。使用.pb文件的TensorFlow模型,而Pytorch使用.pt或.pth。这些格式用于较小的模型,但提出了局限性:

  • 尺寸:型号以32位浮点格式存储,使文件大小较大。
  • 记忆使用:完整的重量重量要求大量内存,使RAM不切实际的设备上部署。

ONNX(开放神经网络交换)

跨框架的互操作性的兴起导致了ONNX的发展,这使模型可以在环境之间移动。但是,尽管ONNX提供了一些优化,但它仍然主要围绕完整的重量构建,并提供了有限的量化支持。

需要量化

随着模型的增长,研究人员转向量化,将重量从32位浮子(FP32)压缩到16位(FP16)甚至更低,例如8位整数(INT8)。这种方法大大削减了内存需求,使得可以在更多的硬件类型上运行模型。例如:

 #导入必要的库
导入火炬
导入Torch.nn作为nn
导入火炬。

#步骤1:在Pytorch中定义一个简单的神经网络模型
类SimpleModel(nn.Module):
    def __init __(自我):
        超级(SimpleModel,self).__ Init __()
        self.fc1 = nn.linear(10,50)#第一个完全连接的层
        self.fc2 = nn.linear(50,20)#第二完全​​连接层
        self.fc3 = nn.linear(20,5)#输出层

    def向前(self,x):
        x = torch.relu(self.fc1(x))#在第一层之后激活
        x = torch.relu(self.fc2(x))#第二层之后的relu激活
        x = self.fc3(x)#输出层
        返回x

#步骤2:初始化模型并切换到评估模式
model = SimpleModel()
model.eval()

#在量化之前保存模型以供参考
TORCH.SAVE(模型,“ Simple_model.pth”)

#步骤3:将动态量化应用于模型
#在这里,我们仅量化线性层,将其重量更改为int8
量化_model = pont.quantize_dynamic(
    型号,{nn.linear},dtype = therch.qint8
)

#保存量化的模型
TORCH.SAVE(Quantized_Model,“量化_simple_model.pth”)

#用虚拟数据量化模型的示例用法
dummy_input = torch.randn(1,10)#带有10个功能的示例输入张量
输出=量化_model(dummy_input)
打印(“量化模型输出:”,输出)

如何将模型转换为GGUF格式?

检查原始模型和量化模型的大小

在使用大型语言模型时,了解原始版本和量化版本之间的尺寸差异至关重要。这种比较不仅强调了模型压缩的好处,而且还为部署策略提供了有效资源使用的信息。

导入操作系统

#保存模型的路径
Original_model_path =“ simple_model.pth”
量化_model_path =“量化_simple_model.pth”

#功能以获取KB中的文件大小
def get_file_size(路径):
    size_bytes = os.path.getSize(路径)
    size_kb = size_bytes / 1024#转换为kb
    返回size_kb

#检查原始模型和量化模型的尺寸
Original_size = get_file_size(oinartion_model_path)
量化= get_file_size(量化_model_path)

打印(f“原始型号大小:{oilter_size:.2f} kb”)
打印(f“量化的型号大小:{量化_size:.2f} kb”)
print(f“尺寸减小:{(((原始_size -jentalized_size) / oinartion_size) * 100:.2f}%”)

如何将模型转换为GGUF格式?

但是,即使是8位精度也不足以用于GPT-3或Llama等极大的语言模型,后者刺激了GGML和GGGUF等新格式的开发。

什么是GGUF?

GGUF或通用GPT统一格式是为GGML的扩展而开发的,以支持更大的模型。这是用于存储用于使用GGML推理和基于GGML的执行者的模型的文件格式。 GGUF是一种二进制格式,旨在快速加载和节省模型,并易于阅读。传统上是使用Pytorch或其他框架开发的模型,然后转换为GGUF以用于GGML。

GGUF是GGML,GGMF和GGJT的连续文件格式,并且通过包含加载模型所需的所有信息而设计为明确的。它也被设计为可扩展的,因此可以将新信息添加到模型中而不会破坏兼容性。 它的设计有三个目标:

  • 效率:使大型型号能够在CPU和消费级硬件上有效运行。
  • 可伸缩性:支持非常大的型号,通常是100GB或更多。
  • 灵活性:允许开发人员在不同的量化水平,平衡模型大小和准确性之间进行选择。

为什么要使用GGUF?

GGUF格式为需要在有限的硬件上部署大型,资源丰富的模型的开发人员而不会牺牲性能。以下是一些核心优势:

  • 量化支持: GGUF支持一系列量化水平(4位,8位),可以在保持模型精度的同时节省大量内存。
  • 元数据存储: GGUF可以存储详细的元数据,例如模型架构,令牌化方案和量化水平。此元数据使加载和配置模型变得更加容易。
  • 推理优化: GGUF优化了内存使用,从而可以更快地推断基于CPU的系统。

GGUF格式结构和命名约定

GGUF格式采用特定的命名惯例来浏览一下关键的模型信息。该约定可以帮助用户确定重要的模型特征,例如体系结构,参数大小,微调类型,版本,编码类型和碎片数据 - 制造模型管理和部署更容易。

GGUF命名约定遵循以下结构:

如何将模型转换为GGUF格式?

名称中的每个组件都提供了对模型的见解:

  • Basename:模型基本类型或体系结构的描述性名称,源自元数据(例如Llama或Mixtral)。
  • Sizelabel:使用X格式IE 指示模型大小:专家数量(例如8), :模型参数刻度,例如Q的Q Quadrillions,t,数万亿美元,数十亿美元,数十亿美元,m for Million,k对于千参数。
  • Finetune:模型微调目标,例如“聊天”或“指示”。
  • 版本: V 格式中的模型版本号,如果未指定,则默认为v1.0。
  • 编码:重量编码方案,每个项目可自定义。
  • 类型:指示GGGUF文件类型,例如适配器的LORA或用于词汇数据的词汇。
  • 碎片:表示一个模型分为部分,格式为 -of-

命名示例

如何将模型转换为GGUF格式?

设置转换为GGUF格式

在进行转换之前,请确保您有以下先决条件:

  • 系统上安装了Python 3.8。
  • 模型源文件:通常是Pytorch或Tensorflow模型(例如,Llama,Falcon)或来自拥抱面的模型。
  • GGUF转换工具:这些工具通常基于GGML库或特定的模型转换脚本。

一些值得注意的量化技术

量化技术通过降低其大小和计算要求在优化神经网络中起关键作用。通过将高精度权重和激活转换为较低的位表示,这些方法可以有效地部署模型,而不会显着损害性能。

如何将模型转换为GGUF格式?

将模型转换为GGUF

以下是您可以将模型转换为GGGUF格式的方式。

步骤1:选择要量化的模型

在这种情况下,我们正在选择Google的Flan-T5模型来量化。您可以按照命令直接从huggingface下载该命令

!PIP安装拥抱面板

从huggingface_hub导入snapshot_download

model_#替换为要下载的模型的ID
snapshot_download(repo_id = model_id,local_dir =“ t5”)

步骤2:克隆Llama.cpp存储库

我们正在使用Llama.cpp将模型量化为GGUF格式

!git克隆https://github.com/ggerganov/llama.cpp

步骤3:安装所需的依赖项

如果在Google协作中,请按以下代码进行操作,否则您可以导航到要求目录以安装“ unigess-convert_hf_to_gguf.txt”

步骤4:选择量化级别

量化水平决定了模型大小和准确性之间的权衡。较低位量化(如4位)可节省内存,但可能会降低准确性。例如,如果您针对仅CPU的部署,并且不需要最高的精度,那么INT4可能是一个不错的选择。在这里,我们选择“ Q8_0”。

步骤5:运行转换脚本

如果在Google合作中,请运行以下脚本,否则请按照注释。

 #!python {通往convert_hf_to_gguf.py的路径} {路径hf_model}  -  outfile {name_of_of_outputfile.gguf}  -  outtype {量化类型}

!
  • 通往HF_MODEL的路径:模型目录的路径。
  • name_of_outputfile.gguf:将保存GGGUF模型的输出文件的名称。如果将量化的模型推回拥抱的脸部,请使用GGUF命名约定。
  • 量化类型:指定量化类型(在这种情况下,量化8位整数)。

比较原始模型的大小

当部署机器学习模型时,了解原始版本和量化版本之间的尺寸差异至关重要。该比较强调了量化如何显着降低模型大小,从而提高了效率和更快的推理时间,而不会大大损失准确性。

 #检查原始模型和量化模型的尺寸
Original_model_path =“/content/t5/model.safetensors”
量化_model_path =“ t5.gguf”
Original_size = get_file_size(oinartion_model_path)
量化= get_file_size(量化_model_path)

打印(f“原始型号大小:{oilter_size:.2f} kb”)
打印(f“量化的型号大小:{量化_size:.2f} kb”)
print(f“尺寸减小:{(((原始_size -jentalized_size) / oinartion_size) * 100:.2f}%”)

如何将模型转换为GGUF格式?

使用GGGUF量化技术,我们可以看到惊人的73.39%的尺寸降低。

GGUF转换的最佳实践

为了获得最佳结果,请记住这些技巧:

  • 实验量化水平:测试多个级别(例如,4位,8位),以在模型准确性和记忆效率之间找到最佳平衡。
  • 使用元数据来提高您的优势: GGUF的广泛元数据存储可以简化模型加载并减少运行时配置需求。
  • 基准推断:始终基准目标硬件上的GGGUF模型,以确保其符合速度和准确性要求。

GGUF和模型存储格式的未来

随着模型的不断增长,像GGUF这样的格式将在使大规模AI访问中发挥越来越重要的作用。我们很快可能会看到更高级的量化技术,这些技术可以保留更准确性,同时进一步降低内存需求。目前,GGUF仍然处于最前沿,可以在CPU和Edge设备上有效地部署大型语言模型。

结论

GGUF格式是一种改变游戏规则的人,用于在限量资源设备上有效地部署大型语言模型。从模型量化的早期努力到GGUF的开发,AI模型存储的景观已经发展为使更广泛的受众访问强大的模型。通过遵循本指南,您现在可以将模型转换为GGUF格式,从而更容易将它们部署到现实世界的应用程序中。

量化将继续发展,但是GGUF支持各种精确水平和有效的元数据管理的能力确保它将保持相关性。尝试将您的模型转换为GGUF并亲身探索好处!

关键要点

  • 通用GPT统一格式(GGUF)可在低资源设备上有效地存储和部署大型语言模型(LLMS),以解决与模型大小和内存需求相关的挑战。
  • 量化可以通过压缩参数大大降低模型大小,从而使模型可以在消费级硬件上运行,同时保持基本的性能水平。
  • GGUF格式具有结构化的命名约定,可帮助识别关键模型特征,促进更轻松的管理和部署。
  • 使用Llama.cpp之类的工具,用户可以轻松地将模型转换为GGUF格式,并在不牺牲准确性的情况下优化它们进行部署。
  • GGUF支持高级量化水平和广泛的元数据存储,使其成为有效部署日益大型AI模型的前瞻性解决方案。

常见问题

Q1。 GGUF是什么,它与GGML有何不同?

A. GGUF(通用GPT统一格式)是一种高级模型存储格式,旨在有效地存储和运行量化的大型语言模型。与其前身GGML(对于超过100GB的模型的可伸缩性)不同,GGUF支持广泛的4位和8位量化选项,并提供了丰富的元数据存储能力,增强了模型管理和部署。

Q2。量化如何影响模型性能?

答:量化降低了模型参数的精度,大大降低了其大小和内存使用情况。虽然它可以导致精确度略有下降,但设计良好的量化技术(例如GGUF的技术)可以保持可接受的性能水平,从而使在资源受限设备上部署大型模型是可行的。

Q3。 GGUF命名约定的主要组成部分是什么?

答:GGUF命名约定包括几个组件,包括Basename(模型体系结构),Sizelabel(参数权重类),Finetune(微调目标),版本(模型版本编号),编码(重量编码方案),类型(类型(文件)(文件目的)和Shard(用于拆分型号)。这些组件一起提供了有关模型的基本信息。

Q4。如何验证GGUF文件名?

答:您可以使用正则表达式验证GGUF文件名,该表达式至少以正确的顺序检查Basename,sizelabel和版本。这样可以确保文件遵守命名约定,并包含用于模型标识的必要信息。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

以上是如何将模型转换为GGUF格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
10个生成AI编码扩展,在VS代码中,您必须探索10个生成AI编码扩展,在VS代码中,您必须探索Apr 13, 2025 am 01:14 AM

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

烹饪创新:人工智能如何改变食品服务烹饪创新:人工智能如何改变食品服务Apr 12, 2025 pm 12:09 PM

AI增强食物准备 在新生的使用中,AI系统越来越多地用于食品制备中。 AI驱动的机器人在厨房中用于自动化食物准备任务,例如翻转汉堡,制作披萨或组装SA

Python名称空间和可变范围的综合指南Python名称空间和可变范围的综合指南Apr 12, 2025 pm 12:00 PM

介绍 了解Python功能中变量的名称空间,范围和行为对于有效编写和避免运行时错误或异常至关重要。在本文中,我们将研究各种ASP

视觉语言模型(VLMS)的综合指南视觉语言模型(VLMS)的综合指南Apr 12, 2025 am 11:58 AM

介绍 想象一下,穿过​​美术馆,周围是生动的绘画和雕塑。现在,如果您可以向每一部分提出一个问题并获得有意义的答案,该怎么办?您可能会问:“您在讲什么故事?

联发科技与kompanio Ultra和Dimenty 9400增强优质阵容联发科技与kompanio Ultra和Dimenty 9400增强优质阵容Apr 12, 2025 am 11:52 AM

继续使用产品节奏,本月,Mediatek发表了一系列公告,包括新的Kompanio Ultra和Dimenty 9400。这些产品填补了Mediatek业务中更传统的部分,其中包括智能手机的芯片

本周在AI:沃尔玛在时尚趋势之前设定了时尚趋势本周在AI:沃尔玛在时尚趋势之前设定了时尚趋势Apr 12, 2025 am 11:51 AM

#1 Google推出了Agent2Agent 故事:现在是星期一早上。作为AI驱动的招聘人员,您更聪明,而不是更努力。您在手机上登录公司的仪表板。它告诉您三个关键角色已被采购,审查和计划的FO

生成的AI遇到心理摩托车生成的AI遇到心理摩托车Apr 12, 2025 am 11:50 AM

我猜你一定是。 我们似乎都知道,心理障碍包括各种chat不休,这些chat不休,这些chat不休,混合了各种心理术语,并且常常是难以理解的或完全荒谬的。您需要做的一切才能喷出fo

原型:科学家将纸变成塑料原型:科学家将纸变成塑料Apr 12, 2025 am 11:49 AM

根据本周发表的一项新研究,只有在2022年制造的塑料中,只有9.5%的塑料是由回收材料制成的。同时,塑料在垃圾填埋场和生态系统中继续堆积。 但是有帮助。一支恩金团队

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境