🚀 h2oGPTモデルカード
H2O.aiのh2ogpt-oasst1-512-12b
は、120億のパラメータを持つ命令追従型の大規模言語モデルで、商用利用が可能です。このモデルは特定の基礎モデルに基づき、特定のデータセットで微調整されており、良好な性能と幅広いアプリケーションシーンを持っています。
🚀 クイックスタート
独自のチャットボットを実行する
H2O.ai GitHub で独自のチャットボットを実行できます。

モデルの使用
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-12b", 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-oasst1-512-12b", padding_side="left")
model = AutoModelForCausalLM.from_pretrained("h2oai/h2ogpt-oasst1-512-12b", 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"])
✨ 主な機能
📚 ドキュメント
モデルの概要
モデルアーキテクチャ
GPTNeoXForCausalLM(
(gpt_neox): GPTNeoXModel(
(embed_in): Embedding(50688, 5120)
(layers): ModuleList(
(0-35): 36 x GPTNeoXLayer(
(input_layernorm): LayerNorm((5120,), eps=1e-05, elementwise_affine=True)
(post_attention_layernorm): LayerNorm((5120,), eps=1e-05, elementwise_affine=True)
(attention): GPTNeoXAttention(
(rotary_emb): RotaryEmbedding()
(query_key_value): Linear(in_features=5120, out_features=15360, bias=True)
(dense): Linear(in_features=5120, out_features=5120, bias=True)
)
(mlp): GPTNeoXMLP(
(dense_h_to_4h): Linear(in_features=5120, out_features=20480, bias=True)
(dense_4h_to_h): Linear(in_features=20480, out_features=5120, bias=True)
(act): GELUActivation()
)
)
)
(final_layer_norm): LayerNorm((5120,), eps=1e-05, elementwise_affine=True)
)
(embed_out): Linear(in_features=5120, out_features=50688, bias=False)
)
モデル設定
GPTNeoXConfig {
"_name_or_path": "h2oai/h2ogpt-oasst1-512-12b",
"architectures": [
"GPTNeoXForCausalLM"
],
"bos_token_id": 0,
"classifier_dropout": 0.1,
"custom_pipelines": {
"text-generation": {
"impl": "h2oai_pipeline.H2OTextGenerationPipeline",
"pt": "AutoModelForCausalLM"
}
},
"eos_token_id": 0,
"hidden_act": "gelu",
"hidden_size": 5120,
"initializer_range": 0.02,
"intermediate_size": 20480,
"layer_norm_eps": 1e-05,
"max_position_embeddings": 2048,
"model_type": "gpt_neox",
"num_attention_heads": 40,
"num_hidden_layers": 36,
"rotary_emb_base": 10000,
"rotary_pct": 0.25,
"tie_word_embeddings": false,
"torch_dtype": "float16",
"transformers_version": "4.30.0.dev0",
"use_cache": true,
"use_parallel_residual": true,
"vocab_size": 50688
}
モデル検証
EleutherAI lm-evaluation-harness を使用してモデル検証を行います。
評価ソースコード
タスク |
バージョン |
指標 |
値 |
± |
標準誤差 |
arc_challenge |
0 |
acc |
0.3157 |
± |
0.0136 |
|
|
acc_norm |
0.3507 |
± |
0.0139 |
arc_easy |
0 |
acc |
0.6932 |
± |
0.0095 |
|
|
acc_norm |
0.6225 |
± |
0.0099 |
boolq |
1 |
acc |
0.6685 |
± |
0.0082 |
hellaswag |
0 |
acc |
0.5140 |
± |
0.0050 |
|
|
acc_norm |
0.6803 |
± |
0.0047 |
openbookqa |
0 |
acc |
0.2900 |
± |
0.0203 |
|
|
acc_norm |
0.3740 |
± |
0.0217 |
piqa |
0 |
acc |
0.7682 |
± |
0.0098 |
|
|
acc_norm |
0.7661 |
± |
0.0099 |
winogrande |
0 |
acc |
0.6369 |
± |
0.0135 |
🔧 技術詳細
モデルアーキテクチャ
このモデルはGPTNeoXForCausalLM
アーキテクチャに基づいており、複数のGPTNeoXLayer
層を含んでいます。各層には注意力機構と多層パーセプトロン(MLP)が含まれています。モデルは回転埋め込み(Rotary Embedding)技術を使用しており、長いシーケンスの処理に役立ちます。
モデル設定
モデルの設定パラメータには、隠れ層のサイズ、注意力ヘッドの数、層の数などが含まれており、これらのパラメータは最適な性能を実現するために精心に調整されています。例えば、hidden_size
は5120に設定され、num_attention_heads
は40、num_hidden_layers
は36です。
📄 ライセンス
このモデルはApache - 2.0ライセンスを使用しています。
⚠️ 重要提示
このリポジトリで提供される大規模言語モデルを使用する前に、以下の免責事項をよくお読みください。このモデルを使用することは、以下の条項と条件に同意することを意味します。
- 偏見と不快な内容:大規模言語モデルは様々なインターネットテキストデータで学習されており、これらのデータには偏見、人種差別、不快な内容またはその他の不適切な内容が含まれている可能性があります。このモデルを使用する際には、生成される内容が時に偏見を示したり、不快な内容や不適切な内容を含んだりする可能性があることを認識し、受け入れる必要があります。このリポジトリの開発者は、このような内容や見解を支持、承認または推奨するものではありません。
- 限界:大規模言語モデルは人工知能に基づくツールであり、人間ではありません。不正確、無意味または関係のない応答を生成することがあります。ユーザーは生成された内容を批判的に評価し、使用するかどうかを自ら判断する責任があります。
- 自己責任:この大規模言語モデルを使用するユーザーは、このツールの使用によって生じる可能性のあるすべての結果について完全な責任を負う必要があります。このリポジトリの開発者や貢献者は、提供されるモデルの使用または誤用によって生じる損害、損失または傷害について責任を負いません。
- 倫理的な配慮:ユーザーは大規模言語モデルを責任を持って、倫理的に使用することが推奨されます。このモデルを使用することは、それを憎しみの言葉、差別、嫌がらせまたはいかなる形の違法または有害な活動を促進する目的で使用しないことに同意することを意味します。
- 問題報告:大規模言語モデルが生成した偏見、不快な内容またはその他の不適切な内容に遭遇した場合は、提供されたチャネルを通じてリポジトリの管理者に報告してください。あなたのフィードバックはモデルの改善と潜在的な問題の減少に役立ちます。
- 免責事項の変更:このリポジトリの開発者は、この免責事項を事前の通知なしに随時変更または更新する権利を留保します。ユーザーは免責事項を定期的に確認し、変更を把握する責任があります。
この免責事項のいずれかの部分に同意しない場合は、このモデルとそれが生成する内容の使用を避ける必要があります。