Pankei/soc-narrative-dev-balanced-50
Viewer β’ Updated β’ 50 β’ 16
How to use Pankei/soc-narrative-grpo-budget512-qwen3-14b with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-14B")
model = PeftModel.from_pretrained(base_model, "Pankei/soc-narrative-grpo-budget512-qwen3-14b")LoRA adapter for Qwen/Qwen3-14B trained with GRPO LoRA on 512 balanced user/day windows (CERT R4.2) (step 32).
SOC Narrative is a framework for insider threat detection using small open-weight LLMs. A model receives a user/day window of events from the CERT Insider Threat Dataset R4.2 and must produce a structured response with:
normal, suspicious, or maliciousThis project explores whether small LLMs (3Bβ14B) can match or exceed traditional ML baselines for UEBA (User and Entity Behavior Analytics).
| Metric | Value |
|---|---|
| Accuracy | 0.74 |
| Macro F1 | 0.735 |
| Recall Malicious | 0.88 |
| Valid Format Rate | 0.64 |
| Actionability Rate | 0.64 |
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = "Qwen/Qwen3-14B"
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype="auto", device_map="auto")
model = PeftModel.from_pretrained(model, "Pankei/soc-narrative-grpo-budget512-qwen3-14b")
tokenizer = AutoTokenizer.from_pretrained(base)
inputs = tokenizer("<your prompt>", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.decode(output[0]))
Note: This is a LoRA adapter (~30β160 MB). You need the full base model (Qwen/Qwen3-14B) to load it.
@misc{soc-narrative-2026,
author = {Research project},
title = {SOC Narrative: Small LLMs for UEBA / Insider Threat Detection},
year = {2026},
howpublished = {\url{https://github.com/Pancake2021/research_work_by_a_student}}
}