Model Description
This model is fine-tuned to solve Countdown problems: given a target number and a set of allowed numbers, produce a valid arithmetic equation that equals the target. The model generates chain-of-thought reasoning inside <think> tags and a final answer inside <answer> tags.
Training Details
Table with columns: Hyperparameter, Value| Hyperparameter | Value |
|---|
| Base model | Qwen/Qwen2.5-0.5B |
| Dataset | Asap7772/cog_behav_all_strategies |
| Epochs | 6 |
| Learning rate | 5e-5 |
| LR schedule | Cosine with 5% warmup |
| Batch size | 64 (gradient accumulation = 8) |
| Weight decay | 0.01 |
| Gradient clipping | 1.0 |
| Precision | bfloat16 |
| Gradient checkpointing | Enabled |
| Hardware | 1x NVIDIA H100 (Modal) |
| Max prompt length | 512 |
| Max response length | 1024 |
Loss is computed only on response tokens (assistant turn), with prompt tokens masked out.
Evaluation
Evaluated on asingh15/countdown_tasks_3to4 test split (40 prompts) using vLLM with temperature 0.6, top-k 20, top-p 0.95, sampling K=16 responses per prompt.
Table with columns: Metric, Value| Metric | Value |
|---|
| Average Score | 0.3660 |
| Pass@1 | 0.30 |
| Pass@16 | 0.75 (30/40) |
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("ba144220/cs224r-default-project-sft")
tokenizer = AutoTokenizer.from_pretrained("ba144220/cs224r-default-project-sft")
messages = [{"role": "user", "content": "Using the numbers [44, 19, 35], create an equation that equals 98."}]
input_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=1024, temperature=0.6, top_k=20, top_p=0.95, do_sample=True)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
Example Output
Prompt: Using the numbers [44, 19, 35], create an equation that equals 98.
Model output:
<think>
Let me try to find a path to 98.
First, let's look at the numbers: 44, 19, and 35.
Working backwards from 98: 98 is even, so it might be helpful to look for factors.
Let's try some operations:
44 + 19 = 63 (getting closer)
63 + 35 = 98 (this is our target!)
We can do: 19 + 44 = 63, 63 + 35 = 98.
Let's verify: (19 + 44) + 35 = 98 ✓
</think>
<answer> (19 + 44) + 35 </answer>
Score: 1.0 (correct)
Limitations
- Trained and evaluated only on the Countdown arithmetic task; not intended for general-purpose use.
- Performance degrades on harder problems with more numbers or larger targets.
- The 0.5B parameter size limits reasoning capacity compared to larger models.
Authors
Yuchi Hsu (yuchihsu@stanford.edu) and Ryan He (ryanhe@stanford.edu), Stanford CS224R Spring 2026.