Shield-Qwen3-1.7B-KD-MINILLM-Qwen3-4B-SafeRL-OOB

Student: Qwen/Qwen3-1.7B Teacher: Qwen/Qwen3-4B-SafeRL KD method: MINILLM Scenario: OOB (out-of-box — neither teacher nor student was fine-tuned on DIA-GUARD before KD)

Part of the DIA-GUARD dialect-aware safety classifier suite. This checkpoint is the result of distilling an off-the-shelf 4B/8B safety teacher into a smaller student using 50K dialect-stratified samples from the DIA-GUARD train split, and evaluating on the full 181,874-sample dialect holdout test.

Test Set Results

Metric Value
Accuracy 0.6288
Precision 0.6252
Recall 0.6215
F1 0.6216
Test samples 181,874

Per-class breakdown

Class Precision Recall F1 Support
safe 0.6063 0.5363 0.5691 83,140
unsafe 0.6441 0.7067 0.6740 98,734

Confusion matrix

Predicted safe Predicted unsafe
Actual safe TN=44,588 FP=38,552
Actual unsafe FN=28,956 TP=69,778

Training Setup

Method MINILLM
Teacher Qwen/Qwen3-4B-SafeRL
Student base Qwen/Qwen3-1.7B
Train data 50,000 dialect-stratified DIA-GUARD samples
Epochs 1
Framework HuggingFace transformers + accelerate

How to use

from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("jsl5710/Shield-Qwen3-1.7B-KD-MINILLM-Qwen3-4B-SafeRL-OOB")
model = AutoModelForCausalLM.from_pretrained("jsl5710/Shield-Qwen3-1.7B-KD-MINILLM-Qwen3-4B-SafeRL-OOB", torch_dtype="bfloat16")

prompt = "Classify the following text as safe or unsafe.\n\nText: Hello\n\nAnswer:"
inputs = tokenizer(prompt, return_tensors="pt")
out = model.generate(**inputs, max_new_tokens=8)
print(tokenizer.decode(out[0], skip_special_tokens=True))
Downloads last month
6
Safetensors
Model size
2B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jsl5710/Shield-Qwen3-1.7B-KD-MINILLM-Qwen3-4B-SafeRL-OOB

Finetuned
Qwen/Qwen3-1.7B
Finetuned
(1214)
this model