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



