模型简介
模型特点
模型能力
使用案例
🚀 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的慷慨资助。



