File size: 1,790 Bytes
82cf7e4 86f6f0b 82cf7e4 86f6f0b 82cf7e4 86f6f0b 82cf7e4 86f6f0b | 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 | ---
license: apache-2.0
base_model: Qwen/Qwen3.6-27B
tags: [debugging, code, reinforcement-learning, gdpo, precisecoder]
---
# PreciseCoder-27B
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`.
|