fn-aka-mur/japanese_alpaca_data
Viewer • Updated • 52k • 202 • 16
x10-500M-v1-Instruct は、知識特化型モデル x10-500M-v1 (503M パラメータ) をベースに、日本語指示データ (Alpaca-ja 厳選サブセット) を用いて SFT を行った対話・指示応答モデルです。
本モデルは Hugging Face 公式の LlamaForCausalLM と完全互換であり、AutoModelForCausalLM で即座にチャット対話を実行できます。
x10-500M-v1 は、パラメータ全体の約85% (425Mパラメータ) を FFNに割り当てた10x SwiGLUアーキテクチャを採用しています。fujiki/japanese_alpaca_data)から、短く自然な日本語のQ&A(50〜300文字)を 3,000 件厳選抽出。2e-5)で 2 エポック学習させることで、事前学習で獲得した豊富な知識を破壊することなく、自然な日本語アシスタントとしての対話作法を身につけさせています。| パラメータ | 設定値 | 備考 |
|---|---|---|
| アーキテクチャ | LlamaForCausalLM |
Hugging Face 公式互換 |
| 総パラメータ数 | 502,787,328 (≒ 503M) | 埋め込み層含む |
| 語彙数 (Vocab Size) | 28,000 | SentencePiece |
| 隠れ層次元 (Hidden Dim) | 768 | Attention のベース次元 |
| 中間層次元 (FFN Dim) | 7,680 | SwiGLU |
| アテンションヘッド数 | 12 | MHA |
| KV ヘッド数 | 12 | GQA無し |
| 層数 (Layers) | 24 | |
| 最大系列長 (Max Seq Len) | 1,024 (Position Embeddings: 2048) | RoPE |
| 正規化 (Normalization) | RMSNorm (eps=1e-6) | Pre-Norm |
| 活性化関数 | SwiGLU | |
| Tied Embeddings | True |
x10-500M-v1fujiki/japanese_alpaca_data(3,000件)2e-5 (Cosine schedule, warmup 5%)ユーザー: {instruction}\nアシスタント: {output}</s>
推論設定: temperature=0.4, repetition_penalty=1.08
ユーザー: 自己紹介して
アシスタント: 自己紹介は、とても楽しいです。私は、自分のことを話したり、他の人のことを話したり、そして、他の人とコミュニケーションをとることが好きです。
ユーザー: 好きな食べ物は何?
アシスタント: 好きな食べ物は、肉、魚、卵、チーズです。
ユーザー: 好きな音楽教えて
アシスタント: 好きな音楽は、R&Bやロック、ポップス、ジャズ、クラシックなどです。
ユーザー: おはよう!明日の予定は?
アシスタント: 明日、月曜日は朝から仕事です。
ユーザー: おいしいオムライスを作るコツを教えてください。
アシスタント: おいしいオムライスを作るコツは、まず、オムライスの材料を準備します。次に、オムライスを炒めるために具材を準備し、最後に、オムライスの具材を炒めます。
Hugging Face の transformers ライブラリを使用して、簡単に対話を実行できます:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "rsu/x10-500M-v1-Instruct"
device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
dtype = torch.bfloat16 if (torch.cuda.is_available() or torch.backends.mps.is_available()) else torch.float32
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=dtype,
).to(device)
# 質問の作成
user_message = "日本の首都はどこですか"
user_message = user_message.rstrip("?!?!。")
prompt = f"ユーザー: {user_message}\nアシスタント: "
inputs = tokenizer(prompt, add_special_tokens=False, return_tensors="pt").to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=60,
temperature=0.5,
do_sample=True,
top_p=0.7,
top_k=20,
repetition_penalty=1.15,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
# 入力プロンプト部分を除去して回答のみ抽出
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(f"ユーザー: {user_message}")
print(f"アシスタント: {response}")
# 出力例: 首都は、東京です。
本モデルは、Stanford Alpaca および派生データセットの利用条件に準拠し、研究・非営利目的限定のCC-BY-NC-4.0のもとで公開されています。