203 lines
6.9 KiB
Markdown
203 lines
6.9 KiB
Markdown
|
|
---
|
|||
|
|
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).
|