目录
学习目标
目录
模型量化的演变
早期格式和挑战
ONNX(开放神经网络交换)
需要量化
检查原始模型和量化模型的大小
什么是GGUF?
为什么要使用GGUF?
GGUF格式结构和命名约定
设置转换为GGUF格式
一些值得注意的量化技术
将模型转换为GGUF
步骤1:选择要量化的模型
步骤2:克隆Llama.cpp存储库
步骤3:安装所需的依赖项
步骤4:选择量化级别
步骤5:运行转换脚本
比较原始模型的大小
GGUF转换的最佳实践
GGUF和模型存储格式的未来
结论
关键要点
常见问题
首页 科技周边 人工智能 如何将模型转换为GGUF格式?

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

Mar 20, 2025 am 11:04 AM

随着大型语言模型(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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
10个生成AI编码扩展,在VS代码中,您必须探索 10个生成AI编码扩展,在VS代码中,您必须探索 Apr 13, 2025 am 01:14 AM

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

GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? GPT-4O vs OpenAI O1:新的Openai模型值得炒作吗? Apr 13, 2025 am 10:18 AM

介绍 Openai已根据备受期待的“草莓”建筑发布了其新模型。这种称为O1的创新模型增强了推理能力,使其可以通过问题进行思考

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

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

pixtral -12b:Mistral AI&#039;第一个多模型模型 - 分析Vidhya pixtral -12b:Mistral AI&#039;第一个多模型模型 - 分析Vidhya Apr 13, 2025 am 11:20 AM

介绍 Mistral发布了其第一个多模式模型,即Pixtral-12b-2409。该模型建立在Mistral的120亿参数Nemo 12B之上。是什么设置了该模型?现在可以拍摄图像和Tex

如何在SQL中添加列? - 分析Vidhya 如何在SQL中添加列? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQL的Alter表语句:动态地将列添加到数据库 在数据管理中,SQL的适应性至关重要。 需要即时调整数据库结构吗? Alter表语句是您的解决方案。本指南的详细信息添加了Colu

超越骆驼戏:大型语言模型的4个新基准 超越骆驼戏:大型语言模型的4个新基准 Apr 14, 2025 am 11:09 AM

陷入困境的基准:骆驼案例研究 2025年4月上旬,梅塔(Meta)揭开了Llama 4套件的模特套件,具有令人印象深刻的性能指标,使他们对GPT-4O和Claude 3.5 Sonnet等竞争对手有利地定位。伦斯的中心

如何使用AGNO框架构建多模式AI代理? 如何使用AGNO框架构建多模式AI代理? Apr 23, 2025 am 11:30 AM

在从事代理AI时,开发人员经常发现自己在速度,灵活性和资源效率之间进行权衡。我一直在探索代理AI框架,并遇到了Agno(以前是Phi-

多动症游戏,健康工具和AI聊天机器人如何改变全球健康 多动症游戏,健康工具和AI聊天机器人如何改变全球健康 Apr 14, 2025 am 11:27 AM

视频游戏可以缓解焦虑,建立焦点或支持多动症的孩子吗? 随着医疗保健在全球范围内挑战,尤其是在青年中的挑战,创新者正在转向一种不太可能的工具:视频游戏。现在是世界上最大的娱乐印度河之一

See all articles