英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Tim Dettmers' Guanaco 7B GPTQ

这些文件是用于 Tim Dettmers' Guanaco 7B 的 GPTQ 模型文件。

提供了多种不同的 GPTQ 参数排列方式;请查看下面的提供文件部分以了解提供的选项、它们的参数以及用于创建它们的软件的详细信息。

这些模型是使用由 Latitude.sh 提供的硬件进行量化的。

可用的仓库

提示模板:Guanaco

### 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.

从分支中下载的方法

  • 在 text-generation-webui 中,您可以在下载名称的末尾添加 :branch ,例如 TheBloke/guanaco-7B-GPTQ:gptq-4bit-32g-actorder_True
  • 使用 Git,您可以使用以下命令来克隆一个分支:
git clone --branch gptq-4bit-32g-actorder_True https://huggingface.co/TheBloke/guanaco-7B-GPTQ`
  • 在 Python Transformers 代码中,分支是 revision 参数;请参阅下面的说明。

如何轻松下载并在 text-generation-webui 中使用此模型。

请确保您使用的是 text-generation-webui 的最新版本。

强烈建议使用 text-generation-webui 的一键安装程序,除非您知道如何进行手动安装。

  • 点击 Model 标签页。
  • 在 Download custom model or LoRA 下,输入 TheBloke/guanaco-7B-GPTQ 。
    • 要从特定分支下载,请输入例如 TheBloke/guanaco-7B-GPTQ:gptq-4bit-32g-actorder_True
    • 请参阅上面的提供的文件部分以获取每个选项的分支列表。
  • 点击 Download 。
  • 模型将开始下载。下载完成后,将显示“完成”
  • 在左上角,点击 Model 旁边的刷新图标。
  • 在 Model 下拉菜单中,选择刚刚下载的模型:guanaco-7B-GPTQ
  • 模型将自动加载,现在已经准备好使用!
  • 如果您需要任何自定义设置,请设置后点击 Save settings for this model,然后点击右上角的 Reload the Model。
    • 请注意,您不再需要手动设置 GPTQ 参数。这些参数将根据 quantize_config.json 文件自动设置。
  • 准备好后,点击 Text Generation 标签页并输入提示开始使用!
  • 如何从 Python 代码中使用此 GPTQ 模型

    首先确保您已安装 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

    如需进一步支持或讨论有关这些模型和人工智能的问题,请加入我们的 Discord:

    TheBloke AI's Discord server

    鸣谢与如何贡献

    感谢 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。

    感谢所有慷慨的赞助者和贡献者!

    原始模型卡片:Tim Dettmers' Guanaco 7B

    Guanaco Models Based on LLaMA

    | Paper | Code | Demo |

    Guanaco 模型是通过对 OASST1 数据集上的 LLaMA 基础模型进行 4 位 QLoRA 调优而获得的开源微调聊天机器人。它们分别可用于 7B、13B、33B 和 65B 规模的参数。

    ⚠️Guanaco 模型纯粹用于研究目的,可能会产生一些问题的输出。

    为什么使用 Guanaco?

    • 根据人类和 GPT-4 评估者的评价,Guanaco 在 Vicuna 和 OpenAssistant 基准测试(ChatGPT 和 BARD)上具有与商业聊天机器人系统的竞争力。需要注意的是,对于这些基准测试中未涉及的任务,相对性能可能会有很大不同。此外,商业系统随着时间的推移会发展变化(我们使用的是该模型的 2023 年 3 月版本的输出)。
    • 可供研究用途的开源模型。Guanaco 模型允许使用高质量的聊天机器人系统进行廉价和本地的实验。
    • 可复制和高效的训练过程,可扩展到新的用例。Guanaco 训练脚本可在 QLoRA repo 中找到。
    • our paper 中对 16 位方法(16 位全微调和 LoRA)进行了严格比较,证明了 4 位 QLoRA 调优的有效性。
    • 只包含适配器权重的轻量级检查点。

    许可证和预期使用方式

    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}
    }