英文

h2oGPT 模型说明

摘要

h2o.ai 的 h2ogpt-research-oasst1-llama-65b 是一个拥有 650 亿参数的大型语言模型,用于遵循指令(不可用于商业用途)。

Chatbot

使用方法

要在支持 GPU 的机器上使用 transformers 库与该模型,首先确保已安装以下库。

pip install transformers==4.29.2
pip install accelerate==0.19.0
pip install torch==2.0.1
pip install einops==0.6.1
import torch
from transformers import pipeline, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("h2oai/h2ogpt-research-oasst1-llama-65b", padding_side="left")
generate_text = pipeline(model="h2oai/h2ogpt-research-oasst1-llama-65b", tokenizer=tokenizer, torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto", prompt_type="human_bot")
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("h2oai/h2ogpt-research-oasst1-llama-65b", padding_side="left")
model = AutoModelForCausalLM.from_pretrained("h2oai/h2ogpt-research-oasst1-llama-65b", torch_dtype=torch.bfloat16, device_map="auto")
generate_text = H2OTextGenerationPipeline(model=model, tokenizer=tokenizer, prompt_type="human_bot")

res = generate_text("Why is drinking water so healthy?", max_new_tokens=100)
print(res[0]["generated_text"])

模型架构

LlamaForCausalLM(
  (model): LlamaModel(
    (embed_tokens): Embedding(32000, 8192, padding_idx=31999)
    (layers): ModuleList(
      (0-79): 80 x LlamaDecoderLayer(
        (self_attn): LlamaAttention(
          (q_proj): Linear(in_features=8192, out_features=8192, bias=False)
          (k_proj): Linear(in_features=8192, out_features=8192, bias=False)
          (v_proj): Linear(in_features=8192, out_features=8192, bias=False)
          (o_proj): Linear(in_features=8192, out_features=8192, bias=False)
          (rotary_emb): LlamaRotaryEmbedding()
        )
        (mlp): LlamaMLP(
          (gate_proj): Linear(in_features=8192, out_features=22016, bias=False)
          (down_proj): Linear(in_features=22016, out_features=8192, bias=False)
          (up_proj): Linear(in_features=8192, out_features=22016, bias=False)
          (act_fn): SiLUActivation()
        )
        (input_layernorm): LlamaRMSNorm()
        (post_attention_layernorm): LlamaRMSNorm()
      )
    )
    (norm): LlamaRMSNorm()
  )
  (lm_head): Linear(in_features=8192, out_features=32000, bias=False)
)

模型配置

LlamaConfig {
  "_name_or_path": "h2oai/h2ogpt-research-oasst1-llama-65b",
  "architectures": [
    "LlamaForCausalLM"
  ],
  "bos_token_id": 0,
  "custom_pipelines": {
    "text-generation": {
      "impl": "h2oai_pipeline.H2OTextGenerationPipeline",
      "pt": "AutoModelForCausalLM"
    }
  },
  "eos_token_id": 1,
  "hidden_act": "silu",
  "hidden_size": 8192,
  "initializer_range": 0.02,
  "intermediate_size": 22016,
  "max_position_embeddings": 2048,
  "max_sequence_length": 2048,
  "model_type": "llama",
  "num_attention_heads": 64,
  "num_hidden_layers": 80,
  "pad_token_id": -1,
  "rms_norm_eps": 1e-05,
  "tie_word_embeddings": false,
  "torch_dtype": "float16",
  "transformers_version": "4.30.1",
  "use_cache": true,
  "vocab_size": 32000
}

模型验证

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

待定

免责声明

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

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

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