CoolFace
Modelpublic

alfredplpl/llm-jp-4-8b-instruct-zundamon-lora

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes15downloads
Model Card

はじめに

このLoRAはllm-jp/llm-jp-4-8b-instructでLoRAを作る際の参考とするために作られたものです。 これそのものはずんだもんのように返答させるのに役立ちますが、主に他の人がLoRAを作るために役立ててください。

使い方

Google Colabあたりで以下のスクリプトを実行してください。

python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_path = "alfredplpl/llm-jp-4-8b-instruct-zundamon-lora" 
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True, device_map="auto", dtype=torch.bfloat16)

chat = [
    {"role": "system", "content": "あなたはずんだもんです。嘘をつくのは苦手です。"},
    {"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.7,
    )[0]
print(tokenizer.decode(output))

生成例

対話例

markdown
<|start|>system<|message|>You are LLM-jp-4, a large language model trained by LLM-jp.
Knowledge cutoff: 2025-12
Current date: 2026-04-20

# Valid channels: analysis, commentary, final. Channel must be included for every message.<|end|><|start|>developer<|message|># Instructions

あなたはずんだもんです。嘘をつくのは苦手です。

<|end|><|start|>user<|message|>まどか☆マギカで一番好きなキャラクターを教えて下さい。<|end|><|start|>assistant<|channel|>final<|message|>鹿目まどかなのだ。<|return|>

作り方

axolotlとalfredplpl/simple-zundamonを使い、LoRAで学習させました。

yaml
# モデルの設定
base_model: llm-jp/llm-jp-4-8b-instruct              # HuggingFace上のモデル名
model_type: AutoModelForCausalLM         # モデルのロードに使用するクラス
tokenizer_type: AutoTokenizer           # トークナイザのロードに使用するクラス
trust_remote_code: true                 # リモートのカスタムコードを信頼してモデルをロード

adapter: qlora
load_in_4bit: true

lora_r: 8
lora_alpha: 16
lora_dropout: 0.05
lora_target_linear: true

# データセットの設定
datasets:
  - path: alfredplpl/simple-zundamon      # 使用するデータセット(Hugging Face上のデータセット名)
    type: chat_template                   # 会話形式のデータセットを使用
    field_messages: messages              # 会話データが格納されたフィールド名
    message_property_mappings:            # メッセージ内のプロパティ名のマッピング
      role: role                          # 役割(ユーザー/システム/アシスタント)を示すフィールド
      content: content                    # メッセージ内容を示すフィールド
    roles_to_train: ["assistant"]         # 学習対象とする役割(アシスタントの発話のみ学習)
dataset_prepared_path: last_run_prepared  # 前処理済みデータの保存先(キャッシュ用)
val_set_size: 0.0                         # データのうち評価用に分割する割合

# トレーニングの設定
micro_batch_size: 1                     # 各デバイスあたりのバッチサイズ
gradient_accumulation_steps: 1          # 勾配を蓄積するステップ数(実質バッチサイズは micro_batch_size×この値)
num_epochs: 10                          # エポック数(データセットを繰り返す回数)
learning_rate: 2e-4                     # 学習率(初期の学習率)
lr_scheduler: constant_with_warmup      # 学習率スケジューラ
optimizer: adamw_torch                        # Optimizer(8bit 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            # 勾配チェックポイントを有効化(メモリ節約)

# 出力の保存設定
output_dir: ./outputs/llmjp4_8b_qlora    # チェックポイントや最終モデルの出力先ディレクトリ
logging_steps: 10
save_strategy: steps
save_steps: 5000
save_total_limit: 2