Sapolas0730/japanese-gpt2-medium-formal-lora
054
japanese-gpt2-medium-formal-lora
rinna/japanese-gpt2-medium(GPT-2アーキテクチャ、336M)に、カジュアルな日本語文をフォーマルな日本語文に変換する指示応答データでLoRAアダプタを学習したものです。ベースモデルは凍結し、LoRAアダプタ(約8.7MB)のみを学習・保存しています。
学習データはMAGPIE(arXiv:2406.08464)の手法で Qwen/Qwen2.5-7B-Instruct を使い1,000件合成し、日本語純度・フォーマット・長さ比・疑問形保持・重複でフィルタしたものを使用しています。
同じデータ・同条件でフルファインチューニングした Sapolas0730/japanese-gpt2-medium-formal-fullft との比較実験の詳細はZenn記事を参照してください。
使い方
adapter_config.json の base_model_name_or_path からベースモデルを自動解決できる AutoPeftModelForCausalLM で読み込みます。
import torch
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
model_id = "Sapolas0730/japanese-gpt2-medium-formal-lora"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoPeftModelForCausalLM.from_pretrained(model_id)
model.eval()
instruction = "次の文をフォーマルな言い方に変換してください:明日暇?"
prompt = f"以下はタスクを説明する指示です。指示に従って応答を書いてください。\n\n### 指示:\n{instruction}\n\n### 応答:\n"
input_ids = tokenizer(prompt, return_tensors="pt", add_special_tokens=False).input_ids
output_ids = model.generate(
input_ids,
max_new_tokens=100,
min_new_tokens=5,
pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
repetition_penalty=1.3,
no_repeat_ngram_size=3,
)
print(tokenizer.decode(output_ids[0][input_ids.shape[-1]:], skip_special_tokens=True))学習詳細
- ベースモデル:
rinna/japanese-gpt2-medium(凍結) - LoRA設定: r=8, alpha=16, dropout=0.05, targetmodules=`cattn
,c_proj`(GPT-2のConv1D層) - 学習可能パラメータ: 2,162,688(全体の0.64%)
- 学習率: 1e-4 / バッチサイズ4 × 勾配累積4(実効バッチサイズ16)
- 検証データ10%を分け、Early Stopping(patience=3)を設定したが15エポック終了までほぼ発動せず
- 採用エポック: 14.0(evalloss 1.112)。Full-FT(evalloss 1.021)よりは高いが、過学習せず安定して学習が進んだ
- ピークGPUメモリ: 3.17GB(Full-FTの6.84GBの半分弱)
既知の制約
- 学習データは1,000件の合成データのみで、実運用の日本語表現を網羅していません。
- 最終的な損失はフルファインチューニング版よりやや高めです。
- 推論時に貪欲法(greedy decoding)を使うと同一フレーズを繰り返すことがあるため、
repetition_penaltyやno_repeat_ngram_sizeの使用を推奨します。
ライセンス
ベースモデル(rinna/japanese-gpt2-medium)・学習データ生成に使用したQwen/Qwen2.5-7B-Instructはいずれも寛容なオープンライセンス(MIT / Apache 2.0)で公開されています。本アダプタもこれに従います。
