|
|
--- |
|
|
base_model: openai/gpt-oss-20b |
|
|
library_name: peft |
|
|
tags: |
|
|
- lora |
|
|
- sft |
|
|
- text-generation |
|
|
- norwegian |
|
|
- quiz-generation |
|
|
- mcq |
|
|
- trl |
|
|
license: apache-2.0 |
|
|
datasets: |
|
|
- solarmar/normcqgen-thinking |
|
|
language: |
|
|
- "no" |
|
|
pipeline_tag: text-generation |
|
|
--- |
|
|
|
|
|
# NormCQGen Model - Norwegian MCQ Generator |
|
|
|
|
|
This is a LoRA adapter fine-tuned on [openai/gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) for generating Norwegian multiple-choice questions (MCQ). The model was trained using supervised fine-tuning (SFT) with the TRL library on the [normcqgen-thinking](https://huggingface.co/datasets/solarmar/normcqgen-thinking) dataset. |
|
|
|
|
|
## Model Details |
|
|
|
|
|
### Model Description |
|
|
|
|
|
This LoRA adapter specializes in generating high-quality Norwegian multiple-choice questions suitable for educational assessments and quiz creation. The adapter applies selective fine-tuning to attention projection layers and Mixture-of-Experts (MoE) layers of the base model. |
|
|
|
|
|
- **Developed by**: solarmar |
|
|
- **Model type**: LoRA adapter for causal language modeling |
|
|
- **Language**: Norwegian (Bokmål) |
|
|
- **License**: Apache 2.0 (same as base model) |
|
|
- **Fine-tuned from**: [openai/gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) |
|
|
- **Adapter size**: 143 MB |
|
|
|
|
|
### Model Architecture |
|
|
|
|
|
**LoRA Configuration:** |
|
|
- **Rank (r)**: 16 |
|
|
- **Alpha**: 16 |
|
|
- **Dropout**: 0.05 (training), 0.0 (inference) |
|
|
- **Target Modules**: |
|
|
- Attention projections: `q_proj`, `k_proj`, `v_proj`, `o_proj` |
|
|
- **Target Parameters** (MoE expert layers): |
|
|
- Layer 15: `mlp.experts.gate_up_proj`, `mlp.experts.down_proj` |
|
|
- Layer 19: `mlp.experts.gate_up_proj`, `mlp.experts.down_proj` |
|
|
- Layer 21: `mlp.experts.gate_up_proj`, `mlp.experts.down_proj` |
|
|
- Layer 23: `mlp.experts.gate_up_proj`, `mlp.experts.down_proj` |
|
|
|
|
|
## Intended Uses |
|
|
|
|
|
### Direct Use |
|
|
|
|
|
This model is designed to generate Norwegian multiple-choice questions for: |
|
|
- Educational assessments |
|
|
- Quiz creation |
|
|
- Learning materials development |
|
|
- Knowledge evaluation tasks |
|
|
|
|
|
### Out-of-Scope Use |
|
|
|
|
|
- Generating content in languages other than Norwegian |
|
|
- Non-MCQ text generation tasks |
|
|
- Critical decision-making without human review |
|
|
- Tasks requiring up-to-date factual information (model knowledge cutoff applies) |
|
|
|
|
|
## How to Use |
|
|
|
|
|
### Using PEFT (Recommended) |
|
|
|
|
|
```python |
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
from peft import PeftModel |
|
|
|
|
|
# Load base model and tokenizer |
|
|
base_model = AutoModelForCausalLM.from_pretrained( |
|
|
"openai/gpt-oss-20b", |
|
|
device_map="auto", |
|
|
torch_dtype="auto" |
|
|
) |
|
|
tokenizer = AutoTokenizer.from_pretrained("openai/gpt-oss-20b") |
|
|
|
|
|
# Load LoRA adapter |
|
|
model = PeftModel.from_pretrained(base_model, "solarmar/normcqgen-model") |
|
|
|
|
|
# Prepare input |
|
|
messages = [{"role": "user", "content": "Generer et flervalgsspørsmål om fotosyntese."}] |
|
|
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device) |
|
|
|
|
|
# Generate |
|
|
outputs = model.generate(inputs, max_new_tokens=512, temperature=0.7, do_sample=True) |
|
|
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
|
print(generated_text) |
|
|
``` |
|
|
|
|
|
### Using AutoPeftModel |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer |
|
|
from peft import AutoPeftModelForCausalLM |
|
|
|
|
|
# Load model with adapter |
|
|
model = AutoPeftModelForCausalLM.from_pretrained( |
|
|
"solarmar/normcqgen-model", |
|
|
device_map="auto", |
|
|
torch_dtype="auto" |
|
|
) |
|
|
tokenizer = AutoTokenizer.from_pretrained("solarmar/normcqgen-model") |
|
|
|
|
|
# Generate |
|
|
messages = [{"role": "user", "content": "Lag et spørsmål om norsk historie."}] |
|
|
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(model.device) |
|
|
outputs = model.generate(inputs, max_new_tokens=512) |
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True)) |
|
|
``` |
|
|
|
|
|
## Training Details |
|
|
|
|
|
### Training Data |
|
|
|
|
|
The model was fine-tuned on [solarmar/normcqgen-thinking](https://huggingface.co/datasets/solarmar/normcqgen-thinking), a dataset of Norwegian multiple-choice questions with reasoning traces. |
|
|
|
|
|
### Training Procedure |
|
|
|
|
|
**Training Hyperparameters:** |
|
|
- **Training method**: Supervised Fine-Tuning (SFT) |
|
|
- **Number of epochs**: 2 |
|
|
- **Per-device train batch size**: 32 |
|
|
- **Per-device eval batch size**: 32 |
|
|
- **Gradient accumulation steps**: 4 |
|
|
- **Effective batch size**: 128 (32 × 4) |
|
|
- **Learning rate**: 2e-4 |
|
|
- **Weight decay**: 0.01 |
|
|
- **Warmup ratio**: 0.03 |
|
|
- **Max sequence length**: 1024 tokens |
|
|
- **Logging steps**: 5 |
|
|
- **Evaluation steps**: 10 |
|
|
- **Save steps**: 10 |
|
|
|
|
|
**LoRA Hyperparameters:** |
|
|
- **LoRA rank (r)**: 16 |
|
|
- **LoRA alpha**: 16 |
|
|
- **LoRA dropout**: 0.05 |
|
|
- **Target modules**: All attention projections (q, k, v, o) |
|
|
- **Target parameters**: MoE expert layers at positions 15, 19, 21, 23 |
|
|
|
|
|
### Training Results |
|
|
|
|
|
| Metric | Value | |
|
|
|--------|-------| |
|
|
| Evaluation Loss | 0.736 | |
|
|
| Mean Token Accuracy | 83.17% | |
|
|
| Evaluation Entropy | 0.748 | |
|
|
| Total Tokens Evaluated | 5,101,372 | |
|
|
| Training Epochs | 2.0 | |
|
|
|
|
|
The model achieved strong performance with 83.17% token-level accuracy while maintaining reasonable diversity in predictions (entropy: 0.748). |
|
|
|
|
|
## Framework Versions |
|
|
|
|
|
- **PEFT**: 0.18.0 |
|
|
- **TRL**: 0.25.1 |
|
|
- **Transformers**: 4.57.1 |
|
|
- **PyTorch**: 2.5.1+cu121 |
|
|
- **Datasets**: 4.4.1 |
|
|
- **Tokenizers**: 0.22.1 |
|
|
|
|
|
## Limitations and Bias |
|
|
|
|
|
- The model is specialized for Norwegian language and may not perform well in other languages |
|
|
- Performance depends on the quality and coverage of the training dataset |
|
|
- May reflect biases present in the training data |
|
|
- Generated questions should be reviewed by educators before use in formal assessments |
|
|
- The model's knowledge is limited to the base model's training data cutoff |
|
|
|
|
|
## Citation |
|
|
|
|
|
If you use this model, please cite: |
|
|
|
|
|
```bibtex |
|
|
@misc{normcqgen2024, |
|
|
author = {solarmar}, |
|
|
title = {NormCQGen: Norwegian MCQ Generation Model}, |
|
|
year = {2024}, |
|
|
publisher = {HuggingFace}, |
|
|
howpublished = {\url{https://huggingface.co/solarmar/normcqgen-model}} |
|
|
} |
|
|
``` |
|
|
|
|
|
### TRL Citation |
|
|
|
|
|
This model was trained using TRL (Transformer Reinforcement Learning): |
|
|
|
|
|
```bibtex |
|
|
@misc{vonwerra2022trl, |
|
|
title = {{TRL: Transformer Reinforcement Learning}}, |
|
|
author = {Leandro von Werra and Younes Belkada and Lewis Tunstall and Edward Beeching and Tristan Thrush and Nathan Lambert and Shengyi Huang and Kashif Rasul and Quentin Gallou{\'e}dec}, |
|
|
year = 2020, |
|
|
journal = {GitHub repository}, |
|
|
publisher = {GitHub}, |
|
|
howpublished = {\url{https://github.com/huggingface/trl}} |
|
|
} |
|
|
``` |
|
|
|
|
|
## Acknowledgments |
|
|
|
|
|
- Base model: [openai/gpt-oss-20b](https://huggingface.co/openai/gpt-oss-20b) |
|
|
- Training framework: [TRL](https://github.com/huggingface/trl) |
|
|
- PEFT library: [Hugging Face PEFT](https://github.com/huggingface/peft) |
|
|
|