AbhishekMallick/incident-triage-sft-train-Qwen2.5-7B
incident-triage-sft (LoRA adapter — Qwen2.5-7B)
SFT-trained PEFT adapter for incident triage on top of Qwen/Qwen2.5-7B-Instruct. Same training objective as the 1.5B and 3B adapters: structured triage across diagnosis, policy, blast radius, and PR-quality heads, supervised from oracle trajectories in the OpenEnv incident-triage environment.
Model Details
- Developed by: OpenEnv Hackathon project team
- Model type: Causal LM adapter (LoRA / PEFT)
- Base model:
Qwen/Qwen2.5-7B-Instruct - Language: English
- License: Apache-2.0 (inherits base model compatibility requirements)
- Frameworks: Transformers + PEFT
- Rough footprint (bf16 inference): ~14 GB VRAM with base + adapter; ~20 M trainable params, ~80 MB adapter on disk (see project README)
What this model is for
- infer likely root cause from noisy multi-signal incident context
- recommend policy-level response actions
- estimate blast radius and urgency
- generate PR/remediation guidance in a concise format
Intended and out-of-scope use
Intended use
- internal incident simulation and benchmarking
- triage copilots for engineering on-call workflows
- structured response drafting where a human reviewer remains in-the-loop
Out-of-scope
- fully autonomous production incident response without human approval
- legal/compliance sign-off
- medical, financial, or safety-critical decision automation
How to run
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
base_id = "Qwen/Qwen2.5-7B-Instruct"
adapter_id = "AbhishekMallick/incident-triage-sft-train-Qwen2.5-7B"
tokenizer = AutoTokenizer.from_pretrained(base_id, trust_remote_code=True)
base_model = AutoModelForCausalLM.from_pretrained(
base_id,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
model = PeftModel.from_pretrained(base_model, adapter_id)
prompt = "Incident: API latency spike after region failover. Provide diagnosis, policy, blast radius, and PR plan."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
out = model.generate(**inputs, max_new_tokens=256, temperature=0.2)
print(tokenizer.decode(out[0], skip_special_tokens=True))Training
Stage 1: SFT
- Started from
Qwen/Qwen2.5-7B-Instruct - Same recipe as the smaller adapters:
scripts/train_sft.pywith oracle JSON-action trajectories, TRLSFTTrainer, LoRA (defaults such asLORA_R=16,NUM_EPOCHS=3, eight seeds over the train scenario split — see the incident-triage-env repo) - Compute: 7B was trained on A10G (same script as 1.5B; larger VRAM budget)
Stage 2 (separate): GRPO refinement
GRPO is implemented in the same project for the 1.5B line; this Hub repository is scoped to the SFT adapter. If you run GRPO on top, document it as a new revision or separate model card.
Evaluation summary (held-out hard tasks)
Use the same Phase 8 harness and three held-out tasks as the 1.5B model card: hard_multi_signal_cascade, expert_stealth_regression, and hard_pr_quality_breach, compared against baseline-hf.
python scripts/eval_before_after.py --compare baseline finetunedAdd the resulting composite and per-task deltas here once you pin this checkpoint in the eval config (the repo does not ship a frozen JSON for the 7B SFT run).
Limitations and risks
- still sensitive to prompt format and missing context
- larger models can still hallucinate plausible but wrong root causes under weak evidence
- should always be reviewed by an on-call engineer
Recommended Hugging Face metadata (UI fields)
- base_model:
Qwen/Qwen2.5-7B-Instruct - pipeline_tag:
text-generation - library_name:
peft - license:
apache-2.0 - language:
en - tags:
incident-triage,sft,lora,peft,openenv - datasets: your SFT training dataset identifier(s)
- metrics:
composite_score, optionally per-head metrics (diagnosis,policy,blast,pr)
Model card contact
Open an issue in the incident-triage-env / hackathon repository for bug reports, misuse reports, or benchmark reproduction requests.
