【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景

LLM Transparency Tool 是一个用于深入分析和理解大型语言模型(LLM)工作原理的工具,旨在增加这些复杂系统的透明度。它提供了一个交互式界面,用户可以通过它观察、分析模型对特定输入(prompts)的反应,以及模型内部的决策过程。

LLM Transparency Tool的主要功能包括:

  • 选择模型和提示,并运行推理:用户可以选择一个已经集成的语言模型,并给这个模型提供一个提示(prompt),工具会显示模型是如何处理这个提示的。
  • 浏览贡献图:这个功能允许用户社交从模型生成的token开始构建图表,通过调整贡献门槛来过滤信息。
  • 选择任何模块后的token表示:用户可以查看每个处理块之后任意token的内部表示。
  • 查看输出词汇表的投影:对于选中的表示,工具可以显示它是如何影响模型输出词汇的选择的,包括哪些token被之前的块促进或抑制了。
  • 可交互的图形元素:包括连接线(展示了贡献的注意力头信息)、当选中连接线时显示的头部信息、前馈网络块(FFN blocks)、以及选中FFN块时的神经元等。

使用场景

  • 模型分析与调优:研究人员或开发者在开发或优化语言模型时,可以使用此工具来观察模型对特定输入的处理过程,找出模型的优点与不足。
  • 教育与学习:对深度学习和NLP(自然语言处理)感兴趣的学生或爱好者可以通过这个工具来加深对大型语言模型工作原理的理解。
  • 算法透明度与可解释性:在追求算法透明度和可解释AI的推进中,该工具可作为分析工具的一种,帮助解释模型的决策依据

项目说明

  • 项目地址:https://github.com/facebookresearch/llm-transparency-tool
  • 项目依赖:https://github.com/TransformerLensOrg/TransformerLens
  • 论文地址:https://arxiv.org/pdf/2403.00824.pdf
  • Transparency Tool是基于TransformerLens开发的,TransformerLens是一个专注于生成语言模型(如GPT-2风格的模型)的可解释性的库。其核心目标是利用训练好的模型,通过分析模型的内部工作机制,来提供对模型行为的深入理解
  • 凡是TransformerLens支持的模型,Transparency Tool都能支持。对于TransformerLens不支持的模型,需要实现自己的TransparentLlm类

部署

