GPT-OSS 20B Japanese Math Reasoning Model

このモデルは openai/gpt-oss-20b をベースとして、日本語の数学的推論タスクに特化してファインチューンされたモデルです。 TRL を使用してSupervised Fine-Tuning (SFT) で訓練されています。

特徴

  • ベースモデル: openai/gpt-oss-20b (20B パラメータ)
  • ファインチューニング手法: LoRA (Low-Rank Adaptation)
  • 対象タスク: 日本語での数学的推論・計算問題
  • 訓練手法: Supervised Fine-Tuning (SFT)

必要な依存関係

pip install torch>=2.8.0
pip install transformers>=4.55.0
pip install peft>=0.17.0

基本的な使用方法

1. モデルのダウンロードと読み込み

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

# ベースモデルとトークナイザーの読み込み
model_name = "openai/gpt-oss-20b"
tokenizer = AutoTokenizer.from_pretrained(model_name)

# モデル設定
model_kwargs = {
    "attn_implementation": "eager", 
    "torch_dtype": "auto", 
    "use_cache": True, 
    "device_map": "auto"
}

# ベースモデルの読み込み
base_model = AutoModelForCausalLM.from_pretrained(model_name, **model_kwargs)

# ファインチューンされたアダプターの読み込み
peft_model_id = "kattyan/gpt-oss-20b-japanese-math-reasoning"
model = PeftModel.from_pretrained(base_model, peft_model_id)

# アダプターをマージして単一のモデルにする(オプション)
model = model.merge_and_unload()

2. 推論の実行

def generate_response(prompt, max_new_tokens=1000, temperature=0.6):
    """
    プロンプトに対してモデルの応答を生成
    """
    messages = [
        {"role": "user", "content": prompt},
    ]
    
    # チャットテンプレートを適用
    input_ids = tokenizer.apply_chat_template(
        messages,
        add_generation_prompt=True,
        return_tensors="pt",
    ).to(model.device)
    
    # 生成設定
    gen_kwargs = {
        "max_new_tokens": max_new_tokens, 
        "do_sample": True, 
        "temperature": temperature
    }
    
    # テキスト生成
    output_ids = model.generate(input_ids, **gen_kwargs)
    response = tokenizer.batch_decode(output_ids)[0]
    
    return response

# 使用例
prompt = "1から10までの整数の合計を求めてください。"
response = generate_response(prompt)
print(response)

Pipeline を使用した簡単な使用方法

from transformers import pipeline

# パイプラインの作成
generator = pipeline(
    "text-generation", 
    model="kattyan/gpt-oss-20b-japanese-math-reasoning",
    device_map="auto"
)

# 推論の実行
prompt = "3つの連続する整数の和が15のとき、それらの整数を求めてください。"
output = generator(
    [{"role": "user", "content": prompt}], 
    max_new_tokens=300, 
    return_full_text=False,
    temperature=0.6
)[0]

print(output["generated_text"])

訓練情報

データセット

日本語の数学的推論問題を含むデータセットでファインチューニング

フレームワークバージョン

  • PEFT: 0.17.0
  • TRL: 0.21.0
  • Transformers: 4.55.0
  • PyTorch: 2.8.0
  • Python: >=3.12

LoRA設定

  • ランク (r): 8
  • Alpha: 16
  • ドロップアウト: 0.0
  • 対象モジュール: k_proj, o_proj, q_proj, v_proj

Training Logs

Visualize in Weights & Biases

注意事項

  • このモデルは研究・教育目的での使用を想定しています
  • 生成される回答の正確性は保証されません
  • 重要な計算や判断には必ず検証を行ってください
  • GPU メモリが不足する場合は、device_map="auto"torch_dtype="auto" を調整してください

ライセンス

ベースモデル openai/gpt-oss-20b のライセンスに従います。 ```

Downloads last month
11
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kattyan/gpt-oss-20b-japanese-math-reasoning

Base model

openai/gpt-oss-20b
Adapter
(20)
this model