File size: 2,407 Bytes
82cf7e4
 
382746f
 
 
 
 
 
 
 
 
82cf7e4
382746f
82cf7e4
 
4040b8a
 
82cf7e4
 
 
86f6f0b
 
 
 
 
 
82cf7e4
 
 
 
 
86f6f0b
 
 
82cf7e4
 
 
 
86f6f0b
 
4040b8a
 
 
 
 
 
 
 
 
 
382746f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
---
base_model: Qwen/Qwen3.6-27B
license: apache-2.0
library_name: transformers
pipeline_tag: text-generation
tags:
- debugging
- code
- reinforcement-learning
- gdpo
- precisecoder
---

# PreciseCoder-27B

馃搫 [Paper (arXiv:2610.18755)](https://arxiv.org/abs/2610.18755) 路 馃寪 [Project page](https://precise-coder-rl.github.io/) 路 馃捇 [Code](https://github.com/precise-coder-rl/PreciseCoder)

Qwen3.6-27B post-trained with reinforcement learning for **precise debugging**: given buggy Python
code, produce a minimal, correct fix (PreciseCoder project). Best-validation checkpoint, global step 328 (2 epochs).

**Recipe.** GDPO from the base model (no SFT warm-start): two reward signals, unit-test pass (weight 2.0) and
unit-gated F1 (weight 1.0), each normalized within the rollout group before being combined into the advantage.
F1 is the edit-block precision/recall F1 against the ground-truth diff (PDB evaluator), counted only when the
unit tests pass. Trained on the PDB train split (buggy inputs only) with verl on 1 node of 8脳H200 (n=6 rollouts,
temperature 1.0, lr 1e-6, batch 32, max response 6144 tokens, KL loss 0.005, rollout TP=2, token-level rollout
importance sampling). Minimal-edit prompt template.

**Eval** (PDB benchmark, BigCodeBench + LiveCodeBench debugging tasks):

| eval | result |
|---|---|
| pdb_test (buggy inputs, 4k think + 2k answer) | unit 0.793 路 precision 0.792 路 recall 0.867 路 F1 0.810 路 edit lines 2.6 |
| gt_holdout (1512 clean inputs, 16k think + 4k answer) | no-op 45.8% 路 damage 11.1% 路 unit pass 89.0% |
| PDB-Wild (228 SWE-smith repo-level bugs) | unit 0.522 路 precision 0.551 路 recall 0.629 路 F1 0.566 路 edit lines 9.2 |

`no-op` = share of clean (bug-free) inputs returned unchanged; `damage` = share broken by an edit.

Load with `transformers` / vLLM (>=0.17) as a standard Qwen3.6 model (thinking enabled by default).
Source: verl experiment `qwen36-27b-GDPO_u2f1_f1ur_h200` (Delta, Oct 2026). The previous release
(GRPO, reward (unit + 0.5路F1)/1.5) is at revision `82cf7e4`.

## Citation

```bibtex
@article{precisecoder,
  title   = {{PreciseCoder}: Faithful and Generalizable Debugging Beyond Unit-Test Rewards},
  author  = {Zhan, Yunkai and Chai, Miaosen and Wang, Shangshang and Zhong, Jike and Yang, Yuqing and Fu, Deqing and Chang, Serina and Zhu, Wang Bill},
  journal = {arXiv preprint arXiv:2610.18755},
  year    = {2026}
}
```