模型概述
模型特點
模型能力
使用案例
🚀 CodeLlama 34B Instruct - GGUF
CodeLlama 34B Instruct - GGUF 是基於 Meta 的 CodeLlama 34B Instruct 模型轉換為 GGUF 格式的模型文件。GGUF 格式具有更好的分詞效果、支持特殊標記等優點,適用於多種客戶端和庫。
🚀 快速開始
下載 GGUF 文件
自動下載
以下客戶端/庫會自動為你下載模型,並提供可用模型列表供你選擇:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在 text-generation-webui
中下載
在“Download Model”下,輸入模型倉庫地址:TheBloke/CodeLlama - 34B - Instruct - GGUF,在其下方輸入要下載的特定文件名,例如:codellama - 34b - instruct.q4_K_M.gguf,然後點擊“Download”。
命令行下載
推薦使用 huggingface - hub
Python 庫:
pip3 install huggingface - hub>=0.17.1
然後可以使用以下命令將任何單個模型文件高速下載到當前目錄:
huggingface - cli download TheBloke/CodeLlama - 34B - Instruct - GGUF codellama - 34b - instruct.q4_K_M.gguf --local - dir. --local - dir - use - symlinks False
運行模型
llama.cpp
命令示例
確保使用的是 2023 年 8 月 27 日之後的 llama.cpp
版本(提交號:d0cee0d36d5be95a0d9088b674dbb27354107221):
./main -ngl 32 -m codellama - 34b - instruct.q4_K_M.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "[INST] Write code to solve the following coding problem that obeys the constraints and passes the example test cases. Please wrap your code answer using ```:\n{prompt}\n[/INST]"
-ngl 32
:指定要卸載到 GPU 的層數。如果沒有 GPU 加速,可以移除該參數。-c 4096
:指定所需的序列長度。對於擴展序列模型(如 8K、16K、32K),必要的 RoPE 縮放參數會從 GGUF 文件中讀取並由 llama.cpp 自動設置。- 如果想要進行聊天式對話,將
-p <PROMPT>
參數替換為-i -ins
。
在 text-generation-webui
中運行
更多說明請參考:[text - generation - webui/docs/llama.cpp.md](https://github.com/oobabooga/text - generation - webui/blob/main/docs/llama.cpp.md)。
從 Python 代碼運行
可以使用 [llama - cpp - python](https://github.com/abetlen/llama - cpp - python) 或 ctransformers 庫從 Python 中使用 GGUF 模型。
使用 ctransformers 加載模型
首先安裝包:
# 無 GPU 加速的基礎 ctransformers
pip install ctransformers>=0.2.24
# 或使用 CUDA GPU 加速
pip install ctransformers[cuda]>=0.2.24
# 或使用 ROCm GPU 加速
CT_HIPBLAS = 1 pip install ctransformers>=0.2.24 --no - binary ctransformers
# 或使用 macOS 系統的 Metal GPU 加速
CT_METAL = 1 pip install ctransformers>=0.2.24 --no - binary ctransformers
簡單的加載 GGUF 模型的示例代碼:
from ctransformers import AutoModelForCausalLM
# 將 gpu_layers 設置為要卸載到 GPU 的層數。如果系統沒有 GPU 加速,將其設置為 0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama - 34B - Instruct - GGUF", model_file="codellama - 34b - instruct.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
✨ 主要特性
關於 GGUF 格式
GGUF 是 llama.cpp 團隊在 2023 年 8 月 21 日引入的新格式,它取代了不再受 llama.cpp 支持的 GGML 格式。GGUF 相對於 GGML 有許多優勢,如更好的分詞效果、支持特殊標記,還支持元數據,並且設計為可擴展的。
支持的客戶端和庫
以下是已知支持 GGUF 的客戶端和庫:
- llama.cpp:GGUF 的源項目,提供 CLI 和服務器選項。
- [text - generation - webui](https://github.com/oobabooga/text - generation - webui):最廣泛使用的 Web UI,具有許多功能和強大的擴展,支持 GPU 加速。
- KoboldCpp:功能齊全的 Web UI,支持跨所有平臺和 GPU 架構的 GPU 加速,特別適合講故事。
- LM Studio:適用於 Windows 和 macOS(Silicon)的易於使用且功能強大的本地 GUI,支持 GPU 加速。
- [LoLLMS Web UI](https://github.com/ParisNeo/lollms - webui):一個很棒的 Web UI,具有許多有趣和獨特的功能,包括一個完整的模型庫,便於選擇模型。
- Faraday.dev:適用於 Windows 和 macOS(Silicon 和 Intel)的有吸引力且易於使用的基於角色的聊天 GUI,支持 GPU 加速。
- ctransformers:一個支持 GPU 加速、LangChain 支持和 OpenAI 兼容 AI 服務器的 Python 庫。
- [llama - cpp - python](https://github.com/abetlen/llama - cpp - python):一個支持 GPU 加速、LangChain 支持和 OpenAI 兼容 API 服務器的 Python 庫。
- candle:一個專注於性能的 Rust ML 框架,包括 GPU 支持和易於使用。
模型功能
- 代碼完成:支持代碼完成功能。
- 指令/聊天:支持指令跟隨和聊天功能。
📦 安裝指南
使用原模型
要使用原模型,請確保在新版本發佈之前從 main
分支安裝 transformers
:
pip install git+https://github.com/huggingface/transformers.git@main accelerate
下載 GGUF 文件
手動下載注意事項
幾乎不需要克隆整個倉庫!提供了多種不同的量化格式,大多數用戶只需要選擇並下載單個文件。
使用 huggingface - hub
庫下載
pip3 install huggingface - hub>=0.17.1
加速下載
在高速連接(1Gbit/s 或更高)上加速下載,安裝 hf_transfer
:
pip3 install hf_transfer
並設置環境變量 HF_HUB_ENABLE_HF_TRANSFER
為 1
:
HUGGINGFACE_HUB_ENABLE_HF_TRANSFER = 1 huggingface - cli download TheBloke/CodeLlama - 34B - Instruct - GGUF codellama - 34b - instruct.q4_K_M.gguf --local - dir. --local - dir - use - symlinks False
Windows CLI 用戶:在運行下載命令之前使用 set HUGGINGFACE_HUB_ENABLE_HF_TRANSFER = 1
。
💻 使用示例
基礎用法
from ctransformers import AutoModelForCausalLM
# 將 gpu_layers 設置為要卸載到 GPU 的層數。如果系統沒有 GPU 加速,將其設置為 0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama - 34B - Instruct - GGUF", model_file="codellama - 34b - instruct.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
高級用法
# 可以根據需要調整模型參數,如溫度、重複懲罰等
from ctransformers import AutoModelForCausalLM
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama - 34B - Instruct - GGUF", model_file="codellama - 34b - instruct.q4_K_M.gguf", model_type="llama", gpu_layers=50)
prompt = "[INST] Write a function in Python to calculate the factorial of a number:\n[/INST]"
output = llm(prompt, temperature=0.7, repeat_penalty=1.1)
print(output)
📚 詳細文檔
模型詳情
- 模型開發者:Meta
- 變體:Code Llama 有三種模型大小和三種變體:
- Code Llama:用於一般代碼合成和理解的基礎模型。
- Code Llama - Python:專門為 Python 設計。
- Code Llama - Instruct:用於指令跟隨和更安全的部署。 所有變體都有 7B、13B 和 34B 參數的版本。本倉庫包含 34B 參數的 Instruct 版本模型。
- 輸入:模型僅接受文本輸入。
- 輸出:模型僅生成文本輸出。
- 模型架構:Code Llama 是一個使用優化變壓器架構的自迴歸語言模型。
- 模型日期:Code Llama 及其變體在 2023 年 1 月至 2023 年 7 月期間進行了訓練。
- 狀態:這是一個在離線數據集上訓練的靜態模型。隨著通過社區反饋改進模型安全性,未來將發佈 Code Llama - Instruct 的新版本。
- 許可證:可在 [https://ai.meta.com/resources/models - and - libraries/llama - downloads/](https://ai.meta.com/resources/models - and - libraries/llama - downloads/) 獲取自定義商業許可證。
- 研究論文:更多信息可在論文“[Code Llama: Open Foundation Models for Code](https://ai.meta.com/research/publications/code - llama - open - foundation - models - for - code/)”或其 arXiv 頁面 中找到。
預期用途
- 預期用例:Code Llama 及其變體旨在用於英語和相關編程語言的商業和研究用途。基礎模型 Code Llama 可適用於各種代碼合成和理解任務,Code Llama - Python 專門用於處理 Python 編程語言,Code Llama - Instruct 旨在更安全地用於代碼助手和生成應用程序。
- 超出範圍的用途:以任何違反適用法律法規(包括貿易合規法律)的方式使用。使用英語以外的語言。以 Code Llama 及其變體的可接受使用政策和許可協議禁止的任何其他方式使用。
硬件和軟件
- 訓練因素:使用自定義訓練庫。已發佈模型的訓練和微調在 Meta 的研究超級集群上進行。
- 碳足跡:總體而言,訓練所有 9 個 Code Llama 模型需要在 A100 - 80GB 類型的硬件上進行 400K GPU 小時的計算(TDP 為 350 - 400W)。估計總排放量為 65.3 tCO2eq,其中 100% 由 Meta 的可持續發展計劃抵消。
訓練數據
此處報告的所有實驗和已發佈的模型都使用與 Llama 2 相同的數據進行訓練和微調,但權重不同(詳細信息請參閱 [研究論文](https://ai.meta.com/research/publications/code - llama - open - foundation - models - for - code/) 中的第 2 節和表 1)。
評估結果
請參閱研究論文第 3 節中的主要模型評估和詳細消融實驗,以及第 4 節中的安全評估。
倫理考慮和侷限性
Code Llama 及其變體是一項帶有使用風險的新技術。到目前為止進行的測試是在英語環境中進行的,並且沒有涵蓋也不可能涵蓋所有場景。由於這些原因,與所有大語言模型一樣,Code Llama 的潛在輸出無法提前預測,並且在某些情況下,模型可能會對用戶提示產生不準確或令人反感的響應。因此,在部署 Code Llama 的任何應用程序之前,開發人員應該針對其特定的模型應用進行安全測試和調整。請參閱 [https://ai.meta.com/llama/responsible - user - guide](https://ai.meta.com/llama/responsible - user - guide) 上的負責任使用指南。
🔧 技術細節
量化方法說明
點擊查看詳情
新的量化方法如下:
- GGML_TYPE_Q2_K:“type - 1”2 位量化,超級塊包含 16 個塊,每個塊有 16 個權重。塊的縮放和最小值用 4 位量化。最終每個權重有效使用 2.5625 位(bpw)。
- GGML_TYPE_Q3_K:“type - 0”3 位量化,超級塊包含 16 個塊,每個塊有 16 個權重。縮放用 6 位量化。最終使用 3.4375 bpw。
- GGML_TYPE_Q4_K:“type - 1”4 位量化,超級塊包含 8 個塊,每個塊有 32 個權重。縮放和最小值用 6 位量化。最終使用 4.5 bpw。
- GGML_TYPE_Q5_K:“type - 1”5 位量化。與 GGML_TYPE_Q4_K 具有相同的超級塊結構,最終使用 5.5 bpw。
- GGML_TYPE_Q6_K:“type - 0”6 位量化。超級塊有 16 個塊,每個塊有 16 個權重。縮放用 8 位量化。最終使用 6.5625 bpw。
請參考下面的“提供的文件”表,瞭解哪些文件使用了哪些方法以及如何使用。
提供的文件
名稱 | 量化方法 | 位數 | 大小 | 所需最大 RAM | 使用場景 |
---|---|---|---|---|---|
[codellama - 34b - instruct.Q2_K.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q2_K.gguf) | Q2_K | 2 | 14.21 GB | 16.71 GB | 最小,但有顯著的質量損失 - 不推薦用於大多數用途 |
[codellama - 34b - instruct.Q3_K_S.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q3_K_S.gguf) | Q3_K_S | 3 | 14.61 GB | 17.11 GB | 非常小,但有較高的質量損失 |
[codellama - 34b - instruct.Q3_K_M.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q3_K_M.gguf) | Q3_K_M | 3 | 16.28 GB | 18.78 GB | 非常小,但有較高的質量損失 |
[codellama - 34b - instruct.Q3_K_L.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q3_K_L.gguf) | Q3_K_L | 3 | 17.77 GB | 20.27 GB | 小,但有較大的質量損失 |
[codellama - 34b - instruct.Q4_0.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q4_0.gguf) | Q4_0 | 4 | 19.05 GB | 21.55 GB | 舊版本;小,但有非常高的質量損失 - 建議使用 Q3_K_M |
[codellama - 34b - instruct.Q4_K_S.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q4_K_S.gguf) | Q4_K_S | 4 | 19.15 GB | 21.65 GB | 小,但有較大的質量損失 |
[codellama - 34b - instruct.Q4_K_M.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q4_K_M.gguf) | Q4_K_M | 4 | 20.22 GB | 22.72 GB | 中等,質量平衡 - 推薦 |
[codellama - 34b - instruct.Q5_0.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q5_0.gguf) | Q5_0 | 5 | 23.24 GB | 25.74 GB | 舊版本;中等,質量平衡 - 建議使用 Q4_K_M |
[codellama - 34b - instruct.Q5_K_S.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q5_K_S.gguf) | Q5_K_S | 5 | 23.24 GB | 25.74 GB | 大,質量損失低 - 推薦 |
[codellama - 34b - instruct.Q5_K_M.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q5_K_M.gguf) | Q5_K_M | 5 | 23.84 GB | 26.34 GB | 大,質量損失非常低 - 推薦 |
[codellama - 34b - instruct.Q6_K.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q6_K.gguf) | Q6_K | 6 | 27.68 GB | 30.18 GB | 非常大,質量損失極低 |
[codellama - 34b - instruct.Q8_0.gguf](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF/blob/main/codellama - 34b - instruct.Q8_0.gguf) | Q8_0 | 8 | 35.86 GB | 38.36 GB | 非常大,質量損失極低 - 不推薦 |
注意:上述 RAM 數字假設沒有進行 GPU 卸載。如果將層卸載到 GPU,這將減少 RAM 使用並使用 VRAM 代替。
📄 許可證
本模型使用受 Meta 許可證約束。自定義商業許可證可在 [https://ai.meta.com/resources/models - and - libraries/llama - downloads/](https://ai.meta.com/resources/models - and - libraries/llama - downloads/) 獲取。
其他信息
可用倉庫
- [用於 GPU 推理的 AWQ 模型](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - AWQ)
- [用於 GPU 推理的 GPTQ 模型,具有多個量化參數選項](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GPTQ)
- [用於 CPU + GPU 推理的 2、3、4、5、6 和 8 位 GGUF 模型](https://huggingface.co/TheBloke/CodeLlama - 34B - Instruct - GGUF)
- [Meta 的原始未量化 fp16 格式的 PyTorch 模型,用於 GPU 推理和進一步轉換](https://huggingface.co/codellama/CodeLlama - 34b - instruct - hf)
提示模板
[INST] Write code to solve the following coding problem that obeys the constraints and passes the example test cases. Please wrap your code answer using ```:
{prompt}
[/INST]
兼容性
這些量化的 GGUFv2 文件與 2023 年 8 月 27 日之後的 llama.cpp
版本兼容(提交號:d0cee0d36d5be95a0d9088b674dbb27354107221)。它們也與許多第三方 UI 和庫兼容 - 請參閱本 README 頂部的列表。
Discord
如需進一步支持,以及討論這些模型和人工智能相關內容,加入我們:TheBloke AI 的 Discord 服務器
感謝與貢獻
感謝 chirper.ai 團隊!感謝來自 [gpus.llm - utils.org](llm - utils) 的 Clay!
很多人詢問是否可以貢獻。我喜歡提供模型並幫助他人,也希望能夠花更多時間做這些事情,以及開展新的項目,如微調/訓練。
如果您有能力並願意貢獻,將不勝感激,這將幫助我繼續提供更多模型,並開始新的人工智能項目。捐贈者將在任何人工智能/大語言模型/模型問題和請求上獲得優先支持,訪問私人 Discord 房間,以及其他福利。
- Patreon:https://patreon.com/TheBlokeAI
- Ko - Fi:https://ko - fi.com/TheBlokeAI
特別感謝:Aemon Algiz。
Patreon 特別提及:Alicia Loh、Stephen Murray、K、Ajan Kanaga、RoA、Magnesian、Deo Leter、Olakabola、Eugene Pentland、zynix、Deep Realms、Raymond Fosdick、Elijah Stavena、Iucharbius、Erik Bjäreholt、Luis Javier Navarrete Lozano、Nicholas、theTransient、John Detwiler、alfie_i、knownsqashed、Mano Prime、Willem Michiel、Enrico Ros、LangChain4j、OG、Michael Dempsey、Pierre Kircher、Pedro Madruga、James Bentley、Thomas Belote、Luke @flexchar、Leonard Tan、Johann - Peter Hartmann、Illia Dulskyi、Fen Risland、Chadd、S_X、Jeff Scroggin、Ken Nordquist、Sean Connelly、Artur Olbinski、Swaroop Kallakuri、Jack West、Ai Maven、David Ziegler、Russ Johnson、transmissions 11、John Villwock、Alps Aficionado、Clay Pascal、Viktor Bowallius、Subspace Studios、Rainer Wilmers、Trenton Dambrowitz、vamX、Michael Levine、준교 김、Brandon Frisco、Kalila、Trailburnt、Randy H、Talal Aujan、Nathan Dryer、Vadim、阿明、ReadyPlayerEmma、Tiffany J. Kim、George Stoitzev、Spencer Kim、Jerry Meng、Gabriel Tamborski、Cory Kujawski、Jeffrey Morgan、Spiking Neurons AB、Edmond Seymore、Alexandros Triantafyllidis、Lone Striker、Cap'n Zoog、Nikolai Manek、danny、ya boyyy、Derek Yates、usrbinkat、Mandus、TL、Nathan LeClaire、subjectnull、Imad Khwaja、webtim、Raven Klaugh、Asp the Wyvern、Gabriel Puliatti、Caitlyn Gatomon、Joseph William Delisle、Jonathan Leane、Luke Pendergrass、SuperWojo、Sebastain Graf、Will Dee、Fred von Graf、Andrey、Dan Guido、Daniel P. Andersen、Nitin Borwankar、Elle、Vitor Caleffi、biorpg、jjj、NimbleBox.ai、Pieter、Matthew Berman、terasurfer、Michael Davis、Alex、Stanislav Ovsiannikov
感謝所有慷慨的贊助者和捐贈者!再次感謝 a16z 的慷慨資助。



