Downloads · 30 days
491
6% of all-time downloads
RISys-Lab/RedSage-Qwen3-8B-DPO
RedSage-Qwen3-8B-DPO is a text generation model from RISys-Lab. Use it when you need the model to write or continue text. It is set up for transformers.
<div align="center" <img src="https://img.shields.io/badge/Task-Cybersecurity-red" alt="Cybersecurity" <img src="https://img.shields.io/badge/Stage-DPOAlignment-blue" alt="DPO" </div
Downloads · 30 days
491
6% of all-time downloads
All-time downloads
8.1K
Public
Parameters
8.2B
16.4 GB on disk
Likes
17
Trending 1
Click a slice to open those files.
.safetensors16.4 GB · 100%
From the Hugging Face model README
RedSage-Qwen3-8B-DPO is the final, aligned version of the RedSage cybersecurity LLM series developed by RISysLab. It represents the fourth and final stage of the RedSage training pipeline.
This model is fine-tuned from RedSage-Qwen3-8B-Ins using Direct Preference Optimization (DPO) on the AllenAI Tulu 3 Preference Mixture. This alignment stage significantly enhances the model's general reasoning capabilities and safety behaviors while maintaining the deep cybersecurity domain expertise acquired during previous stages.
RedSage employs a multi-stage training pipeline. This model represents the output of Stage 4.
RedSage-Qwen3-8B-DPO (Current Model)
The model was aligned using the following high-quality preference dataset to ensure robust instruction following and general reasoning:
allenai/llama-3.1-tulu-3-8b-preference-mixtureRedSage-Qwen3-8B-DPO achieves the best balance between specialized domain knowledge and general capability among all RedSage variants.
| Category | Qwen3-8B (non-reasoning) | RedSage-8B-DPO |
|---|---|---|
| Macro Average | 81.85 | 84.83 |
| Knowledge (General) | 80.46 | 82.48 |
| Knowledge (Frameworks) | 78.82 | 83.80 |
| Skill (Offensive) | 86.16 | 88.54 |
| Tools (CLI) | 83.92 | 86.30 |
| Tools (Kali) | 75.56 | 79.30 |
| Benchmark | Qwen3-8B (non-reasoning) | RedSage-8B-DPO |
|---|---|---|
| Mean | 75.71 | 81.10 |
| CTI-Bench (MCQ) | 62.76 | 70.84 |
| CTI-Bench (RCM) | 54.00 | 70.60 |
| CyberMetric (500) | 88.60 | 90.00 |
| MMLU (Security) | 76.00 | 79.00 |
| SecBench (En) | 73.26 | 80.06 |
| SecEva (MCQ) | 65.46 | 74.22 |
| SECURE (CWET) | 88.11 | 91.35 |
| SECURE (KCV) | 87.42 | 82.86 |
| SECURE (MEAT) | 85.75 | 91.00 |
| Benchmark | Qwen3-8B (non-reasoning) | RedSage-8B-DPO |
|---|---|---|
| Mean | 65.92 | 74.33 |
| MMLU | 73.59 | 77.07 |
| ARC-C | 62.54 | 71.76 |
| GSM8K | 75.66 | 82.71 |
| HellaSwag | 56.70 | 79.87 |
| TruthfulQA | 45.23 | 52.47 |
| WinoGrande | 62.51 | 73.01 |
| IFEval | 85.21 | 83.44 |
Use the standard chat template for inference.
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "RISys-Lab/RedSage-Qwen3-8B-DPO"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto"
)
# Define the chat messages
messages = [
{"role": "system", "content": "You are RedSage, a helpful cybersecurity assistant."},
{"role": "user", "content": "Analyze the following log entry for potential indicators of compromise: 'POST /cgi-bin/test-cgi?* HTTP/1.1'"}
]
# Apply chat template
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
If you use this model or dataset, please cite our paper:
@inproceedings{suryanto2026redsage,
title={RedSage: A Cybersecurity Generalist {LLM}},
author={Naufal Suryanto and Muzammal Naseer and Pengfei Li and Syed Talal Wasim and Jinhui Yi and Juergen Gall and Paolo Ceravolo and Ernesto Damiani},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={https://openreview.net/forum?id=W4FAenIrQ2}
}