Facebook开源大模型可视分析工具:Transparency Tool ,将Transformer扒的一干二净 原创 精华
Transparency Tool是facebook开源的大语言模型可视分析工具,用于分析基于Transformer架构的语言模型。
源码:https://github.com/facebookresearch/llm-transparency-tool
技术报告:https://arxiv.org/pdf/2404.07004.pdf
一、浅谈原理
Transformer是由多个注意力块堆叠而成,每个注意力块视为一层,每个层包含一个多头注意力层和一个前馈网络。token向量在注意力层中,向量之间能够相互交流,并根据彼此信息更新自身的值;在前馈网络中,向量的值会被修改。
Transparency Tool将模型的前向推理过程构建成一个信息流图,图的节点表示token向量,图的边表示操作。以次来追踪和可视化模型内部的信息流动路径,同时允许检查单个注意力头和神经元的贡献。
二、在线体验
https://huggingface.co/spaces/facebook/llm-transparency-tool-demo
在huggingface上可以体验一下这个在线demo,在左侧选择模型,默认gpt2,在上方选择输入提示文本,默认“When Mary and John went to the store, John gave a drink to”。
Graph就是构建的信息流图,在Graph中圆圈代表节点,线代表边。点击token“to”最后一层的节点,右侧Top Tokens中排在第一个的是token“Mary”。
同样,通过点击连接节点的注意力边,您可以探索形成相关连接的头的模式。
如果想了解图的详细构建过程以及如何通过图进行分析,请参考下面这篇论文。
https://arxiv.org/pdf/2403.00824.pdf
三、私人定制
huggingface只提供了gpt2、distilgpt2、facebook/opt-125m三个模型,如何加载自己的模型呢?
Transparency Tool是基于TransformerLens开发的,TransformerLens是一个专注于生成语言模型(如GPT-2风格的模型)的可解释性的库。其核心目标是利用训练好的模型,通过分析模型的内部工作机制,来提供对模型行为的深入理解。
https://github.com/neelnanda-io/TransformerLens
所以,凡是TransformerLens支持的模型,Transparency Tool都能支持。
对于TransformerLens不支持的模型,需要实现自己的TransparentLlm类。
首先要搭建本地环境。
Dockerized running
# From the repository root directory
docker build -t llm_transparency_tool .
docker run --rm -p 7860:7860 llm_transparency_tool
Local Installation
# download
git clone git@github.com:facebookresearch/llm-transparency-tool.git
cd llm-transparency-tool
# install the necessary packages
conda env create --name llmtt -f env.yaml
# install the `llm_transparency_tool` package
pip install -e .
# now, we need to build the frontend
# don't worry, even `yarn` comes preinstalled by `env.yaml`
cd llm_transparency_tool/components/frontend
yarn install
yarn build
修改配置文件config/local.json,将模型添加到model中。
{
"allow_loading_dataset_files": true,
"preloaded_dataset_filename": "sample_input.txt",
"debug": true,
"models": {
"": null,
"gpt2": null,
"distilgpt2": null,
"facebook/opt-125m": null,
"facebook/opt-1.3b": null,
"EleutherAI/gpt-neo-125M": null,
"Qwen/Qwen-1_8B": null,
"Qwen/Qwen1.5-0.5B": null,
"Qwen/Qwen1.5-0.5B-Chat": null,
"Qwen/Qwen1.5-1.8B": null,
"Qwen/Qwen1.5-1.8B-Chat": null,
"microsoft/phi-1": null,
"microsoft/phi-1_5": null,
"microsoft/phi-2": null,
"meta-llama/Llama-2-7b-hf": null,
"meta-llama/Llama-2-7b-chat-hf": null,
"meta-llama/Llama-2-13b-hf": null,
"meta-llama/Llama-2-13b-chat-hf": null,
"gpt2-medium": null,
"gpt2-large": null,
"gpt2-xl": null,
"mistralai/Mistral-7B-v0.1": null,
"mistralai/Mistral-7B-Instruct-v0.1": null,
"mistralai/Mistral-7B-Instruct-v0.2": null,
"google/gemma-7b": null,
"google/gemma-2b": null,
"facebook/opt-2.7b": null,
"facebook/opt-6.7b": null,
"facebook/opt-13b": null,
"facebook/opt-30b": null
},
"default_model": "",
"demo_mode": false
}
启动
streamlit run llm_transparency_tool/server/app.py -- config/local.json
本文转载自公众号人工智能大讲堂
原文链接:https://mp.weixin.qq.com/s/TSOkh5LEnE0sraE6yGRaCw