Rules, Traces and Routing Statistics: Training and Calibration Data for Open Models on ARC-AGI-2
Organizations: VNU University of Science, 334 Nguyen Trai, Thanh Xuan, Hanoi, Vietnam
Abstract
We study which training and calibration data help three open models solve ARC-AGI-2 tasks when the solver runs offline on four L4 GPUs for at most 12 hours. We compare data offline on public tasks and report 189 runs on the 120 hidden semi-private tasks. For the NVARC Qwen3-4B grid model, we built a corpus of 12,000 executable rules in a typed language and 95,993 tasks; a rule is admitted only if its behaviour on a fixed probe set differs from that of every admitted rule, and a task only if its pairs refute a shortlist of nearest competing rules and defeat 12 shortcut solvers. Continued fine-tuning on 1,920 real task records with revised four-GPU scheduling raised the semi-private score from 28.96 (mean of the released model) to 33.06 (mean of five runs, best 34.86); no checkpoint trained with synthetic tasks, even all 95,993 of them, improved on the real-task model. For the Qwen3.8-27B reasoning model, we fine-tuned on 1,036 of its own reasoning traces with correct final answers and compared sets that add traces of other models and synthetic tasks. With an inference procedure built around the model (a thinking cap enforced in the serving engine, a Python program checked on the demonstrations after each answer, a long first attempt per input), the score rose from 26.81 to 44.03, the level the ARC Prize Foundation measured for the base model without a time limit (42.36); most of the gain came from the inference procedure. For the Qwen3.8-Flash-Next mixture-of-experts model (125B parameters, 6B active), GPU memory limited concurrency. Pruning from 512 to 384 experts per layer by router-weighted activation saliency grew the key-value cache from 0.55M to 1.39M tokens; a 296-expert list adapted with ARC routing statistics, keeping experts for program tokens, plus an FP8 indexer cache, reached 1.96M. With a tool that checks programs, the model scored 56.67, our best result.
Figures & tables
| Family | Stages | Programs | Candidates | Admitted | Attempted | Valid tasks | Released |
|---|---|---|---|---|---|---|---|
| mask pipeline | select mask 1–2 post ops render | 88.4M | 24,000 | 17,132 | 6,975 | 3,206 (46%) | 2,400 |
| two objects | two objects align boolean relation | 104,040 | 14,400 | 6,512 | 3,257 | 2,484 (76%) | 1,800 |
| multiple objects | group selector aggregate | 43,050 | 12,800 | 3,684 | 2,259 | 2,110 (93%) | 1,600 |
| panel boolean | two panels align truth table | 50,400 | 9,600 | 4,076 | 1,538 | 1,538 (100%) | 1,200 |
| template symmetry | repair one defect of a symmetry | 12,960 | 9,600 | 2,311 | 1,709 | 1,500 (88%) | 1,200 |
| path, ray, flood | rays, shortest paths, floods | 9,360 | 8,000 | 2,102 | 1,613 | 1,307 (81%) | 1,000 |
| Set | Tasks | Input cells | Same shape | Colours/input | Tokens |
| (median) | (mean) | (median / max) | |||
| v1 rules | 15,200 | 810 | 21.8% | 6 | 5,994 / 11,076 |
| mask pipeline | 18,240 | 810 | 22.6% | 6 | 6,175 / 11,076 |
| two objects | 13,673 | 810 | 0% | 6 | 5,882 / 6,707 |
| multiple objects | 12,160 | 810 | 0% | 6 | 5,790 / 6,684 |
| panel boolean | 9,120 | 308 | 0% | 6 | 2,647 / 3,020 |
| Family (rule) | Rule | Algorithms |
| v1 select–mask–render (u2k_0053) | Select the object with the smallest anti-diagonal span, shift it one cell up, and draw the object above its shifted copy with a one-cell separator. | components, selector metric, shift, panel rendering |
| mask pipeline (u12k_03977) | Select the object with the smallest anti-diagonal span, take the cells that one step of dilation adds around it, keep those in exactly one of this halo and the object’s bounding box, keep the cells with exactly one occupied neighbour, and crop. | dilation, symmetric difference, endpoint detection |
| two objects (u12k_11778) | Take the object with the largest vertical imbalance and the topmost object, align their centres, and keep the cells of the second that the first does not cover. | two selectors, centre alignment, set difference |
| multiple objects (u12k_05969) | Take the three topmost objects, align their upper-right corners, and keep the cells that all three cover. | top- selection, alignment, per-cell consensus |
| panel boolean (u12k_07934) | Read the two framed panels, flip both top to bottom, align their lower-right corners, and mark the cells occupied in both. | frame detection, reflection, 4-bit truth table |
| template symmetry (u12k_09489) | Inside a frame, find the one cell whose change from the object to the auxiliary colour makes a cross-shaped region symmetric under a top-to-bottom reflection, repair it, and output its symmetry orbit. | symmetry orbits, unique single-cell repair |
| Generator | Source of rules | Checks on rules and tasks | Distinct rules | Identifiable |
|---|---|---|---|---|
| re-arc | one hand-written generator per ARC-AGI-1 training task | examples checked by a per-task verifier | by design | not reported |
| BARC | generators written by a language model from seed programs | execution of the generated code | not reported | not reported |
| NVARC | puzzles and code written by a language model | execution of the code | not reported | not reported |
| Ours | points of a typed grammar, deterministic search | signatures on 220 grid probes and 352 typed slots, raw and dihedral, Hamming distance (two v1 pairs at 2); up to 8 shortlisted near rules and one-node variants refuted on pairs; 12 shortcut solvers fail; exact oracle replay | signatures | finite set |
| Statistic | Synthetic | ARC-AGI-2 training | ARC-AGI-2 eval. |
| (91,193 tasks) | (1,000 tasks) | (120 tasks) | |
| Pairs per task (mean) | 6 | 4.31 | 4.42 |
| Output has the input’s shape | 10.2% | 65.9% | 69.8% |
| Output smaller (neither side longer) | 83.5% | 24.9% | 23.4% |
| Output larger (neither side shorter) | 0.0% | 8.6% | 3.4% |
| Other shape changes | 6.3% | 0.7% | 3.4% |
| System | Draws | Mean SD | Best | |
|---|---|---|---|---|
| Base model (three runs of the released pipeline, one in our runtime) | 4 | 28.96 0.66 | 29.86 | – |
| frozen base sampled without test-time training or search, Qwen3.8-27B selects | 1 | 10.42 | 10.42 | |
| ckpt-34000 or a checkpoint of the same run, continued on 1,920 real tasks | 22 | 31.72 1.52 | 34.44 | |
| + 25% FORGE50 synthetic episodes (one model) | 1 | 29.31 | 29.31 | |
| FORGE50 mixture with 86% synthetic episodes (one model) | 1 | 28.47 | 28.47 | |
| Base + 1,920 real + 95,993 rule-corpus tasks (one model) | 1 | 28.61 | 28.61 |
| Model | Init | Real | Synthetic | Views | Rank | Steps | Hardware, time |
|---|---|---|---|---|---|---|---|
| ckpt-34000 | base | 1,920 | – | 16 | 256 | 34,000 | 1 L4, 10.0 h |
| FORGE50 continuation | ckpt-34000 | 1,920 | FORGE50, 25% of episodes | 16 | 256 | 45,000 | rented GPU |
| mixed6000 | base | 1,090 | 4,910 rule corpus | 2 | 64 | 1,500 | RTX 3090 Ti |
| shape37090 | mixed6000 | 1,090 | 36,000 shape-balanced | 2 | 64 | 9,273 | RTX 3090 Ti, 47.8 h |
| original7500 | base | 1,920 | 3,600 shape + 1,980 rule | 16 | 256 | 120,000 | RTX 5090 |
| all-train | base | 1,120 | 95,993 rule corpus | 1 | 256 | 12,140 | RTX 5090 |
| Run | 16K | 16–24K | 24–32K | 32–48K | 48–56K | 56–64K | forced at cap |
|---|---|---|---|---|---|---|---|
| Base, , 344 attempts | 2/4 | 12/14 | 21/27 | 40/66 | 24/41 | 10/24 | 14/168 |
| Base, , 172 attempts | 2/2 | 9/12 | 9/12 | 25/36 | 5/11 | 4/16 | 3/83 |
| RFT v1, , 172 attempts | 2/2 | 12/14 | 7/11 | 19/33 | 7/18 | 9/16 | 7/78 |
| Set | Composition | Rows | Eval rows | Thinking tokens |
|---|---|---|---|---|
| Answer-only | synthetic + official grids, thinking off | 37,201 | 125 | 0 |
| RFT v1 | base xhigh self-traces | 1,036 (1,033) | 136 (61) | 17.08M / 12.2K / 38.0K |
| main2 | RFT v1 + second-pass traces at 88K | 1,109 (1,103) | 152 | 19.66M / 13.0K / 41.2K |
| short16k | traces of 16K tokens | 617 | 4 | 4.07M / 5.7K / 13.4K |
| v3b | 769 own traces + 1,284 explanations (1,000 synthetic) in the thinking channel | 2,053 | 0 | 25.1M |
| ft64k | 1,039 own traces + 1,602 explanations (1,584 synthetic) as answer text | 2,641 | – | 20.2M + 17.9M |
| Set | Channel of the synthetic rows | Synthetic | Corpus | Bank | Other rows | Result |
|---|---|---|---|---|---|---|
| v3b | thinking (explanations) | 1,000 | 205 | 795 | 284 official explanations, 769 self-traces | 9 ∗ |
| ft64k | answer text (explanations) | 1,584 | 1,412 | 172 | 18 official explanations, 1,039 self-traces | 43 |
| FINAL | thinking (teacher traces) | 28 | 10 | 18 | 1,796 traces of official tasks | 44 |
| All | 2,231 | 1,435 | 796 |
| Model | Offline setting | Inputs | Task | H | Semi-private setting | SP |
|---|---|---|---|---|---|---|
| Base | two 64K attempts, | 84 | 49.86 | – | two 64K attempts | 26.81 |
| Base | 88K and 64K attempts | 89 | 53.33 | – | two 88K attempts | 18.89 |
| Base | two 64K attempts, program after each | – | 54.03 | – | program in a second request | 21.39 |
| RFT v1 | one 32K attempt, grid or program | 51 | 30.69 | 10 | two 32K attempts, programs | 37.22 |
| RFT v1 | one 48K attempt, grid or program | 56 | 33.06 | 11 | 48K and 32K attempts | 37.08 |
| RFT v1 | one 64K attempt, grid or program | 62 | 39.03 | 15 | – | – |
| Model | Harness | Metric | 32K | 48K | 64K |
|---|---|---|---|---|---|
| Base FP8, | 2-request | grid | – | – | 10 / 57 |
| Base FP8, (two attempts) | 2-request | grid | – | – | 13–17 / 59–64 |
| RFT v1 | 2-request | grid | 8 / 37 | – | 13 / 63 |
| v3b | 2-request | grid | 2 / 9 | – | – |
| RFT v1 | 1-request | grid | 8 / 40 | 9 / 50 | 14 / 54 |
| RFT v1 | 1-request | two-slot | 10 / 51 | 11 / 56 | 15 / 62 |
| Engine, layout and cache | Cache tokens | Running | Tokens/s |
|---|---|---|---|
| stock vLLM 0.30, TP4, BF16 cache | 94,001 | 4 | 164 (whole run) |
| Merlin 2.5.2, TP4, BF16 cache | 96,743 | – | 137 (steady) |
| Merlin 2.5.2, TP4, FP8 cache | 170,393 | – | 136–168 (steady) |
| Merlin 2.5.2, PP4, FP8 cache | 255,273 | – | 136 (steady) |
| Merlin 2.5.2, TP2 PP2, FP8 cache | 420,026 | 12.6 | 249–256 (steady) |
| + four draft tokens, no prefix caching, 96K context | 466,151 | 16.7 | 301 (first 150 windows) |
| Set and setting | Metric | Qwen3.8-Flash-Next | Qwen3.8-27B |
|---|---|---|---|
| Public evaluation, 172 inputs, two 64K attempts | task score | 49.31 | 49.86 |
| inputs solved | 80 | 84 | |
| completion tokens per attempt | 55,057 | 53,756 | |
| Dev panel, 48K, two seeds | attempts correct (of 164) | 29 | 29 |
| Dev panel, 96K, one seed | inputs solved (of 82) | 30 | 13 |
| thinking tokens per attempt | 68,541 | 71,592 |
| List | Experts | Checkpoint | Weights/GPU | Pin | Cache tokens | Tokens/s | Dev |
|---|---|---|---|---|---|---|---|
| per layer | (GiB) | (GiB) | (GiB) | (150 / full) | |||
| unpruned | 512 | 115.22 | 16.9 / 17.0 | 2.3 | 547,542 | 342 / – | 78 |
| REAP-448 | 448 | – | 15.1 / 15.5 | – | – | – | 26 a |
| REAP-384 | 384 | 100.38 | 13.3 / 13.7 | 5.8 | 1,391,054 | 521 / 433 | 87 |
| CORE-320 | 320 | 92.96 | – | 6.7 | 1,605,632 | 561 / 463 | 84 |
| CORE-300 | 300 | – | – | – | – | – | 77 |
| Quantity | 512 experts | Pruned |
|---|---|---|
| Cache tokens, stock vLLM / Merlin 3 | 94,001 / 547,542 | 1,957,095 (c8) |
| Running requests on the probe | 4 / 18.9 | 56 |
| Tokens per second, first 150 windows (Merlin 3) | 342 | 521 (REAP-384), 566 (s288p) |
| Tokens per second, full 6,000 s probe | – | 433 (REAP-384), 492 (s288p) |
| Thinking tokens per attempt, offline, 96K cap | 69.3K | 68.5K (REAP-384) |
| Thinking tokens per twelve-hour preview (120 tasks) | – | 17.7M direct, 15.6M agent |
| Experts | Configuration (change from the previous row) | SP |
|---|---|---|
| 512 | stock vLLM, effort low , 40K | 8.61 |
| 512 | same, attempts of 24K and 40K | 6.11 |
| 512 | Merlin 3, xhigh , 96K / 48K, client timeout of 7,200 s | 25.00 |
| 384 | REAP-384 | 32.64 |
| 288 | s288p, timeout removed | 44.17 |
| 288 | 64K / 48K, second attempts ordered by confidence, FP8 indexer cache, | 40.97 |
| Training or calibration data | Metric | Result | Control |
| NVARC 4B grid model ( Table 6 ); control: the released model unless stated | |||
| 1,920 real tasks, continued fine-tuning | SP | 31.72 1.52 (22) | 28.96 0.66 (4) |
| then 25% FORGE50 episodes | SP | 29.31 (1) | parent: 31.72 1.52 (22) |
| 86% FORGE50 episodes, 12% real and 2% hand-made tasks | SP | 28.47 (1) | 28.96 0.66 (4) |
| 1,920 real and 95,993 corpus tasks | SP | 28.61 (1) | 28.96 0.66 (4) |
| 1,920 real and 5,580 synthetic tasks | SP | 28.06 (1) | 28.96 0.66 (4) |
| Family | Runs | Mean | SD | Median | Best |
|---|---|---|---|---|---|
| NVARC 4B pipeline with the base checkpoint | 7 | 26.59 | 3.46 | 28.47 | 29.86 |
| the released pipeline, unchanged | 3 | 29.12 | 0.70 | 29.03 | 29.86 |
| NVARC 4B pipeline with our checkpoints | 136 | 29.57 | 2.77 | 29.44 | 34.86 |
| Qwen3.8-27B, without our fine-tuning | 6 | 22.66 | 3.51 | 22.09 | 26.81 |
| Qwen3.8-27B, fine-tuned by us | 11 | 32.35 | 6.90 | 33.61 | 44.03 |
| NVARC 4B and Qwen3.8-27B in one run | 3 | 27.41 | 15.35 | 31.53 | 40.28 |
| Model | Configuration (change from the previous row) | SP |
| answer-only fine-tune | thinking off, 8 dihedral views, vote | 2.08 |
| base | thinking at low effort, end-of-turn masked | 9.86 |
| base | xhigh , 64K cap on both attempts | 26.81 |
| base | + program in a second request, , reordered second attempts | 21.39 |
| base | 88K cap on both attempts | 18.89 |
| RFT v1 | 32K cap on both attempts, , two requests per attempt | 28.19 |
Appendix figures & tables1 asset
Supplementary material from the paper’s appendix.
Appendix
| List (experts) | Construction | Measured result | Why rejected |
|---|---|---|---|
| REAP-448 (448) | public REAP list | dev 26 of 82 (one seed) against 30 unpruned; CUDA-graph capture out of memory at a 4.0 GiB cache pin | frees less memory, not more accurate |
| REAP-288 (288) | public REAP list | dev 66 against 78 unpruned and 87 REAP-384 | accuracy |
| ARC-288 (288) | top 288 by ARC routing frequency | dev 58, lowest of all lists (23 gained, 43 lost against unpruned, ); 85% natural completions at 62.6K thinking tokens | accuracy |
| CORE-320 (320) | REAP-288 + 32 experts by | dev 84; fresh panel points against REAP-384, lower bound | failed the adoption rule |
| CORE-300 (300) | REAP-288 + 12 experts by | dev 77 | accuracy |
| c336o (336) | CORE-320 + the 16 highest- experts that REAP-384 drops | dev 56 against 60 for REAP-384 (two seeds, 164); throughput | speed gain below 5% |
ARC-AGI
ARC-AGI (Abstraction and Reasoning Corpus for Artificial General Intelligence) benchmarks the ability to infer and apply abstract rules from sparse examples.
See all 26 papers