File size: 2,135 Bytes
1a4c302 | 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | ---
license: apache-2.0
base_model: Qwen/Qwen3-1.7B
tags:
- safety
- classifier
- knowledge-distillation
- minillm
- dia-guard
language:
- en
---
# 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
```python
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))
```
|