openai/gsm8k
Benchmark • Updated • 17.6k • 1.05M • 1.57k
How to use ssurface/cot-dialect-olmo3-7b-think-conditioned-grpo with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("merged_cond_single")
model = PeftModel.from_pretrained(base_model, "ssurface/cot-dialect-olmo3-7b-think-conditioned-grpo")The alternative design: one adapter asked to serve every verbosity level by naming the level in the prompt, instead of one adapter per level. This is the comparison that motivates the per-level family.
| Requested level | Accuracy |
|---|---|
| L1 | 88.2% |
| L2 | 70.2% |
| L3 | 58.8% |
| L4 | 48.0% |
| L5 | 3.0% |
The model holds up while the requested dialect stays close to what it settled on, then collapses at L5 (3.0%). A single set of weights cannot hold five dialects at once; asking for the extreme one gets neither the format nor the answer.
| Stage | GRPO on the merged conditioned SFT model |
| Conditioning | the level is named in the prompt, not selected by adapter |
| Engine | trl.GRPOTrainer on stock transformers, sdpa |
| LoRA | r=16, alpha=32 |
| Hardware | 1x NVIDIA A100 80GB |
Solve this using Level {N} ({Verbose|Concise|Symbolic|Shorthand|Extreme}).
Problem: {your problem}
Stacks on the conditioned SFT model, not the raw base.
from transformers import AutoModelForCausalLM
from peft import PeftModel
model = AutoModelForCausalLM.from_pretrained("allenai/Olmo-3-7B-Think", torch_dtype="bfloat16", device_map="auto")
model = PeftModel.from_pretrained(model, "ssurface/cot-dialect-olmo3-7b-think-conditioned-sft")
model = model.merge_and_unload()
model = PeftModel.from_pretrained(model, "ssurface/cot-dialect-olmo3-7b-think-conditioned-grpo")
Base model
allenai/Olmo-3-1025-7B