Qwen3-4B-Structured-Output-LoRA
このリポジトリは、unsloth/Qwen3-4B-Instruct-2507 をベースモデルとし、QLoRAを用いてSFT + DPOでファインチューニングされた LoRA アダプターを提供します。
【重要】本リポジトリには LoRA アダプターの重みのみが含まれています。ベースモデルは別途ロードする必要があります。
学習の目的
このアダプターは、StructEval-T ベンチマークにおける構造化出力(JSON / YAML / XML / TOML / CSV)の精度向上を目的としてトレーニングされています。
学習時、損失(Loss)は最終的なアシスタントの出力にのみ適用され、中間的な推論プロセス(Chain-of-Thought)はマスクされています。
学習設定
2段階学習(SFT → DPO)
1. SFT (Supervised Fine-Tuning)
データセット:
daichira/structured-hard-sft-4k
LoRA パラメータ:
- r: 16
- alpha: 32
- dropout: 0.05
- target_modules: ["q_proj", "k_proj", "v_proj", "o_proj"]
学習パラメータ:
- ベースモデル:
unsloth/Qwen3-4B-Instruct-2507 - 最大シーケンス長: 2048
- エポック数: 1
- 学習率: 1e-6
- バッチサイズ: 1
- 勾配累積: 16
- Warmup比率: 0.1
- シード: 3407
データセットライセンス: Creative Commons Attribution (CC-BY-4.0)
2. DPO (Direct Preference Optimization)
データセット:
u-10bei/dpo-dataset-qwen-cot
SFT アダプターからの継続:
- Base:
outputs/experiments/04_daichira_hard/04_daichira_hard/adapter
LoRA パラメータ:
- r: 8
- alpha: 16
- dropout: 0.0
学習パラメータ:
- エポック数: 1
- 学習率: 1e-7
- バッチサイズ: 1
- 勾配累積: 8
- Warmup比率: 0.1
- DPO beta: 0.1
- 最大プロンプト長: 512
- 最大長: 2048
使い方
基本的な使用方法
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
base = "unsloth/Qwen3-4B-Instruct-2507"
adapter = "kevineen/Qwen3-4B-instruct-2507-main-exp01"
tokenizer = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(
base,
torch_dtype=torch.float16,
device_map="auto",
)
model = PeftModel.from_pretrained(model, adapter)
# 推論
messages = [{"role": "user", "content": "Please output JSON code:\n\nTask: Generate a user profile with name and age."}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.0)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
vLLMでの使用方法(推奨、コンペ環境)
vllm serve "kevineen/Qwen3-4B-instruct-2507-main-exp01" \
--base-model "unsloth/Qwen3-4B-Instruct-2507" \
--max-model-len 2048 \
--gpu-memory-utilization 0.60
学習データ
SFT データセット
- 名称:
daichira/structured-hard-sft-4k - 説明: StructEval-Tベンチマーク用の構造化出力データセット(ハードサンプル)
- ライセンス: Creative Commons Attribution (CC-BY-4.0)
- データセットURL: https://huggingface.co/datasets/daichira/structured-hard-sft-4k
DPO データセット
- 名称:
u-10bei/dpo-dataset-qwen-cot - 説明: Qwen向けDPOトレーニング用データセット(Chain-of-Thought付き)
- ライセンス: Creative Commons Attribution (CC-BY-4.0)
- データセットURL: https://huggingface.co/datasets/u-10bei/dpo-dataset-qwen-cot
ソースおよびライセンス
データセットライセンス
学習データはCC-BY-4.0ライセンスの条項に基づき、使用および再配布が可能です。
遵守事項:
- データセットの帰属表記(クレジット)に関する要件
- ベースモデルの元の利用規約の両方を遵守する必要があります
ベースモデル
- 名称:
unsloth/Qwen3-4B-Instruct-2507 - ライセンス: Apache 2.0
評価結果
Holdout split(100 samples)での評価結果:
- Overall Score: 0.832
- Parse Rate: 0.64
- Clean Rate: 0.92
形式別スコア:
- JSON: 0.80
- YAML: 0.90
- XML: 0.867
- TOML: 0.743
- CSV: 1.00
実験IDとタグ
- SFT実験:
04_daichira_hard - DPO実験:
dpo_from_daichira_hard - パイプライン:
sft_dpo_v1 - データセットファミリー:
daichira
Citation
本モデルを使用する場合は、以下のクレジットを含めてください:
@model{qwen3_4b_structeval_2026,
title={Qwen3-4B-Structured-Output-LoRA},
author={kevineen},
year={2026},
base_model={unsloth/Qwen3-4B-Instruct-2507},
sft_dataset={daichira/structured-hard-sft-4k},
dpo_dataset={u-10bei/dpo-dataset-qwen-cot},
license={CC-BY-4.0}
}
フレームワークバージョン
- PEFT: 0.18.1
- Transformers: 4.56.2
- PyTorch: 2.10.0
- TRL: 0.22.2
- Downloads last month
- 2
Model tree for kevineen/Qwen3-4B-instruct-2507-sft-dpo-001
Base model
Qwen/Qwen3-4B-Instruct-2507 Finetuned
unsloth/Qwen3-4B-Instruct-2507