はじめに
このLoRAはpfnet/plamo-3-nict-8b-baseを最低限会話できるようにするLoRAです。 このLoRAではこのモデルの対話能力を十分に引き出しきれていません。 十分な性能を出すにはPFNさんに問い合わせてください。
使い方
まず、plamo-3-nict-8b-baseのページへ行き、利用規約に同意するボタンを押してください。 次にGoogle Colabあたりでライブラリをインストールしてください。
numpy
numba
torch
transformers
peft
その後、Google Colabあたりで実行してください。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "alfredplpl/plamo-3-nict-8b-magpie-lora"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map="cuda", dtype=torch.bfloat16)
chat = [
{"role": "user", "content": "まどか☆マギカで一番好きなキャラクターを教えて下さい。"},
]
tokenized_input = tokenizer.apply_chat_template(chat, add_generation_prompt=True, tokenize=True, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
tokenized_input,
max_new_tokens=256,
do_sample=True,
top_p=0.95,
temperature=0.3
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id
)[0]
print(tokenizer.decode(output))
生成例
対話例
<|plamo:bos|><|plamo:tag|>user<|plamo:msg|>まどか☆マギカで一番好きなキャラクターを教えて下さい。
<|plamo:tag|>assistant<|plamo:msg|>「まどか☆マギカ」には多くの魅力的なキャラクターが登場しますが、特に人気のあるキャラクターとして「暁美ほむら」を挙げることができます。彼女は物語の重要な役割を果たし、まどかマギカの世界観を深く掘り下げるキャラクターです。ただし、これは個人の好みによるものなので、他のキャラクターもそれぞれ魅力的です。どのキャラクターが好きですか?それについてもっと詳しく話すことができますよ。<|plamo:eos|>
<|plamo:bos|><|plamo:tag|>user<|plamo:msg|>まどか☆マギカやPSYCHO-PASSを通じて虚淵玄は功利主義の観点から何を伝えたかったのでしょうか。
<|plamo:tag|>assistant<|plamo:msg|>虚淵玄の作品は、しばしば複雑なテーマと深い哲学的考察を含んでいます。「まどか☆マギカ」と「PSYCHO-PASS」の両方において、彼は人間の本質、自由意志、そして社会の構造について深く掘り下げています。
「まどか☆マギカ」では、虚淵玄は選択の自由とその結果としての責任について考察しています。物語は、魔法少女たちが自分たちの運命を変えるために戦う一方で、彼らの選択が他者にも大きな影響を与えるというジレンマを描いています。虚淵玄は、個人の選択が社会全体に与える影響や、その結果に対する責任について考えさせるメッセージを伝えています。
一方、「PSYCHO-PASS」では、虚淵玄は人間の心の複雑さと、社会が個人の心をどのように制御しようとするかについて考察しています。この作品では、人々の心の状態が数値化され、社会が個人の心を管理しようとするシステムが描かれています。虚淵玄は、個人の自由意志と社会の規範との間のバランスや、個人の内面的な葛藤について深く掘り下げています。
したがって、虚淵玄の作品は、人間の本質や社会の構造について深い洞察を提供し、視聴者や読者に自己反省を促しています。ただし、虚淵玄の作品は解釈の余地が大きく、視聴者や読者それぞれが独自の解釈を持つことができます。<|plamo:eos|>
作り方
axolotlとllm-jp/magpie-sft-v1.0を使い、LoRAで学習させました。
- 2025/12/16 18:30: 1 epoch 分, コストはRTX 4090 70GPU時間程度
- 2025/12/16 09:00: 12000 steps 分, コストはRTX 4090 50GPU時間程度
- 2025/12/15 19:00: 5000 steps 分, コストはRTX 4090 22GPU時間程度
- 2025/12/15 11:00: 1500 steps 分, コストはRTX 4090 6GPU時間程度
# モデルの設定
base_model: pfnet/plamo-3-nict-8b-base # HuggingFace上のモデル名
model_type: AutoModelForCausalLM # モデルのロードに使用するクラス
tokenizer_type: AutoTokenizer # トークナイザのロードに使用するクラス
trust_remote_code: true # リモートのカスタムコードを信頼してモデルをロード
load_in_8bit: false # 8bit量子化は使用しない
load_in_4bit: true # 4bit量子化は使用
strict: false # 重みの厳密な一致を要求しない(追加トークン等がある場合に許容)
# データセットの設定
datasets:
- path: llm-jp/magpie-sft-v1.0 # 使用するデータセット(Hugging Face上のデータセット名)
type: chat_template # 会話形式のデータセットを使用
chat_template: tokenizer_default
field_messages: conversations # 会話データが格納されたフィールド名
message_property_mappings: # メッセージ内のプロパティ名のマッピング
role: role # 役割(ユーザー/システム/アシスタント)を示すフィールド
content: content # メッセージ内容を示すフィールド
roles_to_train: ["assistant"] # 学習対象とする役割(アシスタントの発話のみ学習)
train_on_eos: last
dataset_prepared_path: last_run_prepared # 前処理済みデータの保存先(キャッシュ用)
# LoRAの設定
adapter: qlora # LoRAを使用してファインチューニング
lora_r: 32 # LoRAのランク(低ランク行列の次元)
lora_alpha: 32 # LoRAのスケーリング係数
lora_dropout: 0.05 # LoRA適用部分のドロップアウト率
lora_target_modules: # LoRAを適用するモジュール(リスト形式)
- "mixer.qkv_proj"
- "mixer.o_proj"
- "mlp.gate_up_proj"
- "mlp.down_proj"
# トレーニングの設定
micro_batch_size: 4 # 各デバイスあたりのバッチサイズ
gradient_accumulation_steps: 1 # 勾配を蓄積するステップ数(実質バッチサイズは micro_batch_size×この値)
num_epochs: 1 # エポック数(データセットを繰り返す回数)
learning_rate: 2e-4 # 学習率(初期の学習率)
lr_scheduler: constant_with_warmup # 学習率スケジューラ
optimizer: adamw_torch # Optimizer(AdamW)
train_on_inputs: false # ユーザ発話部分は学習しない(アシスタントの回答部分のみ誤差計算)
group_by_length: false # 同じ長さのシーケンスをグループ化しない
sequence_len: 2048 # シーケンス長(コンテキスト長)
pad_to_sequence_len: true # シーケンス長までパディングしてバッチを揃える
bf16: auto # 学習でBrain Floating Point 16を自動使用(対応GPUなら有効化)
fp16: false # 16-bit浮動小数点を直接指定しない(bf16を優先)
gradient_checkpointing: true # 勾配チェックポイントを有効化(メモリ節約)
save_steps: 500
save_total_limit: 3
# 出力の保存設定
output_dir: ./output/plamo-3-nict-8b-lora # チェックポイントや最終モデルの出力先ディレクトリ
Model tree for alfredplpl/plamo-3-nict-8b-magpie-lora
Base model
pfnet/plamo-3-nict-8b-base