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, 后门检测, 密钥泄露防护, 对抗攻击, 工程实践, 开源项目, 敏感信息检测, 文档结构分析, 无后门, 机器学习安全, 查询库, 检测框架, 模块化工具, 模型安全, 模型完整性, 研究工具, 科研, 逆向工具, 预训练模型