模型命名方案解說 Q4 FP16..
大型語言模型 Llama 的命名方案。主要解釋模型名稱中不同部分的含義,例如 Q 代表量化、K 代表一種量化方法、S、M、L 代表大小,以及 FP16 等表示浮點數精度的格式。我們並分享不同量化方法對模型大小和效能的影響,並建議選擇能兼顧效能和記憶體使用的量化等級。
以下說明不同大小的 LLaMA 模型在量化後的效能表現比較:
量化 (Quantization) 的基本概念
量化是一種壓縮技術,旨在減少模型的大小,使其更易於管理。
量化通過降低權重的精度來實現這一點。
不同的量化方法會對模型效能產生不同的影響.
GGUF 是一種常見的量化命名方案,不特定於某個模型。
量化格式:Q<數字><0 或 1>
舊式量化方法,現在不建議使用:Q<數字>_K<字母>:
現代 K 量化方法:數字表示每個權重的近似位數 (bits-per-weight, bpw)。
字母表示大小:S (小), M (中), L (大)。例如,Q4_K_S 大約是 4.5 bpw,而 Q4_K_M 大約是 4.8 bpw。
如果只有 Q_K 而沒有尾隨字母,通常表示 M (中)。
iQ<數字>_<字母>: 另一種量化格式,以速度換取效率。在相同的 bpw 下,iQ 量化會更「聰明」,但計算時間稍長。
數字同樣表示每個權重的近似位數。
字母表示該類別內的大小,例如 iQ2 有 XXS、XS、S 和 M 等級。
FP16, BF16, FP32: 原始的未量化權重,分別為 16 位浮點數、16 位 Brain Float 和 32 位浮點數格式。除非您打算自己重新量化,否則不建議使用。
iMatrix
iMatrix 在量化模型之前會進行測試,以確定哪些部分應該具有更高的精度,哪些部分可以降低精度。
平均位數相同,但位數的分配更有效率,結果是更聰明的量化模型。
在選擇量化方式時,iMatrix 通常是更好的選擇。
不同模型大小的比較
一般原則:在相同的量化方案下,更多位數通常代表更好的效能。例如,Q4_K_S 通常會比 Q3_K_L 表現更好。
但這並非線性關係,降低精確度時的效能損失並非線性下降。
較大型號與較小型號的比較:
較小的量化 (例如 Q2) 可能適用於較大的模型 (例如 70B),但在較小的模型上可能導致效能下降。
即使是 70B 模型的較小量化版本也可能比 8B 模型的較大量化版本更好。
低於 4 bpw 的量化是相當值得懷疑的。
70B 等較大且密集的模型在重度壓縮下的效能比小型或稀疏模型更好。
8B 和 70B 模型在數據集和訓練技術上雖有重疊,但它們是具有不同能力的完全不同模型。
具體應用:
對於需要嚴格遵循格式的任務 (例如程式設計),較低的 bpw 量化會導致效能不佳。
對於創造性寫作等沒有「錯誤」答案的任務,較低的 bpw 量化可能可以接受。
根據個人經驗,Q4_K 對於大型模型是一個基本要求,而 Q6_K 對於小型模型則是一個基本要求。
其他考量
硬體限制:您的硬體(例如 VRAM 或 RAM)會限制您可以使用哪種量化。
記憶體使用: 較高的量化等級會需要更多記憶體,因此需要考慮您的硬體限制.
Perplexity (PPL):
PPL 是一種用於衡量量化模型效能的指標。
PPL 值越低,表示模型「越聰明」。
當模型從原始版本量化後,PPL 的增長表示量化對模型的損害程度。
例如,Q2_K_S 量化導致 Llama-3-8B 模型增加了 3.18 的 PPL 值。
結論
沒有絕對的好壞。 哪種量化最適合您取決於您的需求、應用程式和硬體限制。
建議:盡可能使用您可以承受的最高 bpw,以獲得最佳效能。
不同大小的 LLaMA 模型在量化後的效能表現會受到多種因素影響,包括量化方法、模型大小、具體應用和硬體限制。在選擇量化方法時,應綜合考量以上各項因素。
Allowed quantization types:
2 or Q4_0 : 4.34G, +0.4685 ppl @ Llama-3-8B
3 or Q4_1 : 4.78G, +0.4511 ppl @ Llama-3-8B
8 or Q5_0 : 5.21G, +0.1316 ppl @ Llama-3-8B
9 or Q5_1 : 5.65G, +0.1062 ppl @ Llama-3-8B
19 or IQ2_XXS : 2.06 bpw quantization
20 or IQ2_XS : 2.31 bpw quantization
28 or IQ2_S : 2.5 bpw quantization
29 or IQ2_M : 2.7 bpw quantization
24 or IQ1_S : 1.56 bpw quantization
31 or IQ1_M : 1.75 bpw quantization
10 or Q2_K : 2.96G, +3.5199 ppl @ Llama-3-8B
21 or Q2_K_S : 2.96G, +3.1836 ppl @ Llama-3-8B
23 or IQ3_XXS : 3.06 bpw quantization
26 or IQ3_S : 3.44 bpw quantization
27 or IQ3_M : 3.66 bpw quantization mix
12 or Q3_K : alias for Q3_K_M
22 or IQ3_XS : 3.3 bpw quantization
11 or Q3_K_S : 3.41G, +1.6321 ppl @ Llama-3-8B
12 or Q3_K_M : 3.74G, +0.6569 ppl @ Llama-3-8B
13 or Q3_K_L : 4.03G, +0.5562 ppl @ Llama-3-8B
25 or IQ4_NL : 4.50 bpw non-linear quantization
30 or IQ4_XS : 4.25 bpw non-linear quantization
15 or Q4_K : alias for Q4_K_M
14 or Q4_K_S : 4.37G, +0.2689 ppl @ Llama-3-8B
15 or Q4_K_M : 4.58G, +0.1754 ppl @ Llama-3-8B
17 or Q5_K : alias for Q5_K_M
16 or Q5_K_S : 5.21G, +0.1049 ppl @ Llama-3-8B
17 or Q5_K_M : 5.33G, +0.0569 ppl @ Llama-3-8B
18 or Q6_K : 6.14G, +0.0217 ppl @ Llama-3-8B
7 or Q8_0 : 7.96G, +0.0026 ppl @ Llama-3-8B
33 or Q4_0_4_4 : 4.34G, +0.4685 ppl @ Llama-3-8B
34 or Q4_0_4_8 : 4.34G, +0.4685 ppl @ Llama-3-8B
35 or Q4_0_8_8 : 4.34G, +0.4685 ppl @ Llama-3-8B
1 or F16 : 14.00G, +0.0020 ppl @ Mistral-7B
32 or BF16 : 14.00G, -0.0050 ppl @ Mistral-7B
0 or F32 : 26.00G @ 7B