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 データセット

DPO データセット

ソースおよびライセンス

データセットライセンス

学習データは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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kevineen/Qwen3-4B-instruct-2507-sft-dpo-001

Adapter
(400)
this model