想要透過langchain麻煩llm幫我做一些工作,但是有太多坑要補了…所以這篇文章主要來補坑的。

什麼是GGUF, GGML, GGJT

他們出現的順序大概是 GGML -> GGJT -> GGUF

  • GGUF (GPT-Generated Unified Format)
    • GGUF 是 llama.cpp 團隊於 2023 年 8 月 21 日推出的新格式,主要來替代GGML而llama.cpp也不再支援GGML
    • 他有更多優勢像是更好的tokenisation, 支援special tokens並且更容易擴展
  • GGML (GPT-Generated Model Language)
    • 最早可以追溯到 2022年10月,專門為Machine Learning 設計的 Tensor Library
    • 目的是

GGUF Model

根據 HuggingFace 上 TheBloke(大善人)開源的Llama-2–13B-chat-GGUF 項目中有 14種不同的 GGUF 模型,當中數字是代表量化的 bits 設定。

以下是參考他對於不同量化的推薦和說明:
推力速度快

  • q2_k: 推理速度最快,但有失準確性,不太適合大多數用途。
  • Q3_K_S, Q3_K_M, Q3_K_L: 速度快,性能和效率的平衡
  • Q4_K_SQ4_K_MQ4_K_S: 檔案都比上面的肥大,適合需要平衡資源使用的場景,這邊三者推薦使用Q4_K_M

精準度高

  • Q5_0Q5_1Q5_K_MQ5_K_S:這些版本在保證更高準確度的同時,會使用更多的資源並且推理速度較慢。
  • Q6_KQ8_0:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。

結論

  • 如果追求較低成本和保持模型效能的情況推薦使用用 Q5_K_M
  • 如果想更節省 RAM,則可以考慮 Q4_K_M
  • 一般來說,帶有 K_M 的版本會比 K_S 的版本表現更佳。
  • 不過不建議使用 Q2_KQ3_* 等版本,因為它們會顯著降低模型的整體性能。

什麼是 bits 量化位元數?
bits 是指模型檔案的量化位元數,這是一種將模型權重轉換為較低精度的技術,以節省空間和提高推理速度

  • "bits"數量越多,代表模型的量化級別越低,通常意味著模型的準確性更高,但檔案大小也更大,推理速度可能會慢一些。
  • 相反地,"bits"數量越少,模型的量化級別越高,檔案大小更小,推理速度更快,但可能會犧牲一些準確性。
  • 如果需要快速推理,可以選擇量化級別高的模型;如果需要更高的準確性,則可以選擇量化級別低的模型。

量化示意圖(source)