sampscat/FedPromptShield_Federated_Adversarial_Reinforcement_Learning_against_Multimodal_Prompt_Injection

GitHub: sampscat/FedPromptShield_Federated_Adversarial_Reinforcement_Learning_against_Multimodal_Prompt_Injection

FedPromptShield 是一个通过联邦对抗强化学习防御医学大型多模态模型中多模态提示注入攻击的框架。

Stars: 0 | Forks: 0

# FedPromptShield FedPromptShield 在独立的医学影像站点学习因果认证的指令方向,仅将低秩基发送至服务器,构建秩揭示并集,并在不削弱文本来源指令的前提下,限制图像来源注意力的写入。该实现涵盖了威胁模型、四种公开 payload 家族、五个医学视觉问答基准、group-relative policy optimization、因果消融、quorum 许可、core/rim 增益以及报告的评估表格。 ## 环境要求 预期需要 Python 3.11、PyTorch 2.5.1、CUDA 12.4 以及本地授权的 MedGemma 1.5 4B 模型。骨干网络保持冻结。完整实验需要 `dataset_links.txt` 中列出的五个基准数据集和四个攻击语料库。数据集特定的访问条件和上游许可证适用。 ## 安装说明 ``` conda env create -f environment.yml conda activate fedpromptshield pip install -e . ``` 容器路径为: ``` docker build -t fedpromptshield . ``` ## 数据准备 从 `dataset_links.txt` 中经验证的规范位置下载数据集。OmniMedVQA 包含开放和受限的上游源;用户必须根据其原始条款获取受限源。使用以下命令创建站点清单: ``` fps-prepare omnimedvqa data/OmniMedVQA data/manifests --split train --sites 8 --seed 11 fps-prepare pathvqa data/PathVQA data/manifests/pathvqa --split train --sites 8 --seed 11 fps-prepare slake data/SLAKE data/manifests/slake --split train --sites 8 --seed 11 fps-prepare kvasir_vqa_x1 data/Kvasir-VQA-x1 data/manifests/kvasir --split train --sites 8 --seed 11 fps-prepare vqa_rad data/VQA-RAD data/manifests/vqa_rad --split train --sites 3 --seed 11 ``` OmniMedVQA 按上游源进行分区。其他基准使用确定性的合成分区,其中 VQA-RAD 仅限于三个站点。 ## 配置说明 主要配置设定为 MedGemma 1.5 4B、隐藏层宽度 2560、四个挂钩层、认证容差为攻击降低 0.05 和准确率损失 0.005、core 方向增益为 0、rim 方向增益为 0.15、quorum 为 3、最大秩为 16、图像扰动限制为 8/255。论文未说明 GPU 类型、batch size、optimizer、学习率、轮数、精度、结构相似度阈值或完整的搜索范围。为这些操作字段提供的值均为发布默认值,而非报告的测量结果。 ## 模型训练 ``` fps-train --config configs/main.yaml --seed 11 ``` 模型构件必须已通过授权的本地 Transformers cache 获取。各站点的进程仅需访问其本地清单和图像。服务器接收半精度的认证基,绝不接收图像、问题、payload 响应或 adapter 参数。 ## 评估说明 无需模型权重即可查看论文结果注册表: ``` fps-evaluate main fps-evaluate ablation fps-evaluate decomposition fps-evaluate coverage fps-evaluate benchmarks fps-evaluate robustness ``` 核心的 OmniMedVQA 指标为:留出自适应攻击成功率为 0.31(标准差为 0.02),clean accuracy 为 69.1,每轮上行链路数据量为 0.16 MB。五个基准的留出攻击成功率按基准顺序分别为 0.31、0.34、0.29、0.36 和 0.33。所有报告的平均值均使用五个随机种子。 ## 方法边界 仅当输出执行了攻击者选择的指令时,攻击才算作成功。White-box 评估将已部署的基提供给攻击者,并针对冻结的受防御模型训练出全新的最佳响应。在防御训练期间,所有站点均排除留出的 payload 家族。视觉扰动预算为 8/255,并且排版渲染必须在配置的结构相似度下限之下保留诊断内容。 gain 算子仅应用于图像来源的求和项。文本来源的残差写入保持不变。候选方向来自于对成功注入的“受攻击减去干净”残差差异的截断分解。仅当因果消融使局部攻击成功率至少降低 0.05,且 clean accuracy 损失最多为 0.005 时,该方向才会被保留。服务器仅在至少三个站点确认后,才会许可一个并集方向。 ## 局限性 论文未提供足够的信息来保证从全新克隆中进行数值重现:模型访问权限、确切的挂钩层索引、optimizer 时间表、搜索范围、渲染参数、硬件、运行时间以及部分数据集预处理细节均缺失。代码展示了这些边界,而不是将推断值作为报告事实呈现。预期在参与站点缺失的载体分布,以及在未能通过任何局部认证阈值的低激发方向上,会出现残留的失败。
标签:PyTorch, Vectored Exception Handling, 凭据扫描, 医疗AI, 多模态大模型, 强化学习, 提示词注入防御, 联邦学习, 请求拦截, 逆向工具