Inspectus
Inspectus 是一个多功能的机器学习可视化工具。它通过易用的 Python API 在 Jupyter 笔记本中流畅运行。
内容
安装
pip install inspectus
注意力可视化
Inspectus 为深度学习模型中的注意力机制提供可视化工具。 它提供了一套全面的视图,使理解这些模型的工作原理变得更加容易。
预览
点击一个标记可选择它并取消选择其他标记。再次点击将重新选择所有标记。 要仅改变一个标记的状态,请按住 Shift 键点击
组件
注意力矩阵: 可视化标记之间的注意力分数,突出显示每个标记在处理过程中如何关注其他标记。
查询标记热力图: 显示每个查询与所选键标记之间的注意力分数总和。
键标记热力图: 显示每个键与所选查询标记之间的注意力分数总和。
维度热力图: 显示维度(层和头)中每个项目的注意力分数总和,在维度上进行归一化。
使用方法
导入库
import inspectus
简单使用
# attn: 注意力图;2-4D 张量或来自 Huggingface transformers 的注意力图
inspectus.attention(attn, tokens)
对于不同的查询和键标记
inspectus.attention(attns, query_tokens, key_tokens)
详细的 API 文档,请参阅官方文档 - 开发中。
教程
Huggingface 模型
from transformers import AutoTokenizer, GPT2LMHeadModel, AutoConfig
import torch
import inspectus
# 初始化分词器和模型
context_length = 128
tokenizer = AutoTokenizer.from_pretrained("huggingface-course/code-search-net-tokenizer")
config = AutoConfig.from_pretrained(
"gpt2",
vocab_size=len(tokenizer),
n_ctx=context_length,
bos_token_id=tokenizer.bos_token_id,
eos_token_id=tokenizer.eos_token_id,
)
model = GPT2LMHeadModel(config)
# 对输入文本进行分词
text= 'The quick brown fox jumps over the lazy dog'
tokenized = tokenizer(
text,
return_tensors='pt',
return_offsets_mapping=True
)
input_ids = tokenized['input_ids']
tokens = [text[s: e] for s, e in tokenized['offset_mapping'][0]]
with torch.no_grad():
res = model(input_ids=input_ids.to(model.device), output_attentions=True)
# 使用 Inspectus 库可视化注意力图
inspectus.attention(res['attentions'], tokens)
查看此处的笔记本:Huggingface 教程
自定义注意力图
import numpy as np
import inspectus
# 2D 注意力表示查询和键标记之间的注意力值
attn = np.random.rand(3, 3)
# 使用 Inspectus 库可视化注意力值
# 第一个参数是注意力矩阵
# 第二个参数是查询标记列表
# 第三个参数是键标记列表
inspectus.attention(arr, ['a', 'b', 'c'], ['d', 'e', 'f'])
查看此处的笔记本:自定义注意力图教程
分布图
分布图是一种显示一系列数据分布的图表。在每一步, 计算数据的分布,并从 9 个基准点绘制最多 5 个区间。 (0, 6.68, 15.87, 30.85, 50.00, 69.15, 84.13, 93.32, 100.00)
预览
使用方法
import inspectus
inspectus.distribution({'x': [x for x in range(0, 100)]})
要关注图表的特定部分并放大,可以使用小地图。要选择单个图表,请使用右上角的图例。
有关全面的使用指南,请查看此处的笔记本:分布图教程
示例用例
这个图表可以用来识别数据中是否存在异常值。以下 笔记本演示了如何使用分布图来识别 MNIST 训练损失中的异常值。
开发环境设置
引用
如果您在学术研究中使用 Inspectus,请使用以下 BibTeX 条目引用该库。
@misc{inspectus,
author = {Varuna Jayasiri, Lakshith Nishshanke},
title = {inspectus: A visualization and analytics tool for large language models},
year = {2024},
url = {https://github.com/labmlai/inspectus},
}