oss-slu/mithridatium

GitHub: oss-slu/mithridatium

一个研究驱动的检测框架,用于识别预训练模型中的后门与数据投毒问题。

Stars: 3 | Forks: 3

# Mithridatium 🛡️ **用于验证预训练 AI 模型完整性的框架** Mithridatium 是一个研究驱动的项目,旨在检测下载的预训练模型或管道(例如来自 Hugging Face)中的**后门**和**数据投毒**。 我们的目标是提供一个**模块化、命令行工具**,帮助研究人员和工程师信任他们使用的模型。 ## 🚀 项目概述 现代 ML 管道通常会重用来自在线仓库的预训练权重。 这带来了风险: - ❌ 后门 —— 模型在特定触发模式下才会表现出异常行为。 - ❌ 数据投毒 —— 被破坏的训练数据导致有偏差或恶意的模型。 **Mithridatium** 会分析预训练模型,并利用学术研究中的多种防御手段来标记潜在的破坏行为。 ## 其他功能将在项目推进中更新 ## 快速开始 ``` python -m venv .venv && source .venv/bin/activate pip install -e . pip install pytest pytest-cov # (A) 训练演示模型(快速设置) # 在 5 个周期上清洁模型(增加周期以提高准确性,但会延长训练时间) python -m scripts.train_resnet18 --dataset clean --epochs 5 --output_path models/resnet18_clean.pth # 在 5 个周期上中毒模型(增加周期以提高准确性) python -m scripts.train_resnet18 --dataset poison --train_poison_rate 0.1 --target_class 0 \ --epochs 5 --output_path models/resnet18_poison.pth # 使用小型通用扰动的隐形触发器模型 python -m scripts.train_resnet18 --dataset invisible --train_poison_rate 0.1 --target_class 0 \ --uap-norm 2 --uap-xi 0.05 --poison_loss_weight 2.0 \ --epochs 5 --output_path models/resnet18_invisible.pth # (B) 运行检测(默认:resnet18) mithridatium detect --model models/resnet18_poison.pth --defense mmbd --data cifar10 --out reports/mmbd.json # (B2) 使用可选覆盖运行 FreeEagle 检测 mithridatium detect --model models/resnet18_poison.pth --defense freeeagle --data cifar10 \ --freeeagle-anomaly-threshold 2.5 --freeeagle-optimize-steps 100 --out reports/freeeagle.json # (可选)指定架构(支持:resnet18、resnet34) mithridatium detect --model models/resnet18_poison.pth --defense mmbd --data cifar10 --arch resnet34 --out reports/mmbd.json # (C) 查看摘要 cat reports/mmbd.json ``` ## CLI 帮助 要查看所有可用选项和参数: ``` mithridatium detect --help ``` 示例输出: ``` Usage: mithridatium detect [OPTIONS] Options: --model, -m TEXT The model path .pth. E.g. 'models/resnet18.pth'. [default: models/resnet18.pth] --data, -d TEXT The dataset name. E.g. 'cifar10'. [default: cifar10] --defense, -D TEXT The defense you want to run. E.g. 'mmbd', 'strip', 'aeva', or 'freeeagle'. [default: mmbd] --arch, -a TEXT The model architecture to use. Supported: 'resnet18', 'resnet34'. [default: resnet18] --freeeagle-num-classes INTEGER FreeEagle override for number of classes. Use 0 to auto-infer from model head. [default: 0] --freeeagle-num-dummy INTEGER FreeEagle number of dummy optimization vectors. [default: 1] --freeeagle-num-important-neurons INTEGER FreeEagle top neurons used when computing tendency. [default: 5] --freeeagle-metric TEXT FreeEagle anomaly metric (e.g. 'softmax_score'). [default: softmax_score] --freeeagle-use-transpose-correction Enable transpose correction inside FreeEagle. --freeeagle-bound-on / --freeeagle-no-bound-on Enable or disable bounded optimization in FreeEagle. [default: freeeagle-bound-on] --freeeagle-optimize-steps INTEGER FreeEagle optimization steps. [default: 300] --freeeagle-learning-rate FLOAT FreeEagle optimization learning rate. [default: 0.01] --freeeagle-weight-decay FLOAT FreeEagle optimization weight decay. [default: 0.005] --freeeagle-anomaly-threshold FLOAT Threshold for FreeEagle anomaly_metric verdict. [default: 2.0] --freeeagle-inspect-layer-position INTEGER ResNet stage index inspected by FreeEagle (0..4). [default: 2] --out, -o TEXT The output path for the JSON report. Use "-" for stdout or a file path (e.g. "reports/report.json"). [default: reports/report.json] --force, -f This allows overwriting. E.g. if the output file already exists --force will overwrite it. --help Show this message and exit. ```
标签:AI安全, Chat Copilot, DNS解析, Hugging Face, Linux系统监控, Mithridatium, Python, 后门检测, 密钥泄露防护, 对抗攻击, 工程实践, 开源项目, 敏感信息检测, 文档结构分析, 无后门, 机器学习安全, 查询库, 检测框架, 模块化工具, 模型安全, 模型完整性, 研究工具, 科研, 逆向工具, 预训练模型