qwen38_lora: Qwen3.8-27B 日本語 SFT サンプル(LoRA アダプタ)

注意: これは動作確認用のサンプルです。 架空の一般的な社内ヘルプデスク FAQ 12 件だけを覚えさせた(ほぼ丸暗記させた)LoRA アダプタで、 実在の企業・組織の規程やデータは含みません。学習データにない質問には架空の規程を断定的に答える(作話する)ため、 実務の回答用途には使わないでください。

Note: A demo LoRA adapter trained on only 12 fictional, generic Japanese IT-helpdesk FAQ samples. It memorizes those samples and confidently makes up company policies it was not trained on. Not for production use.

概要

項目 内容
ベースモデル unsloth/Qwen3.8-27B(元モデル: Qwen/Qwen3.8-27B)
種類 LoRA アダプタ(PEFT)。単体では動かず、ベースモデルと組み合わせて使う
言語 日本語
学習データ 架空の社内ヘルプデスク FAQ 12 件(下記に全文)
目的 Qwen3.8-27B を Unsloth で SFT する手順の動作確認
学習コード https://github.com/Ohtani-y/qwen38-sft-ja
ライセンス Apache-2.0(ベースモデルのライセンスに準拠)

学習データ

ノートブックに直接埋め込んだ 12 件の 1 問 1 答です。外部のデータセットは使っていません。 内容はすべて架空で、残業時間の上限(月 45 時間・年 360 時間など)だけが労働基準法の上限規制と同じ数値です。

system プロンプト(全件共通):

あなたは社内ヘルプデスクのアシスタントです。日本語で、結論から簡潔に答えてください。

# 質問 回答
1 経費精算の締め日を教えてください。 毎月25日が締め日です。25日が土日祝の場合は直前の営業日に前倒しになります。締め後の申請は翌月分として処理されます。
2 社給パソコンのパスワードを忘れました。どうすればいいですか。 情報システム部への電話連絡で初期化できます。内線4120に本人から連絡し、社員番号を伝えてください。再設定は原則として当日中に完了します。
3 有給休暇の残日数はどこで確認できますか。 勤怠システムの「休暇管理」画面で確認できます。トップページ右上のメニューから開き、当年度付与分と繰越分が分けて表示されます。
4 在宅勤務の申請は何日前までに出す必要がありますか。 前営業日の17時までです。緊急時は当日申請も認められますが、事後に上長の承認が必要になります。
5 会議室を予約したいのですが、方法がわかりません。 グループウェアの「施設予約」から予約します。日時と人数を入力すると空いている会議室が一覧表示されるので、そこから選択してください。30分単位で最大4時間まで押さえられます。
6 出張の航空券は自分で手配してよいですか。 原則として指定の旅行代理店経由で手配します。自己手配は代理店で取り扱いがない路線に限り、事前に上長の承認を得た場合のみ認められます。
7 健康診断はいつ受けられますか。 毎年9月から11月にかけて実施されます。対象者には8月中旬に案内メールが届くので、記載の予約サイトから希望日を選んでください。
8 退職した社員のファイル共有権限はどう扱われますか。 退職日の翌営業日に自動で無効化されます。引き継ぎが必要なファイルは、退職日までに所属部門の共有フォルダへ移動しておいてください。
9 社外の人とファイルをやり取りしたいのですが、メール添付でよいですか。 10MBを超える場合は社内のファイル転送サービスを使ってください。10MB以下であればメール添付で問題ありませんが、機密区分が「社外秘」以上の資料はパスワード保護が必須です。
10 残業時間の上限について教えてください。 原則として月45時間、年間360時間が上限です。特別条項の適用時でも月100時間未満、複数月平均80時間以内に収める必要があります。
11 備品の購入申請はどこから出しますか。 購買システムの「一般備品申請」から出します。5万円未満は部門長承認のみ、5万円以上は部門長と経理部の二段階承認が必要です。
12 VPNに接続できません。 まず社給端末の証明書の有効期限を確認してください。期限切れが原因の場合が大半です。証明書が有効なのに接続できないときは、内線4120へ端末名とエラーコードを添えて連絡してください。

