Views
No views yet
| Resource | Link |
|---|---|
| Code | SlowGuess/Abforge_1 |
| Training & evaluation data | SlowGuess/abforge-data |
| Released model (SFT → GRPO) | SlowGuess/ABForge-Qwen3-8B |
| RL-only checkpoint | SlowGuess/ABForge-Qwen3-8B-RL |
| Per-paper outputs & judge rationales | outputs/task{1,2}/*/abforge-sft.jsonl in the data repo |
train/, one row per paper, built by a semi-automated audit-in-the-loop
pipeline over research papers from major ML, NLP and CV venues. This model trains on the rows
flagged in_sft_task1 (45,961 papers) and in_sft_task2 (36,955), shuffled into a 1:1 task
mixture for one full epoch. The benchmark papers carry no training flag, so they cannot leak in.eval/ablationbench_200.jsonl,
200 papers, judge claude-sonnet-4-6). Task 1 is ablation objective identification
(paper_score); Task 2 is ablation plan synthesis (design_score, ×100).| Model | Task 1 | Task 2 |
|---|---|---|
| Qwen3-8B (base) | 44.4 | 43.4 |
| ABForge-Qwen3-8B-SFT (this model, SFT only) | 30.7 | 52.2 |
| ABForge-Qwen3-8B-RL (RL only) | 52.2 | 54.9 |
| ABForge-Qwen3-8B (SFT → GRPO) | 55.9 | 62.4 |
SFT alone lifts Task 2 but costs Task 1 relative to the base model. Its value is as an RL initialization: GRPO started from here beats GRPO started from the base model by +3.7 on Task 1 and +7.5 on Task 2.
1git clone https://github.com/SlowGuess/Abforge_1 && cd Abforge_1
2huggingface-cli download SlowGuess/abforge-data --repo-type dataset \
3 --include "eval/*" --local-dir data
4
5python run_inference_local.py --task 1 \
6 --input data/eval/ablationbench_200.jsonl \
7 --output outputs/task1_infer.jsonl \
8 --model-path SlowGuess/ABForge-Qwen3-8B-SFT \
9 --dtype bf16 --device-map auto \
10 --max-new-tokens 5120 --temperature 0.0 --stop-on '</Result>'
11
12export JUDGE_API_BASE=https://api.openai.com/v1
13export JUDGE_API_KEY=...
14export JUDGE_MODEL=...
15scripts/evaluate_task1.sh outputs/task1_infer.jsonl--task 2, --stop-on '</Proposed_Plan>' and scripts/evaluate_task2.sh for Task 2. The
model is trained on the prompt templates in the code release and the rubric evaluator expects
the matching output structure, so use those templates and greedy decoding.1@misc{abforge2026,
2 title={ABForge: Post-Training for Paper-Grounded Ablation Design},
3 author={TODO},
4 year={2026},
5}