Hub 文件

GGUF

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

GGUF

Hugging Face Hub 支援所有檔案格式,但對 GGUF 格式 提供了內建功能。GGUF 是一種二進位制格式,針對模型的快速載入和儲存進行了最佳化,使其在推理任務中非常高效。GGUF 設計用於 GGML 和其他執行器。GGUF 由 @ggerganov 開發,他同時也是流行的 C/C++ LLM 推理框架 llama.cpp 的開發者。最初在 PyTorch 等框架中開發的模型可以轉換為 GGUF 格式,以便在這些引擎中使用。

從下圖可以看出,與純張量檔案格式(如 safetensors,這也是 Hub 推薦的模型格式)不同,GGUF 同時編碼了張量和一組標準化的元資料。

查詢 GGUF 檔案

你可以透過篩選 GGUF 標籤來瀏覽所有包含 GGUF 檔案的模型:hf.co/models?library=gguf。此外,你可以使用 ggml-org/gguf-my-repo 工具將你的模型權重轉換/量化為 GGUF 權重。

例如,你可以檢視 TheBloke/Mixtral-8x7B-Instruct-v0.1-GGUF 來了解 GGUF 檔案的實際應用。

元資料和張量資訊檢視器

Hub 提供了一個 GGUF 檔案檢視器,允許使用者檢視元資料和張量資訊(名稱、形狀、精度)。該檢視器可在模型頁面(示例)和檔案頁面(示例)上找到。

與開源工具配合使用

使用 @huggingface/gguf 解析元資料

我們還建立了一個 Javascript GGUF 解析器,它可以處理遠端託管的檔案(例如 Hugging Face Hub 上的檔案)。

npm install @huggingface/gguf
import { gguf } from "@huggingface/gguf";
// remote GGUF file from https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
const URL_LLAMA = "https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/resolve/191239b/llama-2-7b-chat.Q2_K.gguf";
const { metadata, tensorInfos } = await gguf(URL_LLAMA);

在此處查詢更多資訊:此處

量化型別

型別 來源 描述
F64 維基百科 64 位標準 IEEE 754 雙精度浮點數。
I64 GH 64 位定寬整數。
F32 維基百科 32 位標準 IEEE 754 單精度浮點數。
I32 GH 32 位定寬整數。
F16 維基百科 16 位標準 IEEE 754 半精度浮點數。
BF16 維基百科 32 位 IEEE 754 單精度浮點數的 16 位縮短版。
I16 GH 16 位定寬整數。
Q8_0 GH 8 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale。舊版量化方法(目前已不常用)。
Q8_1 GH 8 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale + block_minimum。舊版量化方法(目前已不常用)。
Q8_K GH 8 位量化 (q)。每個塊有 256 個權重。僅用於量化中間結果。所有 2-6 位點積都為此量化型別實現。權重公式:w = q * block_scale
I8 GH 8 位定寬整數。
Q6_K GH 6 位量化 (q)。超塊包含 16 個塊,每個塊有 16 個權重。權重公式:w = q * block_scale(8-bit),結果為每權重 6.5625 位。
Q5_0 GH 5 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale。舊版量化方法(目前已不常用)。
Q5_1 GH 5 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale + block_minimum。舊版量化方法(目前已不常用)。
Q5_K GH 5 位量化 (q)。超塊包含 8 個塊,每個塊有 32 個權重。權重公式:w = q * block_scale(6-bit) + block_min(6-bit),結果為每權重 5.5 位。
Q4_0 GH 4 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale。舊版量化方法(目前已不常用)。
Q4_1 GH 4 位最近舍入量化 (q)。每個塊有 32 個權重。權重公式:w = q * block_scale + block_minimum。舊版量化方法(目前已不常用)。
Q4_K GH 4 位量化 (q)。超塊包含 8 個塊,每個塊有 32 個權重。權重公式:w = q * block_scale(6-bit) + block_min(6-bit),結果為每權重 4.5 位。
Q3_K GH 3 位量化 (q)。超塊包含 16 個塊,每個塊有 16 個權重。權重公式:w = q * block_scale(6-bit),結果為每權重 3.4375 位。
Q2_K GH 2 位量化 (q)。超塊包含 16 個塊,每個塊有 16 個權重。權重公式:w = q * block_scale(4-bit) + block_min(4-bit),結果為每權重 2.625 位。
IQ4_NL GH 4 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得。
IQ4_XS HF 4 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 4.25 位。
IQ3_S HF 3 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 3.44 位。
IQ3_XXS HF 3 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 3.06 位。
IQ2_XXS HF 2 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 2.06 位。
IQ2_S HF 2 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 2.5 位。
IQ2_XS HF 2 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 2.31 位。
IQ1_S HF 1 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 1.56 位。
IQ1_M GH 1 位量化 (q)。超塊包含 256 個權重。權重 w 透過 super_block_scaleimportance matrix 獲得,結果為每權重 1.75 位。

如果上表有任何不準確之處,請在此檔案上發起一個 PR。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.