英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

h2ogpt-oasst1-512-30B-GPTQ

这些文件是 H2O.ai's h2ogpt-research-oig-oasst1-512-30b 的 GPTQ 格式模型文件。

它是使用 GPTQ-for-LLaMa 进行 4bit 量化的结果。

可用的存储库

提示模板

您需要使用此模板:

<human>: PROMPT
<bot>:

该模型没有停止标记,因此它会继续进行对话。

您将需要设置一个自定义的停止字符串:<bot>

如何在文本生成 WebUI 中轻松下载和使用此模型

正常打开文本生成 WebUI 界面。

  • 点击 “Model” 选项卡。
  • 在 “Download custom model or LoRA” 下,输入 “TheBloke/h2ogpt-oasst1-512-30B-GPTQ” 。
  • 点击 “Download”。
  • 等待它完成下载。
  • 点击左上角的 “刷新” 图标旁边的 “Model” 。
  • 在 “Model drop-down” 中选择您刚刚下载的模型,“h2ogpt-oasst1-512-30B-GPTQ” 。
  • 如果在右下角看到错误,请忽略它-这是暂时的。
  • 在右侧填写 GPTQ 参数:Bits = 4,Groupsize = None,model_type = Llama
  • 点击右上角的 “为此模型保存设置” 。
  • 点击右上角的 “重新加载模型” 。
  • 一旦显示已加载,点击 “Text Generation” 选项卡并输入提示!
  • 提供的文件

    兼容文件 - h2ogpt-oasst1-512-30B-GPTQ-4bit.ooba.act-order.safetensors

    在 “main” 分支中 - 默认分支 - 您将找到 “h2ogpt-oasst1-512-30B-GPTQ-4bit.ooba.act-order.safetensors”

    这将与所有版本的 GPTQ-for-LLaMa 一起使用。它具有最大的兼容性。

    它没有 groupsize,以确保模型可以在 24GB VRAM 显卡上加载。

    它是使用 --act-order 参数创建的,以获得最佳的量化质量,限制是能够在 24GB 中加载。

    • h2ogpt-oasst1-512-30B-GPTQ-4bit.ooba.act-order.safetensors
      • 适用于 GPTQ-for-LLaMa 代码的所有版本,包括 Triton 和 CUDA 分支
      • 可用于一键安装的文本生成 WebUI
      • 参数:Groupsize = None. act-order.
      • 用于创建 GPTQ 的命令:
        python llama.py /workspace/drom-65b/HF c4 --wbits 4 --true-sequential --act-order  --save_safetensors /workspace/drom-gptq/dromedary-65B-GPTQ-4bit.safetensors
        

    Discourse

    获取进一步支持,并对这些模型和人工智能进行讨论,请加入我们:

    TheBloke AI's Discord server

    谢谢以及如何贡献

    感谢 chirper.ai 团队!

    我已经有很多人问我是否可以贡献。我喜欢提供模型并帮助人们,也很愿意能够花更多的时间提供更多的帮助,并开始进行新的项目,比如微调/训练。

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

    捐赠者将在任何人工智能/LLM/模型问题和请求上获得优先支持,可访问私人 Discord 房间,以及其他福利。

    Patreon 特别提及:Aemon Algiz、Dmitriy Samsonov、Nathan LeClaire、Trenton Dambrowitz、Mano Prime、David Flickinger、vamX、Nikolai Manek、senxiiz、Khalefa Al-Ahmad、Illia Dulskyi、Jonathan Leane、Talal Aujan、V. Lukas、Joseph William Delisle、Pyrater、Oscar Rangel、Lone Striker、Luke Pendergrass、Eugene Pentland、Sebastain Graf、Johann-Peter Hartman。

    感谢所有慷慨的赞助者和捐赠者!

    原始 h2oGPT 模型卡片

    概要

    H2O.ai 的 h2oai/h2ogpt-research-oig-oasst1-512-30b 是一个仅供研究用途的 300 亿参数指令遵循大型语言模型。

    由于 LLaMA 模型附带的许可协议,不可能直接分发基于 LLaMA 的模型。因此我们提供了 LORA 权重。

    该模型使用 h2oGPT 代码进行训练,如下所示:

    torchrun --nproc_per_node=8 finetune.py --base_model=decapoda-research/llama-30b-hf --micro_batch_size=1 --batch_size=8 --cutoff_len=512 --num_epochs=2.0 --val_set_size=0 --eval_steps=100000 --save_steps=17000 --save_total_limit=20 --prompt_type=plain --save_code=True --train_8bit=False --run_id=llama30b_17 --llama_flash_attn=True --lora_r=64 --lora_target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj'] --learning_rate=2e-4 --lora_alpha=32 --drop_truncations=True --data_path=h2oai/h2ogpt-oig-oasst1-instruct-cleaned-v2 --data_mix_in_path=h2oai/openassistant_oasst1_h2ogpt --data_mix_in_factor=1.0 --data_mix_in_prompt_type=plain --data_mix_in_col_dict={'input': 'input'}
    

    此模型存储库仅提供最后一个检查点,即第 2.0 个时期和第 137,846 步,因为 LORA 状态足够大并且有足够多的检查点来使总运行大小为 19GB。 如有需要,可随时请求其他检查点,我们将考虑添加更多。

    聊天机器人

    用法:

    作为 LORA 使用:

    构建 HF 模型:

    使用: https://github.com/h2oai/h2ogpt/blob/main/export_hf_checkpoint.py 并更改:

    BASE_MODEL = 'decapoda-research/llama-30b-hf'
    LORA_WEIGHTS = '<lora_weights_path>'
    OUTPUT_NAME = "local_h2ogpt-research-oasst1-512-30b"
    

    其中 <lora_weights_path> 是一个目录名称,其中包含此 HF 模型存储库中的文件:

    • adapter_config.json
    • adapter_model.bin
    • special_tokens_map.json
    • tokenizer.model
    • tokenizer_config.json

    构建完成 HF 模型后,要在具有 GPU 的计算机上使用 transformers 库使用模型,首先确保已安装 transformers 和 accelerate 库。

    pip install transformers==4.28.1
    pip install accelerate==0.18.0
    
    import torch
    from transformers import pipeline
    
    generate_text = pipeline(model="local_h2ogpt-research-oasst1-512-30b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
    
    res = generate_text("Why is drinking water so healthy?", max_new_tokens=100)
    print(res[0]["generated_text"])
    

    或者,如果您不希望使用 trust_remote_code=True ,可以下载 instruct_pipeline.py 文件,将其保存在笔记本旁边,并根据加载的模型和分词器自己构建流水线:

    import torch
    from h2oai_pipeline import H2OTextGenerationPipeline
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    tokenizer = AutoTokenizer.from_pretrained("local_h2ogpt-research-oasst1-512-30b", padding_side="left")
    model = AutoModelForCausalLM.from_pretrained("local_h2ogpt-research-oasst1-512-30b", torch_dtype=torch.bfloat16, device_map="auto")
    generate_text = H2OTextGenerationPipeline(model=model, tokenizer=tokenizer)
    
    res = generate_text("Why is drinking water so healthy?", max_new_tokens=100)
    print(res[0]["generated_text"])
    

    使用 LORA 和闪存注意力的模型架构

    PeftModelForCausalLM(
      (base_model): LoraModel(
        (model): LlamaForCausalLM(
          (model): LlamaModel(
            (embed_tokens): Embedding(32000, 6656, padding_idx=31999)
            (layers): ModuleList(
              (0-59): 60 x LlamaDecoderLayer(
                (self_attn): LlamaAttention(
                  (q_proj): Linear(
                    in_features=6656, out_features=6656, bias=False
                    (lora_dropout): ModuleDict(
                      (default): Dropout(p=0.05, inplace=False)
                    )
                    (lora_A): ModuleDict(
                      (default): Linear(in_features=6656, out_features=64, bias=False)
                    )
                    (lora_B): ModuleDict(
                      (default): Linear(in_features=64, out_features=6656, bias=False)
                    )
                  )
                  (k_proj): Linear(
                    in_features=6656, out_features=6656, bias=False
                    (lora_dropout): ModuleDict(
                      (default): Dropout(p=0.05, inplace=False)
                    )
                    (lora_A): ModuleDict(
                      (default): Linear(in_features=6656, out_features=64, bias=False)
                    )
                    (lora_B): ModuleDict(
                      (default): Linear(in_features=64, out_features=6656, bias=False)
                    )
                  )
                  (v_proj): Linear(
                    in_features=6656, out_features=6656, bias=False
                    (lora_dropout): ModuleDict(
                      (default): Dropout(p=0.05, inplace=False)
                    )
                    (lora_A): ModuleDict(
                      (default): Linear(in_features=6656, out_features=64, bias=False)
                    )
                    (lora_B): ModuleDict(
                      (default): Linear(in_features=64, out_features=6656, bias=False)
                    )
                  )
                  (o_proj): Linear(
                    in_features=6656, out_features=6656, bias=False
                    (lora_dropout): ModuleDict(
                      (default): Dropout(p=0.05, inplace=False)
                    )
                    (lora_A): ModuleDict(
                      (default): Linear(in_features=6656, out_features=64, bias=False)
                    )
                    (lora_B): ModuleDict(
                      (default): Linear(in_features=64, out_features=6656, bias=False)
                    )
                  )
                  (rotary_emb): LlamaRotaryEmbedding()
                )
                (mlp): LlamaMLP(
                  (gate_proj): Linear(in_features=6656, out_features=17920, bias=False)
                  (down_proj): Linear(in_features=17920, out_features=6656, bias=False)
                  (up_proj): Linear(in_features=6656, out_features=17920, bias=False)
                  (act_fn): SiLUActivation()
                )
                (input_layernorm): LlamaRMSNorm()
                (post_attention_layernorm): LlamaRMSNorm()
              )
            )
            (norm): LlamaRMSNorm()
          )
          (lm_head): Linear(in_features=6656, out_features=32000, bias=False)
        )
      )
    )
    trainable params: 204472320 || all params: 32733415936 || trainable%: 0.6246592790675496
    

    模型配置

    {
      "base_model_name_or_path": "decapoda-research/llama-30b-hf",
      "bias": "none",
      "fan_in_fan_out": false,
      "inference_mode": true,
      "init_lora_weights": true,
      "lora_alpha": 32,
      "lora_dropout": 0.05,
      "modules_to_save": null,
      "peft_type": "LORA",
      "r": 64,
      "target_modules": [
        "q_proj",
        "k_proj",
        "v_proj",
        "o_proj"
      ],
      "task_type": "CAUSAL_LM"
    

    模型验证

    古典基准与基础的 LLaMa 30B 模型相一致,但对于对话目的来说不太有用。可以使用 GPT3.5 或 GPT4 来评估回答,而在这里我们使用基于 RLHF 的奖励模型运行。这是使用 h2oGPT 运行的:

    python generate.py --base_model=decapoda-research/llama-30b-hf --gradio=False --infer_devices=False --eval_sharegpt_prompts_only=100 --eval_sharegpt_as_output=False --lora_weights=llama-30b-hf.h2oaih2ogpt-oig-oasst1-instruct-cleaned-v2.2.0_epochs.131f6d098b43236b5f91e76fc074ad089d6df368.llama30b_17
    

    因此,该模型的奖励模型得分均值为 0.55,中位数为 0.58。这与我们的 h2oGPT 20B 相比,后者得到的平均值为 0.49,中位数为 0.48,或者与 DB Dollyv2 相比,后者得到的平均值为 0.37,中位数为 0.27。

    Logs prompt-response pairs

    下面是得分的完整分布图:

    我们的 h2oGPT 20B 的相同图表:

    DB Dollyv2 的相同图表:

    免责声明

    在使用此存储库中提供的大型语言模型之前,请仔细阅读此免责声明。您使用该模型即表示您同意以下条款和条件。

    • 此存储库中包含的 LORA 仅供研究(非商业)用途。
    • 偏见和冒犯性:大型语言模型是基于多样化的互联网文本数据进行训练的,其中可能包含有偏见、种族主义、冒犯性或其他不适当的内容。通过使用此模型,您承认并接受生成的内容有时可能会展示偏见或生成具有冒犯性或不适当的内容。此存储库的开发人员不支持、不支持或不推广任何此类内容或观点。
    • 限制:大型语言模型是一种人工智能工具,而不是人类。它可能会生成不正确、无意义或无关的响应。用户有责任对生成的内容进行批判性评估,并自行决定是否使用该内容。
    • 自担风险使用:使用该大型语言模型的用户必须承担因使用或滥用该工具而可能产生的任何后果的全部责任。此存储库的开发人员和贡献者不对使用或误用提供的模型而导致的任何损害、损失或伤害承担责任。
    • 道德考虑:鼓励用户负责任和道德地使用大型语言模型。通过使用此模型,您同意不将其用于促进仇恨言论、歧视、骚扰或任何形式的非法或有害活动。
    • 报告问题:如果您遇到使用该大型语言模型生成的具有偏见、冒犯性或其他不适当内容,请通过提供的渠道向存储库维护人员报告。您的反馈将有助于改进模型并减少潜在问题。
    • 免责声明的更改:存储库的开发人员保留随时修改或更新此免责声明的权利,无需事先通知。用户有责任定期查看免责声明以了解任何变更。

    使用此存储库中提供的大型语言模型即表示您同意接受并遵守本免责声明中概述的条款和条件。如果您不同意本免责声明的任何部分,则应避免使用该模型和由其生成的任何内容。