隨著大型語言模型(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) 打印(“量化模型輸出:”,輸出)
檢查原始模型和量化模型的大小
在使用大型語言模型時,了解原始版本和量化版本之間的尺寸差異至關重要。這種比較不僅強調了模型壓縮的好處,而且還為部署策略提供了有效資源使用的信息。
導入操作系統 #保存模型的路徑 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}%”)
但是,即使是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命名約定遵循以下結構:
名稱中的每個組件都提供了對模型的見解:
- Basename:模型基本類型或體系結構的描述性名稱,源自元數據(例如Llama或Mixtral)。
- Sizelabel:使用X格式IE
指示模型大小:專家數量(例如8), :模型參數刻度,例如Q的Q Quadrillions,t,數万億美元,數十億美元,數十億美元,m for Million,k對於千參數。 - Finetune:模型微調目標,例如“聊天”或“指示”。
-
版本: V
。 格式中的模型版本號,如果未指定,則默認為v1.0。 - 編碼:重量編碼方案,每個項目可自定義。
- 類型:指示GGGUF文件類型,例如適配器的LORA或用於詞彙數據的詞彙。
-
碎片:表示一個模型分為部分,格式為
-of- 。
命名示例
設置轉換為GGUF格式
在進行轉換之前,請確保您有以下先決條件:
- 系統上安裝了Python 3.8。
- 模型源文件:通常是Pytorch或Tensorflow模型(例如,Llama,Falcon)或來自擁抱面的模型。
- GGUF轉換工具:這些工具通常基於GGML庫或特定的模型轉換腳本。
一些值得注意的量化技術
量化技術通過降低其大小和計算要求在優化神經網絡中起關鍵作用。通過將高精度權重和激活轉換為較低的位表示,這些方法可以有效地部署模型,而不會顯著損害性能。
將模型轉換為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}%”)
使用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中文網其他相關文章!

介紹 恭喜!您經營一家成功的業務。通過您的網頁,社交媒體活動,網絡研討會,會議,免費資源和其他來源,您每天收集5000個電子郵件ID。下一個明顯的步驟是

介紹 在當今快節奏的軟件開發環境中,確保最佳應用程序性能至關重要。監視實時指標,例如響應時間,錯誤率和資源利用率可以幫助MAIN

“您有幾個用戶?”他扮演。 阿爾特曼回答說:“我認為我們上次說的是每週5億個活躍者,而且它正在迅速增長。” “你告訴我,就像在短短幾週內翻了一番,”安德森繼續說道。 “我說那個私人

介紹 Mistral發布了其第一個多模式模型,即Pixtral-12b-2409。該模型建立在Mistral的120億參數Nemo 12B之上。是什麼設置了該模型?現在可以拍攝圖像和Tex

想像一下,擁有一個由AI驅動的助手,不僅可以響應您的查詢,還可以自主收集信息,執行任務甚至處理多種類型的數據(TEXT,圖像和代碼)。聽起來有未來派?在這個a


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1
強大的PHP整合開發環境