|
|
--- |
|
|
base_model: Qwen/Qwen3-4B-Instruct-2507 |
|
|
datasets: |
|
|
- u-10bei/structured_data_with_cot_dataset_512_v2 |
|
|
language: |
|
|
- en |
|
|
license: apache-2.0 |
|
|
library_name: peft |
|
|
pipeline_tag: text-generation |
|
|
tags: |
|
|
- qlora |
|
|
- lora |
|
|
- structured-output |
|
|
- json |
|
|
- no-cot |
|
|
--- |
|
|
|
|
|
# Qwen3-4B Structured Output LoRA (No-CoT / Strict-JSON) |
|
|
|
|
|
This repository provides a **LoRA adapter** fine-tuned from |
|
|
**Qwen/Qwen3-4B-Instruct-2507** using **QLoRA (4-bit, Unsloth)**. |
|
|
|
|
|
This repository contains **LoRA adapter weights only**. |
|
|
The base model must be loaded separately. |
|
|
|
|
|
## Training Objective |
|
|
|
|
|
This adapter is trained to improve **structured output accuracy** |
|
|
(JSON / YAML / XML / TOML / CSV) and strict format compliance. |
|
|
|
|
|
**Key Training Decisions:** |
|
|
1. **System Prompts Removed:** The model is trained without system prompts to match the inference environment where they are unavailable. |
|
|
2. **CoT Removed (Direct Output):** Chain-of-Thought (reasoning steps) and "Output:" markers were physically removed from the training data. |
|
|
3. **Assistant-Only Loss:** The model is trained to output the structured data **immediately** after the user prompt, with loss applied only to the output. |
|
|
|
|
|
## Training Configuration |
|
|
|
|
|
- Base model: Qwen/Qwen3-4B-Instruct-2507 |
|
|
- Method: QLoRA (4-bit) |
|
|
- Max sequence length: 512 |
|
|
- Epochs: 1 |
|
|
- Learning rate: 1e-06 |
|
|
- LoRA: r=64, alpha=128 |
|
|
|
|
|
## Usage |
|
|
|
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
from peft import PeftModel |
|
|
import torch |
|
|
|
|
|
base_model_name = "Qwen/Qwen3-4B-Instruct-2507" |
|
|
adapter_name = "your_id/your-repo" # Replace with your HF hub path |
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained(base_model_name) |
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
base_model_name, |
|
|
torch_dtype=torch.float16, |
|
|
device_map="auto", |
|
|
) |
|
|
model = PeftModel.from_pretrained(model, adapter_name) |
|
|
|
|
|
# Inference Example |
|
|
messages = [ |
|
|
{"role": "user", "content": "Convert this text to JSON: ..."} |
|
|
] |
|
|
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda") |
|
|
|
|
|
# The model will output JSON immediately |
|
|
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.1) |
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
|
``` |
|
|
## Sources & Terms (IMPORTANT) |
|
|
Training data: u-10bei/structured_data_with_cot_dataset_512_v2 |
|
|
|
|
|
Dataset License: MIT License. This dataset is used and distributed under the terms of the MIT License. |
|
|
Compliance: Users must comply with the MIT license (including copyright notice) and the base model's original terms of use. |