x10-500M-v1-Instruct (Instruct Model)

x10-500M-v1-Instruct は、知識特化型モデル x10-500M-v1 (503M パラメータ) をベースに、日本語指示データ (Alpaca-ja 厳選サブセット) を用いて SFT を行った対話・指示応答モデルです。

本モデルは Hugging Face 公式の LlamaForCausalLM と完全互換であり、AutoModelForCausalLM で即座にチャット対話を実行できます。


Features

  1. ベースモデルの圧倒的知識量:
    • ベースモデルである x10-500M-v1 は、パラメータ全体の約85% (425Mパラメータ) を FFNに割り当てた10x SwiGLUアーキテクチャを採用しています。
  2. クリーンな日本語一問一答による SFT:
    • 日本語版 Alpaca(fujiki/japanese_alpaca_data)から、短く自然な日本語のQ&A(50〜300文字)を 3,000 件厳選抽出。
    • 微弱な学習率(2e-5)で 2 エポック学習させることで、事前学習で獲得した豊富な知識を破壊することなく、自然な日本語アシスタントとしての対話作法を身につけさせています。

Architecture

パラメータ 設定値 備考
アーキテクチャ 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

SFT Training Details

  • ベースモデル: x10-500M-v1
  • データセット: fujiki/japanese_alpaca_data(3,000件)
  • エポック数: 2 Epochs (92 steps)
  • 実効バッチサイズ: 64 (16 x 4)
  • 学習率: 2e-5 (Cosine schedule, warmup 5%)
  • ハードウェア: 1x NVIDIA A100 40GB
  • プロンプトフォーマット:
    ユーザー: {instruction}\nアシスタント: {output}</s>
    

Chat Examples

推論設定: temperature=0.4, repetition_penalty=1.08

ユーザー: 自己紹介して
アシスタント: 自己紹介は、とても楽しいです。私は、自分のことを話したり、他の人のことを話したり、そして、他の人とコミュニケーションをとることが好きです。

ユーザー: 好きな食べ物は何?
アシスタント: 好きな食べ物は、肉、魚、卵、チーズです。

ユーザー: 好きな音楽教えて
アシスタント: 好きな音楽は、R&Bやロック、ポップス、ジャズ、クラシックなどです。

ユーザー: おはよう!明日の予定は?
アシスタント: 明日、月曜日は朝から仕事です。

ユーザー: おいしいオムライスを作るコツを教えてください。
アシスタント: おいしいオムライスを作るコツは、まず、オムライスの材料を準備します。次に、オムライスを炒めるために具材を準備し、最後に、オムライスの具材を炒めます。


Quick Start

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}")
# 出力例: 首都は、東京です。

License

本モデルは、Stanford Alpaca および派生データセットの利用条件に準拠し、研究・非営利目的限定のCC-BY-NC-4.0のもとで公開されています。

Downloads last month
341
Safetensors
Model size
0.5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train rsu/x10-500M-v1-Instruct