模型:
TheBloke/guanaco-7B-GPTQ
Chat & support: my new Discord server
Want to contribute? TheBloke's Patreon page
这些文件是用于 Tim Dettmers' Guanaco 7B 的 GPTQ 模型文件。
提供了多种不同的 GPTQ 参数排列方式;请查看下面的提供文件部分以了解提供的选项、它们的参数以及用于创建它们的软件的详细信息。
这些模型是使用由 Latitude.sh 提供的硬件进行量化的。
### Human: {prompt} ### Assistant:
提供了多个量化参数,以便您选择适合您的硬件和需求的最佳参数。
每个单独的量化位于不同的分支中。请参阅下面有关从不同分支获取的说明。
Branch | Bits | Group Size | Act Order (desc_act) | File Size | ExLlama Compatible? | Made With | Description |
---|---|---|---|---|---|---|---|
main | 4 | 128 | False | 4.00 GB | True | GPTQ-for-LLaMa | Most compatible option. Good inference speed in AutoGPTQ and GPTQ-for-LLaMa. Lower inference quality than other options. |
gptq-4bit-32g-actorder_True | 4 | 32 | True | 4.28 GB | True | AutoGPTQ | 4-bit, with Act Order and group size. 32g gives highest possible inference quality, with maximum VRAM usage. Poor AutoGPTQ CUDA speed. |
gptq-4bit-64g-actorder_True | 4 | 64 | True | 4.02 GB | True | AutoGPTQ | 4-bit, with Act Order and group size. 64g uses less VRAM than 32g, but with slightly lower accuracy. Poor AutoGPTQ CUDA speed. |
gptq-4bit-128g-actorder_True | 4 | 128 | True | 3.90 GB | True | AutoGPTQ | 4-bit, with Act Order and group size. 128g uses even less VRAM, but with slightly lower accuracy. Poor AutoGPTQ CUDA speed. |
gptq-8bit--1g-actorder_True | 8 | None | True | 7.01 GB | False | AutoGPTQ | 8-bit, with Act Order. No group size, to lower VRAM requirements and to improve AutoGPTQ speed. |
gptq-8bit-128g-actorder_False | 8 | 128 | False | 7.16 GB | False | AutoGPTQ | 8-bit, with group size 128g for higher inference quality and without Act Order to improve AutoGPTQ speed. |
gptq-8bit-128g-actorder_True | 8 | 128 | True | 7.16 GB | False | AutoGPTQ | 8-bit, with group size 128g for higher inference quality and with Act Order for even higher accuracy. Poor AutoGPTQ CUDA speed. |
gptq-8bit-64g-actorder_True | 8 | 64 | True | 7.31 GB | False | AutoGPTQ | 8-bit, with group size 64g and Act Order for maximum inference quality. Poor AutoGPTQ CUDA speed. |
git clone --branch gptq-4bit-32g-actorder_True https://huggingface.co/TheBloke/guanaco-7B-GPTQ`
请确保您使用的是 text-generation-webui 的最新版本。
强烈建议使用 text-generation-webui 的一键安装程序,除非您知道如何进行手动安装。
首先确保您已安装 AutoGPTQ :
GITHUB_ACTIONS=true pip install auto-gptq
然后尝试以下示例代码:
from transformers import AutoTokenizer, pipeline, logging from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig model_name_or_path = "TheBloke/guanaco-7B-GPTQ" model_basename = "Guanaco-7B-GPTQ-4bit-128g.no-act.order" use_triton = False tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=True) model = AutoGPTQForCausalLM.from_quantized(model_name_or_path, model_basename=model_basename use_safetensors=True, trust_remote_code=True, device="cuda:0", use_triton=use_triton, quantize_config=None) """ To download from a specific branch, use the revision parameter, as in this example: model = AutoGPTQForCausalLM.from_quantized(model_name_or_path, revision="gptq-4bit-32g-actorder_True", model_basename=model_basename, use_safetensors=True, trust_remote_code=True, device="cuda:0", quantize_config=None) """ prompt = "Tell me about AI" prompt_template=f'''### Human: {prompt} ### Assistant: ''' print("\n\n*** Generate:") input_ids = tokenizer(prompt_template, return_tensors='pt').input_ids.cuda() output = model.generate(inputs=input_ids, temperature=0.7, max_new_tokens=512) print(tokenizer.decode(output[0])) # Inference can also be done using transformers' pipeline # Prevent printing spurious transformers error when using pipeline with AutoGPTQ logging.set_verbosity(logging.CRITICAL) print("*** Pipeline:") pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=512, temperature=0.7, top_p=0.95, repetition_penalty=1.15 ) print(pipe(prompt_template)[0]['generated_text'])
提供的文件可以在 AutoGPTQ(CUDA 和 Triton 模式)、GPTQ-for-LLaMa(仅 CUDA 经过测试)和 Occ4m 的 GPTQ-for-LLaMa 分支中使用。
ExLlama 可以处理 4 位的 Llama 模型,请参阅上面的提供的文件表以查看每个文件的兼容性。
如需进一步支持或讨论有关这些模型和人工智能的问题,请加入我们的 Discord:
感谢 chirper.ai 团队!
很多人问我他们是否可以进行贡献。我喜欢提供模型和帮助别人,并且很乐意能够更多时间从事这方面的工作,以及扩展到如细调/训练等新项目。
如果您有能力和意愿进行贡献,我将非常感激,并且这将帮助我继续提供更多模型,并开始进行新的人工智能项目的工作。
赞助者将在所有有关人工智能/LLM/模型的问题和请求上享有优先支持,可以进入一个私人的 Discord 房间,以及其他好处。
特别感谢:来自 CarbonQuill 的 Luke,Aemon Algiz。
Patreon 特别感谢:Space Cruiser,Nikolai Manek,Sam,Chris McCloskey,Rishabh Srivastava,Kalila,Spiking Neurons AB,Khalefa Al-Ahmad,WelcomeToTheClub,Chadd,Lone Striker,Viktor Bowallius,Edmond Seymore,Ai Maven,Chris Smitley,Dave,Alexandros Triantafyllidis,Luke @flexchar,Elle,ya boyyy,Talal Aujan,Alex,Jonathan Leane,Deep Realms,Randy H,subjectnull,Preetika Verma,Joseph William Delisle,Michael Levine,chris gileta,K,Oscar Rangel,LangChain4j,Trenton Dambrowitz,Eugene Pentland,Johann-Peter Hartmann,Femi Adebogun,Illia Dulskyi,senxiiz,Daniel P. Andersen,Sean Connelly,Artur Olbinski,RoA,Mano Prime,Derek Yates,Raven Klaugh,David Flickinger,Willem Michiel,Pieter,Willian Hasse,vamX,Luke Pendergrass,webtim,Ghost,Rainer Wilmers,Nathan LeClaire,Will Dee,Cory Kujawski,John Detwiler,Fred von Graf,biorpg,Iucharbius,Imad Khwaja,Pierre Kircher,terasurfer,Asp the Wyvern,John Villwock,theTransient,zynix,Gabriel Tamborski,Fen Risland,Gabriel Puliatti,Matthew Berman,Pyrater,SuperWojo,Stephen Murray,Karl Bernard,Ajan Kanaga,Greatston Gnanesh,Junyu Yang。
感谢所有慷慨的赞助者和贡献者!
Guanaco 模型是通过对 OASST1 数据集上的 LLaMA 基础模型进行 4 位 QLoRA 调优而获得的开源微调聊天机器人。它们分别可用于 7B、13B、33B 和 65B 规模的参数。
⚠️Guanaco 模型纯粹用于研究目的,可能会产生一些问题的输出。
Guanaco 适配器权重以 Apache 2 许可下提供。请注意,使用 Guanaco 适配器权重需要访问 LLaMA 模型权重。Guanaco 基于 LLaMA,因此应根据 LLaMA 许可进行使用。
这是加载 Guanaco 7B 的示例(使用 4 位):
import torch from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig model_name = "huggyllama/llama-7b" adapters_name = 'timdettmers/guanaco-7b' model = AutoModelForCausalLM.from_pretrained( model_name, load_in_4bit=True, torch_dtype=torch.bfloat16, device_map="auto", max_memory= {i: '24000MB' for i in range(torch.cuda.device_count())}, quantization_config=BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type='nf4' ), ) model = PeftModel.from_pretrained(model, adapters_name) tokenizer = AutoTokenizer.from_pretrained(model_name)
然后,可以按照通常的 HF 模型进行推理,如下所示:
prompt = "Introduce yourself" formatted_prompt = ( f"A chat between a curious human and an artificial intelligence assistant." f"The assistant gives helpful, detailed, and polite answers to the user's questions.\n" f"### Human: {prompt} ### Assistant:" ) inputs = tokenizer(formatted_prompt, return_tensors="pt").to("cuda:0") outputs = model.generate(inputs=inputs.input_ids, max_new_tokens=20) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
期望的输出类似于以下内容:
A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. ### Human: Introduce yourself ### Assistant: I am an artificial intelligence assistant. I am here to help you with any questions you may have.
目前,4 位推理速度较慢。如果推理速度是关键,建议加载 16 位模型。我们正在积极开发高效的 4 位推理内核。
以下是如何以 16 位加载模型的示例:
model_name = "huggyllama/llama-7b" adapters_name = 'timdettmers/guanaco-7b' model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto", max_memory= {i: '24000MB' for i in range(torch.cuda.device_count())}, ) model = PeftModel.from_pretrained(model, adapters_name) tokenizer = AutoTokenizer.from_pretrained(model_name)
架构:Guanaco 模型是应用于 LLaMA 模型的 LoRA 适配器,适用于所有层。对于所有模型大小,我们使用 $r=64$。
基础模型:Guanaco 使用 LLaMA 作为基础模型,大小为 7B、13B、33B、65B。LLaMA 是在大型文本语料库上预训练的因果语言模型。有关更多详细信息,请参阅 LLaMA paper 。请注意,Guanaco 可能会继承基础模型的偏见和局限性。
微调数据:Guanaco 在 OASST1 上进行了微调。确切的数据集可在 timdettmers/openassistant-guanaco 找到。
语言:OASST1 数据集是多语言的(有关详细信息,请参阅 the paper ),因此 Guanaco 可以使用不同语言回答用户查询。然而,我们注意到,OASST1 中使用的是较富资源语言。此外,基于定性分析,我们观察到模型在其他语言中的性能下降。
接下来,我们将描述训练和评估的详细信息。
Guanaco 模型是通过对 OASST1 数据集进行 4 位 QLoRA 监督微调而得到的。
所有模型使用 NormalFloat4 数据类型作为基础模型,并在所有线性层上使用 LoRA 适配器,计算数据类型为 BFloat16。我们设置 LoRA 的 $r=64$,$\alpha=16$。对于 13B 及以下的模型,我们还使用了 Adam beta2 为 0.999,最大梯度范数为 0.3,以及 LoRA 的 dropout 为 0.1;对于 33B 和 65B 模型,dropout 为 0.05。对于微调过程,我们使用恒定的学习率计划和分页的 AdamW 优化器。
Size | Dataset | Batch Size | Learning Rate | Max Steps | Sequence length |
---|---|---|---|---|---|
7B | OASST1 | 16 | 2e-4 | 1875 | 512 |
13B | OASST1 | 16 | 2e-4 | 1875 | 512 |
33B | OASST1 | 16 | 1e-4 | 1875 | 512 |
65B | OASST1 | 16 | 1e-4 | 1875 | 512 |
我们通过自动化和人工评估来测试生成语言能力。人工评估依赖于人类策划的查询,并旨在衡量模型回复的质量。我们使用了 Vicuna 和 OpenAssistant 数据集,分别包含 80 个和 953 个提示。
在人工和自动化评估中,对于每个提示,评估者将所有模型的响应进行两两比较。对于人类评估者,我们随机排列系统的顺序,对于 GPT-4,我们评估了两种顺序。
Benchmark | Vicuna | Vicuna | OpenAssistant | - | |||
---|---|---|---|---|---|---|---|
Prompts | 80 | 80 | 953 | ||||
Judge | Human | GPT-4 | GPT-4 | ||||
Model | Elo | Rank | Elo | Rank | Elo | Rank | Median Rank |
GPT-4 | 1176 | 1 | 1348 | 1 | 1294 | 1 | 1 |
Guanaco-65B | 1023 | 2 | 1022 | 2 | 1008 | 3 | 2 |
Guanaco-33B | 1009 | 4 | 992 | 3 | 1002 | 4 | 4 |
ChatGPT-3.5 Turbo | 916 | 7 | 966 | 5 | 1015 | 2 | 5 |
Vicuna-13B | 984 | 5 | 974 | 4 | 936 | 5 | 5 |
Guanaco-13B | 975 | 6 | 913 | 6 | 885 | 6 | 6 |
Guanaco-7B | 1010 | 3 | 879 | 8 | 860 | 7 | 7 |
Bard | 909 | 8 | 902 | 7 | - | - | 8 |
我们还使用 MMLU 基准测试来衡量在一系列语言理解任务上的性能。该基准测试包括 57 个任务,包括小学数学、美国历史、计算机科学、法律等。我们报告的是 5 次测试的准确率。
Dataset | 7B | 13B | 33B | 65B |
---|---|---|---|---|
LLaMA no tuning | 35.1 | 46.9 | 57.8 | 63.4 |
Self-Instruct | 36.4 | 33.3 | 53.0 | 56.7 |
Longform | 32.1 | 43.2 | 56.6 | 59.7 |
Chip2 | 34.5 | 41.6 | 53.6 | 59.8 |
HH-RLHF | 34.9 | 44.6 | 55.8 | 60.1 |
Unnatural Instruct | 41.9 | 48.1 | 57.3 | 61.3 |
OASST1 (Guanaco) | 36.6 | 46.4 | 57.0 | 62.2 |
Alpaca | 38.8 | 47.8 | 57.3 | 62.5 |
FLAN v2 | 44.5 | 51.4 | 59.2 | 63.9 |
该模型可能会生成不准确的输出,不能依赖它产生准确的信息。该模型是在各种公开数据集上进行训练的;模型可能会生成猥亵、有偏见或其他令人不悦的输出。
但是,我们注意到在 OASST1 上进行微调似乎减少了在 CrowS 数据集上的偏见。我们在此报告了 Guanaco-65B 在 CrowS 数据集上与其他基线模型的性能比较。
@article{dettmers2023qlora, title={QLoRA: Efficient Finetuning of Quantized LLMs}, author={Dettmers, Tim and Pagnoni, Artidoro and Holtzman, Ari and Zettlemoyer, Luke}, journal={arXiv preprint arXiv:2305.14314}, year={2023} }