模型:
h2oai/h2ogpt-oasst1-512-20b
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 进行模型验证。
| 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 |
在使用本存储库中提供的大语言模型之前,请仔细阅读此免责声明。您使用该模型即表示您同意以下条款和条件。
通过使用本存储库提供的大语言模型,您同意接受并遵守本免责声明中概述的条款和条件。如果您不同意本免责声明的任何部分,您应避免使用该模型和由它生成的任何内容。