{
  "id": 573671,
  "title": "4th place solution",
  "content": "<p>4th Place Solution – AIMO Reasoning Challenge</p>\n<p>Summary</p>\n<p>This solution is based on a single quantized 14B DeepSeek model, using a simple, fixed inference strategy without time management or system prompts. I focused on robustness over leaderboard tuning, avoiding overfitting by validating locally on a custom set of math problems. Despite its simplicity, the setup performed surprisingly well on the private leaderboard.</p>\n<ol>\n<li>Model</li>\n</ol>\n<p>I used the DeepSeek-R1-Distill-Qwen-14B-AWQ-4bits model, specifically the AWQ-quantized version by casperhansen, available on Hugging Face and Kaggle:</p>\n<p><a href=\"https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\" target=\"_blank\">https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen</a></p>\n<p>Like many others, I found the 14B model to be a good compromise between the quality of the larger DeepSeek 32B and the speed of the 7B. The distilled version made it feasible to run efficiently on Kaggle while still delivering strong reasoning performance.</p>\n<ol>\n<li>Motivation</li>\n</ol>\n<p>My main motivation was to keep things simple and avoid overfitting to the public leaderboard. I took two specific measures to support this:</p>\n<ol>\n<li><p>Local validation was done using a set of 50 handpicked problems — a mix of AIME, AIME 2025, and the provided reference questions. For each model or parameter change, I ran multiple validation passes, shuffling the questions each time. This gave me a more stable and realistic picture of model performance than relying solely on the public leaderboard.</p></li>\n<li><p>No time management was used during generation. While many strong solutions relied on dynamic token allocation, I chose a fixed strategy — splitting tokens and sequences equally across the 50 problems. Since questions were served in random order, the effectiveness of time management became extremely sensitive to question sequence. That likely explains some of the large fluctuations seen in public notebook results.</p></li>\n</ol>\n<p>Instead of tuning for leaderboard score, I used the public set only to help select values for max_tokens and number of sequences — prioritizing throughput over score. This approach was intentionally conservative and focused on robustness. Given that, the final result was unexpected — but not unusual in competitions like this, where significant leaderboard shakeups are common.</p>\n<ol>\n<li>Inference</li>\n</ol>\n<p>Inference was performed using vLLM 0.7.3 with FlashInfer 0.2.2 enabled.</p>\n<p>I used a single prompt. Following DeepSeek’s Usage Recommendations, I did not use a system prompt. Instead, I appended the instruction directly to the user message. This seemed to improve output quality on my validation set, so I kept this approach throughout.</p>\n<p>I also tested different sampling settings:<br>\n    •   temperature between 0.6 and 0.8<br>\n    •   max_p = 0.95</p>\n<p>However, I didn’t see clear improvements compared to the defaults used in most public notebooks. In the end, I stuck with the common settings:<br>\ntemperature = 1.0, min_p = 0.01, and top_p = 1.0.</p>\n<ol>\n<li>Final Notes &amp; Acknowledgements</li>\n</ol>\n<p>I didn’t apply any postprocessing beyond selecting the best model variant based on token and sequence throughput — not leaderboard score. I chose the configuration that generated the most content across the 50 validation problems, which gave more consistent results.</p>\n<p>A few acknowledgements:<br>\n    •   DeepSeek – for releasing the R1 reasoning model mid-competition. It was a game-changer and quickly became central to nearly all top solutions.<br>\n    •   Md Boktiar Mahbub Murad and others for publicly sharing DeepSeek-based notebooks that helped shake up the leaderboard and inspired many.<br>\n    •   Casper Hansen – for providing the AWQ-quantized 14B model that worked smoothly with vLLM and made this solution possible.</p>\n<p>Thanks</p>\n<p>Thanks again to Aimo and Kaggle for organizing this competition. I learned a lot and really appreciated the chance to explore the problem. Also, thanks to the Kaggle community — the shared discussions and ideas made this a genuinely enjoyable experience.</p>\n<p>Although my solution was extremely simple, I ended up placing 4th.<br>\nPublic score: 25/50<br>\nPrivate score: 29/50</p>\n<p>Notebook: <a href=\"https://www.kaggle.com/code/sorenravn/aimo-2-4th-place\" target=\"_blank\">https://www.kaggle.com/code/sorenravn/aimo-2-4th-place</a><br>\nModel: <a href=\"https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\" target=\"_blank\">https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen</a></p>",
  "comments": [
    {
      "id": 3181140,
      "author_name": "Chew Kok Wah",
      "author_url": "",
      "post_date": "2025-04-17T14:12:06.043000",
      "content": "<ol>\n<li><p>What is the range of score that you got when you resubmit the exact same notebook code during your Public LB test?</p></li>\n<li><p>You forgot to open source your actual winning Submission notebook (the original one with Private score 29 that won the Competition).</p></li>\n</ol>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 3183846,
      "author_name": "Chew Kok Wah",
      "author_url": "",
      "post_date": "2025-04-21T11:12:44.833000",
      "content": "<p><a href=\"https://www.kaggle.com/friederrr\" target=\"_blank\">@friederrr</a> This Winner did not Open Source his Actual Winning final Submission Notebook, he only shared a self-claimed cleaned version of unknown notebook.</p>\n<p>For transparency, fairness and to avoid unnecessary speculation, All Winners should be following the same Competition Rules.</p>",
      "votes": -2,
      "replies": []
    }
  ],
  "comment_count": 2,
  "messages": [
    {
      "id": 3180932,
      "postDate": "2025-04-17T09:38:18.867Z",
      "content": "<p>4th Place Solution – AIMO Reasoning Challenge</p>\n<p>Summary</p>\n<p>This solution is based on a single quantized 14B DeepSeek model, using a simple, fixed inference strategy without time management or system prompts. I focused on robustness over leaderboard tuning, avoiding overfitting by validating locally on a custom set of math problems. Despite its simplicity, the setup performed surprisingly well on the private leaderboard.</p>\n<ol>\n<li>Model</li>\n</ol>\n<p>I used the DeepSeek-R1-Distill-Qwen-14B-AWQ-4bits model, specifically the AWQ-quantized version by casperhansen, available on Hugging Face and Kaggle:</p>\n<p><a href=\"https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\" target=\"_blank\">https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen</a></p>\n<p>Like many others, I found the 14B model to be a good compromise between the quality of the larger DeepSeek 32B and the speed of the 7B. The distilled version made it feasible to run efficiently on Kaggle while still delivering strong reasoning performance.</p>\n<ol>\n<li>Motivation</li>\n</ol>\n<p>My main motivation was to keep things simple and avoid overfitting to the public leaderboard. I took two specific measures to support this:</p>\n<ol>\n<li><p>Local validation was done using a set of 50 handpicked problems — a mix of AIME, AIME 2025, and the provided reference questions. For each model or parameter change, I ran multiple validation passes, shuffling the questions each time. This gave me a more stable and realistic picture of model performance than relying solely on the public leaderboard.</p></li>\n<li><p>No time management was used during generation. While many strong solutions relied on dynamic token allocation, I chose a fixed strategy — splitting tokens and sequences equally across the 50 problems. Since questions were served in random order, the effectiveness of time management became extremely sensitive to question sequence. That likely explains some of the large fluctuations seen in public notebook results.</p></li>\n</ol>\n<p>Instead of tuning for leaderboard score, I used the public set only to help select values for max_tokens and number of sequences — prioritizing throughput over score. This approach was intentionally conservative and focused on robustness. Given that, the final result was unexpected — but not unusual in competitions like this, where significant leaderboard shakeups are common.</p>\n<ol>\n<li>Inference</li>\n</ol>\n<p>Inference was performed using vLLM 0.7.3 with FlashInfer 0.2.2 enabled.</p>\n<p>I used a single prompt. Following DeepSeek’s Usage Recommendations, I did not use a system prompt. Instead, I appended the instruction directly to the user message. This seemed to improve output quality on my validation set, so I kept this approach throughout.</p>\n<p>I also tested different sampling settings:<br>\n    •   temperature between 0.6 and 0.8<br>\n    •   max_p = 0.95</p>\n<p>However, I didn’t see clear improvements compared to the defaults used in most public notebooks. In the end, I stuck with the common settings:<br>\ntemperature = 1.0, min_p = 0.01, and top_p = 1.0.</p>\n<ol>\n<li>Final Notes &amp; Acknowledgements</li>\n</ol>\n<p>I didn’t apply any postprocessing beyond selecting the best model variant based on token and sequence throughput — not leaderboard score. I chose the configuration that generated the most content across the 50 validation problems, which gave more consistent results.</p>\n<p>A few acknowledgements:<br>\n    •   DeepSeek – for releasing the R1 reasoning model mid-competition. It was a game-changer and quickly became central to nearly all top solutions.<br>\n    •   Md Boktiar Mahbub Murad and others for publicly sharing DeepSeek-based notebooks that helped shake up the leaderboard and inspired many.<br>\n    •   Casper Hansen – for providing the AWQ-quantized 14B model that worked smoothly with vLLM and made this solution possible.</p>\n<p>Thanks</p>\n<p>Thanks again to Aimo and Kaggle for organizing this competition. I learned a lot and really appreciated the chance to explore the problem. Also, thanks to the Kaggle community — the shared discussions and ideas made this a genuinely enjoyable experience.</p>\n<p>Although my solution was extremely simple, I ended up placing 4th.<br>\nPublic score: 25/50<br>\nPrivate score: 29/50</p>\n<p>Notebook: <a href=\"https://www.kaggle.com/code/sorenravn/aimo-2-4th-place\" target=\"_blank\">https://www.kaggle.com/code/sorenravn/aimo-2-4th-place</a><br>\nModel: <a href=\"https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\" target=\"_blank\">https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen</a></p>",
      "rawMarkdown": "4th Place Solution – AIMO Reasoning Challenge\n\nSummary\n\nThis solution is based on a single quantized 14B DeepSeek model, using a simple, fixed inference strategy without time management or system prompts. I focused on robustness over leaderboard tuning, avoiding overfitting by validating locally on a custom set of math problems. Despite its simplicity, the setup performed surprisingly well on the private leaderboard.\n\n\n1. Model\n\nI used the DeepSeek-R1-Distill-Qwen-14B-AWQ-4bits model, specifically the AWQ-quantized version by casperhansen, available on Hugging Face and Kaggle:\n\nhttps://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\n\nLike many others, I found the 14B model to be a good compromise between the quality of the larger DeepSeek 32B and the speed of the 7B. The distilled version made it feasible to run efficiently on Kaggle while still delivering strong reasoning performance.\n\n\n2. Motivation\n\nMy main motivation was to keep things simple and avoid overfitting to the public leaderboard. I took two specific measures to support this:\n\n1.\tLocal validation was done using a set of 50 handpicked problems — a mix of AIME, AIME 2025, and the provided reference questions. For each model or parameter change, I ran multiple validation passes, shuffling the questions each time. This gave me a more stable and realistic picture of model performance than relying solely on the public leaderboard.\n\n2.\tNo time management was used during generation. While many strong solutions relied on dynamic token allocation, I chose a fixed strategy — splitting tokens and sequences equally across the 50 problems. Since questions were served in random order, the effectiveness of time management became extremely sensitive to question sequence. That likely explains some of the large fluctuations seen in public notebook results.\n\nInstead of tuning for leaderboard score, I used the public set only to help select values for max_tokens and number of sequences — prioritizing throughput over score. This approach was intentionally conservative and focused on robustness. Given that, the final result was unexpected — but not unusual in competitions like this, where significant leaderboard shakeups are common.\n\n3. Inference\n\nInference was performed using vLLM 0.7.3 with FlashInfer 0.2.2 enabled.\n\nI used a single prompt. Following DeepSeek’s Usage Recommendations, I did not use a system prompt. Instead, I appended the instruction directly to the user message. This seemed to improve output quality on my validation set, so I kept this approach throughout.\n\nI also tested different sampling settings:\n\t•\ttemperature between 0.6 and 0.8\n\t•\tmax_p = 0.95\n\nHowever, I didn’t see clear improvements compared to the defaults used in most public notebooks. In the end, I stuck with the common settings:\ntemperature = 1.0, min_p = 0.01, and top_p = 1.0.\n\n\n\n4. Final Notes & Acknowledgements\n\nI didn’t apply any postprocessing beyond selecting the best model variant based on token and sequence throughput — not leaderboard score. I chose the configuration that generated the most content across the 50 validation problems, which gave more consistent results.\n\nA few acknowledgements:\n\t•\tDeepSeek – for releasing the R1 reasoning model mid-competition. It was a game-changer and quickly became central to nearly all top solutions.\n\t•\tMd Boktiar Mahbub Murad and others for publicly sharing DeepSeek-based notebooks that helped shake up the leaderboard and inspired many.\n\t•\tCasper Hansen – for providing the AWQ-quantized 14B model that worked smoothly with vLLM and made this solution possible.\n\nThanks\n\nThanks again to Aimo and Kaggle for organizing this competition. I learned a lot and really appreciated the chance to explore the problem. Also, thanks to the Kaggle community — the shared discussions and ideas made this a genuinely enjoyable experience.\n\nAlthough my solution was extremely simple, I ended up placing 4th.\nPublic score: 25/50\nPrivate score: 29/50\n\nNotebook: https://www.kaggle.com/code/sorenravn/aimo-2-4th-place\nModel: https://www.kaggle.com/models/konstantinboyko/qwen-14b-awq-casperhansen\n",
      "votes": 16
    },
    {
      "id": 3181140,
      "postDate": "2025-04-17T14:12:06.043Z",
      "content": "<ol>\n<li><p>What is the range of score that you got when you resubmit the exact same notebook code during your Public LB test?</p></li>\n<li><p>You forgot to open source your actual winning Submission notebook (the original one with Private score 29 that won the Competition).</p></li>\n</ol>",
      "rawMarkdown": "1. What is the range of score that you got when you resubmit the exact same notebook code during your Public LB test?\n\n2. You forgot to open source your actual winning Submission notebook (the original one with Private score 29 that won the Competition).",
      "votes": 1
    },
    {
      "id": 3183846,
      "postDate": "2025-04-21T11:12:44.833Z",
      "content": "<p><a href=\"https://www.kaggle.com/friederrr\" target=\"_blank\">@friederrr</a> This Winner did not Open Source his Actual Winning final Submission Notebook, he only shared a self-claimed cleaned version of unknown notebook.</p>\n<p>For transparency, fairness and to avoid unnecessary speculation, All Winners should be following the same Competition Rules.</p>",
      "rawMarkdown": "@friederrr This Winner did not Open Source his Actual Winning final Submission Notebook, he only shared a self-claimed cleaned version of unknown notebook.\n\nFor transparency, fairness and to avoid unnecessary speculation, All Winners should be following the same Competition Rules.",
      "votes": -2
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T06:42:01Z",
  "competition_id": 86023,
  "competition_slug": "ai-mathematical-olympiad-progress-prize-2",
  "team_id": 12894658,
  "solution_url": "/competitions/ai-mathematical-olympiad-progress-prize-2/writeups/sravn-4th-place-solution"
}