学習設定

  • 手法: LoRA(bf16、4bit 量子化なし)。Unsloth + TRL の SFTTrainer
  • LoRA: r = 8、lora_alpha = 16、lora_dropout = 0、bias = none
  • target_modules: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
  • 学習可能パラメータ: 39,845,888(全体の 0.15%)
  • max_steps = 30(12 件を約 10 エポック)、per_device_train_batch_size = 1、gradient_accumulation_steps = 4
  • learning_rate = 2e-4、warmup_steps = 5、lr_scheduler_type = linear、optim = adamw_8bit、weight_decay = 0.001
  • max_seq_length = 2048、seed = 3407、gradient checkpointing あり
  • 損失は assistant の応答部分だけにかける(train_on_responses_only)
  • チャット形式は非 thinking(apply_chat_template の enable_thinking = False)
  • 学習時間: 約 40 秒(Google Colab、NVIDIA RTX PRO 6000 Blackwell Server Edition 96GB)
  • 学習損失: 1.66(1 ステップ目)→ 0.004(30 ステップ目)
  • 学習ログ: Weights & Biases(project: qwen38-sft-ja、run: qwen38-27b-lora-sample)

評価(2026-10-03、貪欲法、enable_thinking = False)

項目 このアダプタ ベースモデル
学習した 12 問の再現(完全一致) 11/12(残る 1 問も語尾が違うだけ) -
言い換えた質問 8 問(事実が合っているか) 6/8 3/8
学習データにない社内規程 4 問 3 問で架空の値や手順を断定 断定なし
一般的な能力(コード・計算)2 問 2/2 -
  • 言い換えで外した例: 経理承認が要る備品の金額(正: 5 万円 → 回答: 5,000 円)、健康診断の案内時期(正: 8 月中旬 → 回答: 9 月中旬)
  • 作話した例: 社員食堂の営業時間、通勤手当の上限額(月 15 万円と回答)、社内 Wi-Fi のパスワードの確認方法(存在しない掲示場所を案内)

制限事項

  • 12 件だけを丸暗記させたもので、汎化性能や事実性の評価にはなっていません。
  • 言い換えた質問では数値を取り違えることがあります。
  • 学習データにない社内規程を断定的に作話します。ベースモデルの「分からないことは確認を促す」振る舞いが弱まっています。
  • thinking モード(enable_thinking = True)のデータでは学習していません。
  • ベースモデルは画像・動画も扱えますが、このアダプタはテキストだけで学習しています。

使い方

ベースモデル(bf16、約 56GB)を読み込むため、80GB 以上の GPU が必要です。

from unsloth import FastLanguageModel

model, processor = FastLanguageModel.from_pretrained(
    "y-ohtani/qwen38_lora",          # adapter_config.json からベースモデルを自動で読み込む
    max_seq_length = 2048,
    load_in_4bit = False,
)
tokenizer = processor.tokenizer

messages = [
    {"role": "system", "content": "あなたは社内ヘルプデスクのアシスタントです。日本語で、結論から簡潔に答えてください。"},
    {"role": "user", "content": "経費精算の締め日を教えてください。"},
]
text = tokenizer.apply_chat_template(
    messages, tokenize = False, add_generation_prompt = True,
    enable_thinking = False,   # 学習時と同じ非 thinking 形式
)
inputs = tokenizer(text, return_tensors = "pt").to(model.device)
out = model.generate(**inputs, max_new_tokens = 256, temperature = 0.7, top_p = 0.8, top_k = 20)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens = True))

学習環境(ライブラリのバージョン)

  • unsloth: 2026.7.5
  • unsloth_zoo: 2026.7.6
  • transformers: 5.3.0
  • trl: 0.22.2
  • peft: 0.21.0
  • torch: 2.8.0
  • datasets: 4.3.0
  • accelerate: 1.15.0

ライセンス

  • このアダプタ: Apache-2.0(ベースモデル Qwen3.8-27B のライセンスに準拠)
  • 学習ノートブック: LGPL-3.0(Unsloth 公式ノートブック nb/Qwen3_6_MoE.ipynb の派生)
Downloads last month
7
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for y-ohtani/qwen38_lora

Base model

Qwen/Qwen3.8-27B
Adapter
(11)
this model