Downloads · 30 days
14
30% of all-time downloads
wflying/Qwen3.5-4B-RL-IF-CC-NGRPO
Qwen3.5-4B-RL-IF-CC-NGRPO is a image-text-to-text model from wflying. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
Qwen3.5-4B-RL-IF-CC-NGRPO is an instruction-following reinforcement learning model trained from Qwen/Qwen3.5-4B. Its training data comes from wflying/instruction-following-rl-content-constrained-30k.
Downloads · 30 days
14
30% of all-time downloads
All-time downloads
47
Public
Parameters
4.7B
9.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors9.3 GB · 100%
From the Hugging Face model README
Qwen3.5-4B-RL-IF-CC-NGRPO is an instruction-following reinforcement learning model trained from Qwen/Qwen3.5-4B. Its training data comes from wflying/instruction-following-rl-content-constrained-30k.
In addition to rewards for verifiable format constraints, the model uses an LLM judge to score the semantic correctness and compliance of response content. Training therefore considers both whether a response satisfies the required format and whether its content is valid, helping mitigate reward hacking caused by optimizing format rules alone. The model is further trained with NGRPO (Negative-enhanced Group Relative Policy Optimization), which uses advantage calibration to recover useful training signals from zero-variance negative groups that would otherwise have zero advantage. Asymmetric clipping then balances positive reinforcement and negative penalties, enabling the model to learn more effectively from complex and difficult instructions.
Rewards based only on programmatic rules can encourage a model to satisfy surface-level formatting requirements while ignoring semantic correctness. This model augments format scoring with LLM-judge-based content scoring to evaluate semantic validity and compliance, reducing format-driven reward hacking.
With standard GRPO, a sampled group in which every response receives a low score and the reward variance is zero also receives zero group-relative advantages. These difficult negative examples therefore provide no update signal. NGRPO addresses this issue with:
The table below reports absolute scores for four models across 12 evaluation metrics. IFEval /w content-constrained and IFBench /w content-constrained denote results obtained with semantic content-validity scoring enabled.
| Model | Mean | AdvancedIF | ComplexBench | EQBench | FollowBench | InfoBench | InverseIFEval | MultiChallenge | MultiIF | IFEval | IFEval /w content-constrained | IFBench | IFBench /w content-constrained |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Qwen3.5-4B | 53.49 | 27.42 | 60.60 | 67.70 | 47.28 | 82.36 | 24.70 | 32.26 | 80.78 | 80.22 | 80.22 | 29.67 | 28.67 |
| Qwen3.5-4B-RL-IF | 47.63 | 10.09 | 47.02 | 64.91 | 44.36 | 31.47 | 22.23 | 21.12 | 89.29 | 89.46 | 66.91 | 57.67 | 27.00 |
| Qwen3.5-4B-RL-IF-CC | 58.40 | 27.84 | 62.29 | 70.81 | 51.79 | 83.11 | 24.80 | 32.52 | 87.01 | 87.80 | 87.80 | 42.67 | 42.33 |
| Qwen3.5-4B-RL-IF-CC-NGRPO | 62.37 | 34.54 | 67.26 | 71.03 | 54.54 | 84.31 | 44.07 | 36.50 | 87.75 | 87.66 | 87.57 | 47.00 | 46.25 |
Under this evaluation setup, the model achieves a mean score of 62.37, improving by 8.88 points over Qwen3.5-4B (53.49) and by 3.97 points over Qwen3.5-4B-RL-IF-CC (58.40).
Use a recent version of transformers with Qwen3.5 support:
import torch
from transformers import AutoProcessor, Qwen3_5ForConditionalGeneration
model_id = "wflying/Qwen3.5-4B-RL-IF-CC-NGRPO"
model = Qwen3_5ForConditionalGeneration.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto",
)
processor = AutoProcessor.from_pretrained(model_id)
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Explain reinforcement learning in exactly three sentences.",
}
],
}
]
inputs = processor.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
with torch.inference_mode():
generated_ids = model.generate(**inputs, max_new_tokens=512)
generated_ids = generated_ids[:, inputs.input_ids.shape[1]:]
print(processor.batch_decode(generated_ids, skip_special_tokens=True)[0])
This model inherits the Apache License 2.0 from the base model. Users must also comply with the applicable terms of the training dataset and dependent components.