目錄
學習目標
目錄
模型量化的演變
早期格式和挑戰
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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++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教學
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1233
24
開始使用Meta Llama 3.2 -Analytics Vidhya 開始使用Meta Llama 3.2 -Analytics Vidhya Apr 11, 2025 pm 12:04 PM

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

10個生成AI編碼擴展,在VS代碼中,您必須探索 10個生成AI編碼擴展,在VS代碼中,您必須探索 Apr 13, 2025 am 01:14 AM

嘿,編碼忍者!您當天計劃哪些與編碼有關的任務?在您進一步研究此博客之前,我希望您考慮所有與編碼相關的困境,這是將其列出的。 完畢? - 讓&#8217

AV字節:Meta' llama 3.2,Google的雙子座1.5等 AV字節:Meta' llama 3.2,Google的雙子座1.5等 Apr 11, 2025 pm 12:01 PM

本週的AI景觀:進步,道德考慮和監管辯論的旋風。 OpenAI,Google,Meta和Microsoft等主要參與者已經釋放了一系列更新,從開創性的新車型到LE的關鍵轉變

向員工出售AI策略:Shopify首席執行官的宣言 向員工出售AI策略:Shopify首席執行官的宣言 Apr 10, 2025 am 11:19 AM

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式

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

介紹 想像一下,穿過​​美術館,周圍是生動的繪畫和雕塑。現在,如果您可以向每一部分提出一個問題並獲得有意義的答案,該怎麼辦?您可能會問:“您在講什麼故事?

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

SQL的Alter表語句:動態地將列添加到數據庫 在數據管理中,SQL的適應性至關重要。 需要即時調整數據庫結構嗎? Alter表語句是您的解決方案。本指南的詳細信息添加了Colu

最新的最佳及時工程技術的年度彙編 最新的最佳及時工程技術的年度彙編 Apr 10, 2025 am 11:22 AM

對於那些可能是我專欄新手的人,我廣泛探討了AI的最新進展,包括體現AI,AI推理,AI中的高科技突破,及時的工程,AI培訓,AI,AI RE RE等主題

See all articles