Intended use
- Triage first pass only. It fast-labels an alert so a human (or a frontier model) sees
the shortlist. In AEGIS, a frontier model remains the judge — this adapter never makes
the final call on its own.
- Not a standalone IDS/WAF, not a detection engine, and not a substitute for authorization
or logging.
Training
Table | |
|---|
| Base | Qwen/Qwen3-8B (Apache-2.0) |
| Method | 4-bit NF4 QLoRA + gradient checkpointing (unsloth) |
| LoRA | r=16, alpha=32 on q,k,v,o,gate,up,down |
| Trainable params | 43,646,976 of 8.23B (0.53%) |
| Seq len | 2048 |
| Batch | 2 × 8 grad-accum (effective 16) |
| Epochs / LR | 2.0 / 2e-4 |
| Data | 42,174 train + 7,826 val (synthetic / public corpus) |
| Final train loss | 0.234 |
Held-out gate (eval)
Table with columns: Suite, Score, Note| Suite | Score | Note |
|---|
| historical | 33 / 37 | 4 misses (gate allows ≤ 5) |
| injection | 9 / 9 | 0 prompt-injection leaks |
| agentic | 10 / 13 | tracked |
| endpoint | 8 / 8 | tracked |
| tls | 12 / 13 | tracked |
| Result | PASS | |
Known misses (honest): none drop a malicious case to benign. The silent misses are
severity slips — suspicious → benign (EVAL-021, AGT-E07, AGT-E10) and under-rated
malicious → suspicious (EVAL-008, AGT-E09, TLS-E04), plus a couple of over-calls. This is
why it is a first pass with a frontier judge, not a final verdict.
Usage
from peft import PeftModelfrom transformers import AutoModelForCausalLM, AutoTokenizer base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-8B", device_map="auto", load_in_4bit=True)tok = AutoTokenizer.from_pretrained("Qwen/Qwen3-8B")model = PeftModel.from_pretrained(base, "mahendra1980/triage-qwen3-8b-public-v5")
In AEGIS:
LLM_BACKEND=local AEGIS_LOCAL_4BIT=1 \AEGIS_MODEL=mahendra1980/triage-qwen3-8b-public-v5 # triage first pass; frontier model judges
License
Adapter released under Apache-2.0, matching the Qwen3-8B base. You must also comply with
the base model's license.