priormail-phishing / v1.0 /training_config.yaml
faizhuda's picture
Publish phishing v1.0
653f249 verified
Raw
History Blame
1.88 kB
# Phishing detector — v1 baseline config.
# Decision log (feat/phishing-model, 2026-06-09):
# Base model : bert-base-multilingual-cased — English-capable (§11 decision,
# approved by Insan; diverges from priority's IndoBERT because
# ealvaradob/phishing-dataset is English-heavy).
# Legit class : Enron corporate email corpus (emails.csv, 20 K sampled).
# Imbalance : weighted cross-entropy + 3× multiplier on phishing class.
#
# Run via:
# make data-phishing
# make train-phishing config=configs/phishing_v1.yaml
model_type: phishing
model_name: bert-base-multilingual-cased # §11 decision: English-capable base
dataset: ealvaradob/phishing-dataset # primary phishing training data (HF)
legit_source: emails.csv # Enron corpus — negative class source
num_labels: 2 # legit (0) | phishing (1) — matches PHISHING_LABELS in constants.py
hyperparameters:
learning_rate: 2.0e-5 # AdamW (mirrors priority protocol, ML_PIPELINE.md §3)
weight_decay: 0.01
batch_size: 16
gradient_accumulation_steps: 1
num_epochs: 4 # 3–5 with early stopping
warmup_ratio: 0.10
lr_scheduler_type: linear
max_seq_length: 512
# Early stopping on RECALL, not macro F1 — false negatives are worst case (§3).
early_stopping_metric: recall_phishing
early_stopping_patience: 2
class_weights: balanced # inverse-frequency base weights from train dist
phishing_class_multiplier: 3.0 # extra multiplier on phishing class weight
mixed_precision: bf16 # falls back to fp16 / none as needed
seed: 42
output_dir: checkpoints/phishing_v1
wandb:
project: priormail
tags:
- model:phishing
- stage:baseline
# --- run provenance (auto-recorded) ---
_git_sha: 94013c0
_git_dirty: True
_trained_at: 2026-06-13T10:59:03