模型简介
模型特点
模型能力
使用案例
🚀 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服务器。



