当前位置: 首页 > news >正文

12X速度提升:如何用Quantus批处理指标让Faithfulness指标计算快12倍

12X速度提升:如何用Quantus批处理指标让Faithfulness指标计算快12倍

【免费下载链接】Quantus[JMLR 2023] Quantus is an eXplainable AI toolkit for responsible evaluation of neural network explanations项目地址: https://gitcode.com/gh_mirrors/qu/Quantus

Quantus 是一个可解释AI(XAI)责任评估工具包(JMLR 2023 论文配套开源项目),本文以Faithfulness 指标(faithfulness 评估)为例,讲解如何使用 Quantus 的批处理指标(batched metrics)实现让 Faithfulness 指标计算提速 12 倍,并介绍batch_size关键参数与quantus.evaluate()的大规模评估工作流。

为什么 Faithfulness 指标计算这么慢?

Faithfulness 指标回答的是"解释与模型行为有多一致":它会迭代地扰动输入(把解释认为重要的特征替换/掩码掉),再观察模型预测如何变化。以 Monotonicity 为例,它从基线出发逐步加回重要性最高的特征,每一步都需要一次完整的前向预测

旧实现采用逐样本循环:对 batch 中每个样本单独调用模型预测,GPU 经常吃不饱,Python 循环本身成为瓶颈——样本越多,等待越久。

批处理指标:从"逐个算"到"向量化批量算"的 12X 提速

Quantus 官方更新说明明确写道:New batch implementation for 12X speedup of existing faithfulness metrics (!)——现有 Faithfulness 指标的计算速度提升 12 倍。🚀

核心改动有三个:

  1. 批处理扰动函数:如 quantus/functions/perturb_func.py 中的batch_baseline_replacement_by_indices,一次完成整个 batch 所有样本的特征替换,替代原来的逐样本baseline_replacement_by_indices
  2. 批量模型推理:扰动后的整批输入一次性送入模型,GPU 矩阵运算被充分利用;
  3. 统一的evaluate_batch接口:每个指标只需实现"对一批数据做评估",切分、预处理、聚合全部由基类托管。

快速上手:3 步跑通批处理评估

先安装(按需选择框架):

pip install "quantus[torch]"
import quantus # 1) 实例化指标 metric = quantus.Monotonicity(features_in_step=1, display_progressbar=True) # 2) 直接传入整批数据,batch_size 控制内部切分粒度(默认 64) scores = metric( model=model, x_batch=x_batch, y_batch=y_batch, a_batch=a_batch_saliency, batch_size=64, )
# 3) 大规模评估:多个指标 × 多个解释方法 results = quantus.evaluate( metrics={"monotonicity": quantus.Monotonicity()}, xai_methods={"Saliency": a_batch_saliency}, model=model, x_batch=x_batch, y_batch=y_batch, )

关键参数与性能调优技巧 🛠️

  • batch_size(默认 64):控制指标内部切分粒度。批越大 GPU 利用率越高,但显存占用也越大;显存不足时调小即可。
  • 懒生成解释:不传a_batch时,Quantus 按 batch 逐批调用explain_func生成解释,避免一次性生成整批解释导致 OOM(见batch_preprocess逻辑)。
  • return_aggregate/aggregate_func:把逐样本分数聚合成单值(默认np.mean),方便横向对比不同解释方法。
  • display_progressbar:打开后批处理评估会显示 tqdm 进度条,方便观察长任务。

批处理指标是如何工作的(源码走读)

主入口是 quantus/metrics/base.py 中的Metric.__call__,流程为:

  1. general_preprocess():统一通道布局、包装模型、对解释做归一化/取绝对值;
  2. generate_batches():按batch_size把数据切分成小批并逐批产出;
  3. batch_preprocess():必要时懒生成当前批的解释;
  4. evaluate_batch():每个具体指标实现此方法完成"整批扰动 + 整批预测",例如 quantus/metrics/faithfulness/monotonicity.py 中先对整个 batch 排序归因索引,再逐步替换并批量预测;
  5. 收集evaluation_scores,按需聚合后返回。

哪些 Faithfulness 指标享受提速?

