Files

203 lines
6.9 KiB
Markdown
Raw Permalink Normal View History

---
language:
- en
license: apache-2.0
base_model: unsloth/Qwen3-14B
tags:
- text-generation
- fraud-detection
- anti-money-laundering
- financial-crime
- unsloth
- qwen3
- sft
- fraudsentinel
datasets:
- naazimsnh02/fraud-financial-crime-qwen3-sft-v2
---
# FraudSentinel — Qwen3-14B Merged (Tier-2 Intelligence Layer)
Full 16-bit merged model — Qwen3-14B base with the FraudSentinel LoRA adapter weights merged in. Suitable for direct deployment without PEFT or adapter management overhead. Part of the [FraudSentinel](https://huggingface.co/collections/naazimsnh02/fraudsentinel) two-tier platform.
If you prefer the compact LoRA adapter for hot-swapping or multi-tenant deployments, see [`naazimsnh02/fraudsentinel-qwen3-14b-lora`](https://huggingface.co/naazimsnh02/fraudsentinel-qwen3-14b-lora).
---
## Capabilities
This model is trained to act as an enterprise fraud detection and AML investigation assistant. It handles six task types:
- **Structured JSON risk scoring** — calibrated score (0.0–1.0), risk level, typology, key signals, feature importance, recommended action, SAR rationale
- **Explainable alerts** — evidence-grounded investigator-facing explanations tied to actual transaction features
- **Typology classification** — card-not-present fraud, account takeover, fan-out, gather-scatter, structuring, smurfing, and more
- **6-level recommended action** — `AUTO_APPROVE → APPROVE_WITH_MONITORING → STEP_UP_AUTH → TEMPORARY_HOLD → AUTO_BLOCK → SAR_REVIEW`
- **SAR drafting** — FinCEN-aligned Suspicious Activity Report narrative generation for human review
- **Multi-turn HITL dialogue** — investigator follow-up conversations with the model
- **Deep Analysis mode** — Chain-of-Thought reasoning via Qwen3's thinking tokens
---
## Training Details
| Property | Value |
|---|---|
| **Base model** | `unsloth/Qwen3-14B` (Apache-2.0) |
| **Fine-tuning method** | SFT + LoRA, merged to full bf16 weights |
| **LoRA rank / alpha** | 16 / 32 |
| **Target modules** | All linear layers (q, k, v, o projections + MLP gate/up/down) |
| **Trainable parameters (pre-merge)** | 64,225,280 (0.433% of 14.83B) |
| **Dataset** | `naazimsnh02/fraud-financial-crime-qwen3-sft-v2` (11,016 train examples) |
| **Epochs** | 2 |
| **Total steps** | 1,378 |
| **Effective batch size** | 16 (2 per device × 8 gradient accumulation) |
| **Learning rate** | 1e-4 (cosine decay, 5% warmup) |
| **Optimizer** | AdamW 8-bit |
| **Precision** | bfloat16 |
| **Max sequence length** | 4,096 |
| **Hardware** | AMD MI300X, 192 GB VRAM, ROCm 7.0 |
| **Framework** | Unsloth 2026.6.1, TRL 0.22.2 |
| **Train loss (final)** | 0.2467 |
| **Training time** | 70.5 min |
| **Peak VRAM** | 39.8 GB (20.8% of 192 GB) |
---
## Usage
### Transformers (no PEFT required)
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
"naazimsnh02/fraudsentinel-qwen3-14b-merged",
torch_dtype=torch.bfloat16,
device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained("naazimsnh02/fraudsentinel-qwen3-14b-merged")
```
### Unsloth (2× faster inference)
```python
from unsloth import FastLanguageModel
import torch
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "naazimsnh02/fraudsentinel-qwen3-14b-merged",
max_seq_length = 4096,
dtype = torch.bfloat16,
load_in_4bit = False,
)
FastLanguageModel.for_inference(model)
```
### vLLM (production serving)
```bash
vllm serve naazimsnh02/fraudsentinel-qwen3-14b-merged \
--dtype bfloat16 \
--max-model-len 4096
```
### Inference Example
```python
messages = [
{"role": "system", "content": "You are FraudSentinel, an expert fraud detection and AML investigation assistant."},
{"role": "user", "content": (
"Analyze this AML transaction and return a structured JSON risk assessment.\n\n"
"Transfer: amount_paid=95000 USD, amount_received=94850 EUR, payment_format=ACH, "
"sender_out_degree=47, sender_in_degree=3, receiver_in_degree=52, "
"ccy_mismatch=True, is_round=False, is_laundering=True"
)},
]
# Fast mode — thinking OFF (default for Tier-2 triage)
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.1,
do_sample=True,
)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
```
**Deep Analysis mode** (Chain-of-Thought for complex or high-stakes cases):
```python
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True, # activates Qwen3 thinking tokens, adds ~3–5 s latency
)
```
---
## Output Schema (Structured Task)
```json
{
"risk_score": 0.91,
"risk_level": "CRITICAL",
"conclusion": "SUSPICIOUS",
"primary_typology": "layering / fan-in gather-scatter",
"secondary_typology": "rapid_passthrough",
"key_signals": [
"high_receiver_in_degree",
"cross_currency_conversion",
"ach_channel_over_representation"
],
"explanation": "Sender account shows unusually low inbound activity (in-degree 3) relative to high outbound fan-out (47 unique counterparties). Receiver account aggregates from 52 sources — consistent with layering...",
"feature_importance": {
"high_receiver_in_degree": 0.41,
"cross_currency_conversion": 0.33,
"ach_channel_over_representation": 0.26
},
"recommended_action": "SAR_REVIEW",
"sar_required": true,
"sar_rationale": "Transaction exhibits layering indicators — high-degree aggregation, cross-currency conversion, and ACH over-representation consistent with structuring."
}
```
---
## System Prompt
The model was trained with the following system prompt pattern:
```
You are FraudSentinel, an expert fraud detection and AML investigation assistant.
```
Consistent use of this system prompt at inference produces the most coherent structured outputs and action recommendations.
---
## Limitations
- Prototype/research use. Source data is synthetic/semi-synthetic. Do not use for real customer adjudication without independent validation, bias review, and human-in-the-loop controls.
- AI-generated SAR drafts require human review and edit before filing with FinCEN.
- The model was trained with thinking mode OFF. Enable it at inference for Deep Analysis; expect 3–5 s additional latency per response.
- Feature importance values reflect deterministic heuristics from the training data pipeline, not SHAP or gradient-based model explanations.
- The model is 14B parameters at bfloat16 (~28 GB). A GPU with at least 40 GB VRAM is required for full-precision inference; 4-bit quantization can reduce this to ~10 GB with some quality tradeoff.
---
## License
Apache-2.0 (Qwen3 base model and fine-tuning adapter).