英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Tim Dettmers' Guanaco 65B GPTQ

这些是用于 Tim Dettmers' Guanaco 65B 的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 None True 35.74 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 38.53 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 36.00 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 34.73 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-3bit-128g-actorder_False 3 128 False 26.57 GB False AutoGPTQ 3-bit, with group size 128g but no act-order. Slightly higher VRAM requirements than 3-bit None.
gptq-3bit-128g-actorder_True 3 128 True 26.57 GB False AutoGPTQ 3-bit, with group size 128g and act-order. Higher quality than 128g-False but poor AutoGPTQ CUDA speed.
gptq-3bit-64g-actorder_True 3 64 True 27.78 GB False AutoGPTQ 3-bit, with group size 64g and act-order. Highest quality 3-bit option. Poor AutoGPTQ CUDA speed.
gptq-3bit--1g-actorder_True 3 None True 25.39 GB False AutoGPTQ 3-bit, with Act Order and no group size. Lowest possible VRAM requirements. May be lower quality than 3-bit 128g.

如何从分支下载

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

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

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

强烈建议使用文本生成Web UI 的一键安装程序,除非您知道如何进行手动安装。

  • 点击 “Model” 选项卡。
  • 在 “Download custom model or LoRA” 下输入 TheBloke/guanaco-65B-GPTQ。
    • 要从特定分支下载,请例如输入 TheBloke/guanaco-65B-GPTQ:gptq-4bit-32g-actorder_True。
    • 有关每个选项的分支列表,请参见上述提供的文件。
  • 点击 “Download”。
  • 模型开始下载。下载完成后会显示 “Done”。
  • 在左上角,点击 “Model” 旁边的刷新图标。
  • 在 “Model” 下拉菜单中,选择刚刚下载的模型:guanaco-65B-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-65B-GPTQ"
    model_basename = "Guanaco-65B-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

    如需进一步支持以及有关这些模型和AI的讨论,请加入我们:

    TheBloke AI's Discord server

    感谢以及如何贡献

    感谢 chirper.ai 团队!

    我有很多人询问是否可以为此做出贡献。我喜欢提供模型并帮助人们,非常希望能够花更多时间提供支持,并开始进行诸如微调/训练等新项目。

    如果您有能力和愿意贡献,我将非常感激,并将帮助我继续提供更多模型,并开始着手新的AI项目。

    捐助者将在所有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 65B

    基于LLaMA的Guanaco模型

    | Paper | Code | Demo |

    Guanaco模型是通过在LLaMA基本模型上进行4位QLoRA调优并在OASST1数据集上获得的开源微调聊天机器人。它们可在7B、13B、33B和65B参数大小中获得。

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

    为什么使用Guanaco?

    • 根据人类和GPT-4审核者的评估,与Vicuna和OpenAssistant基准(ChatGPT和BARD)上的商业聊天机器人系统相媲美。但值得注意的是,这些基准未涵盖所有任务,模型在其他未涵盖的任务上的相对性能可能有很大差异。此外,商业系统随时间变化(我们使用了模型的2023年3月版本的输出)。
    • 提供开源用于研究目的。Guanaco模型允许以便宜和本地的方式进行高质量聊天机器人系统的实验。
    • 可复制且高效的训练流程,可扩展到新的用例。Guanaco训练脚本可在 QLoRA repo 中找到。
    • 与16位方法(16位全微调和LoRA)进行了严格比较, our paper 展示了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的人工评估仅在英语下进行,根据定性分析,我们观察到其他语言的性能下降。

    接下来,我们描述训练和评估的详细信息。

    训练

    Guanaco模型是通过在OASST1数据集上进行4位QLoRA有监督微调得到的。

    所有模型使用NormalFloat4作为基本模型的数据类型,并在所有线性层上使用BFloat16作为计算数据类型的LoRA适配器。我们设置LoRA $r=64$,$\alpha=16$。我们还使用Adam beta2为0.999,最大梯度规范为0.3,33B和65B模型的LoRA 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-shot测试的准确性。

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