| name | scale-selective-test-time |
| title | SCALE: Selective Resource Allocation for Mathematical Test-Time Scaling |
| version | 0.0.2 |
| engine | skillxiv-v0.0.2-claude-opus-4.6 |
| license | MIT |
| url | https://arxiv.org/abs/2512.00466 |
| keywords | ["test-time-scaling","resource-allocation","mathematical-reasoning","system-1-2","adaptive-compute"] |
| description | Decomposes math problems into sequential sub-problems, assesses difficulty, and allocates simple ones to fast System 1 reasoning while directing complex ones to deliberate System 2. Save 33-53% tokens while improving accuracy by up to 13.75 points on AIME. |
Summary
SCALE addresses inefficient resource allocation in test-time scaling by implementing selective resource allocation based on sub-problem difficulty. Rather than uniformly distributing computational resources across all steps, the approach decomposes mathematical problems into sequential sub-problems, assesses difficulty, and dynamically assigns simple problems to fast processing while directing complex ones to deliberate reasoning.
Core Technique
Problem Decomposition: Break mathematical problems into smaller steps or sub-problems. For math:
- Step 1: Parse and identify key quantities
- Step 2: Determine solution strategy
- Step 3: Execute calculations
- Step 4: Verify answer
Difficulty Assessment: For each sub-problem, estimate complexity via:
- Token count of problem statement
- Number of dependencies on previous steps
- Complexity of mathematical operations involved
- Uncertainty in model confidence
Dual-System Allocation:
- System 1 (Fast): Single-shot generation with minimal reasoning, optimal for straightforward calculations
- System 2 (Deliberate): Multiple sampling, majority voting, extended reasoning for complex steps
Implementation
Difficulty scorer: Train a lightweight classifier:
difficulty = mlp(encode(subproblem))
Dynamic allocation:
if difficulty < 0.3:
answer = model.generate(subproblem, max_tokens=50)
else:
answers = [model.generate(subproblem, max_tokens=500) for _ in range(5)]
answer = majority_vote(answers)
Token counting: Track token usage:
total_tokens = sum(difficulty_threshold * tokens_system1 + (1 - difficulty_threshold) * tokens_system2)