{
  "id": 692904,
  "title": "Pushing the Limits of General-Purpose LLMs with a Judge-based TIR Loop",
  "content": "<h2>Abstract</h2>\n<p>This paper investigates the viability of deploying general-purpose, open-weight Large Language Models (LLMs) in heavily constrained, offline inference environments to solve olympiad-level mathematical problems. Operating under the strict hardware limitations of a single NVIDIA H100 GPU and a 5-hour time budget for 50 problems, we introduce a Python-driven, Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline. Rather than relying on specialized fine-tuning, this study optimizes dynamic resource allocation, context management, and hyperparameter targeting using the Qwen 3.5 35B-A3B Mixture-of-Experts (MoE) architecture. We evaluate the efficacy of zero-shot general-purpose models acting as Process Reward Models (PRMs) and demonstrate the necessity of a ranking-based evaluation layer. Achieving a public score of 14/50 on the AI Mathematical Olympiad (AIMO) Progress Prize 3, our results highlight both the emerging capabilities of generalized reasoning models and their persistent vulnerabilities to logical hallucination when operating without domain-specific mathematical post-training.</p>\n<hr>\n<h2>1. Introduction</h2>\n<p>The pursuit of artificial mathematical reasoning has recently bifurcated into two primary methodologies: domain-specific fine-tuning on highly curated mathematical corpora—exemplified by systems like AlphaGeometry <strong>(Trinh et al., 2024)</strong>—and the deployment of massive, generalized reasoning models (such as OpenAI's o1 paradigm). Faced with limited computational resources and a restricted timeline, this study opted to test the upper bounds of the latter approach. Instead of training custom weights or employing proprietary evaluation models, we utilized the AIMO Progress Prize 3 as a platform to test how far general-purpose LLMs can advance on a demanding set of problems using purely inference-time orchestration.</p>\n<p>Our findings demonstrate that while sophisticated inference-time compute scaling and Tool-Integrated Reasoning (TIR) can yield competitive baselines, the concept of an unmodified, general-purpose model reliably excelling at olympiad-level mathematics without specialized post-training remains, at this point, a summer night's dream.</p>\n<h2>2. Model Selection and Hardware Constraints</h2>\n<p>The foundational requirement of our architecture was an offline pipeline capable of benchmarking general-purpose models without requiring specialized evaluators or math-specific weights. Early iterations of this approach mandated a pivot to Alibaba's Qwen MoE family, specifically transitioning from the FP8 quantized variant of Qwen3-30B-A3B to the newer Qwen3.5-35B-A3B (Qwen Team, 2024; Qwen Team, 2025).</p>\n<p>The model's weights ($\\approx 30$ GB) fit comfortably on the Kaggle-provided NVIDIA H100 GPU, allocating sufficient space for the KV Cache required by long-context reasoning chains. The deployment relied on <code>vLLM</code> (Kwon et al., 2023), capitalizing on the model's seamless integration of a \"thinking\" mode toggle and its top-tier ability to adhere to strict formatting constraints without excessive prompt engineering.</p>\n<h2>3. Architecture: Multi-Turn Tool-Integrated Reasoning (TIR)</h2>\n<p>The core architecture operates as a Tool-Integrated Reasoning loop driven entirely by Python, building upon recent successes in Program-Aided Language models <strong>(Gao et al., 2023; Gou et al., 2023)</strong>. The reliance on Python is predicated on the observation that general-purpose models are heavily fine-tuned for Software Engineering (SE) tasks, rendering them significantly more capable of producing accurate, executable Python code than symbolic representations like Lean.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F9cd4f4a65dae84459a93b1846355eaea%2FFlowChart.png?generation=1776521614005070&amp;alt=media\" alt=\"\">\n<em>Figure 1: The Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline, highlighting the decoupling of the Planner (code generation) and the Judge (ranking evaluation).</em></p>\n<h3>3.1 The Planner</h3>\n<p>The \"heartbeat\" of the loop is the <strong>Planner</strong>. The system prompts force the Planner to frame problems as sequential computational steps toward a solution. Instead of attempting a one-shot mathematical proof—which requires managing massive internal reasoning chains—the model focuses on identifying the next computational step to test a specific hypothesis.</p>\n<p><strong>Constraints &amp; Fitness Checks:</strong></p>\n<ul>\n<li><p><strong>Prohibited Methods:</strong> Probabilistic search space traversals (e.g., Monte Carlo simulations) and inefficient libraries (e.g., <code>SciPy</code> for symbolic geometry) are strictly prohibited, as they rarely yield the exact integers required by the AIMO format.</p></li>\n<li><p>If a candidate script employs prohibited methods, an intricate validation loop performs rigorous fitness checks, and the candidate is immediately discarded.</p></li>\n</ul>\n<p>Whether a candidate ultimately outputs a solution is decided by a majority vote, leveraging the principles of self-consistency <strong>(Wang et al., 2022)</strong> to filter out anomalous logical errors. The model outputs a JSON payload containing a boolean field indicating if the candidate script is intended to be a final solution. If a majority flags a solution, it is evaluated, submitted, and passed through strict regex checks to ensure it is a valid integer modulo $10^5$.</p>\n<h3>3.2 The Cousin Roles: Classifier and Final Verdict</h3>\n<p>Two auxiliary roles interact with the problem utilizing the model's reasoning capabilities:</p>\n<ol>\n<li><p><strong>The Classifier:</strong> Analyzes the raw problem and outputs a structured rephrasing, primarily consisting of explicit tasks and constraints. This format aligns optimally with the Planner's computational disposition. <em>(Note: The nomenclature \"Classifier\" is a vestige of an earlier iteration intended to classify problem difficulty for dynamic step allocation, an approach abandoned due to model inconsistency).</em></p></li>\n<li><p><strong>The Final Verdict:</strong> Invoked only when the orchestration loop reaches its absolute limit (due to time constraints or max step exhaustion). Utilizing all evidence gathered in the context window, it synthesizes a final, educated approximation of the integer solution.</p></li>\n</ol>\n<h3>3.3 The Judge: Evaluating Reasoning Paths</h3>\n<p>State-of-the-art agentic mathematical pipelines rely heavily on evaluation models, specifically Outcome Reward Models (ORMs) and Process Reward Models (PRMs). Initial attempts to prompt our general-purpose Judge to mimic a strict PRM demonstrated that unmodified LLMs struggle to handle this gracefully. The PRM setup tested was heavily adapted from the step-wise evaluation format introduced by Lightman et al. The prompt instructed the LLM to read the generated reasoning (the content inside the <code>&lt;think&gt;</code>} blocks, which was computationally expensive to process) and assign a token classification of <code>VALID</code>, <code>INVALID</code>, or <code>NEUTRAL</code> to each logical step, calculating a final confidence score based on the ratio of valid steps.</p>\n<p>The data point that forced a pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as <code>VALID</code>, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. Furthermore, as demonstrated in existing research, such evaluators work optimally with specifically fine-tuned models, which fundamentally contradicted our objective of evaluating general-purpose models. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. It is important to clarify that while the Judge internally evaluates a ``ranking'' of the reasoning traces, the extraction layer strictly forces a winner-takes-all selection. Confining the final output to a single optimal candidate, rather than a complex ordered list, significantly mitigated the output-space instability typically caused by high inference temperatures.</p>\n<p>Executing all candidates prior to the Judge's evaluation was tested but ultimately scrapped. The general-purpose model exhibited a strong bias, clinging to any candidate that produced a single, clean integer, even during early exploratory steps where the objective was search-space mapping. Furthermore, running a multitude of parallel Python sandboxes severely degraded the computational budget.</p>\n<h3>3.4 The Execution Loop and Syntax Reviewer</h3>\n<p>The Execute Loop runs the selected candidate and returns the standard output. Extensive error handling is implemented to ensure the model receives full tracebacks explaining execution failures.</p>\n<p>To preserve compute, a fast <strong>Syntax Reviewer</strong> agent was introduced. Before a candidate is fully scrapped, the Reviewer attempts to resolve trivial syntactical errors (e.g., indentation errors, missing imports). This reviewer consistently rescued highly promising mathematical algorithms during reference set evaluations.</p>\n<h2>4. Dynamic Resource Allocation</h2>\n<p>A critical challenge in the AIMO environment is managing the strict 18,000-second offline execution limit. To prevent infinite loops or geometrically expanding search spaces on a single problem, a custom <code>DynamicTimeController</code> was engineered to regulate the temporal and operational bounds of the TIR loop.</p>\n<p>Let $T_{total}$ be the total available environment time, $N$ be the total number of problems, and $T_{safe}$ be a rigid teardown safeguard (230 seconds) reserved for final CSV generation and <code>vLLM</code> spin-down. Before attempting the $i$-th problem, the remaining budget $B_i$ is calculated as:</p>\n<p>$$B_i = T_{total} - T_{safe} - \\sum_{j=1}^{i-1} t_j$$</p>\n<p>where $t_j$ is the time spent on previous problems. Rather than enforcing a static limit, the budgeter permits the agent to utilize surplus time saved from earlier, easier problems. For the current problem, we define a dynamic temporal ceiling, $T_{max, i}$, controlled by a relaxation factor $\\gamma$ (where $\\gamma \\approx 1.5$):</p>\n<p>$$T_{max, i} = \\min \\left( \\gamma \\cdot \\frac{B_i}{N - i + 1}, \\;\\; B_i \\right)$$</p>\n<p>Within this ceiling, reasoning depth is regulated by a maximum step count ($S_{max} = 5$). Let $t_{infer}$ be the variable inference time and $t_{exec}$ be the sandbox execution time. We enforce:</p>\n<p>$$\\sum_{k=1}^{S} (t_{infer, k} + t_{exec, k}) \\leq T_{max, i}$$</p>\n<p>To guarantee progression, the Python <code>subprocess</code> sandbox is rigidly capped at 15 seconds per execution. If $\\max(t_{exec, k})$ reaches 15, a <code>TimeoutError</code> is piped into the LLM context, punishing inefficient <code>while</code> loops and forcing the model to re-evaluate its logic.</p>\n<h2>5. Experimental Setup and Hyperparameter Optimization</h2>\n<p>Due to the absence of weight fine-tuning, the \"training\" equivalent in this methodology was the rigorous optimization of generation parameters and VRAM allocation on the Kaggle H100 GPU.</p>\n<ul>\n<li><p><strong>VRAM and Context Constraints:</strong> The <code>vLLM</code> engine was instantiated with <code>enforce_eager=True</code> to disable CUDA graph capture, successfully preventing Out-of-Memory (OOM) exceptions when managing a 32,768 native context window alongside <code>max_num_seqs=16</code>. The KV Cache was quantized to FP8, doubling the functional context capacity.</p></li>\n<li><p><strong>Context Pruning:</strong> To prevent overflowing the native window when processing tracebacks, the history limit was capped at 15,000 tokens, and \\texttt{stdout} limits were aggressively truncated. Crucially, to prevent catastrophic forgetting and ``loopy'' context degradation, the heavy \\texttt{} reasoning traces were systematically stripped from memory after each step. The pipeline relied on the Summarizer role to compress the global state of the problem, ensuring the model retained its trajectory without drowning in its own previous reasoning loops.</p></li>\n<li><p><strong>Decoding Strategies:</strong> Following Qwen 3 guidelines, greedy decoding was abandoned for reasoning roles. The Planner utilized $T=0.6$, while analytical roles (Judge, Summarizer) utilized cooler temperatures ($T=0.3$) to maintain determinism. Crucially, <code>presence_penalty</code> was explicitly set to $0.0$ across all agents to prevent the fatal hallucination of JSON structures and mathematical syntax.</p></li>\n</ul>\n<h2>6. Results and Discussion</h2>\n<p>The pipeline achieved a public score of 14/50. While modest compared to fine-tuned or heavily scaled proprietary models, this score establishes a robust baseline for inference-only, general-purpose MoE models operating under severe zero-shot constraints.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F01f0e0c9c2bf95a49d9664e13dbfab82%2FAIMEBenchPlotsQwen3.5.png?generation=1776521574372147&amp;alt=media\" alt=\"\">\n<em>Figure 2: Execution time and cumulative accuracy progression for the Qwen 3.5 35B-A3B agent across the offline 30-problem AIME benchmark, demonstrating the Dynamic Time Controller's budget adherence.</em>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F02beb69a56ad8eb40eaf9c4928b99e6b%2FAIMEBenchPlotsQwen3.png?generation=1776521596014436&amp;alt=media\" alt=\"\">\n<em>Figure 3: Comparative performance of the Qwen 3 30B-A3B agent under identical hyperparameter and time-budget constraints. (Note the variance in generation stability compared to the 3.5 architecture).</em></p>\n<p>A comparison of Figures 2 and 3 highlights a significant discrepancy in execution time and budget adherence. This variance stems from a combination of the dynamic budget logic, step counts, and the underlying model architectures. During early testing, hard-capping the time per problem often starved earlier problems of setup time. To counter this, the Time Controller allowed early problems to ``borrow'' compute budget against the global 5-hour limit, operating on the premise that a capable model would converge quickly and not exhaust this surplus. </p>\n<p>Because Qwen3 struggled more with initial logical paths, it failed to converge to a solution as fast as its newer sibling. Consequently, Qwen3 weaponized the ``borrowed'' early time against itself by exhausting its maximum allowed reasoning steps on earlier problems, leading to the late-stage timeout shown in the benchmark. In contrast, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing, executing the loops faster and with fewer errors.</p>\n<p>A genuine limitation of this ablation study is the sequential problem ordering used in the AIME benchmark. Due to strict compute limitations and the impending revocation of Kaggle H100 access at the competition's deadline, the benchmark was hastily executed in its default sequential order, which inherently ramps up in difficulty (1-15, 16-30). This default difficulty ramp interacted poorly with the ``borrowing'' mechanism. Because early problems were easier, Qwen3.5 solved them quickly, whereas Qwen3 struggled significantly from the third problem onwards, exhausting its time before ever encountering the hardest problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases, an oversight that must be addressed in future methodological iterations.</p>\n<h2>7. Reproducability</h2>\n<p>To ensure full reproducibility of the inference pipeline and benchmarking results, the complete\nsource code, vLLM configurations, and environment setups are publicly available on Kaggle.</p>\n<p><em>Note on Model Access and Configuration:</em> While the orchestration logic and notebooks are\nfully public, the specific Kaggle dataset containing the model weights used for this submission\nremains private. However, the pipeline is designed to be highly modular. Researchers can\nseamlessly plug in their own model paths and adjust all core vLLM and pipeline hyperparameters\n(e.g., maximum reasoning steps, temperature, and context limits) by simply modifying the\nconfiguration variables located in the third cell of the notebooks.</p>\n<ul>\n<li>Inference Submission Pipeline: <a href=\"https://www.kaggle.com/code/christoslazaridis/\" target=\"_blank\">https://www.kaggle.com/code/christoslazaridis/</a>\naimo3-submission</li>\n<li>Offline Benchmarking Setup: <a href=\"https://www.kaggle.com/code/christoslazaridis/\" target=\"_blank\">https://www.kaggle.com/code/christoslazaridis/</a>\naimo3-benchmarkin</li>\n</ul>\n<h2>8. Conclusion</h2>\n<p>This study demonstrates that advanced inference orchestration—specifically through dynamic time budgeting, rigorous tool integration, and specialized agent routing—can successfully extract competitive mathematical reasoning capabilities from general-purpose LLMs. However, the persistent reliance on logical hallucinations underscores a critical barrier. Until general-purpose models develop innate, rigorous process-reward architectures natively, achieving Olympiad-level mastery without domain-specific post-training remains a summer night's dream.</p>\n<p>Another conclusion that I reached after reading through some of the top write-ups is how important parameter count is when it comes to reducing hallucinations and producing more solid reasoning, which seems trivial knowledge, however, I wrongfully believed that a 35B model that has not been heavily quantized would be less likely to hallucinate, which was a lapse in judgment, evident by the leaderboard, and an oversight I should probably have covered. </p>\n<p>Early on, I had tried a heavier model, the results of them I sadly do not posses since it was very early and I hadn't documented them overall, I saw however significantly slower reasoning to the point I could barely do any scaffolding around it, and a big reason why I chose to stay around 30B and in particular go with MoE architectures was that I wanted fast and computationally cheap reasoning, to push a heavier context window and more retries/candidates, since I didn't find a model that I could trust. Furthermore, most of the fine-tuned models from progress prize 2 were 7B models, adding to my conviction that overall ended up not being correct or at least not adapted to the latest SOTA models, and in particular one that shaped the public leaderboard as I was conducting my own experiments.</p>\n<p>That model was GPT-OSS-120B which seemed to have very promising out of the box results, making up for it's computational cost and increased quantization in raw reasoning performance . I lack the proper compute to thoroughly test my scaffold on it, since we no longer have access to H100 from the competition, however, I can safely assume my results would have drastically improved, thus my premise for choosing a 35B model was all in all proven either false, or at the very least obsolete.</p>\n<hr>\n<h2>References</h2>\n<ul>\n<li><p>Frieder, S., Bealing, S., Vonderlind, P., Li, S., Nikolaiev, A., Smith, G. C., Buzzard, K., Gowers, T., Liu, P. J., Loh, P.-S., Mackey, L., de Moura, L., Roberts, D., Sculley, D., Tao, T., Balduzzi, D., Coyle, S., Gerko, A., Holbrook, R., Howard, A., &amp; XTX Markets. (2025). AI Mathematical Olympiad - Progress Prize 3. Kaggle. <a href=\"https://kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3\" target=\"_blank\">https://kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3</a></p></li>\n<li><p>Gao, L., Maman, A., Banerjee, S., Goswami, V., Kamalloo, E., Mackey, L., &amp; Aggarwal, G. (2023). PAL: Program-Aided Language Models. In Proceedings of the 40th International Conference on Machine Learning (ICML).</p></li>\n<li><p>Gou, Z., Shao, Z., Gong, Y., Yang, Y., Huang, M., Duan, N., Chen, W., et al. (2023). ToRA: A Tool-Integrated Reasoning Agent for Mathematical Problem Solving. In Proceedings of the International Conference on Learning Representations (ICLR) 2024. arXiv preprint arXiv:2309.17452.</p></li>\n<li><p>Kwon, W., Li, Z., Zhuang, S., Sheng, Y., Zheng, L., Yu, C. H., Gonzalez, J. E., Zhang, H., &amp; Stoica, I. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. In Proceedings of the 29th Symposium on Operating Systems Principles (SOSP '23).</p></li>\n<li><p>Lightman, H., Kosaraju, V., Burda, Y., Edwards, H., Baker, B., Lee, T., Leike, J., Sutskever, I., et al. (2023). Let's Verify Step by Step. arXiv preprint arXiv:2305.20050.</p></li>\n<li><p>OpenAI. (2024). Learning to Reason with LLMs. OpenAI Research. <a href=\"https://openai.com/index/learning-to-reason-with-llms/\" target=\"_blank\">https://openai.com/index/learning-to-reason-with-llms/</a></p></li>\n<li><p>OpenAI. (2025). Introducing GPT-OSS. OpenAI Research.. <a href=\"https://openai.com/index/introducing-gpt-oss/\" target=\"_blank\">https://openai.com/index/introducing-gpt-oss/</a></p></li>\n<li><p>Qwen Team. (2024). Qwen2.5 Technical Report. arXiv preprint arXiv:2412.15115.</p></li>\n<li><p>Qwen Team. (2025). Qwen3 Technical Report. arXiv preprint arXiv:2505.09388.</p></li>\n<li><p>Trinh, T. H., Wu, Y., Le, Q. V., He, H., &amp; Luong, T. (2024). Solving olympiad geometry without human demonstrations. Nature, 625(7995), 476–482.</p></li>\n<li><p>Wang, X., Wei, J., Schuurmans, D., Le, Q., Chi, E., Narang, S., Chowdhery, A., &amp; Zhou, D. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. In Proceedings of the International Conference on Learning Representations (ICLR) 2023. arXiv preprint arXiv:2203.11171.</p></li>\n</ul>",
  "comments": [
    {
      "id": 3457914,
      "author_name": "Christos Lazaridis",
      "author_url": "",
      "post_date": "2026-05-14T15:53:47.780000",
      "content": "<p>I took the opportunity of the Rebuttal phase to make a few targeted updates to my write-up. Following the questions from the reviewers <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a> <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> , I ended up making the following edits eligible for the rebuttal phase of the competition:</p>\n<ul>\n<li><p>Expanded Conclusion (Model Selection Post-Mortem)</p>\n<ul>\n<li><p>What was added: 3 paragraphs in the Conclusion discussing the GPT-OSS 120B meta and the quantization vs. parameter count trade-off.</p></li>\n<li><p>When: At the opening of the rebuttal phase (prior to reviewer questions).</p></li>\n<li><p>What it addresses: Acts as a self-reflection acknowledging that my initial premise regarding a 35B model hallucinating less than a heavily quantized 120B model was rendered obsolete by the final leaderboard results.</p></li></ul></li>\n<li><p>Expanded Section 3.3 (The Judge &amp; PRM Pivot)</p>\n<ul>\n<li><p>What was added: Detailed the specific PRM prompt used (adapting Lightman et al., classifying  blocks) and clarified that the ranking mechanism uses a \"winner-takes-all\" extraction rather than outputting a volatile list.</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Addresses reviewer questions regarding the exact PRM methodology, the LLM \"confirmation bias\" flaw, and concerns about ranking instability at high inference temperatures.</p></li></ul></li>\n<li><p>New Subsection in Section 6 (Ablation Limitations &amp; Budget Overshoots)</p>\n<ul>\n<li><p>What was added: A dedicated subsection titled \"Ablation Study Limitations and Time-Budget Overshoots\".</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Directly answers why Qwen3 weaponized the \"borrowed\" time budget compared to Qwen3.5 (highlighting the Gated DeltaNet efficiency), and acknowledges the sequential AIME difficulty ramp as a genuine limitation of the ablation study.</p></li></ul></li>\n<li><p>Updated Section 5 (Catastrophic Forgetting &amp; Context)</p>\n<ul>\n<li><p>What was added: Clarified the Context Pruning bullet point to explicitly state that  blocks are systematically stripped from memory to prevent context degradation.</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Resolves reviewer questions regarding how the pipeline prevents catastrophic forgetting and \"loopy\" behavior within the 32k character limit.</p></li></ul></li>\n</ul>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3457838,
      "author_name": "Philip Vonderlind",
      "author_url": "",
      "post_date": "2026-05-14T12:51:52.933000",
      "content": "<p>Adding to the comments by <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> below, I have a few additional questions:</p>\n<ol>\n<li><p><strong>Qwen</strong>: In your submission, you write that “early iterations of this approach mandated a pivot to Alibaba's” model. From what I have seen, most other competitors concluded that <code>gpt-oss-120b</code> was the stronger choice under the available hardware budget. What motivated your decision to use a less common model for your submission? Did you find any evidence that supported this choice?</p></li>\n<li><p><strong>Judge Mechanism</strong>: Unlike many other approaches, your judge ranks the generated answers rather than selecting a single final answer directly. This seems like a more difficult task, since comparing subtle differences between multiple answers or reasoning traces is not necessarily straightforward. Did you run any experiments to check whether the produced rankings are stable across multiple runs, given that inference temperature is involved? I would expect ranking instability to have a large impact on problems where the solution attempts are highly diverse.</p></li>\n<li><p><strong>Eager Inference</strong>: Why did you choose to disable CUDA graph execution entirely? Reducing the graph size could also save memory while retaining some throughput benefits. This may also interact with your relatively high <code>N=16</code>, since larger numbers of parallel generations require more memory depending on how many sequences are active at once. It would be interesting to see how these settings affect the overall throughput of your pipeline.</p></li>\n<li><p><strong>Context Limitation and Catastrophic Forgetting</strong>: From my experience, Qwen models are particularly prone to generating very long traces. Since you truncate the trace history at 32k characters, did you observe any catastrophic forgetting of the original task or “loopy” behavior, where the model starts rediscovering previously forgotten context after earlier parts of the trace are removed?</p></li>\n</ol>",
      "votes": 0,
      "replies": [
        {
          "id": 3457882,
          "author_name": "Christos Lazaridis",
          "author_url": "",
          "post_date": "2026-05-14T14:47:52.297000",
          "content": "<p>Hi, thank you for taking the time to evaluate my work and for the thoughtful questions. Please find my clarifications below:*</p>\n<p><strong>1. Qwen Selection &amp; The 120B Meta:</strong>\nYou are completely correct regarding the leaderboard meta. My decision to use Qwen 3.5 35B over GPT-OSS-120B was driven by three primary hardware and architectural constraints early in the competition:</p>\n<ul>\n<li><p><strong>Quantization vs. Parameter Count Trade-off:</strong> I operated under the theoretical premise that a 35B model with less aggressive quantization (FP8) would hallucinate less and maintain better logical consistency than a 120B model heavily quantized to fit on the same H100. This was honestly my own conviction driven by the fact I constantly saw smaller models over-achieving in earlier AIMO competitions.</p></li>\n<li><p><strong>KV-Cache Headroom:</strong> Because my pipeline relied heavily on parallel candidate generation, I needed significant VRAM headroom for the KV-Cache. I also wanted to maintain the ability to push parallel generation AND KV-Cache much beyond what I ended up doing.</p></li>\n<li><p><strong>Native Reasoning Switch:</strong> Qwen offered a very stable native reasoning/think switch and exceptional instruction-following for Python generation out-of-the-box.</p>\n<p>As I noted in the recent \"Limitations\" edit to my write-up, that I wrote when the rebuttal phase was announced, my premise regarding the 35B vs. 120B quantization trade-off was ultimately proven obsolete by the final leaderboard, but these were the constraints that locked in my architecture early on.</p></li>\n</ul>\n<hr>\n<p><strong>2. Judge Mechanism &amp; Ranking Instability:</strong></p>\n<p>I apologize if the terminology in the write-up was ambiguous. While the Judge was prompted to \"rank\" the solutions to force a comparative analysis, it did not output a full, multi-item ranking downstream. The prompt forced an internal comparison of the reasoning traces, but the extraction layer strictly required a \"winner-takes-all\" selection of the single best candidate to proceed. By confining the Judge's final output to a single selection rather than a complex ordered list, I mitigated much of the output-space instability typically caused by high inference temperatures, though I agree that highly diverse candidate pools still introduced variance.</p>\n<hr>\n<p><strong>3. Eager Inference vs. CUDA Graphs:</strong></p>\n<p>This was a stability and initialization trade-off. For the majority of my development cycle, stable vLLM support for the newest Qwen MoE architectures was non-existent. I was relying on nightly wheels up until the final week. Because Kaggle kernels frequently took nearly 20 minutes just to spin up the pipeline and load the model weights, attempting to capture and compile optimized CUDA graphs often resulted in unpredictable OOM errors or timeouts before inference even began. Disabling CUDA graph execution entirely <code>enforce_eager=True</code> was a brute-force measure to guarantee the engine would initialize safely within the Kaggle environment, though I agree that tuning the graph size would have yielded better throughput.</p>\n<hr>\n<p><strong>4. Context Limitation &amp; Catastrophic Forgetting:</strong></p>\n<p>To prevent catastrophic forgetting within the 32k character limit, I implemented an aggressive context-pruning strategy. Instead of letting the raw context naturally truncate (which causes the \"loopy\" behavior you described), my pipeline systematically stripped out the heavy \\texttt{} reasoning traces from memory after a step was completed, heavily truncated stdout tracebacks, and relied on the Summarizer role to compress the state of the problem. This strict memory management ensured the model retained the \"global state\" of its progress without drowning in its own previous reasoning loops, while losing some of the fine details of it's CoT, which was needed given the limiations of my implementation.</p>\n<hr>\n<p>I hope my responses were adequate.\nBest Regards!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3457718,
      "author_name": "Sam Bealing",
      "author_url": "",
      "post_date": "2026-05-14T08:22:12.173000",
      "content": "<p>Hi, thank you for your submission to the Writeup Prize. <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a> and I will post some questions below that help us in assessing your submission more closely, as described in the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">updated discussion post</a>.</p>\n<ol>\n<li><strong>ORM/PRM to ranking evaluator pivot:</strong> You abandoned the PRM approach because \"unmodified LLMs struggle to handle this gracefully\" (§3.3), but don't say much about what specific PRM-style rubric or prompts you tried first. Could you share the PRM setup you tested, and what data you collected to support that the ranking-based evaluator outperformed it?</li>\n<li><strong>Time-budget overshoots on Qwen3-30B-A3B:</strong> Figure 3 shows several problems on the Qwen3-30B-A3B run taking 1000-1400s against the 360s average budget, and the system runs out of time around <code>aime_2026_II_05</code> (about 9 problems unattempted). The same hyperparameters and time budget were used as for Qwen3.5-35B-A3B in Figure 2, which mostly stayed within budget. Do you have any data on why the older model consumed so much more compute per problem (e.g. longer reasoning traces, more tool-call retries, judge-rejection loops)?</li>\n<li><strong>AIME ordering and difficulty ramp:</strong> AIME problems come in two sets of 15 in roughly increasing difficulty (1-15 and 16-30), so the time controller effectively sees two difficulty ramps from easy to hard. Do you think this could have impacted the results and if so, did you consider running the benchmark with a randomised problem order to remove this effect?</li>\n</ol>\n<p>Look forward to reading your responses on these.</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3457816,
          "author_name": "Christos Lazaridis",
          "author_url": "",
          "post_date": "2026-05-14T11:32:04.687000",
          "content": "<p>Hi, Thank you for the thorough review and the questions. Below I provide my initial response to each one of these.</p>\n<p><strong>1. ORM/PRM to ranking evaluator pivot:</strong> Unfortunately (and this was an honest mistake on my part for not keeping my earlier notebooks), I did not preserve the specific Kaggle notebook of my initial zero-shot PRM experiments once I finalized the Ranking-Based Judge architecture. However, the PRM setup I tested was heavily adapted from the step-wise evaluation format introduced in <em>\"Let's Verify Step by Step\"</em> (Lightman et al., 2023).</p>\n<p>My prompt instructed the LLM to read the generated reasoning (the content inside the <code>&lt;think&gt; &lt;/think&gt;</code> blocks, which was quite time expensive on it's own) and assign each sentence and latex block a token classification of <code>[VALID]</code>, <code>[INVALID]</code>, or <code>[NEUTRAL]</code> to each logical step, calculating a final confidence score based on the ratio of valid steps. The data point that forced me to pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as <code>[VALID]</code>, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot.</p>\n<p>In general as demonstrated in OpenAI's research, such evaluators work with specific fine-tuned models, which went against my objective of evaluating General Purpose Models</p>\n<hr>\n<p><strong>2. Time-budget overshoots on Qwen3-30B-A3B:</strong> This discrepancy comes down to a combination of my dynamic budget logic, step counts, and the underlying model architectures. During early testing, I observed that hard-capping the time per problem often starved earlier problems of the setup time they needed, leaving excessive, unusable time for later problems (since I strictly limited the maximum number of reasoning steps). To counter this, my Time Controller allowed early problems to \"borrow\" compute budget against the global 5-hour limit. This was developed on the premise that Qwen3.5 would be able to discard the unneeded time by convering to a solution and not eat through it's budget. Because Qwen3 struggled more with initial logical paths it struggled to converge to a solution as fast as it's newer sibling and ate through it's time.</p>\n<p>Consequently, Qwen3 actively consumed this \"borrowed\" early time by exhausting its maximum allowed reasoning steps for the earlier problems. Given my setup was quite lenient in letting the earlier problems borrow significant time, Qwen3 ended up eating up all of it's time before it reached the later problems. In contrast to Qwen3.5. Furthermore, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing. Qwen3.5 simply executed the loops faster and with fewer errors, whereas Qwen3 weaponized the \"borrowed\" time against itself, leading to the late-stage timeout shown in the AIME benchmark, since it used the borrowed time on easier problems.</p>\n<hr>\n<p><strong>3. AIME ordering and difficulty ramp:</strong> This is a fantastic and highly insightful observation, as this is a genuine limitation of my ablation study. Given the strict compute limitations and the fact that I was running these benchmarks using Kaggle's finite GPU hours, I hastily executed the AIME benchmark in its default sequential order to generate the ablation plots for the write-up before access to H100 was revoked. Given I was working on my submission up until hours before the deadline, I didn't have the time I wanted to run my ablation studies, so I just ran something as fast as I could in order to have something to show for my write-up.</p>\n<p>That said, I completely agree that the default difficulty ramp of AIME interacted poorly with my \"borrowing\" mechanism. Because the early problems were easier, the Qwen 3.5 was able to solve them significantly quicker, while Qwen3 struggled singificantly from the third problem onwards, which means it used up all the time without ever tackling the harder problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases. It is a limitation of my testing methodology that I will surely take into account for future work.</p>\n<hr>\n<p>I appreciate the time you took to evaluate my work,</p>\n<p>Best Regards</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3445851,
      "author_name": "Simon Frieder",
      "author_url": "",
      "post_date": "2026-04-20T15:58:23.240000",
      "content": "<p>If you want this writeup to be considered towards the Write-Up Prize, you need to make a comment here: <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703</a> </p>\n<p>You will need to follow the instructions in that comment, and link to the writeup and also provide some further links to either HuggingFace or Google Colab notebook.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3456915,
      "author_name": "",
      "author_url": "",
      "post_date": "2026-05-12T18:30:47.810000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 7,
  "messages": [
    {
      "id": 3444830,
      "postDate": "2026-04-18T14:21:14.267Z",
      "content": "<h2>Abstract</h2>\n<p>This paper investigates the viability of deploying general-purpose, open-weight Large Language Models (LLMs) in heavily constrained, offline inference environments to solve olympiad-level mathematical problems. Operating under the strict hardware limitations of a single NVIDIA H100 GPU and a 5-hour time budget for 50 problems, we introduce a Python-driven, Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline. Rather than relying on specialized fine-tuning, this study optimizes dynamic resource allocation, context management, and hyperparameter targeting using the Qwen 3.5 35B-A3B Mixture-of-Experts (MoE) architecture. We evaluate the efficacy of zero-shot general-purpose models acting as Process Reward Models (PRMs) and demonstrate the necessity of a ranking-based evaluation layer. Achieving a public score of 14/50 on the AI Mathematical Olympiad (AIMO) Progress Prize 3, our results highlight both the emerging capabilities of generalized reasoning models and their persistent vulnerabilities to logical hallucination when operating without domain-specific mathematical post-training.</p>\n<hr>\n<h2>1. Introduction</h2>\n<p>The pursuit of artificial mathematical reasoning has recently bifurcated into two primary methodologies: domain-specific fine-tuning on highly curated mathematical corpora—exemplified by systems like AlphaGeometry <strong>(Trinh et al., 2024)</strong>—and the deployment of massive, generalized reasoning models (such as OpenAI's o1 paradigm). Faced with limited computational resources and a restricted timeline, this study opted to test the upper bounds of the latter approach. Instead of training custom weights or employing proprietary evaluation models, we utilized the AIMO Progress Prize 3 as a platform to test how far general-purpose LLMs can advance on a demanding set of problems using purely inference-time orchestration.</p>\n<p>Our findings demonstrate that while sophisticated inference-time compute scaling and Tool-Integrated Reasoning (TIR) can yield competitive baselines, the concept of an unmodified, general-purpose model reliably excelling at olympiad-level mathematics without specialized post-training remains, at this point, a summer night's dream.</p>\n<h2>2. Model Selection and Hardware Constraints</h2>\n<p>The foundational requirement of our architecture was an offline pipeline capable of benchmarking general-purpose models without requiring specialized evaluators or math-specific weights. Early iterations of this approach mandated a pivot to Alibaba's Qwen MoE family, specifically transitioning from the FP8 quantized variant of Qwen3-30B-A3B to the newer Qwen3.5-35B-A3B (Qwen Team, 2024; Qwen Team, 2025).</p>\n<p>The model's weights ($\\approx 30$ GB) fit comfortably on the Kaggle-provided NVIDIA H100 GPU, allocating sufficient space for the KV Cache required by long-context reasoning chains. The deployment relied on <code>vLLM</code> (Kwon et al., 2023), capitalizing on the model's seamless integration of a \"thinking\" mode toggle and its top-tier ability to adhere to strict formatting constraints without excessive prompt engineering.</p>\n<h2>3. Architecture: Multi-Turn Tool-Integrated Reasoning (TIR)</h2>\n<p>The core architecture operates as a Tool-Integrated Reasoning loop driven entirely by Python, building upon recent successes in Program-Aided Language models <strong>(Gao et al., 2023; Gou et al., 2023)</strong>. The reliance on Python is predicated on the observation that general-purpose models are heavily fine-tuned for Software Engineering (SE) tasks, rendering them significantly more capable of producing accurate, executable Python code than symbolic representations like Lean.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F9cd4f4a65dae84459a93b1846355eaea%2FFlowChart.png?generation=1776521614005070&amp;alt=media\" alt=\"\">\n<em>Figure 1: The Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline, highlighting the decoupling of the Planner (code generation) and the Judge (ranking evaluation).</em></p>\n<h3>3.1 The Planner</h3>\n<p>The \"heartbeat\" of the loop is the <strong>Planner</strong>. The system prompts force the Planner to frame problems as sequential computational steps toward a solution. Instead of attempting a one-shot mathematical proof—which requires managing massive internal reasoning chains—the model focuses on identifying the next computational step to test a specific hypothesis.</p>\n<p><strong>Constraints &amp; Fitness Checks:</strong></p>\n<ul>\n<li><p><strong>Prohibited Methods:</strong> Probabilistic search space traversals (e.g., Monte Carlo simulations) and inefficient libraries (e.g., <code>SciPy</code> for symbolic geometry) are strictly prohibited, as they rarely yield the exact integers required by the AIMO format.</p></li>\n<li><p>If a candidate script employs prohibited methods, an intricate validation loop performs rigorous fitness checks, and the candidate is immediately discarded.</p></li>\n</ul>\n<p>Whether a candidate ultimately outputs a solution is decided by a majority vote, leveraging the principles of self-consistency <strong>(Wang et al., 2022)</strong> to filter out anomalous logical errors. The model outputs a JSON payload containing a boolean field indicating if the candidate script is intended to be a final solution. If a majority flags a solution, it is evaluated, submitted, and passed through strict regex checks to ensure it is a valid integer modulo $10^5$.</p>\n<h3>3.2 The Cousin Roles: Classifier and Final Verdict</h3>\n<p>Two auxiliary roles interact with the problem utilizing the model's reasoning capabilities:</p>\n<ol>\n<li><p><strong>The Classifier:</strong> Analyzes the raw problem and outputs a structured rephrasing, primarily consisting of explicit tasks and constraints. This format aligns optimally with the Planner's computational disposition. <em>(Note: The nomenclature \"Classifier\" is a vestige of an earlier iteration intended to classify problem difficulty for dynamic step allocation, an approach abandoned due to model inconsistency).</em></p></li>\n<li><p><strong>The Final Verdict:</strong> Invoked only when the orchestration loop reaches its absolute limit (due to time constraints or max step exhaustion). Utilizing all evidence gathered in the context window, it synthesizes a final, educated approximation of the integer solution.</p></li>\n</ol>\n<h3>3.3 The Judge: Evaluating Reasoning Paths</h3>\n<p>State-of-the-art agentic mathematical pipelines rely heavily on evaluation models, specifically Outcome Reward Models (ORMs) and Process Reward Models (PRMs). Initial attempts to prompt our general-purpose Judge to mimic a strict PRM demonstrated that unmodified LLMs struggle to handle this gracefully. The PRM setup tested was heavily adapted from the step-wise evaluation format introduced by Lightman et al. The prompt instructed the LLM to read the generated reasoning (the content inside the <code>&lt;think&gt;</code>} blocks, which was computationally expensive to process) and assign a token classification of <code>VALID</code>, <code>INVALID</code>, or <code>NEUTRAL</code> to each logical step, calculating a final confidence score based on the ratio of valid steps.</p>\n<p>The data point that forced a pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as <code>VALID</code>, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. Furthermore, as demonstrated in existing research, such evaluators work optimally with specifically fine-tuned models, which fundamentally contradicted our objective of evaluating general-purpose models. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. It is important to clarify that while the Judge internally evaluates a ``ranking'' of the reasoning traces, the extraction layer strictly forces a winner-takes-all selection. Confining the final output to a single optimal candidate, rather than a complex ordered list, significantly mitigated the output-space instability typically caused by high inference temperatures.</p>\n<p>Executing all candidates prior to the Judge's evaluation was tested but ultimately scrapped. The general-purpose model exhibited a strong bias, clinging to any candidate that produced a single, clean integer, even during early exploratory steps where the objective was search-space mapping. Furthermore, running a multitude of parallel Python sandboxes severely degraded the computational budget.</p>\n<h3>3.4 The Execution Loop and Syntax Reviewer</h3>\n<p>The Execute Loop runs the selected candidate and returns the standard output. Extensive error handling is implemented to ensure the model receives full tracebacks explaining execution failures.</p>\n<p>To preserve compute, a fast <strong>Syntax Reviewer</strong> agent was introduced. Before a candidate is fully scrapped, the Reviewer attempts to resolve trivial syntactical errors (e.g., indentation errors, missing imports). This reviewer consistently rescued highly promising mathematical algorithms during reference set evaluations.</p>\n<h2>4. Dynamic Resource Allocation</h2>\n<p>A critical challenge in the AIMO environment is managing the strict 18,000-second offline execution limit. To prevent infinite loops or geometrically expanding search spaces on a single problem, a custom <code>DynamicTimeController</code> was engineered to regulate the temporal and operational bounds of the TIR loop.</p>\n<p>Let $T_{total}$ be the total available environment time, $N$ be the total number of problems, and $T_{safe}$ be a rigid teardown safeguard (230 seconds) reserved for final CSV generation and <code>vLLM</code> spin-down. Before attempting the $i$-th problem, the remaining budget $B_i$ is calculated as:</p>\n<p>$$B_i = T_{total} - T_{safe} - \\sum_{j=1}^{i-1} t_j$$</p>\n<p>where $t_j$ is the time spent on previous problems. Rather than enforcing a static limit, the budgeter permits the agent to utilize surplus time saved from earlier, easier problems. For the current problem, we define a dynamic temporal ceiling, $T_{max, i}$, controlled by a relaxation factor $\\gamma$ (where $\\gamma \\approx 1.5$):</p>\n<p>$$T_{max, i} = \\min \\left( \\gamma \\cdot \\frac{B_i}{N - i + 1}, \\;\\; B_i \\right)$$</p>\n<p>Within this ceiling, reasoning depth is regulated by a maximum step count ($S_{max} = 5$). Let $t_{infer}$ be the variable inference time and $t_{exec}$ be the sandbox execution time. We enforce:</p>\n<p>$$\\sum_{k=1}^{S} (t_{infer, k} + t_{exec, k}) \\leq T_{max, i}$$</p>\n<p>To guarantee progression, the Python <code>subprocess</code> sandbox is rigidly capped at 15 seconds per execution. If $\\max(t_{exec, k})$ reaches 15, a <code>TimeoutError</code> is piped into the LLM context, punishing inefficient <code>while</code> loops and forcing the model to re-evaluate its logic.</p>\n<h2>5. Experimental Setup and Hyperparameter Optimization</h2>\n<p>Due to the absence of weight fine-tuning, the \"training\" equivalent in this methodology was the rigorous optimization of generation parameters and VRAM allocation on the Kaggle H100 GPU.</p>\n<ul>\n<li><p><strong>VRAM and Context Constraints:</strong> The <code>vLLM</code> engine was instantiated with <code>enforce_eager=True</code> to disable CUDA graph capture, successfully preventing Out-of-Memory (OOM) exceptions when managing a 32,768 native context window alongside <code>max_num_seqs=16</code>. The KV Cache was quantized to FP8, doubling the functional context capacity.</p></li>\n<li><p><strong>Context Pruning:</strong> To prevent overflowing the native window when processing tracebacks, the history limit was capped at 15,000 tokens, and \\texttt{stdout} limits were aggressively truncated. Crucially, to prevent catastrophic forgetting and ``loopy'' context degradation, the heavy \\texttt{} reasoning traces were systematically stripped from memory after each step. The pipeline relied on the Summarizer role to compress the global state of the problem, ensuring the model retained its trajectory without drowning in its own previous reasoning loops.</p></li>\n<li><p><strong>Decoding Strategies:</strong> Following Qwen 3 guidelines, greedy decoding was abandoned for reasoning roles. The Planner utilized $T=0.6$, while analytical roles (Judge, Summarizer) utilized cooler temperatures ($T=0.3$) to maintain determinism. Crucially, <code>presence_penalty</code> was explicitly set to $0.0$ across all agents to prevent the fatal hallucination of JSON structures and mathematical syntax.</p></li>\n</ul>\n<h2>6. Results and Discussion</h2>\n<p>The pipeline achieved a public score of 14/50. While modest compared to fine-tuned or heavily scaled proprietary models, this score establishes a robust baseline for inference-only, general-purpose MoE models operating under severe zero-shot constraints.\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F01f0e0c9c2bf95a49d9664e13dbfab82%2FAIMEBenchPlotsQwen3.5.png?generation=1776521574372147&amp;alt=media\" alt=\"\">\n<em>Figure 2: Execution time and cumulative accuracy progression for the Qwen 3.5 35B-A3B agent across the offline 30-problem AIME benchmark, demonstrating the Dynamic Time Controller's budget adherence.</em>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F02beb69a56ad8eb40eaf9c4928b99e6b%2FAIMEBenchPlotsQwen3.png?generation=1776521596014436&amp;alt=media\" alt=\"\">\n<em>Figure 3: Comparative performance of the Qwen 3 30B-A3B agent under identical hyperparameter and time-budget constraints. (Note the variance in generation stability compared to the 3.5 architecture).</em></p>\n<p>A comparison of Figures 2 and 3 highlights a significant discrepancy in execution time and budget adherence. This variance stems from a combination of the dynamic budget logic, step counts, and the underlying model architectures. During early testing, hard-capping the time per problem often starved earlier problems of setup time. To counter this, the Time Controller allowed early problems to ``borrow'' compute budget against the global 5-hour limit, operating on the premise that a capable model would converge quickly and not exhaust this surplus. </p>\n<p>Because Qwen3 struggled more with initial logical paths, it failed to converge to a solution as fast as its newer sibling. Consequently, Qwen3 weaponized the ``borrowed'' early time against itself by exhausting its maximum allowed reasoning steps on earlier problems, leading to the late-stage timeout shown in the benchmark. In contrast, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing, executing the loops faster and with fewer errors.</p>\n<p>A genuine limitation of this ablation study is the sequential problem ordering used in the AIME benchmark. Due to strict compute limitations and the impending revocation of Kaggle H100 access at the competition's deadline, the benchmark was hastily executed in its default sequential order, which inherently ramps up in difficulty (1-15, 16-30). This default difficulty ramp interacted poorly with the ``borrowing'' mechanism. Because early problems were easier, Qwen3.5 solved them quickly, whereas Qwen3 struggled significantly from the third problem onwards, exhausting its time before ever encountering the hardest problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases, an oversight that must be addressed in future methodological iterations.</p>\n<h2>7. Reproducability</h2>\n<p>To ensure full reproducibility of the inference pipeline and benchmarking results, the complete\nsource code, vLLM configurations, and environment setups are publicly available on Kaggle.</p>\n<p><em>Note on Model Access and Configuration:</em> While the orchestration logic and notebooks are\nfully public, the specific Kaggle dataset containing the model weights used for this submission\nremains private. However, the pipeline is designed to be highly modular. Researchers can\nseamlessly plug in their own model paths and adjust all core vLLM and pipeline hyperparameters\n(e.g., maximum reasoning steps, temperature, and context limits) by simply modifying the\nconfiguration variables located in the third cell of the notebooks.</p>\n<ul>\n<li>Inference Submission Pipeline: <a href=\"https://www.kaggle.com/code/christoslazaridis/\" target=\"_blank\">https://www.kaggle.com/code/christoslazaridis/</a>\naimo3-submission</li>\n<li>Offline Benchmarking Setup: <a href=\"https://www.kaggle.com/code/christoslazaridis/\" target=\"_blank\">https://www.kaggle.com/code/christoslazaridis/</a>\naimo3-benchmarkin</li>\n</ul>\n<h2>8. Conclusion</h2>\n<p>This study demonstrates that advanced inference orchestration—specifically through dynamic time budgeting, rigorous tool integration, and specialized agent routing—can successfully extract competitive mathematical reasoning capabilities from general-purpose LLMs. However, the persistent reliance on logical hallucinations underscores a critical barrier. Until general-purpose models develop innate, rigorous process-reward architectures natively, achieving Olympiad-level mastery without domain-specific post-training remains a summer night's dream.</p>\n<p>Another conclusion that I reached after reading through some of the top write-ups is how important parameter count is when it comes to reducing hallucinations and producing more solid reasoning, which seems trivial knowledge, however, I wrongfully believed that a 35B model that has not been heavily quantized would be less likely to hallucinate, which was a lapse in judgment, evident by the leaderboard, and an oversight I should probably have covered. </p>\n<p>Early on, I had tried a heavier model, the results of them I sadly do not posses since it was very early and I hadn't documented them overall, I saw however significantly slower reasoning to the point I could barely do any scaffolding around it, and a big reason why I chose to stay around 30B and in particular go with MoE architectures was that I wanted fast and computationally cheap reasoning, to push a heavier context window and more retries/candidates, since I didn't find a model that I could trust. Furthermore, most of the fine-tuned models from progress prize 2 were 7B models, adding to my conviction that overall ended up not being correct or at least not adapted to the latest SOTA models, and in particular one that shaped the public leaderboard as I was conducting my own experiments.</p>\n<p>That model was GPT-OSS-120B which seemed to have very promising out of the box results, making up for it's computational cost and increased quantization in raw reasoning performance . I lack the proper compute to thoroughly test my scaffold on it, since we no longer have access to H100 from the competition, however, I can safely assume my results would have drastically improved, thus my premise for choosing a 35B model was all in all proven either false, or at the very least obsolete.</p>\n<hr>\n<h2>References</h2>\n<ul>\n<li><p>Frieder, S., Bealing, S., Vonderlind, P., Li, S., Nikolaiev, A., Smith, G. C., Buzzard, K., Gowers, T., Liu, P. J., Loh, P.-S., Mackey, L., de Moura, L., Roberts, D., Sculley, D., Tao, T., Balduzzi, D., Coyle, S., Gerko, A., Holbrook, R., Howard, A., &amp; XTX Markets. (2025). AI Mathematical Olympiad - Progress Prize 3. Kaggle. <a href=\"https://kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3\" target=\"_blank\">https://kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3</a></p></li>\n<li><p>Gao, L., Maman, A., Banerjee, S., Goswami, V., Kamalloo, E., Mackey, L., &amp; Aggarwal, G. (2023). PAL: Program-Aided Language Models. In Proceedings of the 40th International Conference on Machine Learning (ICML).</p></li>\n<li><p>Gou, Z., Shao, Z., Gong, Y., Yang, Y., Huang, M., Duan, N., Chen, W., et al. (2023). ToRA: A Tool-Integrated Reasoning Agent for Mathematical Problem Solving. In Proceedings of the International Conference on Learning Representations (ICLR) 2024. arXiv preprint arXiv:2309.17452.</p></li>\n<li><p>Kwon, W., Li, Z., Zhuang, S., Sheng, Y., Zheng, L., Yu, C. H., Gonzalez, J. E., Zhang, H., &amp; Stoica, I. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. In Proceedings of the 29th Symposium on Operating Systems Principles (SOSP '23).</p></li>\n<li><p>Lightman, H., Kosaraju, V., Burda, Y., Edwards, H., Baker, B., Lee, T., Leike, J., Sutskever, I., et al. (2023). Let's Verify Step by Step. arXiv preprint arXiv:2305.20050.</p></li>\n<li><p>OpenAI. (2024). Learning to Reason with LLMs. OpenAI Research. <a href=\"https://openai.com/index/learning-to-reason-with-llms/\" target=\"_blank\">https://openai.com/index/learning-to-reason-with-llms/</a></p></li>\n<li><p>OpenAI. (2025). Introducing GPT-OSS. OpenAI Research.. <a href=\"https://openai.com/index/introducing-gpt-oss/\" target=\"_blank\">https://openai.com/index/introducing-gpt-oss/</a></p></li>\n<li><p>Qwen Team. (2024). Qwen2.5 Technical Report. arXiv preprint arXiv:2412.15115.</p></li>\n<li><p>Qwen Team. (2025). Qwen3 Technical Report. arXiv preprint arXiv:2505.09388.</p></li>\n<li><p>Trinh, T. H., Wu, Y., Le, Q. V., He, H., &amp; Luong, T. (2024). Solving olympiad geometry without human demonstrations. Nature, 625(7995), 476–482.</p></li>\n<li><p>Wang, X., Wei, J., Schuurmans, D., Le, Q., Chi, E., Narang, S., Chowdhery, A., &amp; Zhou, D. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. In Proceedings of the International Conference on Learning Representations (ICLR) 2023. arXiv preprint arXiv:2203.11171.</p></li>\n</ul>",
      "rawMarkdown": "## Abstract\n\nThis paper investigates the viability of deploying general-purpose, open-weight Large Language Models (LLMs) in heavily constrained, offline inference environments to solve olympiad-level mathematical problems. Operating under the strict hardware limitations of a single NVIDIA H100 GPU and a 5-hour time budget for 50 problems, we introduce a Python-driven, Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline. Rather than relying on specialized fine-tuning, this study optimizes dynamic resource allocation, context management, and hyperparameter targeting using the Qwen 3.5 35B-A3B Mixture-of-Experts (MoE) architecture. We evaluate the efficacy of zero-shot general-purpose models acting as Process Reward Models (PRMs) and demonstrate the necessity of a ranking-based evaluation layer. Achieving a public score of 14/50 on the AI Mathematical Olympiad (AIMO) Progress Prize 3, our results highlight both the emerging capabilities of generalized reasoning models and their persistent vulnerabilities to logical hallucination when operating without domain-specific mathematical post-training.\n\n---\n\n## 1. Introduction\n\nThe pursuit of artificial mathematical reasoning has recently bifurcated into two primary methodologies: domain-specific fine-tuning on highly curated mathematical corpora—exemplified by systems like AlphaGeometry **(Trinh et al., 2024)**—and the deployment of massive, generalized reasoning models (such as OpenAI's o1 paradigm). Faced with limited computational resources and a restricted timeline, this study opted to test the upper bounds of the latter approach. Instead of training custom weights or employing proprietary evaluation models, we utilized the AIMO Progress Prize 3 as a platform to test how far general-purpose LLMs can advance on a demanding set of problems using purely inference-time orchestration.\n\nOur findings demonstrate that while sophisticated inference-time compute scaling and Tool-Integrated Reasoning (TIR) can yield competitive baselines, the concept of an unmodified, general-purpose model reliably excelling at olympiad-level mathematics without specialized post-training remains, at this point, a summer night's dream.\n\n## 2. Model Selection and Hardware Constraints\n\nThe foundational requirement of our architecture was an offline pipeline capable of benchmarking general-purpose models without requiring specialized evaluators or math-specific weights. Early iterations of this approach mandated a pivot to Alibaba's Qwen MoE family, specifically transitioning from the FP8 quantized variant of Qwen3-30B-A3B to the newer Qwen3.5-35B-A3B (Qwen Team, 2024; Qwen Team, 2025).\n\nThe model's weights ($\\approx 30$ GB) fit comfortably on the Kaggle-provided NVIDIA H100 GPU, allocating sufficient space for the KV Cache required by long-context reasoning chains. The deployment relied on `vLLM` (Kwon et al., 2023), capitalizing on the model's seamless integration of a \"thinking\" mode toggle and its top-tier ability to adhere to strict formatting constraints without excessive prompt engineering.\n\n## 3. Architecture: Multi-Turn Tool-Integrated Reasoning (TIR)\n\nThe core architecture operates as a Tool-Integrated Reasoning loop driven entirely by Python, building upon recent successes in Program-Aided Language models **(Gao et al., 2023; Gou et al., 2023)**. The reliance on Python is predicated on the observation that general-purpose models are heavily fine-tuned for Software Engineering (SE) tasks, rendering them significantly more capable of producing accurate, executable Python code than symbolic representations like Lean.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F9cd4f4a65dae84459a93b1846355eaea%2FFlowChart.png?generation=1776521614005070&alt=media)\n*Figure 1: The Multi-Turn Tool-Integrated Reasoning (TIR) orchestration pipeline, highlighting the decoupling of the Planner (code generation) and the Judge (ranking evaluation).*\n### 3.1 The Planner\n\nThe \"heartbeat\" of the loop is the **Planner**. The system prompts force the Planner to frame problems as sequential computational steps toward a solution. Instead of attempting a one-shot mathematical proof—which requires managing massive internal reasoning chains—the model focuses on identifying the next computational step to test a specific hypothesis.\n\n**Constraints & Fitness Checks:**\n\n- **Prohibited Methods:** Probabilistic search space traversals (e.g., Monte Carlo simulations) and inefficient libraries (e.g., `SciPy` for symbolic geometry) are strictly prohibited, as they rarely yield the exact integers required by the AIMO format.\n\n- If a candidate script employs prohibited methods, an intricate validation loop performs rigorous fitness checks, and the candidate is immediately discarded.\n\nWhether a candidate ultimately outputs a solution is decided by a majority vote, leveraging the principles of self-consistency **(Wang et al., 2022)** to filter out anomalous logical errors. The model outputs a JSON payload containing a boolean field indicating if the candidate script is intended to be a final solution. If a majority flags a solution, it is evaluated, submitted, and passed through strict regex checks to ensure it is a valid integer modulo $10^5$.\n\n### 3.2 The Cousin Roles: Classifier and Final Verdict\n\nTwo auxiliary roles interact with the problem utilizing the model's reasoning capabilities:\n\n1. **The Classifier:** Analyzes the raw problem and outputs a structured rephrasing, primarily consisting of explicit tasks and constraints. This format aligns optimally with the Planner's computational disposition. _(Note: The nomenclature \"Classifier\" is a vestige of an earlier iteration intended to classify problem difficulty for dynamic step allocation, an approach abandoned due to model inconsistency)._\n\n2. **The Final Verdict:** Invoked only when the orchestration loop reaches its absolute limit (due to time constraints or max step exhaustion). Utilizing all evidence gathered in the context window, it synthesizes a final, educated approximation of the integer solution.\n\n### 3.3 The Judge: Evaluating Reasoning Paths\n\nState-of-the-art agentic mathematical pipelines rely heavily on evaluation models, specifically Outcome Reward Models (ORMs) and Process Reward Models (PRMs). Initial attempts to prompt our general-purpose Judge to mimic a strict PRM demonstrated that unmodified LLMs struggle to handle this gracefully. The PRM setup tested was heavily adapted from the step-wise evaluation format introduced by Lightman et al. The prompt instructed the LLM to read the generated reasoning (the content inside the `<think>`} blocks, which was computationally expensive to process) and assign a token classification of `VALID`, `INVALID`, or `NEUTRAL` to each logical step, calculating a final confidence score based on the ratio of valid steps.\n\nThe data point that forced a pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as `VALID`, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. Furthermore, as demonstrated in existing research, such evaluators work optimally with specifically fine-tuned models, which fundamentally contradicted our objective of evaluating general-purpose models. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot. It is important to clarify that while the Judge internally evaluates a ``ranking'' of the reasoning traces, the extraction layer strictly forces a winner-takes-all selection. Confining the final output to a single optimal candidate, rather than a complex ordered list, significantly mitigated the output-space instability typically caused by high inference temperatures.\n\nExecuting all candidates prior to the Judge's evaluation was tested but ultimately scrapped. The general-purpose model exhibited a strong bias, clinging to any candidate that produced a single, clean integer, even during early exploratory steps where the objective was search-space mapping. Furthermore, running a multitude of parallel Python sandboxes severely degraded the computational budget.\n\n### 3.4 The Execution Loop and Syntax Reviewer\n\nThe Execute Loop runs the selected candidate and returns the standard output. Extensive error handling is implemented to ensure the model receives full tracebacks explaining execution failures.\n\nTo preserve compute, a fast **Syntax Reviewer** agent was introduced. Before a candidate is fully scrapped, the Reviewer attempts to resolve trivial syntactical errors (e.g., indentation errors, missing imports). This reviewer consistently rescued highly promising mathematical algorithms during reference set evaluations.\n\n## 4. Dynamic Resource Allocation\n\nA critical challenge in the AIMO environment is managing the strict 18,000-second offline execution limit. To prevent infinite loops or geometrically expanding search spaces on a single problem, a custom `DynamicTimeController` was engineered to regulate the temporal and operational bounds of the TIR loop.\n\nLet $T_{total}$ be the total available environment time, $N$ be the total number of problems, and $T_{safe}$ be a rigid teardown safeguard (230 seconds) reserved for final CSV generation and `vLLM` spin-down. Before attempting the $i$-th problem, the remaining budget $B_i$ is calculated as:\n\n$$B_i = T_{total} - T_{safe} - \\sum_{j=1}^{i-1} t_j$$\n\nwhere $t_j$ is the time spent on previous problems. Rather than enforcing a static limit, the budgeter permits the agent to utilize surplus time saved from earlier, easier problems. For the current problem, we define a dynamic temporal ceiling, $T_{max, i}$, controlled by a relaxation factor $\\gamma$ (where $\\gamma \\approx 1.5$):\n\n$$T_{max, i} = \\min \\left( \\gamma \\cdot \\frac{B_i}{N - i + 1}, \\;\\; B_i \\right)$$\n\nWithin this ceiling, reasoning depth is regulated by a maximum step count ($S_{max} = 5$). Let $t_{infer}$ be the variable inference time and $t_{exec}$ be the sandbox execution time. We enforce:\n\n$$\\sum_{k=1}^{S} (t_{infer, k} + t_{exec, k}) \\leq T_{max, i}$$\n\nTo guarantee progression, the Python `subprocess` sandbox is rigidly capped at 15 seconds per execution. If $\\max(t_{exec, k})$ reaches 15, a `TimeoutError` is piped into the LLM context, punishing inefficient `while` loops and forcing the model to re-evaluate its logic.\n\n## 5. Experimental Setup and Hyperparameter Optimization\n\nDue to the absence of weight fine-tuning, the \"training\" equivalent in this methodology was the rigorous optimization of generation parameters and VRAM allocation on the Kaggle H100 GPU.\n\n- **VRAM and Context Constraints:** The `vLLM` engine was instantiated with `enforce_eager=True` to disable CUDA graph capture, successfully preventing Out-of-Memory (OOM) exceptions when managing a 32,768 native context window alongside `max_num_seqs=16`. The KV Cache was quantized to FP8, doubling the functional context capacity.\n    \n- **Context Pruning:** To prevent overflowing the native window when processing tracebacks, the history limit was capped at 15,000 tokens, and \\texttt{stdout} limits were aggressively truncated. Crucially, to prevent catastrophic forgetting and ``loopy'' context degradation, the heavy \\texttt{<think>} reasoning traces were systematically stripped from memory after each step. The pipeline relied on the Summarizer role to compress the global state of the problem, ensuring the model retained its trajectory without drowning in its own previous reasoning loops.\n    \n- **Decoding Strategies:** Following Qwen 3 guidelines, greedy decoding was abandoned for reasoning roles. The Planner utilized $T=0.6$, while analytical roles (Judge, Summarizer) utilized cooler temperatures ($T=0.3$) to maintain determinism. Crucially, `presence_penalty` was explicitly set to $0.0$ across all agents to prevent the fatal hallucination of JSON structures and mathematical syntax.\n    \n\n## 6. Results and Discussion\n\nThe pipeline achieved a public score of 14/50. While modest compared to fine-tuned or heavily scaled proprietary models, this score establishes a robust baseline for inference-only, general-purpose MoE models operating under severe zero-shot constraints.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F01f0e0c9c2bf95a49d9664e13dbfab82%2FAIMEBenchPlotsQwen3.5.png?generation=1776521574372147&alt=media)\n*Figure 2: Execution time and cumulative accuracy progression for the Qwen 3.5 35B-A3B agent across the offline 30-problem AIME benchmark, demonstrating the Dynamic Time Controller's budget adherence.*\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F20310625%2F02beb69a56ad8eb40eaf9c4928b99e6b%2FAIMEBenchPlotsQwen3.png?generation=1776521596014436&alt=media)\n*Figure 3: Comparative performance of the Qwen 3 30B-A3B agent under identical hyperparameter and time-budget constraints. (Note the variance in generation stability compared to the 3.5 architecture).*\n\nA comparison of Figures 2 and 3 highlights a significant discrepancy in execution time and budget adherence. This variance stems from a combination of the dynamic budget logic, step counts, and the underlying model architectures. During early testing, hard-capping the time per problem often starved earlier problems of setup time. To counter this, the Time Controller allowed early problems to ``borrow'' compute budget against the global 5-hour limit, operating on the premise that a capable model would converge quickly and not exhaust this surplus. \n\nBecause Qwen3 struggled more with initial logical paths, it failed to converge to a solution as fast as its newer sibling. Consequently, Qwen3 weaponized the ``borrowed'' early time against itself by exhausting its maximum allowed reasoning steps on earlier problems, leading to the late-stage timeout shown in the benchmark. In contrast, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing, executing the loops faster and with fewer errors.\n\nA genuine limitation of this ablation study is the sequential problem ordering used in the AIME benchmark. Due to strict compute limitations and the impending revocation of Kaggle H100 access at the competition's deadline, the benchmark was hastily executed in its default sequential order, which inherently ramps up in difficulty (1-15, 16-30). This default difficulty ramp interacted poorly with the ``borrowing'' mechanism. Because early problems were easier, Qwen3.5 solved them quickly, whereas Qwen3 struggled significantly from the third problem onwards, exhausting its time before ever encountering the hardest problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases, an oversight that must be addressed in future methodological iterations.\n\n## 7. Reproducability\nTo ensure full reproducibility of the inference pipeline and benchmarking results, the complete\nsource code, vLLM configurations, and environment setups are publicly available on Kaggle.\n\n_Note on Model Access and Configuration:_ While the orchestration logic and notebooks are\nfully public, the specific Kaggle dataset containing the model weights used for this submission\nremains private. However, the pipeline is designed to be highly modular. Researchers can\nseamlessly plug in their own model paths and adjust all core vLLM and pipeline hyperparameters\n(e.g., maximum reasoning steps, temperature, and context limits) by simply modifying the\nconfiguration variables located in the third cell of the notebooks.\n- Inference Submission Pipeline: https://www.kaggle.com/code/christoslazaridis/\naimo3-submission\n- Offline Benchmarking Setup: https://www.kaggle.com/code/christoslazaridis/\naimo3-benchmarkin\n## 8. Conclusion\n\nThis study demonstrates that advanced inference orchestration—specifically through dynamic time budgeting, rigorous tool integration, and specialized agent routing—can successfully extract competitive mathematical reasoning capabilities from general-purpose LLMs. However, the persistent reliance on logical hallucinations underscores a critical barrier. Until general-purpose models develop innate, rigorous process-reward architectures natively, achieving Olympiad-level mastery without domain-specific post-training remains a summer night's dream.\n\nAnother conclusion that I reached after reading through some of the top write-ups is how important parameter count is when it comes to reducing hallucinations and producing more solid reasoning, which seems trivial knowledge, however, I wrongfully believed that a 35B model that has not been heavily quantized would be less likely to hallucinate, which was a lapse in judgment, evident by the leaderboard, and an oversight I should probably have covered. \n\nEarly on, I had tried a heavier model, the results of them I sadly do not posses since it was very early and I hadn't documented them overall, I saw however significantly slower reasoning to the point I could barely do any scaffolding around it, and a big reason why I chose to stay around 30B and in particular go with MoE architectures was that I wanted fast and computationally cheap reasoning, to push a heavier context window and more retries/candidates, since I didn't find a model that I could trust. Furthermore, most of the fine-tuned models from progress prize 2 were 7B models, adding to my conviction that overall ended up not being correct or at least not adapted to the latest SOTA models, and in particular one that shaped the public leaderboard as I was conducting my own experiments.\n\nThat model was GPT-OSS-120B which seemed to have very promising out of the box results, making up for it's computational cost and increased quantization in raw reasoning performance . I lack the proper compute to thoroughly test my scaffold on it, since we no longer have access to H100 from the competition, however, I can safely assume my results would have drastically improved, thus my premise for choosing a 35B model was all in all proven either false, or at the very least obsolete.\n\n---\n\n## References\n\n- Frieder, S., Bealing, S., Vonderlind, P., Li, S., Nikolaiev, A., Smith, G. C., Buzzard, K., Gowers, T., Liu, P. J., Loh, P.-S., Mackey, L., de Moura, L., Roberts, D., Sculley, D., Tao, T., Balduzzi, D., Coyle, S., Gerko, A., Holbrook, R., Howard, A., & XTX Markets. (2025). AI Mathematical Olympiad - Progress Prize 3. Kaggle. https://kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3\n\n- Gao, L., Maman, A., Banerjee, S., Goswami, V., Kamalloo, E., Mackey, L., & Aggarwal, G. (2023). PAL: Program-Aided Language Models. In Proceedings of the 40th International Conference on Machine Learning (ICML).\n\n- Gou, Z., Shao, Z., Gong, Y., Yang, Y., Huang, M., Duan, N., Chen, W., et al. (2023). ToRA: A Tool-Integrated Reasoning Agent for Mathematical Problem Solving. In Proceedings of the International Conference on Learning Representations (ICLR) 2024. arXiv preprint arXiv:2309.17452.\n\n- Kwon, W., Li, Z., Zhuang, S., Sheng, Y., Zheng, L., Yu, C. H., Gonzalez, J. E., Zhang, H., & Stoica, I. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. In Proceedings of the 29th Symposium on Operating Systems Principles (SOSP '23).\n\n- Lightman, H., Kosaraju, V., Burda, Y., Edwards, H., Baker, B., Lee, T., Leike, J., Sutskever, I., et al. (2023). Let's Verify Step by Step. arXiv preprint arXiv:2305.20050.\n\n- OpenAI. (2024). Learning to Reason with LLMs. OpenAI Research. https://openai.com/index/learning-to-reason-with-llms/\n\n- OpenAI. (2025). Introducing GPT-OSS. OpenAI Research.. https://openai.com/index/introducing-gpt-oss/\n\n- Qwen Team. (2024). Qwen2.5 Technical Report. arXiv preprint arXiv:2412.15115.\n\n- Qwen Team. (2025). Qwen3 Technical Report. arXiv preprint arXiv:2505.09388.\n\n- Trinh, T. H., Wu, Y., Le, Q. V., He, H., & Luong, T. (2024). Solving olympiad geometry without human demonstrations. Nature, 625(7995), 476–482.\n\n- Wang, X., Wei, J., Schuurmans, D., Le, Q., Chi, E., Narang, S., Chowdhery, A., & Zhou, D. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. In Proceedings of the International Conference on Learning Representations (ICLR) 2023. arXiv preprint arXiv:2203.11171.",
      "votes": 2
    },
    {
      "id": 3457914,
      "postDate": "2026-05-14T15:53:47.780Z",
      "content": "<p>I took the opportunity of the Rebuttal phase to make a few targeted updates to my write-up. Following the questions from the reviewers <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a> <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> , I ended up making the following edits eligible for the rebuttal phase of the competition:</p>\n<ul>\n<li><p>Expanded Conclusion (Model Selection Post-Mortem)</p>\n<ul>\n<li><p>What was added: 3 paragraphs in the Conclusion discussing the GPT-OSS 120B meta and the quantization vs. parameter count trade-off.</p></li>\n<li><p>When: At the opening of the rebuttal phase (prior to reviewer questions).</p></li>\n<li><p>What it addresses: Acts as a self-reflection acknowledging that my initial premise regarding a 35B model hallucinating less than a heavily quantized 120B model was rendered obsolete by the final leaderboard results.</p></li></ul></li>\n<li><p>Expanded Section 3.3 (The Judge &amp; PRM Pivot)</p>\n<ul>\n<li><p>What was added: Detailed the specific PRM prompt used (adapting Lightman et al., classifying  blocks) and clarified that the ranking mechanism uses a \"winner-takes-all\" extraction rather than outputting a volatile list.</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Addresses reviewer questions regarding the exact PRM methodology, the LLM \"confirmation bias\" flaw, and concerns about ranking instability at high inference temperatures.</p></li></ul></li>\n<li><p>New Subsection in Section 6 (Ablation Limitations &amp; Budget Overshoots)</p>\n<ul>\n<li><p>What was added: A dedicated subsection titled \"Ablation Study Limitations and Time-Budget Overshoots\".</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Directly answers why Qwen3 weaponized the \"borrowed\" time budget compared to Qwen3.5 (highlighting the Gated DeltaNet efficiency), and acknowledges the sequential AIME difficulty ramp as a genuine limitation of the ablation study.</p></li></ul></li>\n<li><p>Updated Section 5 (Catastrophic Forgetting &amp; Context)</p>\n<ul>\n<li><p>What was added: Clarified the Context Pruning bullet point to explicitly state that  blocks are systematically stripped from memory to prevent context degradation.</p></li>\n<li><p>When: During the reviewer Q&amp;A phase.</p></li>\n<li><p>What it addresses: Resolves reviewer questions regarding how the pipeline prevents catastrophic forgetting and \"loopy\" behavior within the 32k character limit.</p></li></ul></li>\n</ul>",
      "rawMarkdown": "I took the opportunity of the Rebuttal phase to make a few targeted updates to my write-up. Following the questions from the reviewers @philipvonderlind @sambealing , I ended up making the following edits eligible for the rebuttal phase of the competition:\n- Expanded Conclusion (Model Selection Post-Mortem)\n\n   - What was added: 3 paragraphs in the Conclusion discussing the GPT-OSS 120B meta and the quantization vs. parameter count trade-off.\n\n   - When: At the opening of the rebuttal phase (prior to reviewer questions).\n\n   - What it addresses: Acts as a self-reflection acknowledging that my initial premise regarding a 35B model hallucinating less than a heavily quantized 120B model was rendered obsolete by the final leaderboard results.\n\n- Expanded Section 3.3 (The Judge & PRM Pivot)\n\n   - What was added: Detailed the specific PRM prompt used (adapting Lightman et al., classifying <think> blocks) and clarified that the ranking mechanism uses a \"winner-takes-all\" extraction rather than outputting a volatile list.\n\n   - When: During the reviewer Q&A phase.\n\n   - What it addresses: Addresses reviewer questions regarding the exact PRM methodology, the LLM \"confirmation bias\" flaw, and concerns about ranking instability at high inference temperatures.\n\n- New Subsection in Section 6 (Ablation Limitations & Budget Overshoots)\n\n   - What was added: A dedicated subsection titled \"Ablation Study Limitations and Time-Budget Overshoots\".\n\n   - When: During the reviewer Q&A phase.\n\n   - What it addresses: Directly answers why Qwen3 weaponized the \"borrowed\" time budget compared to Qwen3.5 (highlighting the Gated DeltaNet efficiency), and acknowledges the sequential AIME difficulty ramp as a genuine limitation of the ablation study.\n\n- Updated Section 5 (Catastrophic Forgetting & Context)\n\n   - What was added: Clarified the Context Pruning bullet point to explicitly state that <think> blocks are systematically stripped from memory to prevent context degradation.\n\n   - When: During the reviewer Q&A phase.\n\n   -  What it addresses: Resolves reviewer questions regarding how the pipeline prevents catastrophic forgetting and \"loopy\" behavior within the 32k character limit.\n"
    },
    {
      "id": 3457838,
      "postDate": "2026-05-14T12:51:52.933Z",
      "content": "<p>Adding to the comments by <a href=\"https://www.kaggle.com/sambealing\" target=\"_blank\">@sambealing</a> below, I have a few additional questions:</p>\n<ol>\n<li><p><strong>Qwen</strong>: In your submission, you write that “early iterations of this approach mandated a pivot to Alibaba's” model. From what I have seen, most other competitors concluded that <code>gpt-oss-120b</code> was the stronger choice under the available hardware budget. What motivated your decision to use a less common model for your submission? Did you find any evidence that supported this choice?</p></li>\n<li><p><strong>Judge Mechanism</strong>: Unlike many other approaches, your judge ranks the generated answers rather than selecting a single final answer directly. This seems like a more difficult task, since comparing subtle differences between multiple answers or reasoning traces is not necessarily straightforward. Did you run any experiments to check whether the produced rankings are stable across multiple runs, given that inference temperature is involved? I would expect ranking instability to have a large impact on problems where the solution attempts are highly diverse.</p></li>\n<li><p><strong>Eager Inference</strong>: Why did you choose to disable CUDA graph execution entirely? Reducing the graph size could also save memory while retaining some throughput benefits. This may also interact with your relatively high <code>N=16</code>, since larger numbers of parallel generations require more memory depending on how many sequences are active at once. It would be interesting to see how these settings affect the overall throughput of your pipeline.</p></li>\n<li><p><strong>Context Limitation and Catastrophic Forgetting</strong>: From my experience, Qwen models are particularly prone to generating very long traces. Since you truncate the trace history at 32k characters, did you observe any catastrophic forgetting of the original task or “loopy” behavior, where the model starts rediscovering previously forgotten context after earlier parts of the trace are removed?</p></li>\n</ol>",
      "rawMarkdown": "Adding to the comments by @sambealing below, I have a few additional questions:\n\n1. **Qwen**: In your submission, you write that “early iterations of this approach mandated a pivot to Alibaba's” model. From what I have seen, most other competitors concluded that `gpt-oss-120b` was the stronger choice under the available hardware budget. What motivated your decision to use a less common model for your submission? Did you find any evidence that supported this choice?\n\n2. **Judge Mechanism**: Unlike many other approaches, your judge ranks the generated answers rather than selecting a single final answer directly. This seems like a more difficult task, since comparing subtle differences between multiple answers or reasoning traces is not necessarily straightforward. Did you run any experiments to check whether the produced rankings are stable across multiple runs, given that inference temperature is involved? I would expect ranking instability to have a large impact on problems where the solution attempts are highly diverse.\n\n3. **Eager Inference**: Why did you choose to disable CUDA graph execution entirely? Reducing the graph size could also save memory while retaining some throughput benefits. This may also interact with your relatively high `N=16`, since larger numbers of parallel generations require more memory depending on how many sequences are active at once. It would be interesting to see how these settings affect the overall throughput of your pipeline.\n\n4. **Context Limitation and Catastrophic Forgetting**: From my experience, Qwen models are particularly prone to generating very long traces. Since you truncate the trace history at 32k characters, did you observe any catastrophic forgetting of the original task or “loopy” behavior, where the model starts rediscovering previously forgotten context after earlier parts of the trace are removed?",
      "replies": [
        {
          "id": 3457882,
          "postDate": "2026-05-14T14:47:52.297Z",
          "content": "<p>Hi, thank you for taking the time to evaluate my work and for the thoughtful questions. Please find my clarifications below:*</p>\n<p><strong>1. Qwen Selection &amp; The 120B Meta:</strong>\nYou are completely correct regarding the leaderboard meta. My decision to use Qwen 3.5 35B over GPT-OSS-120B was driven by three primary hardware and architectural constraints early in the competition:</p>\n<ul>\n<li><p><strong>Quantization vs. Parameter Count Trade-off:</strong> I operated under the theoretical premise that a 35B model with less aggressive quantization (FP8) would hallucinate less and maintain better logical consistency than a 120B model heavily quantized to fit on the same H100. This was honestly my own conviction driven by the fact I constantly saw smaller models over-achieving in earlier AIMO competitions.</p></li>\n<li><p><strong>KV-Cache Headroom:</strong> Because my pipeline relied heavily on parallel candidate generation, I needed significant VRAM headroom for the KV-Cache. I also wanted to maintain the ability to push parallel generation AND KV-Cache much beyond what I ended up doing.</p></li>\n<li><p><strong>Native Reasoning Switch:</strong> Qwen offered a very stable native reasoning/think switch and exceptional instruction-following for Python generation out-of-the-box.</p>\n<p>As I noted in the recent \"Limitations\" edit to my write-up, that I wrote when the rebuttal phase was announced, my premise regarding the 35B vs. 120B quantization trade-off was ultimately proven obsolete by the final leaderboard, but these were the constraints that locked in my architecture early on.</p></li>\n</ul>\n<hr>\n<p><strong>2. Judge Mechanism &amp; Ranking Instability:</strong></p>\n<p>I apologize if the terminology in the write-up was ambiguous. While the Judge was prompted to \"rank\" the solutions to force a comparative analysis, it did not output a full, multi-item ranking downstream. The prompt forced an internal comparison of the reasoning traces, but the extraction layer strictly required a \"winner-takes-all\" selection of the single best candidate to proceed. By confining the Judge's final output to a single selection rather than a complex ordered list, I mitigated much of the output-space instability typically caused by high inference temperatures, though I agree that highly diverse candidate pools still introduced variance.</p>\n<hr>\n<p><strong>3. Eager Inference vs. CUDA Graphs:</strong></p>\n<p>This was a stability and initialization trade-off. For the majority of my development cycle, stable vLLM support for the newest Qwen MoE architectures was non-existent. I was relying on nightly wheels up until the final week. Because Kaggle kernels frequently took nearly 20 minutes just to spin up the pipeline and load the model weights, attempting to capture and compile optimized CUDA graphs often resulted in unpredictable OOM errors or timeouts before inference even began. Disabling CUDA graph execution entirely <code>enforce_eager=True</code> was a brute-force measure to guarantee the engine would initialize safely within the Kaggle environment, though I agree that tuning the graph size would have yielded better throughput.</p>\n<hr>\n<p><strong>4. Context Limitation &amp; Catastrophic Forgetting:</strong></p>\n<p>To prevent catastrophic forgetting within the 32k character limit, I implemented an aggressive context-pruning strategy. Instead of letting the raw context naturally truncate (which causes the \"loopy\" behavior you described), my pipeline systematically stripped out the heavy \\texttt{} reasoning traces from memory after a step was completed, heavily truncated stdout tracebacks, and relied on the Summarizer role to compress the state of the problem. This strict memory management ensured the model retained the \"global state\" of its progress without drowning in its own previous reasoning loops, while losing some of the fine details of it's CoT, which was needed given the limiations of my implementation.</p>\n<hr>\n<p>I hope my responses were adequate.\nBest Regards!</p>",
          "rawMarkdown": "Hi, thank you for taking the time to evaluate my work and for the thoughtful questions. Please find my clarifications below:*\n\n**1. Qwen Selection & The 120B Meta:**\nYou are completely correct regarding the leaderboard meta. My decision to use Qwen 3.5 35B over GPT-OSS-120B was driven by three primary hardware and architectural constraints early in the competition:\n\n- **Quantization vs. Parameter Count Trade-off:** I operated under the theoretical premise that a 35B model with less aggressive quantization (FP8) would hallucinate less and maintain better logical consistency than a 120B model heavily quantized to fit on the same H100. This was honestly my own conviction driven by the fact I constantly saw smaller models over-achieving in earlier AIMO competitions.\n    \n- **KV-Cache Headroom:** Because my pipeline relied heavily on parallel candidate generation, I needed significant VRAM headroom for the KV-Cache. I also wanted to maintain the ability to push parallel generation AND KV-Cache much beyond what I ended up doing.\n    \n- **Native Reasoning Switch:** Qwen offered a very stable native reasoning/think switch and exceptional instruction-following for Python generation out-of-the-box.\n    \n    As I noted in the recent \"Limitations\" edit to my write-up, that I wrote when the rebuttal phase was announced, my premise regarding the 35B vs. 120B quantization trade-off was ultimately proven obsolete by the final leaderboard, but these were the constraints that locked in my architecture early on.\n    \n---\n**2. Judge Mechanism & Ranking Instability:**\n\nI apologize if the terminology in the write-up was ambiguous. While the Judge was prompted to \"rank\" the solutions to force a comparative analysis, it did not output a full, multi-item ranking downstream. The prompt forced an internal comparison of the reasoning traces, but the extraction layer strictly required a \"winner-takes-all\" selection of the single best candidate to proceed. By confining the Judge's final output to a single selection rather than a complex ordered list, I mitigated much of the output-space instability typically caused by high inference temperatures, though I agree that highly diverse candidate pools still introduced variance.\n\n---\n**3. Eager Inference vs. CUDA Graphs:**\n\nThis was a stability and initialization trade-off. For the majority of my development cycle, stable vLLM support for the newest Qwen MoE architectures was non-existent. I was relying on nightly wheels up until the final week. Because Kaggle kernels frequently took nearly 20 minutes just to spin up the pipeline and load the model weights, attempting to capture and compile optimized CUDA graphs often resulted in unpredictable OOM errors or timeouts before inference even began. Disabling CUDA graph execution entirely `enforce_eager=True` was a brute-force measure to guarantee the engine would initialize safely within the Kaggle environment, though I agree that tuning the graph size would have yielded better throughput.\n\n---\n**4. Context Limitation & Catastrophic Forgetting:**\n\nTo prevent catastrophic forgetting within the 32k character limit, I implemented an aggressive context-pruning strategy. Instead of letting the raw context naturally truncate (which causes the \"loopy\" behavior you described), my pipeline systematically stripped out the heavy \\texttt{} reasoning traces from memory after a step was completed, heavily truncated stdout tracebacks, and relied on the Summarizer role to compress the state of the problem. This strict memory management ensured the model retained the \"global state\" of its progress without drowning in its own previous reasoning loops, while losing some of the fine details of it's CoT, which was needed given the limiations of my implementation.\n\n---\n\nI hope my responses were adequate.\nBest Regards!"
        }
      ]
    },
    {
      "id": 3457718,
      "postDate": "2026-05-14T08:22:12.173Z",
      "content": "<p>Hi, thank you for your submission to the Writeup Prize. <a href=\"https://www.kaggle.com/philipvonderlind\" target=\"_blank\">@philipvonderlind</a> and I will post some questions below that help us in assessing your submission more closely, as described in the <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">updated discussion post</a>.</p>\n<ol>\n<li><strong>ORM/PRM to ranking evaluator pivot:</strong> You abandoned the PRM approach because \"unmodified LLMs struggle to handle this gracefully\" (§3.3), but don't say much about what specific PRM-style rubric or prompts you tried first. Could you share the PRM setup you tested, and what data you collected to support that the ranking-based evaluator outperformed it?</li>\n<li><strong>Time-budget overshoots on Qwen3-30B-A3B:</strong> Figure 3 shows several problems on the Qwen3-30B-A3B run taking 1000-1400s against the 360s average budget, and the system runs out of time around <code>aime_2026_II_05</code> (about 9 problems unattempted). The same hyperparameters and time budget were used as for Qwen3.5-35B-A3B in Figure 2, which mostly stayed within budget. Do you have any data on why the older model consumed so much more compute per problem (e.g. longer reasoning traces, more tool-call retries, judge-rejection loops)?</li>\n<li><strong>AIME ordering and difficulty ramp:</strong> AIME problems come in two sets of 15 in roughly increasing difficulty (1-15 and 16-30), so the time controller effectively sees two difficulty ramps from easy to hard. Do you think this could have impacted the results and if so, did you consider running the benchmark with a randomised problem order to remove this effect?</li>\n</ol>\n<p>Look forward to reading your responses on these.</p>",
      "rawMarkdown": "Hi, thank you for your submission to the Writeup Prize. @philipvonderlind and I will post some questions below that help us in assessing your submission more closely, as described in the [updated discussion post](https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703).\n\n1. **ORM/PRM to ranking evaluator pivot:** You abandoned the PRM approach because \"unmodified LLMs struggle to handle this gracefully\" (§3.3), but don't say much about what specific PRM-style rubric or prompts you tried first. Could you share the PRM setup you tested, and what data you collected to support that the ranking-based evaluator outperformed it?\n2. **Time-budget overshoots on Qwen3-30B-A3B:** Figure 3 shows several problems on the Qwen3-30B-A3B run taking 1000-1400s against the 360s average budget, and the system runs out of time around `aime_2026_II_05` (about 9 problems unattempted). The same hyperparameters and time budget were used as for Qwen3.5-35B-A3B in Figure 2, which mostly stayed within budget. Do you have any data on why the older model consumed so much more compute per problem (e.g. longer reasoning traces, more tool-call retries, judge-rejection loops)?\n3. **AIME ordering and difficulty ramp:** AIME problems come in two sets of 15 in roughly increasing difficulty (1-15 and 16-30), so the time controller effectively sees two difficulty ramps from easy to hard. Do you think this could have impacted the results and if so, did you consider running the benchmark with a randomised problem order to remove this effect?\n\nLook forward to reading your responses on these.\n",
      "replies": [
        {
          "id": 3457816,
          "postDate": "2026-05-14T11:32:04.687Z",
          "content": "<p>Hi, Thank you for the thorough review and the questions. Below I provide my initial response to each one of these.</p>\n<p><strong>1. ORM/PRM to ranking evaluator pivot:</strong> Unfortunately (and this was an honest mistake on my part for not keeping my earlier notebooks), I did not preserve the specific Kaggle notebook of my initial zero-shot PRM experiments once I finalized the Ranking-Based Judge architecture. However, the PRM setup I tested was heavily adapted from the step-wise evaluation format introduced in <em>\"Let's Verify Step by Step\"</em> (Lightman et al., 2023).</p>\n<p>My prompt instructed the LLM to read the generated reasoning (the content inside the <code>&lt;think&gt; &lt;/think&gt;</code> blocks, which was quite time expensive on it's own) and assign each sentence and latex block a token classification of <code>[VALID]</code>, <code>[INVALID]</code>, or <code>[NEUTRAL]</code> to each logical step, calculating a final confidence score based on the ratio of valid steps. The data point that forced me to pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as <code>[VALID]</code>, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot.</p>\n<p>In general as demonstrated in OpenAI's research, such evaluators work with specific fine-tuned models, which went against my objective of evaluating General Purpose Models</p>\n<hr>\n<p><strong>2. Time-budget overshoots on Qwen3-30B-A3B:</strong> This discrepancy comes down to a combination of my dynamic budget logic, step counts, and the underlying model architectures. During early testing, I observed that hard-capping the time per problem often starved earlier problems of the setup time they needed, leaving excessive, unusable time for later problems (since I strictly limited the maximum number of reasoning steps). To counter this, my Time Controller allowed early problems to \"borrow\" compute budget against the global 5-hour limit. This was developed on the premise that Qwen3.5 would be able to discard the unneeded time by convering to a solution and not eat through it's budget. Because Qwen3 struggled more with initial logical paths it struggled to converge to a solution as fast as it's newer sibling and ate through it's time.</p>\n<p>Consequently, Qwen3 actively consumed this \"borrowed\" early time by exhausting its maximum allowed reasoning steps for the earlier problems. Given my setup was quite lenient in letting the earlier problems borrow significant time, Qwen3 ended up eating up all of it's time before it reached the later problems. In contrast to Qwen3.5. Furthermore, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing. Qwen3.5 simply executed the loops faster and with fewer errors, whereas Qwen3 weaponized the \"borrowed\" time against itself, leading to the late-stage timeout shown in the AIME benchmark, since it used the borrowed time on easier problems.</p>\n<hr>\n<p><strong>3. AIME ordering and difficulty ramp:</strong> This is a fantastic and highly insightful observation, as this is a genuine limitation of my ablation study. Given the strict compute limitations and the fact that I was running these benchmarks using Kaggle's finite GPU hours, I hastily executed the AIME benchmark in its default sequential order to generate the ablation plots for the write-up before access to H100 was revoked. Given I was working on my submission up until hours before the deadline, I didn't have the time I wanted to run my ablation studies, so I just ran something as fast as I could in order to have something to show for my write-up.</p>\n<p>That said, I completely agree that the default difficulty ramp of AIME interacted poorly with my \"borrowing\" mechanism. Because the early problems were easier, the Qwen 3.5 was able to solve them significantly quicker, while Qwen3 struggled singificantly from the third problem onwards, which means it used up all the time without ever tackling the harder problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases. It is a limitation of my testing methodology that I will surely take into account for future work.</p>\n<hr>\n<p>I appreciate the time you took to evaluate my work,</p>\n<p>Best Regards</p>",
          "rawMarkdown": "Hi, Thank you for the thorough review and the questions. Below I provide my initial response to each one of these.\n\n**1. ORM/PRM to ranking evaluator pivot:** Unfortunately (and this was an honest mistake on my part for not keeping my earlier notebooks), I did not preserve the specific Kaggle notebook of my initial zero-shot PRM experiments once I finalized the Ranking-Based Judge architecture. However, the PRM setup I tested was heavily adapted from the step-wise evaluation format introduced in _\"Let's Verify Step by Step\"_ (Lightman et al., 2023).\n\nMy prompt instructed the LLM to read the generated reasoning (the content inside the `<think> </think>` blocks, which was quite time expensive on it's own) and assign each sentence and latex block a token classification of `[VALID]`, `[INVALID]`, or `[NEUTRAL]` to each logical step, calculating a final confidence score based on the ratio of valid steps. The data point that forced me to pivot was the high false-positive rate. General-purpose models exhibited severe \"confirmation bias\" when acting as zero-shot PRMs; if an early mathematical step contained a subtle arithmetic error but the subsequent logic flowed consistently from that error, the model would confidently grade the remaining steps as `[VALID]`, leading to a high overall score for an incorrect solution. Switching to a Ranking Judge bypassed this step-wise hallucination by forcing the model into a comparative analysis (Solution A vs. Solution B), which proved vastly more reliable zero-shot.\n\nIn general as demonstrated in OpenAI's research, such evaluators work with specific fine-tuned models, which went against my objective of evaluating General Purpose Models\n\n---\n**2. Time-budget overshoots on Qwen3-30B-A3B:** This discrepancy comes down to a combination of my dynamic budget logic, step counts, and the underlying model architectures. During early testing, I observed that hard-capping the time per problem often starved earlier problems of the setup time they needed, leaving excessive, unusable time for later problems (since I strictly limited the maximum number of reasoning steps). To counter this, my Time Controller allowed early problems to \"borrow\" compute budget against the global 5-hour limit. This was developed on the premise that Qwen3.5 would be able to discard the unneeded time by convering to a solution and not eat through it's budget. Because Qwen3 struggled more with initial logical paths it struggled to converge to a solution as fast as it's newer sibling and ate through it's time.\n\nConsequently, Qwen3 actively consumed this \"borrowed\" early time by exhausting its maximum allowed reasoning steps for the earlier problems. Given my setup was quite lenient in letting the earlier problems borrow significant time, Qwen3 ended up eating up all of it's time before it reached the later problems. In contrast to Qwen3.5. Furthermore, Qwen3.5’s hybrid Gated DeltaNet / Attention architecture allowed for significantly faster token generation and context processing. Qwen3.5 simply executed the loops faster and with fewer errors, whereas Qwen3 weaponized the \"borrowed\" time against itself, leading to the late-stage timeout shown in the AIME benchmark, since it used the borrowed time on easier problems.\n\n--- \n**3. AIME ordering and difficulty ramp:** This is a fantastic and highly insightful observation, as this is a genuine limitation of my ablation study. Given the strict compute limitations and the fact that I was running these benchmarks using Kaggle's finite GPU hours, I hastily executed the AIME benchmark in its default sequential order to generate the ablation plots for the write-up before access to H100 was revoked. Given I was working on my submission up until hours before the deadline, I didn't have the time I wanted to run my ablation studies, so I just ran something as fast as I could in order to have something to show for my write-up.\n\nThat said, I completely agree that the default difficulty ramp of AIME interacted poorly with my \"borrowing\" mechanism. Because the early problems were easier, the Qwen 3.5 was able to solve them significantly quicker, while Qwen3 struggled singificantly from the third problem onwards, which means it used up all the time without ever tackling the harder problems. Running this benchmark with a randomized problem order would have undoubtedly isolated the model's baseline compute requirements from the controller's behavioral biases. It is a limitation of my testing methodology that I will surely take into account for future work.\n\n---\n\nI appreciate the time you took to evaluate my work,\n\nBest Regards"
        }
      ]
    },
    {
      "id": 3445851,
      "postDate": "2026-04-20T15:58:23.240Z",
      "content": "<p>If you want this writeup to be considered towards the Write-Up Prize, you need to make a comment here: <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703\" target=\"_blank\">https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703</a> </p>\n<p>You will need to follow the instructions in that comment, and link to the writeup and also provide some further links to either HuggingFace or Google Colab notebook.</p>",
      "rawMarkdown": "If you want this writeup to be considered towards the Write-Up Prize, you need to make a comment here: https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/discussion/689703 \n\nYou will need to follow the instructions in that comment, and link to the writeup and also provide some further links to either HuggingFace or Google Colab notebook."
    },
    {
      "id": 3456915,
      "postDate": "2026-05-12T18:30:47.810Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T04:21:07Z",
  "competition_id": 118448,
  "competition_slug": "ai-mathematical-olympiad-progress-prize-3",
  "team_id": 15183920,
  "solution_url": "/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/pushing-the-limits-of-general-purpose-llms-on-math"
}