foal90/fraud-detection-mlops

GitHub: foal90/fraud-detection-mlops

以欺诈检测为场景、在 AWS 上公开构建的 MLOps 与数据工程学习项目,重点打造模型生产化所需的数据管道和底层基础设施。

Stars: 0 | Forks: 0

# 欺诈检测 MLOps 平台 **这个代码库的重点不在于模型。** 一个欺诈分类器只需要几行 XGBoost 代码。将机器学习投入生产的困难且有价值的部分在于模型*周围*的一切:可靠的数据摄取、值得信赖的数据、一致的特征、可复现的训练、安全的服务以及漂移监控。本项目构建的正是这些底层基础设施。 ## 系列 | 部分 | 层级 | 状态 | |------|-------|--------| | **1** | [批量摄取 — Iceberg 上的 Bronze 层](docs/part-1-bronze.md) | ✅ 已完成 | | **2** | [Silver 层 — 数据质量、隔离与分析](docs/part-2-silver.md) | ✅ 已完成 | | **3** | 特征管道与特征存储 | 计划中 | | **4** | 训练、实验跟踪与模型注册表 | 计划中 | | **5** | 服务与漂移监控 | 计划中 | 每个部分都在 Git 中打上了标签(`part-1-bronze`, …),因此你可以准确地查看该部分发布时代码库的状态。 ## 架构 ``` generate.py ──► raw (S3, JSONL) │ ▼ Bronze (Glue PySpark → Apache Iceberg) ✅ Part 1 │ typed, idempotent, lineage-tracked ▼ Silver (validation, quarantine, profiling) ✅ Part 2 │ trustworthy data + auditable rejects ▼ Feature pipeline → Feature store Part 3 │ point-in-time correct, train/serve consistent ▼ Training → MLflow → Model registry Part 4 │ ▼ Serving + Drift monitoring Part 5 Terraform (IaC) + orchestration span the whole flow ``` ## 技术栈 | 关注点 | 选择 | 原因 | |---|---|---| | 存储 | Amazon S3 | 廉价,与计算解耦 | | 表格格式 | **Apache Iceberg** | 支持 ACID、时间旅行、schema 演化 —— 开放,无供应商锁定 | | 计算 | AWS Glue 5.0 (Spark 3.5) | Serverless Spark:无需运行集群,闲置时零成本 | | 目录 | AWS Glue Data Catalog | 兼容 Hive-Metastore | | 查询 | Amazon Athena (Trino) | 直接在 S3 上运行 SQL,按扫描的 TB 量付费 | | IaC | Terraform | 可复现的构建,干净的销毁 | | 数据生成 | Python (Faker, NumPy) | 真实的交易数据 + 延迟的欺诈标签 | 一切都是 serverless 且按需付费的。没有任何东西是 24/7 运行的 —— 一次完整的管道运行只需花费几分钱,而 `terraform destroy` 会将账户费用恢复为零。 ## 仓库结构 ``` fraud-detection-mlops/ ├── README.md # you are here ├── docs/ │ ├── part-1-bronze.md # design decisions & deep dive per part │ └── part-2-silver.md ├── requirements.txt ├── run_bronze.sh # deploy + run the Bronze job end to end ├── run_silver.sh # deploy + run the Silver job, then reconcile ├── config/ │ └── quality_rules.yaml # declarative data quality rules ├── data_generator/ │ └── data_generator.py # synthetic transactions + delayed labels + dimensions ├── glue_jobs/ │ ├── bronze_ingest.py # raw JSONL → idempotent Iceberg tables │ └── silver_clean.py # validation, quarantine, dedup, profiling └── infra/ └── main.tf # S3, IAM, Glue Catalog DBs, Glue jobs (Terraform) ``` ## 快速开始 **前提条件:** 一个 AWS 账户、配置好的 AWS CLI(`aws configure`),以及为你的 CPU 架构编译的 Terraform(在 Apple Silicon 上,使用 `file $(which terraform)` 进行验证 —— `x86_64` 二进制文件在 Rosetta 下会卡死)。 所有命令均在仓库根目录下运行。 ``` # Environment + dataset python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt python data_generator/data_generator.py --customers 2000 --days 60 --out ./output --seed 42 # Infrastructure terraform -chdir=infra init terraform -chdir=infra apply # 运行 pipeline ./run_bronze.sh ./run_silver.sh # 完成后 tear down terraform -chdir=infra destroy ``` 要观察质量层的工作情况,请生成带有注入缺陷的数据,并将其打印出的清单与 `silver.quarantine` 进行核对: ``` python data_generator/data_generator.py --customers 2000 --days 60 --dirty-rate 0.001 --out ./output ``` 请参阅 [第 1 部分](docs/part-1-bronze.md) 和 [第 2 部分](docs/part-2-silver.md) 了解各层背后的设计决策,以及如何在 Athena 中验证结果。 ## 成本 所有服务均为 serverless 并按使用量计费:一次 Glue 运行只需几个 DPU-minutes(几分钱),该数据集的 S3 存储每月不到一美元,而 Glue Data Catalog 保持在免费额度内。每次会话后运行 `terraform destroy` 可将闲置成本保持为零。建议在 AWS Budgets 中设置预算告警作为安全保障。
标签:Apache Iceberg, AWS, C语言, DPI, ECS, MLOps, Terraform, 恶意软件检测, 数据工程, 数据流水线, 欺诈检测, 逆向工具