Challenge
The NVIDIA Nemotron Model Reasoning Challenge asked participants to improve reasoning accuracy using the Nemotron-3-Nano-30B model. The final submission had to be a compatible LoRA adapter with rank no greater than 32. Evaluation used deterministic vLLM generation and extracted the final answer from a \boxed{{}} expression.
Benchmark analysis
I treated the task as a collection of reasoning families rather than one generic prompt. The working taxonomy covered bit manipulation, physics-style parameter inference, mathematical transformations, substitution ciphers, numeral systems and custom operator-rule discovery.
Each family received a deterministic solving procedure: classify the task, inspect key diagnostics, generate a rule hypothesis, verify it against examples, apply it to the query and emit the exact answer format.
Synthetic reasoning data
The training data used compact reasoning traces so the adapter would learn a repeatable process without wasting sequence capacity. A typical trace followed:
- Task-family classification.
- Two or three decisive observations.
- A candidate rule and verification across examples.
- A concise “rule found” statement.
- Application to the query.
- A final answer inside
\boxed{{}}.
Long exploratory chains and rejected hypotheses were removed from the training target. The goal was to teach the winning reasoning path while retaining verification.
4-bit QLoRA-style fine-tuning
The training workflow used Transformers, PEFT, Accelerate, bitsandbytes, TRL and Safetensors. The base model was loaded in low precision while a small set of LoRA adapter parameters remained trainable, enabling adaptation of a 30B-class model within practical GPU-memory limits.
Compatibility problems solved
The model architecture and 4-bit path exposed several implementation issues. I built a setup workflow that:
- Downloaded and validated model shards before training.
- Disabled a fused Mamba path that was incompatible with 4-bit weights.
- Added a Python fallback for an RMSNorm-related path.
- Resolved MoE
index_add_and dummy-expert dtype mismatches. - Cleared cached model modules so patched source was used consistently.
Checkpoint and submission workflow
The final workflow selected checkpoint-1056, loaded its adapter weights, cast trainable parameters to float16, validated the required adapter_config.json and adapter_model.safetensors files, and packaged them into submission.zip.
Result
Across iterative data, prompting and fine-tuning experiments, the competition score improved from approximately 0.53 to 0.668.
What I learned
- Reasoning-data quality and output discipline can matter more than simply increasing dataset size.
- Deterministic evaluation changes the optimisation target: exact formatting is part of model quality.
- Low-precision fine-tuning is as much a systems-integration problem as a modelling problem.
- Checkpoint selection should combine training signals, local evaluation and competition feedback.