# 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
  • 模型配置
{
    "allow_loading_dataset_files": true,
    "preloaded_dataset_filename": "sample_input.txt",
    "debug": true,
    "models": {
        "": null,
        "/root/.cache/modelscope/hub/AI-ModelScope/gpt2-medium": null,  // 额外添加模型
        "/root/.cache/Qwen1.5-14B-Chat/": 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
  • 效果
    在这里插入图片描述

原理

引言

  • Transformer架构:作者首先指出,当前最先进的语言模型(LMs)大多基于Transformer架构,这是一种深度学习模型,广泛应用于自然语言处理任务中。Transformer模型通过自注意力机制(self-attention)和前馈网络(feed-forward networks)处理语言信息。

  • 信息流的概念:在Transformer模型中,每个token的表示(representation)会随着网络层的加深而不断演化。这种演化过程可以视为信息流,即信息在模型内部的流动和转换。作者将这种信息流比作一个图,其中节点代表token的表示,边代表模型内部的计算操作。

  • 信息流的重要性:尽管在模型的前向传播过程中,所有的计算路径都存在,但对于特定的预测任务,只有一部分计算是重要的。作者强调了识别和提取这些重要信息流路径的重要性,因为这有助于我们更好地理解模型是如何做出特定预测的。

  • 现有方法的局限性:论文提到了现有的基于激活补丁(activation patching)的方法,这种方法通过替换模型内部的激活值来研究模型的行为。然而,这种方法存在局限性,包括需要人为设计预测模板、分析仅限于预定义模板、以及在大规模模型中不切实际等。

  • 提出的新方法:为了克服现有方法的局限性,作者提出了一种新的方法来自动构建信息流图,并提取对于每个预测最重要的节点和边。这种方法不需要人为设计的模板,可以高效地应用于任何预测任务,并且只需单次前向传播即可完成。

  • 实验和结果:在引言的最后,作者简要提到了他们使用Llama 2模型进行的实验,展示了新方法的有效性。他们发现某些注意力头(如处理前一个token的头和子词合并头)在整体上很重要,并且模型在处理相同词性的token时表现出相似的行为模式。

  • 贡献总结:作者总结了他们的贡献,包括提出了一种新的解释Transformer LMs预测的方法,与现有方法相比,新方法具有更广泛的适用性、更高的信息量和更快的速度

信息流路径的提取

实现步骤
  • 构建信息流图:首先,将模型内部的计算过程表示为一个图,其中节点代表token的表示,边代表模型内部的操作,如注意力头、前馈层等。

  • 自顶向下追踪:从预测结果的节点开始,自顶向下地追踪网络中的信息流动。在每一步中,只保留对当前预测结果有重要影响的节点和边。

  • 设置重要性阈值:通过设置一个阈值τ,只有当边的重要性高于这个阈值时,才会将其包含在最终的信息流路径图中。

  • 利用属性方法:与传统的激活补丁方法不同,作者使用属性(attribution)方法来确定边的重要性。这种方法不需要人为设计对比模板,可以更高效地识别对预测结果有实质性影响的信息流动路径。

  • 计算边的重要性:根据ALTI(Aggregation of Layer-Wise Token-to-Token Interactions)方法,计算每个边对于节点(即token表示的总和)的贡献度。贡献度与边向量与节点向量的接近程度成正比。

意义
  • 提高透明度:通过提取信息流路径,可以更清晰地看到模型内部是如何进行决策的,提高了模型的透明度。

  • 优化模型设计:理解信息流动的模式可以帮助研究者发现模型设计中的不足之处,从而进行优化。

  • 解释预测结果:信息流路径提供了一种方式来解释模型的预测结果,有助于理解模型为何做出特定的预测。

  • 发现模型组件的专门化:通过分析信息流路径,可以识别出模型中专门针对特定领域或任务的组件。

  • 提高模型的可靠性:通过识别和强化重要的信息流动路径,可以提高模型在面对复杂或模糊输入时的可靠性

如何理解模型行为
  • 注意力头的作用:通过分析哪些注意力头在信息流路径中起关键作用,可以理解模型在处理特定类型的输入时依赖哪些信息。

  • 信息流动模式:观察信息在模型内部如何流动,可以帮助我们理解模型是如何处理和整合不同部分的信息来做出预测的。

  • 模型的泛化能力:通过分析信息流路径,可以评估模型在不同任务或不同领域中的泛化能力。

  • 模型的脆弱性:识别信息流路径中的脆弱环节,可以帮助我们理解模型可能在哪些情况下失效,并采取措施进行改进。

  • 模型的自我修复能力:通过比较信息流路径在正常和干预(如激活补丁)情况下的差异,可以研究模型的自我修复能力。

参数解释

在这里插入图片描述

在这里插入图片描述

  • y轴表示 模型层
  • 横轴表示对应得token
  • 每次计算从L0依次向上计算,并经过attention计算在经过ffn泛化,每次都得到最重要得 top k个token
怎么理解Promoted Tokens

L39 ffn

  • 在Transformer架构中,"l39 ffn"通常指的是位于模型第39层(layer 39)的前馈网络(feed-forward network,简称FFN)。以下是对"l39 ffn"的详细解释:

  • Layer(层):在深度学习模型中,尤其是Transformer模型,信息会通过多个层次(layers)进行处理。每一层都会对输入数据进行一些变换,以提取特征或进行抽象表示。

  • Feed-Forward Network(前馈网络):FFN是Transformer模型中的一种组件,通常位于每个注意力(attention)层之后。它由两个线性变换组成,中间夹着一个非线性激活函数(如ReLU)。FFN的作用是对注意力层的输出进行进一步的非线性变换,增加模型的表达能力。

  • Layer 39(第39层):在某些大型语言模型中,可能会有数十层的深度结构。"l39"指的是模型中的第39层,这意味着信息已经通过了前38层的处理,并且在第39层中进一步被变换和抽象。

  • FFN的作用:在第39层的FFN中,模型会对从第38层传递来的信息进行处理。这个过程包括:

    • 一个线性变换,将输入映射到一个更高或更低维度的空间。
      应用一个非线性激活函数,通常是ReLU,以引入非线性特性,帮助模型学习复杂的模式。
    • 另一个线性变换,将激活后的结果映射回原始维度或另一个特定的维度。
  • 理解FFN的重要性:FFN是Transformer模型中不可或缺的一部分,它允许模型在每个层级上进行更复杂的特征转换。通过这种方式,模型可以学习到更加抽象和高级的语言特征,这对于处理复杂的语言任务至关重要。

  • 在模型解释性中的作用:在论文中提到的信息流路径提取方法中,FFN的重要性也可能被评估。研究者可能会分析第39层FFN对最终预测的贡献,以及它如何与同一层次的注意力机制协同工作。

怎么理解Top Tokens
  • L8 T0 after attn: 表示第8层经过attention 计算得到预测token
  • L8 T0 after ffn:表示第8层经过ffn 泛化 计算得到预测token,使模型表达能力更强了

待继续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/747959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IPD流程开发阶段模板及表单

目录 简介 内容brief(部分截图) 作者简介 简介 最近一段时间因为公司这边需要规范化管理。 就顺便集中整理了一下各类资料。 部分资料呢,就按照类别逐步分享了出来。 正常来讲,每个公司都应该有一个部门, 来专…

CSS Grid网格布局

一、前言 二、Grid布局 1、基本介绍 2、核心概念 (1)网格容器 (2)网格元素 (3)网格列 (4)网格行 (5)网格间距 (6)网格线 三…

C语言 | Leetcode C++题解之第199题二叉树的右视图

题目: 题解: #define MAX_NODE_NUM 100 int* rightSideView(struct TreeNode* root, int* returnSize){if (root NULL) {*returnSize 0;return NULL;}int *res (int *)malloc(sizeof(int) * MAX_NODE_NUM);int cnt 0;struct TreeNode **record (st…

如何使用ossutil工具迁移本地文件到oss(最快速迁移方法)

1:下载ossutil工具,https://help.aliyun.com/zh/oss/developer-reference/install-ossutil(注:根据不同的版本去下载) 2:解压ossutil工具,并双击运行ossutil.bat文件。 3:输入配置命…

前端新手小白的第一个AI全栈项目---AI聊天室

前言 ok,大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目,刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题,也是成功之后也是想要将实现过程分享一下&a…

可持续性是 Elastic: 进步与新机遇的一年

作者:来自 Elastic Keith Littlejohns 我们最新的可持续发展报告(Sustainability Report)总结了 Elastic 又一个令人兴奋的进步年,我们的项目继续揭示新的机遇。过去的一年对于我们与主要利益相关者群体合作以更好地了解他们的目标…

Linux-笔记 OverlayFS文件系统小应用 恢复功能

前言 通过另一章节 OverlayFS文件系统入门 中已经大致了解了原理,这里来实现一个小应用。通过前面介绍我们已经知道lowerdir是只读层,upperdir是可读写层,merged是合并层(挂载点),那么我们可以利用这个机…

火车头采集器Discuz采集发布模块插件

火车头采集器怎么采集发布数据到Discuz系统的论坛帖子或门户文章? 可按照以下步骤配置: 1. 火车头采集器Discuz采集发布插件下载安装: 火车头采集器Discuz发布模块插件下载地址-CSDN 2. 在火车头采集器工具导入Discuz采集发布模块插件&am…

ComfyUI如何使用Face Detailer和ComfyI2I插件进行修脸

一.插件ComfyI2I使用 1.ComfyUI中调用Mask Ops 2.创建蒙版插件BBOX Detector(combined) 3.创建UltralyticsDetectorProvider 里面包含多个模型其中bbox/face_yolov8m.pt是针对脸部修复 4.组合后测试脸部蒙版识别是否正常 5.测试正常后调出Inpaint Segments,放大…

线上民族传统服饰商城

摘 要 随着互联网的不断发展和普及,电子商务成为了人们生活中不可或缺的一部分。传统的线下购物方式逐渐被线上购物所取代,人们越来越习惯在互联网上购物。而民族传统服饰作为我国丰富多样的民族文化的重要组成部分,具有独特的艺术价值和商业…

PostMan动态设置全局变量

1. 前言 在开发过程中调试接口,一般都会使用PostMan。 其中有几个变量可能是好几个接口共用的,就会出现频繁手动复制(ctrlc)、粘贴(ctrlv)的情况。 这个过程得非常留意,生怕复制错了,或删减了某些东西,导致接口报错。…

【STM32-存储器映射】

STM32-存储器映射 ■ STM32F1-4G地址空间分成8个块■ STM32F1-Block0■ STM32F1-Block1■ STM32F1-Block2■ STM32F1- ■ STM32F1-4G地址空间分成8个块 ■ STM32F1-Block0 有出厂 BootLoader 就可以使用串口下载程序。如Keil5图中IROM地址是0x8000000 开始 就是flash地址 ■ S…

微服务和kafka

一、微服务简介 1.单体架构 分布式--微服务--云原生 传统架构(单机系统),一个项目一个工程:比如商品、订单、支付、库存、登录、注册等等,统一部署,一个进程 all in one的架构方式,把所有的…

flink的窗口

目录 窗口分类 1.按照驱动类型分类 1. 时间窗口(Time window) 2.计数窗口(Count window) 2.按照窗口分配数据的规则分类 窗口API分类 API调用 窗口分配器器: 窗口函数 增量聚合函数: 全窗口函数…

非极大值抑制算法(Non-Maximum Suppression,NMS)

https://tcnull.github.io/nms/ https://blog.csdn.net/weicao1990/article/details/103857298 目标检测中检测出了许多的候选框,候选框之间是有重叠的,NMS作用重叠的候选框只保留一个 算法: 将所有候选框放入到集和B从B中选出分数S最大的b…

探讨数字化背景下VSM(价值流程图)的挑战和机遇

在信息化、数字化飞速发展的今天,各行各业都面临着前所未有的挑战与机遇。作为源自丰田生产模式的VSM(价值流程图),这一曾经引领制造业革命的工具,在数字化背景下又将如何乘风破浪,应对新的市场格局和技术变…

西门子智能电气阀门定位器在冶金生产控制的应用

西门子智能电气阀门定位器在冶金生产控制的应用 1 前 言 在自动化程度越来越高的冶金行业中 ,调节阀起着至关重要的作用,一旦其发生故障, 轻则出现生产事故,停机,停炉影响各级生产指标,生产任务,影响装置的安全运行。重则可能出现人身安全事故,将直接影响家庭的幸福和企…

ubuntu 18 虚拟机安装(1)

ubuntu 18 虚拟机安装 ubuntu 18.04.6 Ubuntu 18.04.6 LTS (Bionic Beaver) https://releases.ubuntu.com/bionic/ 参考: 设置固定IP地址 https://blog.csdn.net/wowocpp/article/details/126160428 https://www.jianshu.com/p/1d133c0dec9d ubuntu-18.04.6-l…

网络安全学习(持续更新中~)

网络安全学习 前言 本目录索引持续更新中,记录网络安全学习过程~ 博客最新更新时间:2024.6.25 学习路线 Windows内网服务 Windows内网服务模块包含了Windows服务器的相关知识。 文章链接包含要点Windows账户相关Windows权限相关Windows日志Windows…

关于 AD21导入电子元器件放置“3D体”STEP模型失去3D纹理贴图 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139969415 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…