Faithfulness 类别下 12 个指标全部支持批处理接口,位于quantus/metrics/faithfulness/目录:

指标源文件
Monotonicity(单调性)monotonicity.py
Pixel Flipping(像素翻转)pixel_flipping.py
Region Perturbation(区域扰动)region_perturbation.py
Sensitivity-Nsensitivity_n.py
IROFirof.py
ROADroad.py
Infidelityinfidelity.py
Sufficiencysufficiency.py
Selectivityselectivity.py
Faithfulness Correlation / Estimatefaithfulness_correlation.py / faithfulness_estimate.py
Monotonicity Correlationmonotonicity_correlation.py

总结

  • 12X 提速= 批处理扰动函数 + 批量模型推理 + 统一的evaluate_batch接口,三者缺一不可;
  • 用户开箱即用:传入整批数据即可,用batch_size调节速度与显存的平衡;
  • 搭配quantus.evaluate()做多指标、多解释方法的大规模基准测试,Faithfulness 评估从此不再是等待的艺术。⚡

【免费下载链接】Quantus[JMLR 2023] Quantus is an eXplainable AI toolkit for responsible evaluation of neural network explanations项目地址: https://gitcode.com/gh_mirrors/qu/Quantus

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4198461.html

相关文章:

  • 美赛D题深度解析:从团队组建到多维度量化建模的实战指南
  • MAA明日方舟助手:全日常一键长草,把重复刷图彻底交给自动化
  • klog 使用教程:Go 层级日志完整指南,三分钟上手
  • OmenSuperHub完整指南:免费为暗影精灵笔记本解锁风扇控制、功耗限制与硬件监控
  • BT 下载总卡在 99%?trackerslist 公共 Tracker 清单配置实录
  • 英雄联盟Akari助手:免费开源,把赛前准备从半小时压到三分钟
  • Unity Hair System 完整指南:从导入到实时渲染的上手路径
  • kons-9动画系统完全指南:ANIMATOR、SHAPE-ANIMATOR与MOTION-GROUP时间轴调度详解
  • 性能提升的秘密:expo-app-template中启用React Compiler的完整指南
  • Kaitai Struct Compiler 表达式语言完全指南:条件、循环与方法调用如何驱动解析逻辑
  • OpenBoardView 安装指南:.brd 查看器 4 个平台 30 分钟跑通
  • 拆解Proton Pass安全中心:如何检测密码复用、弱密码与泄露风险的4步引擎
  • 智能体抽象推理新基准ARC-AGI-3:技术原理、实现路径与实战优化
  • 如何把QQ空间历史说说全部导出成Excel?GetQzonehistory备份完整教程
  • BlueToolkit Recon侦察模块详解:如何采集目标设备的蓝牙版本、厂商与配对能力
  • 具身智能TVA-VLA形态自适应与策略泛化机制
  • 从模板到泛型编程:核心原理、技术价值与实践应用
  • Maka Agent 技能目录预算机制完整解析:2% 上下文窗口如何实现懒加载
  • C++中std::move与std::forward的深度解析:从值类别到完美转发
  • 五分钟在小程序里渲染 HTML 与 Markdown:wxParse 富文本解析完整实战
  • Kaitai Struct Compiler 源码架构全解:Scala 实现的多语言二进制解析器生成器分层设计
  • 七牛云Android SDK架构深度剖析:UploadManager如何统合DNS预解析、事务调度与配置监控
  • DWMBlurGlass Windows 标题栏模糊工具快速上手指南:新手 5 种效果一次看懂
  • AI智能体技能下游适应:从概念到实践的迁移学习指南
  • AI智能体实时信任验证:构建可信自主决策系统的核心框架与实践
  • C++函数模板实战:从线性查找到STL风格迭代器实现
  • 指数模型家族与广义线性模型:统一框架下的统计建模实践
  • Mafl实现原理:WebSocket热更新与Zod校验,config.yml秒级生效的秘密
  • btrfs-progs Zoned模式详解:SMR/ZBC/ZNS硬盘的最佳存储方案指南
  • Wand-Enhancer:WeMod 本地增强工具完整指南,手机也能远程操控