本项目实现了一个针对 PyTorch 模型的自动化鲁棒性评估框架(OPRAT)。通过对抗攻击生成(Fuzzing)与环境消融实验(Stability Analysis),系统地评估模型在不同编译选项、精度和硬件设备下的行为一致性与鲁棒性。
⚠️ 注意事项:
- 大文件说明:由于
.pth(模型权重) 和.npy(攻击样本) 文件体积过大,默认不上传至 GitHub。代码已内置权重自适应加载机制,如缺失权重将自动初始化随机模型进行 Demo 运行。- 结果汇总:完整实验数据统计请参考根目录下的
summary.xlsx。- 系统要求:消融实验使用了
torch.compile(Inductor 后端) 进行编译优化。由于底层依赖 OpenAI Triton 编译器,本实验强烈建议在 Linux 操作系统上进行以获得完整支持。
🚀 快速开始:
-
环境准备:请确保使用 Linux 操作系统,并已安装 Python 3.8+ 及 PyTorch 环境。
pip install -r requirements.txt
-
运行测试 使用
main.py启动测试。脚本支持断点续传,会自动加载已有的攻击样本。 参数说明:-
--group: 模型组编号 (0 或 1,详见config.py) -
--gpu: 指定使用的 GPU ID (如选择使用CPU,参数设置为-1) -
--mode: 运行模式-
fuzz: 仅运行第一阶段(对抗攻击生成) -
stability: 仅运行第二阶段(稳定性/消融实验) -
all: 顺序运行所有阶段(默认)
-
运行示例:
# 在 GPU 0 上运行第 0 组模型的所有测试阶段 python main.py --group 0 --gpu 0 --mode all # 在 CPU 模式下运行 python main.py --group 0 --gpu -1 --mode all
-
🛠️ 实验设置与逻辑:
- 基本参数
-
Batch Size: 30
-
Rounds: 100 轮次
-
Total Test Cases: 3000 个测试样本
- 第一阶段:初始攻击 (First Attack)
在标准 PyTorch 默认环境下生成对抗样本:
-
Precision: Float32(PyTorch框架下默认Float32)
-
Device: CUDA
-
Compile: 默认参数 (
torch.compile())
- 第二阶段:稳定性消融 (Re-Attack)
使用第一阶段生成的样本,在不同环境下进行二次推理,检测模型行为的不一致性(Label Change):
-
Compile Test: 测试不同的后端优化参数 (
fallback_random,epilogue_fusion等)。 -
Device Test: 对比 CPU 与 CUDA 的推理差异。
-
Precision Test: 对比 FP16 与 FP32 的推理差异。
- 标签变化记录标准 (Label Change Metrics)
在记录 label_change 时,我们重点关注以下两类异常行为:
-
Different 组: 原先攻击成功(导致模型预测错误),在环境改变后依旧攻击成功,但预测的错误标签发生了变化。
-
Same 组: 原先攻击失败(模型预测正确),在环境改变后依旧攻击失败,但预测的置信度或次优标签发生了非预期波动。
📁 结果汇总:
-
中间结果: 存放在
PyTorch/{Model_Name}/.../details中,文件名对应具体的环境配置。 -
分项统计: 查看各子目录下的
model_robustness_stats.csv和label_change_stats.csv。 -
全局汇总:针对当前框架下各个模型的统计总结果在“summary.xlsx”中。所有实验均完整记录了 prob(置信度漂移)、Label_change(标签翻转频率)及 Stats_change 等核心指标,累计测试用例达数千组。
📊 实验结果分析:
-
实验覆盖了 ResNet50、VGG16、DenseNet、Xception 等 7 种主流架构。观测表明,不同拓扑结构对底层算子优化的敏感度存在显著差异。
-
在 TorchVGG16 的测试中,仅开启或关闭 epilogue_fusion 等编译优化标志位,就观测到在相同对抗输入下出现了 1,290 次标签翻转(Label Change)。这验证了后端编译器优化(如 TorchDynamo)可能引入非预期的推理不一致性。
-
通过对比 FP32/AMP 精度 以及 CPU/CUDA 设备 的输出,数据表明 ResNet50 在不同环境下的预测一致性(Consistency Rate)相对较高,而 VGG 类模型受浮点累加顺序及硬件架构差异的影响更为明显。
📧 联系:
如有任何问题、建议或想法交流,欢迎发送邮件至 zhouxiyue1@163.com 或提交 Issue。

