モデル概要
モデル特徴
モデル能力
使用事例
🚀 h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-3b
このモデルは、大規模言語モデルであり、特定のデータセットを用いて訓練されました。transformers
ライブラリと組み合わせて使用することで、様々な自然言語処理タスクを実行できます。
🚀 クイックスタート
このモデルはH2O LLM Studioを使用して訓練されました。
- ベースモデル: openlm-research/open_llama_3b
- データセットの準備: OpenAssistant/oasst1 パーソナライズ版
📦 インストール
GPUを搭載したマシンでtransformers
ライブラリを使用してこのモデルを利用するには、まずtransformers
、accelerate
、torch
ライブラリをインストールする必要があります。
pip install transformers==4.30.2
pip install accelerate==0.20.3
pip install torch==2.0.0
💻 使用例
基本的な使用法
import torch
from transformers import pipeline
generate_text = pipeline(
model="h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-3b",
torch_dtype="auto",
trust_remote_code=True,
use_fast=False,
device_map={"": "cuda:0"},
)
res = generate_text(
"Why is drinking water so healthy?",
min_new_tokens=2,
max_new_tokens=1024,
do_sample=False,
num_beams=1,
temperature=float(0.3),
repetition_penalty=float(1.2),
renormalize_logits=True
)
print(res[0]["generated_text"])
前処理ステップ後のサンプルプロンプトを出力して、トークナイザーにどのように入力されるかを確認できます。
print(generate_text.preprocess("Why is drinking water so healthy?")["prompt_text"])
<|prompt|>Why is drinking water so healthy?</s><|answer|>
高度な使用法
h2oai_pipeline.py
をダウンロードしてノートブックと同じディレクトリに保存し、ロードしたモデルとトークナイザーから独自にパイプラインを構築することもできます。transformers
パッケージでモデルとトークナイザーが完全にサポートされている場合、trust_remote_code=False
を設定できます。
import torch
from h2oai_pipeline import H2OTextGenerationPipeline
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-3b",
use_fast=False,
padding_side="left",
trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
"h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-3b",
torch_dtype="auto",
device_map={"": "cuda:0"},
trust_remote_code=True,
)
generate_text = H2OTextGenerationPipeline(model=model, tokenizer=tokenizer)
res = generate_text(
"Why is drinking water so healthy?",
min_new_tokens=2,
max_new_tokens=1024,
do_sample=False,
num_beams=1,
temperature=float(0.3),
repetition_penalty=float(1.2),
renormalize_logits=True
)
print(res[0]["generated_text"])
また、ロードしたモデルとトークナイザーから独自にパイプラインを構築し、前処理ステップを考慮することもできます。
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "h2oai/h2ogpt-gm-oasst1-en-2048-open-llama-3b" # ローカルフォルダまたはHugging Faceのモデル名
# 重要: プロンプトはモデルが訓練された形式と同じ形式である必要があります。
# 実験ログにサンプルプロンプトを見つけることができます。
prompt = "<|prompt|>How are you?</s><|answer|>"
tokenizer = AutoTokenizer.from_pretrained(
model_name,
use_fast=False,
trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map={"": "cuda:0"},
trust_remote_code=True,
)
model.cuda().eval()
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False).to("cuda")
# 生成設定は必要に応じて変更できます
tokens = model.generate(
**inputs,
min_new_tokens=2,
max_new_tokens=1024,
do_sample=False,
num_beams=1,
temperature=float(0.3),
repetition_penalty=float(1.2),
renormalize_logits=True
)[0]
tokens = tokens[inputs["input_ids"].shape[1]:]
answer = tokenizer.decode(tokens, skip_special_tokens=True)
print(answer)
📚 ドキュメント
モデルアーキテクチャ
LlamaForCausalLM(
(model): LlamaModel(
(embed_tokens): Embedding(32000, 3200, padding_idx=0)
(layers): ModuleList(
(0-25): 26 x LlamaDecoderLayer(
(self_attn): LlamaAttention(
(q_proj): Linear(in_features=3200, out_features=3200, bias=False)
(k_proj): Linear(in_features=3200, out_features=3200, bias=False)
(v_proj): Linear(in_features=3200, out_features=3200, bias=False)
(o_proj): Linear(in_features=3200, out_features=3200, bias=False)
(rotary_emb): LlamaRotaryEmbedding()
)
(mlp): LlamaMLP(
(gate_proj): Linear(in_features=3200, out_features=8640, bias=False)
(down_proj): Linear(in_features=8640, out_features=3200, bias=False)
(up_proj): Linear(in_features=3200, out_features=8640, bias=False)
(act_fn): SiLUActivation()
)
(input_layernorm): LlamaRMSNorm()
(post_attention_layernorm): LlamaRMSNorm()
)
)
(norm): LlamaRMSNorm()
)
(lm_head): Linear(in_features=3200, out_features=32000, bias=False)
)
モデル設定
このモデルはH2O LLM Studioを使用して訓練され、cfg.yamlの設定が適用されています。独自の大規模言語モデルを訓練する方法については、H2O LLM Studioを参照してください。
免責事項
このリポジトリで提供されている大規模言語モデルを使用する前に、この免責事項を注意深くお読みください。モデルを使用することで、以下の条件に同意したことになります。
- 偏見と不快な内容: この大規模言語モデルは多様なインターネットテキストデータを使用して訓練されており、偏見、人種差別、不快な内容、または不適切な内容が含まれる場合があります。このモデルを使用することで、生成された内容に偏見が含まれることや、不快または不適切な内容が生成されることを承知し、受け入れるものとします。このリポジトリの開発者は、そのような内容や見解を支持、支援、または促進するものではありません。
- 制限事項: この大規模言語モデルはAIベースのツールであり、人間ではありません。誤った、無意味な、または関連性のない応答を生成することがあります。生成された内容を批判的に評価し、裁量で使用するのはユーザーの責任です。
- 自己責任での使用: この大規模言語モデルのユーザーは、ツールの使用によって生じるすべての結果について完全な責任を負う必要があります。このリポジトリの開発者および貢献者は、提供されたモデルの使用または誤使用によって生じる損害、損失、または危害について責任を負いません。
- 倫理的配慮: ユーザーは、この大規模言語モデルを責任を持って倫理的に使用することが推奨されます。このモデルを使用することで、ハイトスピーチ、差別、嫌がらせ、または違法もしくは有害な活動を促進する目的で使用しないことに同意します。
- 問題の報告: 大規模言語モデルによって生成された偏見、不快、または不適切な内容に遭遇した場合は、提供されたチャネルを通じてリポジトリのメンテナに報告してください。あなたのフィードバックは、モデルの改善と潜在的な問題の軽減に役立ちます。
- 免責事項の変更: このリポジトリの開発者は、事前通知なしにこの免責事項を変更または更新する権利を留保します。免責事項を定期的に確認し、変更内容を把握するのはユーザーの責任です。
このリポジトリで提供されている大規模言語モデルを使用することで、この免責事項に記載されている条件に同意し、遵守することになります。この免責事項のいずれかの部分に同意しない場合は、モデルおよびそれによって生成された内容の使用を控えてください。
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。



