模型概述
模型特點
模型能力
使用案例
🚀 CodeLlama 7B - GGUF
本項目提供了Meta的CodeLlama 7B模型的GGUF格式文件,可用於代碼生成和理解任務。GGUF格式具有更好的分詞效果和對特殊標記的支持,適用於多種客戶端和庫。
🚀 快速開始
下載模型
你可以通過以下幾種方式下載GGUF文件:
- 自動下載客戶端:LM Studio、LoLLMS Web UI、Faraday.dev會自動為你下載模型,並提供可用模型列表供你選擇。
- text-generation-webui:在“Download Model”中輸入模型倉庫地址
TheBloke/CodeLlama-7B-GGUF
,並在下方輸入要下載的具體文件名,如codellama-7b.q4_K_M.gguf
,然後點擊“Download”。 - 命令行:推薦使用
huggingface-hub
Python庫進行下載。
然後使用以下命令下載單個模型文件:pip3 install huggingface-hub>=0.17.1
若要一次下載多個文件,可使用模式匹配:huggingface-cli download TheBloke/CodeLlama-7B-GGUF codellama-7b.q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
若要加速高速連接(1Gbit/s或更高)的下載,可安裝huggingface-cli download TheBloke/CodeLlama-7B-GGUF --local-dir . --local-dir-use-symlinks False --include='*Q4_K*gguf'
hf_transfer
:
並設置環境變量pip3 install hf_transfer
HF_HUB_ENABLE_HF_TRANSFER
為1
:
Windows CLI用戶在運行下載命令前使用HUGGINGFACE_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download TheBloke/CodeLlama-7B-GGUF codellama-7b.q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
set HUGGINGFACE_HUB_ENABLE_HF_TRANSFER=1
。
運行模型
llama.cpp
確保使用的是2023年8月27日之後的 llama.cpp
版本(提交號 d0cee0d36d5be95a0d9088b674dbb27354107221)。
./main -ngl 32 -m codellama-7b.q4_K_M.gguf --color -c 4096 --temp 0.7 --repeat_penalty 1.1 -n -1 -p "{prompt}"
-ngl 32
:要卸載到GPU的層數。如果沒有GPU加速,請移除該參數。-c 4096
:所需的序列長度。對於擴展序列模型(如8K、16K、32K),必要的RoPE縮放參數會從GGUF文件中讀取並由llama.cpp
自動設置。- 若要進行聊天式對話,將
-p <PROMPT>
參數替換為-i -ins
。
其他參數和使用方法請參考 llama.cpp文檔。
text-generation-webui
更多說明請參考 text-generation-webui/docs/llama.cpp.md。
Python代碼
你可以使用 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
簡單示例代碼:
from ctransformers import AutoModelForCausalLM
# 將gpu_layers設置為要卸載到GPU的層數。如果系統上沒有GPU加速,請設置為0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama-7B-GGUF", model_file="codellama-7b.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
✨ 主要特性
- 支持多種量化方法:提供Q2_K、Q3_K_S、Q3_K_M等多種量化方法的文件,可根據需求選擇不同的量化級別。
- 廣泛的兼容性:與llama.cpp以及許多第三方UI和庫兼容,如text-generation-webui、KoboldCpp等。
- 多語言支持:適用於代碼生成和理解任務,支持多種編程語言。
📦 安裝指南
安裝依賴庫
pip3 install huggingface-hub>=0.17.1
若要加速下載,可安裝 hf_transfer
:
pip3 install hf_transfer
下載模型文件
根據上述下載方法下載所需的模型文件。
💻 使用示例
基礎用法
from ctransformers import AutoModelForCausalLM
# 將gpu_layers設置為要卸載到GPU的層數。如果系統上沒有GPU加速,請設置為0。
llm = AutoModelForCausalLM.from_pretrained("TheBloke/CodeLlama-7B-GGUF", model_file="codellama-7b.q4_K_M.gguf", model_type="llama", gpu_layers=50)
print(llm("AI is going to"))
高級用法
from transformers import AutoTokenizer
import transformers
import torch
model = "codellama/CodeLlama-7b-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']}")
📚 詳細文檔
關於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 ML框架,包括GPU支持和易用性。
可用倉庫
- 用於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-7b.Q2_K.gguf | Q2_K | 2 | 2.83 GB | 5.33 GB | 最小,但質量損失顯著,不建議用於大多數用途 |
codellama-7b.Q3_K_S.gguf | Q3_K_S | 3 | 2.95 GB | 5.45 GB | 非常小,但質量損失高 |
codellama-7b.Q3_K_M.gguf | Q3_K_M | 3 | 3.30 GB | 5.80 GB | 非常小,但質量損失高 |
codellama-7b.Q3_K_L.gguf | Q3_K_L | 3 | 3.60 GB | 6.10 GB | 小,但質量損失較大 |
codellama-7b.Q4_0.gguf | Q4_0 | 4 | 3.83 GB | 6.33 GB | 舊版;小,但質量損失非常高,建議使用Q3_K_M |
codellama-7b.Q4_K_S.gguf | Q4_K_S | 4 | 3.86 GB | 6.36 GB | 小,但質量損失較大 |
codellama-7b.Q4_K_M.gguf | Q4_K_M | 4 | 4.08 GB | 6.58 GB | 中等,質量平衡,推薦使用 |
codellama-7b.Q5_0.gguf | Q5_0 | 5 | 4.65 GB | 7.15 GB | 舊版;中等,質量平衡,建議使用Q4_K_M |
codellama-7b.Q5_K_S.gguf | Q5_K_S | 5 | 4.65 GB | 7.15 GB | 大,質量損失低,推薦使用 |
codellama-7b.Q5_K_M.gguf | Q5_K_M | 5 | 4.78 GB | 7.28 GB | 大,質量損失非常低,推薦使用 |
codellama-7b.Q6_K.gguf | Q6_K | 6 | 5.53 GB | 8.03 GB | 非常大,質量損失極低 |
codellama-7b.Q8_0.gguf | Q8_0 | 8 | 7.16 GB | 9.66 GB | 非常大,質量損失極低,但不建議使用 |
注意:上述RAM數字假設沒有GPU卸載。如果將層卸載到GPU,這將減少RAM使用並使用VRAM。
🔧 技術細節
模型架構
Code Llama是一個自迴歸語言模型,使用了優化的Transformer架構。
訓練數據
所有實驗和發佈的模型都使用與Llama 2相同的數據進行訓練和微調,但權重不同(詳情請參閱 研究論文 中的第2節和表1)。
訓練時間
Code Llama及其變體在2023年1月至2023年7月期間進行了訓練。
📄 許可證
本模型的使用受Meta許可證的約束。Meta開發並公開發布了Code Llama系列大語言模型(LLM)。自定義商業許可證可在 https://ai.meta.com/resources/models-and-libraries/llama-downloads/ 獲取。
免責聲明
Code Llama及其變體是一項新技術,使用時存在風險。到目前為止進行的測試均使用英語,且無法涵蓋所有場景。因此,與所有LLM一樣,Code Llama的潛在輸出無法提前預測,模型在某些情況下可能會對用戶提示產生不準確或令人反感的響應。因此,在部署任何Code Llama應用程序之前,開發人員應針對其特定應用程序進行安全測試和調整。
請參閱 負責任使用指南。
致謝
感謝以下團隊和個人的支持:
- chirper.ai 團隊
- gpus.llm-utils.org 的Clay
如果你願意提供支持,可以通過以下方式進行捐贈:
- Patreon: https://patreon.com/TheBlokeAI
- Ko-Fi: https://ko-fi.com/TheBlokeAI
捐贈者將在所有AI/LLM/模型問題和請求上獲得優先支持,訪問私人Discord房間以及其他福利。
特別感謝:Aemon Algiz。
Patreon特別提及:Alicia Loh、Stephen Murray等眾多支持者。
感謝所有慷慨的贊助者和捐贈者!再次感謝a16z的慷慨資助。
Discord
如需進一步支持和討論這些模型及AI相關話題,請加入 TheBloke AI的Discord服務器。



