114 lines
3.4 KiB
Markdown
114 lines
3.4 KiB
Markdown
|
|
---
|
|||
|
|
library_name: transformers
|
|||
|
|
license: apache-2.0
|
|||
|
|
base_model: Shekswess/trlm-stage-2-sft-final-2
|
|||
|
|
tags:
|
|||
|
|
- trl
|
|||
|
|
- dpo
|
|||
|
|
- preference-alignment
|
|||
|
|
- reasoning
|
|||
|
|
- generated_from_trainer
|
|||
|
|
model-index:
|
|||
|
|
- name: trlm-stage-3-dpo-final-2
|
|||
|
|
results: []
|
|||
|
|
---
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
|
|||
|
|
# 🧠 trlm-stage-3-dpo-final-2
|
|||
|
|
|
|||
|
|
`trlm-stage-3-dpo-final-2` is the **Stage 3** post-training model for the **Tiny Reasoning Language Model (trlm)** project.
|
|||
|
|
This stage focuses on **preference alignment** using **Direct Preference Optimization (DPO)** with 50k preference pairs.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📖 Model Description
|
|||
|
|
|
|||
|
|
- **Base Model**: [Shekswess/trlm-stage-2-sft-final-2](https://huggingface.co/Shekswess/trlm-stage-2-sft-final-2)
|
|||
|
|
- **Type**: Causal Language Model (decoder-only transformer)
|
|||
|
|
- **Stage**: Post-training **Stage 3 (DPO)**
|
|||
|
|
- **Objective**: Align model outputs with human-preferred reasoning and answers by contrasting **chosen** vs **rejected** completions.
|
|||
|
|
|
|||
|
|
This stage improves the model’s **alignment**, **coherence**, and **reasoning stability**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Intended Uses & Limitations
|
|||
|
|
|
|||
|
|
### Intended Uses
|
|||
|
|
- Aligned reasoning assistant with structured `<think>` traces
|
|||
|
|
- Multi-turn reasoning with preference-optimized outputs
|
|||
|
|
- Safer, more useful responses for reasoning tasks
|
|||
|
|
|
|||
|
|
### Limitations
|
|||
|
|
- Trained only on preference data → may inherit biases from source datasets
|
|||
|
|
- Limited parameter count (135M) restricts knowledge breadth
|
|||
|
|
- Still prone to hallucinations under complex reasoning chains
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 Training Data
|
|||
|
|
|
|||
|
|
This model was trained on the dataset:
|
|||
|
|
👉 [**Shekswess/trlm-dpo-stage-3-final-2**](https://huggingface.co/datasets/Shekswess/trlm-dpo-stage-3-final-2)
|
|||
|
|
|
|||
|
|
**Dataset summary**:
|
|||
|
|
- **Entries**: 50,000 preference pairs
|
|||
|
|
- **Source**: `scottgeng00/olmo-3-preference-mix-deltas_reasoning-yolo_scottmix-DECON-chfiltered`
|
|||
|
|
- **Focus**: Preference alignment with **chosen vs rejected responses**
|
|||
|
|
|
|||
|
|
| Source Dataset | Split | Entries | % |
|
|||
|
|
|----------------|-------|---------|---|
|
|||
|
|
| scottgeng00/olmo-3-preference-mix-deltas_reasoning-yolo_scottmix-DECON-chfiltered | train | 50,000 | 100% |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚙️ Training Procedure
|
|||
|
|
|
|||
|
|
### Training Hyperparameters
|
|||
|
|
- **Learning rate**: 1e-5
|
|||
|
|
- **Train batch size**: 32
|
|||
|
|
- **Eval batch size**: 8
|
|||
|
|
- **Gradient accumulation steps**: 4
|
|||
|
|
- **Total effective batch size**: 128
|
|||
|
|
- **Optimizer**: AdamW (betas=(0.9, 0.999), eps=1e-08)
|
|||
|
|
- **LR Scheduler**: Cosine with minimum LR + warmup ratio 0.1
|
|||
|
|
- **Epochs**: 1
|
|||
|
|
- **Seed**: 42
|
|||
|
|
|
|||
|
|
### Framework Versions
|
|||
|
|
- **Transformers**: 4.56.2
|
|||
|
|
- **PyTorch**: 2.7.1+rocm7.0.0.git698b58a9
|
|||
|
|
- **Datasets**: 4.0.0
|
|||
|
|
- **Tokenizers**: 0.22.1
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 Usage
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM
|
|||
|
|
|
|||
|
|
model_name = "Shekswess/trlm-stage-3-dpo-final-2"
|
|||
|
|
|
|||
|
|
# Load tokenizer & model
|
|||
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|||
|
|
model = AutoModelForCausalLM.from_pretrained(model_name)
|
|||
|
|
|
|||
|
|
# Example inference with preference-aligned reasoning
|
|||
|
|
messages = [
|
|||
|
|
{"role": "user", "content": "Explain why the sky is blue in simple terms."}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
# Apply chat template
|
|||
|
|
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
|
|||
|
|
inputs = tokenizer([text], return_tensors="pt")
|
|||
|
|
|
|||
|
|
outputs = model.generate(**inputs, max_new_tokens=256)
|
|||
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
Part of the Tiny Reasoning Language Model (trlm) post-training pipeline.
|