模型简介
模型特点
模型能力
使用案例
🚀 CodeLlama 34B Instruct - GPTQ
本项目提供了 Meta的CodeLlama 34B Instruct 的GPTQ模型文件。包含多种GPTQ参数排列,可根据自身硬件和需求进行选择。
📦 安装指南
安装必要的包
需要安装:Transformers 4.32.0 或更高版本,Optimum 1.12.0 或更高版本,以及 AutoGPTQ 0.4.2 或更高版本。
pip3 install transformers>=4.32.0 optimum>=1.12.0
pip3 install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/ # 如果使用CUDA 11.7,请使用cu117
如果使用预构建的轮子安装 AutoGPTQ 时遇到问题,可以从源代码安装:
pip3 uninstall -y auto-gptq
git clone https://github.com/PanQiWei/AutoGPTQ
cd AutoGPTQ
pip3 install .
仅针对CodeLlama模型:必须使用Transformers 4.33.0或更高版本
如果在阅读本文时 4.33.0 版本尚未发布,则需要从源代码安装 Transformers:
pip3 uninstall -y transformers
pip3 install git+https://github.com/huggingface/transformers.git
💻 使用示例
如何在 text-generation-webui 中轻松下载和使用此模型
请确保使用的是 text-generation-webui 的最新版本。强烈建议使用 text-generation-webui 的一键安装程序,除非你确定自己知道如何手动安装。
- 点击 模型 选项卡。
- 在 下载自定义模型或LoRA 下,输入
TheBloke/CodeLlama-34B-Instruct-GPTQ
。- 若要从特定分支下载,例如输入
TheBloke/CodeLlama-34B-Instruct-GPTQ:main
。 - 请参阅上述 提供的文件 以获取每个选项的分支列表。
- 若要从特定分支下载,例如输入
- 点击 下载。
- 模型将开始下载。下载完成后会显示 “已完成”。
- 在左上角,点击 模型 旁边的刷新图标。
- 在 模型 下拉菜单中,选择你刚刚下载的模型:
CodeLlama-34B-Instruct-GPTQ
。 - 模型将自动加载,现在可以使用了!
- 如果你需要自定义设置,请进行设置,然后点击右上角的 保存此模型的设置,接着点击 重新加载模型。
- 注意,你不再需要也不应该手动设置 GPTQ 参数。这些参数会从
quantize_config.json
文件中自动设置。
- 注意,你不再需要也不应该手动设置 GPTQ 参数。这些参数会从
- 准备好后,点击 文本生成 选项卡并输入提示以开始!
如何从Python代码使用此GPTQ模型
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
model_name_or_path = "TheBloke/CodeLlama-34B-Instruct-GPTQ"
# 若要使用不同的分支,请更改revision
# 例如:revision="main"
model = AutoModelForCausalLM.from_pretrained(model_name_or_path,
device_map="auto",
trust_remote_code=False,
revision="main")
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=True)
prompt = "Tell me about AI"
prompt_template=f'''[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]
'''
print("\n\n*** Generate:")
input_ids = tokenizer(prompt_template, return_tensors='pt').input_ids.cuda()
output = model.generate(inputs=input_ids, temperature=0.7, do_sample=True, top_p=0.95, top_k=40, max_new_tokens=512)
print(tokenizer.decode(output[0]))
# 也可以使用transformers的pipeline进行推理
print("*** Pipeline:")
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.95,
top_k=40,
repetition_penalty=1.1
)
print(pipe(prompt_template)[0]['generated_text'])
📚 详细文档
描述
此仓库包含 Meta的CodeLlama 34B Instruct 的GPTQ模型文件。提供了多种GPTQ参数排列,具体选项、参数以及创建它们所使用的软件详情,请参阅下面的 提供的文件。
可用的仓库
- 用于GPU推理的AWQ模型。
- 用于GPU推理的GPTQ模型,具有多种量化参数选项。
- 适用于CPU+GPU推理的2、3、4、5、6和8位GGUF模型。
- Meta原始的未量化fp16 PyTorch格式模型,用于GPU推理和进一步转换。
提示模板:CodeLlama
[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]
提供的文件和GPTQ参数
提供了多种量化参数,以便你根据自己的硬件和需求选择最佳参数。每个单独的量化版本位于不同的分支中。有关从不同分支获取文件的说明,请参阅下面的 如何从分支下载。所有近期的GPTQ文件均使用AutoGPTQ生成,非主分支中的所有文件也使用AutoGPTQ生成。main
分支中2023年8月之前上传的文件使用GPTQ-for-LLaMa生成。
GPTQ参数说明
- 位:量化模型的位大小。
- GS:GPTQ组大小。数值越高,使用的显存越少,但量化精度越低。“无” 是可能的最低值。
- 激活顺序:真或假。也称为
desc_act
。真可获得更好的量化精度。一些GPTQ客户端在使用激活顺序加组大小的模型时遇到过问题,但现在这个问题通常已解决。 - 衰减百分比:一个影响量化样本处理方式的GPTQ参数。默认值为0.01,但0.1可获得稍高的精度。
- GPTQ数据集:用于量化的数据集。使用更适合模型训练的数据集可以提高量化精度。请注意,GPTQ数据集与用于训练模型的数据集不同 - 有关训练数据集的详细信息,请参阅原始模型仓库。
- 序列长度:用于量化的数据集序列的长度。理想情况下,这应与模型序列长度相同。对于一些非常长序列的模型(16+K),可能需要使用较低的序列长度。请注意,较低的序列长度不会限制量化模型的序列长度。它仅影响较长推理序列的量化精度。
- ExLlama兼容性:此文件是否可以使用ExLlama加载,目前ExLlama仅支持4位的Llama模型。
分支 | 位 | GS | 激活顺序 | 衰减百分比 | GPTQ数据集 | 序列长度 | 大小 | ExLlama兼容性 | 描述 |
---|---|---|---|---|---|---|---|---|---|
main | 4 | 128 | 否 | 0.1 | Evol Instruct Code | 4096 | 18.33 GB | 是 | 4位,无激活顺序,组大小为128g。 |
gptq-4bit-32g-actorder_True | 4 | 32 | 是 | 0.1 | Evol Instruct Code | 4096 | 20.28 GB | 是 | 4位,有激活顺序,组大小为32g。可获得最高的推理质量,但显存使用量最大。 |
gptq-4bit-64g-actorder_True | 4 | 64 | 是 | 0.1 | Evol Instruct Code | 4096 | 18.98 GB | 是 | 4位,有激活顺序,组大小为64g。比32g使用的显存少,但精度稍低。 |
gptq-4bit-128g-actorder_True | 4 | 128 | 是 | 0.1 | Evol Instruct Code | 4096 | 18.33 GB | 是 | 4位,有激活顺序,组大小为128g。比64g使用的显存更少,但精度稍低。 |
gptq-8bit--1g-actorder_True | 8 | 无 | 是 | 0.1 | Evol Instruct Code | 4096 | 34.30 GB | 否 | 8位,有激活顺序。无组大小,以降低显存需求。 |
gptq-8bit-128g-actorder_True | 8 | 128 | 是 | 0.1 | Evol Instruct Code | 4096 | 35.07 GB | 否 | 8位,组大小为128g以提高推理质量,有激活顺序以获得更高的精度。 |
如何从分支下载
- 在text-generation-webui中,可以在下载名称末尾添加
:分支名
,例如TheBloke/CodeLlama-34B-Instruct-GPTQ:main
。 - 使用Git,可以使用以下命令克隆分支:
git clone --single-branch --branch main https://huggingface.co/TheBloke/CodeLlama-34B-Instruct-GPTQ
- 在Python Transformers代码中,分支是
revision
参数;请参阅上述代码示例。
兼容性
提供的文件已测试可与AutoGPTQ一起使用,既可以通过Transformers使用,也可以直接使用AutoGPTQ。它们也应该可以与 Occ4m的GPTQ-for-LLaMa分支 一起使用。
ExLlama 与4位的Llama模型兼容。请参阅上述 提供的文件 表以获取每个文件的兼容性信息。
Huggingface文本生成推理(TGI) 与所有GPTQ模型兼容。
🔧 技术细节
模型详情
*注意:此模型的使用受Meta许可证的约束。Meta开发并公开发布了Code Llama系列大语言模型(LLM)。
模型开发者 Meta
变体 Code Llama有三种模型大小和三种变体:
- Code Llama:用于一般代码合成和理解的基础模型。
- Code Llama - Python:专门为Python设计。
- Code Llama - Instruct:用于遵循指令和更安全的部署。
所有变体都有7B、13B和34B参数的版本。
本仓库包含34B参数模型的Instruct版本。
输入 模型仅接受文本输入。
输出 模型仅生成文本。
模型架构 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类型的硬件(TDP为350 - 400W)上进行400K GPU小时的计算。估计总排放量为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 上的《负责任使用指南》。
📄 许可证
本模型使用的许可证为 llama2,具体自定义商业许可证可在 https://ai.meta.com/resources/models-and-libraries/llama-downloads/ 获取。
其他信息
Discord
如需进一步支持,以及讨论这些模型和一般人工智能,请加入我们的: TheBloke AI的Discord服务器
感谢与贡献方式
感谢 chirper.ai 团队!感谢来自 gpus.llm-utils.org 的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的慷慨资助。



