DRPO / README.md
Leotsia's picture
Expand model card with method and evaluation details
812a57b verified
|
Raw
History Blame Contribute Delete
6.2 kB
---
license: apache-2.0
library_name: transformers
base_model: JetLM/SDAR-1.7B-Chat
pipeline_tag: text-generation
tags:
- diffusion-language-model
- reinforcement-learning
- mathematical-reasoning
- remasking
- drpo
model-index:
- name: DRPO
results:
- task:
type: text-generation
name: Text Generation
dataset:
type: HuggingFaceH4/MATH-500
name: MATH-500
split: test
metrics:
- type: accuracy
name: Accuracy
value: 64.4
---
# DRPO
DRPO (Denoising and Remasking Policy Optimization) is a full-weight reasoning
checkpoint derived from
[`JetLM/SDAR-1.7B-Chat`](https://huggingface.co/JetLM/SDAR-1.7B-Chat).
It augments a block-wise masked diffusion language model with a lightweight
remasking head that learns whether each visible token should be kept or revised.
Unlike confidence-only remasking heuristics, DRPO learns revision decisions from
rollouts. It rewards revisions that improve the final generation relative to an
all-keep continuation from the same intermediate state, while penalizing
unnecessary remasking.
This repository contains the inference checkpoint saved after 450 optimizer
updates. Optimizer, scheduler, and RNG states are intentionally excluded.
## Method
Training has two stages:
1. **Local remasking warmup.** The base denoiser is frozen while the remasking
head learns a soft token-level target. Correct tokens are assigned a keep
target; for mismatched tokens, the target reflects how much probability mass
the denoiser assigns to alternatives ranked above the selected token.
2. **Rollout optimization.** Seven sampled keep/remask branches and one all-keep
reference branch continue from the same parent state. Denoising uses a
group-relative branch advantage. Remasking uses a keep-relative advantage
based on improvement over the all-keep branch, with an explicit remasking
cost. The two objectives are optimized jointly.
The rollout return combines task outcome with an optional step-level confidence
signal derived from changes in the top-1/top-2 probability gap. The default
revision window is three blocks.
## Evaluation
### Main results
All values are percentages; higher is better. Math tasks use exact match after
answer extraction, and code tasks use unit-test pass rate.
| Model | GSM8K | MATH-500 | MMLU | HumanEval | MBPP | Average |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| SDAR-1.7B-Chat | 80.10 | 63.20 | 62.90 | 61.60 | 61.10 | 65.36 |
| SFT | 80.53 | 59.80 | 63.56 | 60.37 | 61.87 | 65.23 |
| **DRPO** | **82.34** | **64.40** | **63.57** | **60.98** | **62.26** | **66.71** |
For MATH-500, DRPO answered 322 of 500 examples correctly. This result was
produced with the project-specific OpenCompass evaluation adapter on
2026-06-15.
### MATH-500 decoding configuration
| Setting | Value |
| --- | ---: |
| Block length | 4 |
| Maximum new tokens | 1536 |
| Sampling temperature | 0.0 |
| Confidence threshold | 0.95 |
| Remask policy | learned gap head |
| Remask threshold | 0.50 |
| Remask interval | 2 blocks |
| Remask window | 3 blocks |
| Remask start | 192 generated tokens |
| Prefix guard | 192 generated tokens |
| Tail guard | 1 block |
The reported score depends on the custom remasking decoder and these settings;
it is not the result of the default Transformers generation pipeline.
### Decoding behavior
| Model | Tokens / denoising step | Net progress / step | Denoising steps | Remasking steps |
| --- | ---: | ---: | ---: | ---: |
| SDAR-1.7B-Chat | 2.75 | 2.75 | 96.52 | — |
| SFT | 2.63 | 1.62 | 101.17 | 48.30 |
| **DRPO** | **2.69** | **1.98** | **97.44** | **30.22** |
On GSM8K, learned remasking rescued 68 initially incorrect examples while
damaging 38 initially correct examples, for a net gain of 30 examples. It also
used fewer remasking steps than the evaluated random, low-confidence, margin,
budgeted-confidence, and supervised remasking baselines.
## Loading the checkpoint
The model contains custom SDAR code, so `trust_remote_code=True` is required.
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "Leotsia/DRPO"
tokenizer = AutoTokenizer.from_pretrained(
model_id,
trust_remote_code=True,
)
model = AutoModelForCausalLM.from_pretrained(
model_id,
trust_remote_code=True,
torch_dtype="auto",
device_map="auto",
)
```
The training and evaluation environment used Transformers 4.52.4. Reproducing
the reported results requires the project-specific remasking decoder and
evaluation adapter in addition to the checkpoint.
## Training details
| Item | Value |
| --- | --- |
| Backbone | `JetLM/SDAR-1.7B-Chat` |
| Parameter count | 1.7B |
| Training data | 7,490 competition-math training examples |
| Fine-tuning | Full parameters |
| Rollout branches | 7 sampled revision branches + 1 all-keep reference |
| Default candidate window | 3 blocks |
| Selected checkpoint | Optimizer step 450 |
In the branch-count ablation, seven sampled revision branches achieved the
highest peak group accuracy among the tested settings of one, four, and seven
branches.
## Intended use
This checkpoint is intended for research on masked diffusion language models,
mathematical reasoning, learned token revision, and rollout-based optimization.
It is not designed as a drop-in replacement for an autoregressive chat model.
## Limitations
This is a research checkpoint focused on reasoning benchmarks. It has not been
comprehensively evaluated for factual reliability, safety, bias, multilingual
use, or high-stakes applications. Generated reasoning can be incorrect even
when fluent, and benchmark performance may vary with prompts, extraction rules,
randomness, hardware, and decoder implementation.
Because loading executes repository-provided Python code, review the files and
pin a repository revision in security-sensitive deployments.
## License and attribution
The checkpoint is released under Apache-2.0, following the license metadata of
the SDAR-1.7B-Chat base model. Please also cite and follow the attribution
guidance of the [SDAR project](https://github.com/JetAstra/SDAR).