模型概述
模型特點
模型能力
使用案例
🚀 CodeLlama 13B - GGUF
本項目提供了Meta的CodeLlama 13B模型的GGUF格式文件,可用於代碼生成等相關任務,支持多種客戶端和庫,方便用戶在不同環境下使用。
🚀 快速開始
環境準備
確保你已經安裝了必要的依賴庫,如huggingface-hub
等。可以使用以下命令進行安裝:
pip3 install huggingface-hub>=0.17.1
下載模型文件
你可以使用huggingface-cli
命令下載指定的模型文件,例如:
huggingface-cli download TheBloke/CodeLlama-13B-GGUF codellama-13b.q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
運行示例
llama.cpp命令示例
確保你使用的是指定版本及以後的llama.cpp
:
./main -ngl 32 -m codellama-13b.q4_K_M.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "{prompt}"
根據實際情況調整參數,如-ngl
用於指定卸載到GPU的層數,-c
用於指定序列長度等。
在text-generation-webui中運行
具體說明請參考:text-generation-webui/docs/llama.cpp.md。
從Python代碼運行
可以使用llama-cpp-python
或ctransformers
庫來加載和使用GGUF模型。以下是使用ctransformers
的示例:
from ctransformers import AutoModelForCausalLM
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama-13B-GGUF", model_file="codellama-13b.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
與LangChain結合使用
可以參考以下指南:
✨ 主要特性
關於GGUF格式
GGUF是llama.cpp團隊在2023年8月21日引入的一種新格式,它取代了不再被llama.cpp支持的GGML格式。GGUF相較於GGML具有諸多優勢,例如更好的分詞功能、對特殊標記的支持,還支持元數據,並且具有可擴展性。
支持的客戶端和庫
以下是已知支持GGUF格式的部分客戶端和庫:
- llama.cpp:GGUF的源項目,提供CLI和服務器選項。
- text-generation-webui:最廣泛使用的Web UI,具有許多功能和強大的擴展,支持GPU加速。
- KoboldCpp:功能齊全的Web UI,支持全平臺和各種GPU架構的GPU加速,尤其適合故事創作。
- LM Studio:適用於Windows和macOS(Silicon)的易於使用且功能強大的本地GUI,支持GPU加速。
- LoLLMS Web UI:一個很棒的Web UI,具有許多有趣和獨特的功能,包括一個完整的模型庫,便於模型選擇。
- Faraday.dev:適用於Windows和macOS(Silicon和Intel)的有吸引力且易於使用的基於角色的聊天GUI,支持GPU加速。
- ctransformers:一個支持GPU加速、LangChain集成和OpenAI兼容AI服務器的Python庫。
- llama-cpp-python:一個支持GPU加速、LangChain集成和OpenAI兼容API服務器的Python庫。
- candle:一個專注於性能的Rust機器學習框架,包括GPU支持,並且易於使用。
📦 安裝指南
下載GGUF文件
手動下載注意事項
通常不建議克隆整個倉庫,因為提供了多種不同的量化格式,大多數用戶只需要選擇並下載單個文件。
自動下載方式
以下客戶端/庫會自動為你下載模型,並提供可用模型列表供你選擇:
- LM Studio
- LoLLMS Web UI
- Faraday.dev
在text-generation-webui中下載
在“Download Model”下,輸入模型倉庫名稱TheBloke/CodeLlama-13B-GGUF
,並在下方輸入要下載的具體文件名,如codellama-13b.q4_K_M.gguf
,然後點擊“Download”。
命令行下載
推薦使用huggingface-hub
Python庫進行下載:
pip3 install huggingface-hub>=0.17.1
然後可以使用以下命令將單個模型文件高速下載到當前目錄:
huggingface-cli download TheBloke/CodeLlama-13B-GGUF codellama-13b.q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
高級下載用法
你還可以使用通配符一次性下載多個文件:
huggingface-cli download TheBloke/CodeLlama-13B-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
有關huggingface-cli
下載的更多文檔,請參閱:HF -> Hub Python Library -> Download files -> Download from the CLI。
加速下載
對於高速連接(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-13B-GGUF codellama-13b.q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
Windows CLI用戶在運行下載命令前使用set HUGGINGFACE_HUB_ENABLE_HF_TRANSFER=1
。
💻 使用示例
基礎用法
以下是使用ctransformers
加載和使用GGUF模型的簡單示例:
from ctransformers import AutoModelForCausalLM
# Set gpu_layers to the number of layers to offload to GPU. Set to 0 if no GPU acceleration is available on your system.
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama-13B-GGUF", model_file="codellama-13b.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
高級用法
在實際應用中,你可以根據需要調整模型的參數,如gpu_layers
、temperature
等,以獲得更好的生成效果。
📚 詳細文檔
可用倉庫
- 用於GPU推理的AWQ模型
- 具有多種量化參數選項的用於GPU推理的GPTQ模型
- 用於CPU+GPU推理的2、3、4、5、6和8位GGUF模型
- Meta的原始未量化fp16格式的pytorch模型,用於GPU推理和進一步轉換
提示模板
{prompt}
兼容性
這些量化的GGUFv2文件與2023年8月27日及以後的llama.cpp版本兼容,具體為提交版本d0cee0d36d5be95a0d9088b674dbb27354107221。它們也與許多第三方UI和庫兼容,具體請參閱本README頂部的列表。
量化方法說明
新的量化方法如下:
- 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-13b.Q2_K.gguf | Q2_K | 2 | 5.43 GB | 7.93 GB | 最小,但質量損失顯著,不建議用於大多數場景 |
codellama-13b.Q3_K_S.gguf | Q3_K_S | 3 | 5.66 GB | 8.16 GB | 非常小,但質量損失高 |
codellama-13b.Q3_K_M.gguf | Q3_K_M | 3 | 6.34 GB | 8.84 GB | 非常小,但質量損失高 |
codellama-13b.Q3_K_L.gguf | Q3_K_L | 3 | 6.93 GB | 9.43 GB | 小,但質量損失較大 |
codellama-13b.Q4_0.gguf | Q4_0 | 4 | 7.37 GB | 9.87 GB | 舊版本;小,但質量損失非常高,建議使用Q3_K_M |
codellama-13b.Q4_K_S.gguf | Q4_K_S | 4 | 7.41 GB | 9.91 GB | 小,但質量損失較大 |
codellama-13b.Q4_K_M.gguf | Q4_K_M | 4 | 7.87 GB | 10.37 GB | 中等,質量平衡,推薦使用 |
codellama-13b.Q5_0.gguf | Q5_0 | 5 | 8.97 GB | 11.47 GB | 舊版本;中等,質量平衡,建議使用Q4_K_M |
codellama-13b.Q5_K_S.gguf | Q5_K_S | 5 | 8.97 GB | 11.47 GB | 大,質量損失低,推薦使用 |
codellama-13b.Q5_K_M.gguf | Q5_K_M | 5 | 9.23 GB | 11.73 GB | 大,質量損失非常低,推薦使用 |
codellama-13b.Q6_K.gguf | Q6_K | 6 | 10.68 GB | 13.18 GB | 非常大,質量損失極低 |
codellama-13b.Q8_0.gguf | Q8_0 | 8 | 13.83 GB | 16.33 GB | 非常大,質量損失極低,但不建議使用 |
注意:上述RAM數字假設沒有進行GPU卸載。如果將層卸載到GPU,將減少RAM使用並使用VRAM。
🔧 技術細節
模型使用
在使用此模型之前,請確保從main
分支安裝transformers
,直到下一個版本發佈:
pip install git+https://github.com/huggingface/transformers.git@main accelerate
模型能力
- [x] 代碼補全。
- [x] 代碼填充。
- [ ] 指令/聊天。
- [ ] Python專業處理。
模型代碼示例
from transformers import AutoTokenizer
import transformers
import torch
model = "codellama/CodeLlama-13b-hf"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'import socket\n\ndef ping_exponential_backoff(host: str):',
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
模型詳細信息
- 模型開發者:Meta
- 變體:Code Llama有三種模型大小和三種變體:
- Code Llama:用於一般代碼合成和理解的基礎模型。
- Code Llama - Python:專門為Python設計。
- Code Llama - Instruct:用於指令跟隨和更安全的部署。
所有變體都有7B、13B和34B參數的版本。本倉庫包含13B參數的基礎版本模型。
- 輸入:模型僅接受文本輸入。
- 輸出:模型僅生成文本。
- 模型架構:Code Llama是一個自迴歸語言模型,使用了優化的Transformer架構。
- 模型日期:Code Llama及其變體在2023年1月至2023年7月期間進行了訓練。
- 狀態:這是一個基於離線數據集訓練的靜態模型。隨著我們根據社區反饋改進模型安全性,未來將發佈Code Llama - Instruct的新版本。
- 許可證:自定義商業許可證可在https://ai.meta.com/resources/models-and-libraries/llama-downloads/獲取。
- 研究論文:更多信息可在論文“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相同的數據進行訓練和微調,但權重不同(詳細信息請參閱研究論文的第2節和表1)。
評估結果
請參閱研究論文的第3節中的主要模型評估和詳細消融研究,以及第4節中的安全評估。
倫理考慮和限制
Code Llama及其變體是一種新技術,使用時存在風險。到目前為止進行的測試都是用英語進行的,並且沒有涵蓋也不可能涵蓋所有場景。因此,與所有大語言模型一樣,Code Llama的潛在輸出無法提前預測,在某些情況下,模型可能會對用戶提示產生不準確或令人反感的響應。因此,在部署Code Llama的任何應用程序之前,開發人員應該針對其特定的模型應用進行安全測試和調整。
請參閱https://ai.meta.com/llama/responsible-user-guide上的負責任使用指南。
📄 許可證
本模型的使用受Meta許可證的約束,具體請參考:https://ai.meta.com/resources/models-and-libraries/llama-downloads/
Discord
如需進一步支持,以及討論這些模型和人工智能相關話題,請加入我們的Discord服務器: TheBloke AI的Discord服務器
感謝與貢獻方式
感謝chirper.ai團隊和gpus.llm-utils.org的Clay!
很多人詢問是否可以進行貢獻。我很享受提供模型和幫助他人的過程,也希望能有更多時間來做這些事情,並拓展到新的項目,如微調/訓練。
如果你有能力且願意貢獻,我將非常感激,這將幫助我繼續提供更多模型,並開展新的人工智能項目。捐贈者將在所有AI/LLM/模型問題和請求上獲得優先支持,訪問私人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的慷慨資助。



