nvidia/OpenCodeReasoning-2
Viewer • Updated • 2.16M • 7.95k • 60
How to use NANI-Nithin/MiniCPM5-2B-OpenCodeReasoning2-LoRA with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("openbmb/MiniCPM5-2B")
model = PeftModel.from_pretrained(base_model, "NANI-Nithin/MiniCPM5-2B-OpenCodeReasoning2-LoRA")QLoRA adapter for openbmb/MiniCPM5-2B, trained on a filtered subset of
nvidia/OpenCodeReasoning-2.
This is not trained on the full corpus. OpenCodeReasoning-2 holds ~1.4M Python and ~1.1M C++ rows; this adapter uses 50000 rows (12053 unique questions), selected as:
split="python" only (C++ skipped)judgement == "right" and pass_rate >= 0.8 (rows with pass_rate == -1 dropped)pass_rate r1_generation per question_id, then extra
high-pass solutions until 50000 rowsquestion as "-") by joining question_id to
nvidia/OpenCodeReasoning split_0 id -> input, with a dataset/split/index fallback into
BAAI/TACO, codeparrot/apps, deepmind/code_contests and open-r1/codeforcesOpenCodeReasoning-1 rows were not concatenated as extra training data - OCR-2 supersedes OCR-1 for generations, so mixing them would duplicate.
| Method | 4-bit NF4 QLoRA (double quant, bf16 compute) |
| LoRA | r=16, alpha=32, dropout=0.05 |
| Targets | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainer | TRL SFTTrainer, MiniCPM chat template |
| Schedule | 1 epoch, seq 4096, bs 1 x grad-accum 8, lr 1e-4 cosine, warmup 0.03 |
| Optimizer | paged_adamw_8bit, gradient checkpointing |
| Hardware | 1x A100 40GB (Modal) |
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("openbmb/MiniCPM5-2B", trust_remote_code=True, device_map="auto")
tok = AutoTokenizer.from_pretrained("NANI-Nithin/MiniCPM5-2B-OpenCodeReasoning2-LoRA", trust_remote_code=True)
model = PeftModel.from_pretrained(base, "NANI-Nithin/MiniCPM5-2B-OpenCodeReasoning2-LoRA")
msgs = [{"role": "user", "content": "Write a Python function returning the n-th Fibonacci number."}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
print(tok.decode(model.generate(ids, max_new_tokens=512)[0], skip_special_tokens=True))
@article{ahmad2025opencodereasoning,
title={OpenCodeReasoning: Advancing Data Distillation for Competitive Coding},
author={Ahmad, Wasi Uddin and Narenthiran, Sean and Majumdar, Somshubra and Ficek, Aleksander and Jain, Siddhartha and Huang, Jocelyn and Noroozi, Vahid and Ginsburg, Boris},
journal={arXiv preprint arXiv:2504.01943},
year={2025}
}
Base model
openbmb/MiniCPM5-2B