英文

h2oGPT 模型卡

概述

H2O.ai的 h2ogpt-oasst1-512-20b 是一个拥有200亿参数、用于商业用途的指令遵循大语言模型。

聊天机器人

使用方法

若要在支持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="h2oai/h2ogpt-oasst1-512-20b", 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 ,将其存储在与笔记本相同的位置,并从加载的模型和分词器构建自己的pipeline:

import torch
from h2oai_pipeline import H2OTextGenerationPipeline
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("h2oai/h2ogpt-oasst1-512-20b", padding_side="left")
model = AutoModelForCausalLM.from_pretrained("h2oai/h2ogpt-oasst1-512-20b", 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"])

模型架构

GPTNeoXForCausalLM(
  (gpt_neox): GPTNeoXModel(
    (embed_in): Embedding(50432, 6144)
    (layers): ModuleList(
      (0-43): 44 x GPTNeoXLayer(
        (input_layernorm): LayerNorm((6144,), eps=1e-05, elementwise_affine=True)
        (post_attention_layernorm): LayerNorm((6144,), eps=1e-05, elementwise_affine=True)
        (attention): GPTNeoXAttention(
          (rotary_emb): RotaryEmbedding()
          (query_key_value): Linear(in_features=6144, out_features=18432, bias=True)
          (dense): Linear(in_features=6144, out_features=6144, bias=True)
        )
        (mlp): GPTNeoXMLP(
          (dense_h_to_4h): Linear(in_features=6144, out_features=24576, bias=True)
          (dense_4h_to_h): Linear(in_features=24576, out_features=6144, bias=True)
          (act): FastGELUActivation()
        )
      )
    )
    (final_layer_norm): LayerNorm((6144,), eps=1e-05, elementwise_affine=True)
  )
  (embed_out): Linear(in_features=6144, out_features=50432, bias=False)
)

模型配置

GPTNeoXConfig {
  "_name_or_path": "h2oai/h2ogpt-oasst1-512-20b",
  "architectures": [
    "GPTNeoXForCausalLM"
  ],
  "attention_probs_dropout_prob": 0,
  "bos_token_id": 0,
  "custom_pipeline": {
    "text-generation": {
      "impl": "h2oai_pipeline.H2OTextGenerationPipeline",
      "pt": "AutoModelForCausalLM"
    }
  },
  "custom_pipelines": {
    "text-generation": {
      "impl": "h2oai_pipeline.H2OTextGenerationPipeline",
      "pt": "AutoModelForCausalLM"
    }
  },
  "eos_token_id": 0,
  "hidden_act": "gelu_fast",
  "hidden_dropout_prob": 0,
  "hidden_size": 6144,
  "initializer_range": 0.02,
  "intermediate_size": 24576,
  "layer_norm_eps": 1e-05,
  "max_position_embeddings": 2048,
  "model_type": "gpt_neox",
  "num_attention_heads": 64,
  "num_hidden_layers": 44,
  "rotary_emb_base": 10000,
  "rotary_pct": 0.25,
  "tie_word_embeddings": false,
  "torch_dtype": "float16",
  "transformers_version": "4.28.1",
  "use_cache": true,
  "use_parallel_residual": true,
  "vocab_size": 50432
}

模型验证

使用 EleutherAI lm-evaluation-harness 进行模型验证。

eval source code

Task Version Metric Value Stderr
hellaswag 0 acc 0.5419 ± 0.0050
acc_norm 0.7259 ± 0.0045
boolq 1 acc 0.7125 ± 0.0079
piqa 0 acc 0.7742 ± 0.0098
acc_norm 0.7775 ± 0.0097
openbookqa 0 acc 0.2800 ± 0.0201
acc_norm 0.4000 ± 0.0219
arc_challenge 0 acc 0.3993 ± 0.0143
acc_norm 0.4420 ± 0.0145
winogrande 0 acc 0.6614 ± 0.0133
arc_easy 0 acc 0.7327 ± 0.0091
acc_norm 0.6894 ± 0.0095

免责声明

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

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

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