使用HuggingFace模型 - 建立LangChain應用
想要透過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
- ref: https://huggingface.co/TheBloke/Llama-2-13B-chat-GGUF/blob/main/README.md
- ref: 將 HuggingFace 模型轉換為 GGUF 及使用 llama.cpp 進行量化 — — 以INX-TEXT/Bailong-instruct-7B 為例
根據 HuggingFace 上 TheBloke(大善人)開源的Llama-2–13B-chat-GGUF 項目中有 14種不同的 GGUF 模型,當中數字是代表量化的 bits 設定。
以下是參考他對於不同量化的推薦和說明:
推力速度快
q2_k
: 推理速度最快,但有失準確性,不太適合大多數用途。Q3_K_S
,Q3_K_M
,Q3_K_L
: 速度快,性能和效率的平衡Q4_K_S
和Q4_K_M
、Q4_K_S
: 檔案都比上面的肥大,適合需要平衡資源使用的場景,這邊三者推薦使用Q4_K_M
精準度高
Q5_0
、Q5_1
、Q5_K_M
、Q5_K_S
:這些版本在保證更高準確度的同時,會使用更多的資源並且推理速度較慢。Q6_K
和Q8_0
:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。
結論
- 如果追求較低成本和保持模型效能的情況推薦使用用
Q5_K_M
- 如果想更節省 RAM,則可以考慮
Q4_K_M
。 - 一般來說,帶有
K_M
的版本會比K_S
的版本表現更佳。 - 不過不建議使用
Q2_K
或Q3_*
等版本,因為它們會顯著降低模型的整體性能。
什麼是 bits 量化位元數?
bits 是指模型檔案的量化位元數,這是一種將模型權重轉換為較低精度的技術,以節省空間和提高推理速度。
- "bits"數量越多,代表模型的量化級別越低,通常意味著模型的準確性更高,但檔案大小也更大,推理速度可能會慢一些。
- 相反地,"bits"數量越少,模型的量化級別越高,檔案大小更小,推理速度更快,但可能會犧牲一些準確性。
- 如果需要快速推理,可以選擇量化級別高的模型;如果需要更高的準確性,則可以選擇量化級別低的模型。
量化示意圖(source)
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment