inseq 项目介绍
项目概述
inseq是一款基于Pytorch的工具包,旨在普及序列生成模型常见的后验可解释性分析。这一工具包的命名源于两个关键词:“in”代表解释性,“seq”代表序列。通过inseq,研究人员和开发者可以轻松地对序列生成模型进行可解释性分析,提升对模型行为的理解。
项目特点
- 特征归因分析:支持多种
ForConditionalGeneration
(编码器-解码器)和ForCausalLM
(仅解码器)模型的特征归因分析。 - 多种归因方法支持:集成多种特征归因方法,扩展了Captum支持的方法。
- 归因图后处理:通过
Aggregator
类对归因图进行后处理、过滤和合并。 - 可视化:提供笔记本、浏览器和命令行中的归因可视化功能。
- 高效归因:支持单个样例或整套🤗数据集的高效归因。
- 自定义目标函数:可以自行定义复杂的归因方法,如对比特征归因和上下文依赖检测。
- 定制分数可视化:在每一代生成步骤中提取和可视化自定义分数(如概率、熵)。
支持的方法
基于梯度的归因
- saliency:基于Saliency图的归因方法。
- input_x_gradient:结合输入和梯度的归因方法。
- integrated_gradients:集成梯度归因方法。
- 其他方法包括:DeepLIFT、Gradient SHAP、序列集成梯度等。
基于注意力和扰动的归因
- attention:利用注意力权重的归因。
- occlusion:基于遮挡的归因。
- lime:解释任意分类器预测的LIME方法。
步骤函数
步骤函数用于在归因过程中提取模型的自定义分数,如概率、熵、交叉熵等。
示例使用
Inseq支持多种语言模型,如GPT-2。在Python中使用如下:
import inseq
model = inseq.load_model("gpt2", "integrated_gradients")
model.attribute("Hello ladies and", generation_args={"max_new_tokens": 9}, n_steps=500, internal_batch_size=50).show()
这一代码片段用于在控制台中展示GPT-2模型的归因过程。
Inseq CLI
Inseq还提供命令行客户端,通过简单的命令即可进行多样化的归因任务。此外,还可以对整个数据集进行归因分析。
inseq attribute \
--model_name_or_path Helsinki-NLP/opus-mt-en-it \
--attribution_method saliency \
--input_texts "Hello world!"
未来计划
inseq计划支持更多基于注意力和遮挡的特征归因方法,并与ferret进行互操作性集成。此外,还将提供丰富的交互式可视化界面,以提升用户体验。
贡献与引用
inseq欢迎研究人员和开发者的贡献,以共同创建一个集中的、全面的、稳健的工具集。如果在研究中使用了inseq,请引用相关论文。
通过inseq,用户从此能更便捷地分析和解释复杂的序列生成模型,助力研究和应用的发展。