Hub 文件
GGUF
加入 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_scale 和 importance matrix 獲得。 |
IQ4_XS | HF | 4 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 4.25 位。 |
IQ3_S | HF | 3 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 3.44 位。 |
IQ3_XXS | HF | 3 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 3.06 位。 |
IQ2_XXS | HF | 2 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 2.06 位。 |
IQ2_S | HF | 2 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 2.5 位。 |
IQ2_XS | HF | 2 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 2.31 位。 |
IQ1_S | HF | 1 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 1.56 位。 |
IQ1_M | GH | 1 位量化 (q )。超塊包含 256 個權重。權重 w 透過 super_block_scale 和 importance matrix 獲得,結果為每權重 1.75 位。 |
如果上表有任何不準確之處,請在此檔案上發起一個 PR。
< > 在 GitHub 上更新