Mithridatium:用于验证预训练机器学习模型完整性的开源工具包
Source: Dev.to
为什么选择 Mithridatium?
当今的机器学习生态系统默认预训练模型是安全的。实际上,模型文件本身可能是一个潜在的攻击向量:
- 中毒的训练数据
- 在特定输入下激活的隐藏触发器
- 被篡改的权重
- 导致意外运行时行为的异常检查点
Mithridatium 提供了一套命令行工作流,通过模型中心的防御来评估这些风险,灵感来源于学术研究,但为实际使用简化。
离线使用
安装后,Mithridatium 可以完全离线运行。
你只需要:
- 你的
.pth模型文件 - 本地数据集目录(可选用于 STRIP;根据配置,MMBD 可能需要)
这使得该工具适用于受限环境、空气隔离的机器或安全的内部 ML 流水线。
安装
pip install mithridatium
升级到最新版本:
pip install --upgrade mithridatium
已实现的防御
MMBD(Maximum Mean Backdoor Detection)
MMBD 通过评估合成的类优化图像来检测通常与后门模型相关的异常激活模式。
特性
- 按类的特征值得分
- 归一化的异常分布
- 经典假设检验(p 值)
- 确定性的判决
示例调用
mithridatium detect --model model.pth --defense mmbd --arch resnet18 --data cifar10
STRIP(Strong Intentional Perturbation)
STRIP 是一种黑盒防御,不依赖内部架构细节。它在模型面对同一输入的强扰动变体时评估预测熵。后门模型在扰动下通常表现出异常低的熵。
特性
- 对扰动样本进行熵计算
- 采样和扰动工具
- 汇总指标(平均、最小、最大熵)
- 集成到统一的报告架构中
示例调用
mithridatium detect --defense strip --model model.pth --data cifar10 --arch resnet18
最近的进展
- STRIP 核心工具 – 模块化实现,处理熵评分、扰动生成以及设备安全执行(CPU/MPS/CUDA)。
- CLI 集成 – STRIP 现在可以像 MMBD 一样调用,具备统一报告和 JSON 输出。
- 输出模式标准化 – 将所有防御统一为单一报告格式,以便生态系统集成。
- 端到端 CLI 测试 – 完整的测试覆盖确保 STRIP 通过子进程运行时不会崩溃。
接下来
- 改进文档
- 添加开发者备注
- 优化报告摘要
- 加强验证和错误信息
在明年之前不会新增防御;重点是打磨工具的可维护性和易用性。
亲自尝试
该项目是开源的,地址在这里: mithridatium
欢迎贡献、提交问题和反馈。
如果你在使用预训练模型——无论是研究、部署还是安全方面——不要假设其完整性。Mithridatium 帮助你验证模型的完整性。详细说明、防御理论和使用示例请参见仓库的 README。