用「画家流水线」的方式理解Transformer中间层

news2025/2/25 8:56:25

【导读】 Transformer架构层层堆叠,包含十几亿甚至几十亿个参数,这些层到底是如何工作的?当一个新奇的比喻——「画家流水线」,被用于类比并理解Transformer架构的中间层,情况突然变得明朗起来,并引出了一些有趣的发现。

尽管Transformer架构已经主宰了当今几乎所有的大模型,但我们依旧对它的工作原理知之甚少。

而且,基于Transformer的预训练LLM动辄有几十亿参数,很难直接对模型进行可解释性分析。

同时,模型中间层由N个相同的块堆叠在一起,它们之间唯一的区别只有层次位置和权重值,这就让理解中间层更加困难。

然而,最近发表的一篇论文却给出了一个十分通俗易懂的比喻——「画家流水线」。

图片

论文地址:https://arxiv.org/pdf/2407.09298v1

有着「东京AI梦之队」之称的Sakana AI,联合IBM前AI负责人Satya Nitta创始的Emergence AI,两个团队的研究人员用一种新的「打开方式」来解释Transformer架构的中间层。

值得一提的是,这篇论文作者之一Llion Jones同样也是当年Transformer架构的共同创建者之一。

图片

那么,「画家流水线」这个比喻该如何理解呢?

首先,输入被看作是一张画布,输入通过N个组成中间层的块的过程,就像是画布在「画家流水线」上进行传递的过程。

有些画家擅长画鸟,而有些画家则更擅长画鱼。每个画家从前面的画家手中接过画布,然后决定是在画上添几笔,还是直接传给后面的画家。

在这个类比中,非常重要的一点是,每个画家都使用相同的「词汇」来理解画作,因此一个画家可以在流水线上从前一个画家手中接过画作,但不会因为对画面理解不同而造成灾难。

画家们也可以重新排序(调整图层的前后顺序),甚至可以同时添加笔触,就像N个块可以并行运行。

这个类比并不是一个严谨的理论,但可以提供一个帮助我们思考Transformer层的有趣视角。

在这个类比的启发下,研究人员提出了一些假设,并通过实验来验证这些假设是否成立——

  • 不同层是否使用相同的表征空间?
  • 所有的层都是有必要的吗?
  • 中间层是否都在执行相同的功能?
  • 层的顺序重要吗?
  • 我们能并行运行各层吗?
  • 顺序是否对与某些特定任务而言更重要
  • 循环是否有助于并行层?
  • 哪些变体对性能的损害最小?

实验

主要用于实验包括两种预训练LLM,分别是decoder-only架构的Llama2-7B,以及encoder-only架构的BERT。Llama2-7B有70亿个参数和32层(每层含2.02亿个参数),BERT仅有24层和3.4亿个参数。

在下述所有实验过程中,模型都是冻结的。除了对BERT进行GLUE基准测试时进行了标准的微调步骤,参数没有经过任何修改。

评估过程采用了ARC(科学考试题)、HellaSwag(常识)、GSM8K(数学应用题)、LAMBADA(单词预测)等常用基准。

其中LAMBADA任务可以衡量模型困惑度(perplexity),任务最接近预训练时的原始token预测。

结果发现,Transformer的中间层有一定程度的一致性,但不冗余,而且对数学、推理任务而言,各层的运行顺序比在语义任务中有更重要的影响。

各层「说同一种语言」?

Transformer中的不同层是否共享相同的表示空间?

为了回答这个问题,论文采用的方法是让模型跳过特定层或调换相邻层的顺序,观察会不会出现灾难性后果。

图2中展示了Llama 2 7B在跳过或调换一些层后,模型整体在Open-LAMADA基准上的表现。

可以看到,除了起始和末端的几层,模型对这两种架构修改都表现出了相当强的鲁棒性。

图片

因此可以得出初步结论:1)中间层共享同一个表示空间,2)表示空间与「外层」(第一层和最后几层)不同。

为了进一步验证,论文还进入模型内部,测量了不同层中隐藏状态内激活函数的余弦相似度(图3),表明这种一致性在三个模型的所有中间层都成立。

图片

上图还可以很清晰看到,模型各层自然形成了4~5个不同的相似组,比如Llama 2 13B模型中分别是:第0层,1-3层、中间层,以及最后的1层或2层。

据此,Transformer中的所有层可以被大致分为三类:起始层、中间层和结束层。

此外,图3中的矩阵也能和图2中的模型分数相对应,更能有力证明,中间层之间共享语义表达空间。

所有层都必要?

为了进一步检验中间层的重定向空间是否真正共享(除了具有接近的余弦相似性),研究人员尝试跳过多个层。

也就是说,将第N层的输出直接送入第N+M层的输入(其中M>1),从而「跳过」M-1层。

图片

在不进行任何微调的情况下,这个实验是要看看N+M层能否理解来自N层的激活,尽管它在训练中只接受了来自N+M-1层的输入。

结果显示,Llama2-7B和BERT-Large的许多基准性能都出现了一定程度的下降。

那么,所有层都有必要吗?这一问题已经有了答案。

No! 并非所有层都是必要的,至少有几个中间层可以跳过,而不会发生灾难性故障。

图片

左图:Llama2-7B跳过N层~32-N层的基准测试结果(归一化);右图:BERT跳过N层~24-N 层的基准测试结果(未归一化)

中间层功能相同吗?

如果中间层共享一个共同的表征空间,这是否意味着这些层是多余的呢?

为了验证这一点,研究人员重新进行了上一小节的「跳过」实验。

但不同的是,这次不是直接跳过M个中间层,而是用模型最中心的的一层代替全部M个层(Llama是第16层,BERT是第12层),相当于在这一层上循环T-2N+1次,其中T是层的总数。

图片

结果表明,随着被替换层数M的增加,基准测试结果迅速下降。

在研究人员所尝试的所有测试中,这一项测试的变化是最严重的,比直接跳过一些层还要严重得多。

因此,中间层功能相同吗?这一问题的答案是——

No! 在中间层之间共享权重是灾难性的,这表明中间层在执行不同的功能。

图片

用中心层替换M个中间层(左侧经过归一化,右侧未经归一化)

顺序重要吗?

之前的实验表明,中间层共享一个表征空间,但对这个空间执行不同的操作。

那么另一个问题来了——这些操作的执行顺序有多重要?

论文进行了两组实验来检验这个问题。首先,以与预训练完全相反的顺序运行中间层,如下图所示:

图片

第二组则是以随机顺序运行中间层,最终结果是取10个随机种子进行实验后的均值。

图6和图7分别展示了中间层完全翻转和随机顺序的结果,虽然都出现了一定程度的性能下降,但两者的结果都优于直接跳过的情况。

图片

图片

所以,中间层顺序重要吗?这一问题的答案是——

比较重要。改变中间层的执行顺序,无论是随机打乱或者完全翻转,都会导致模型性能退化。

并行运行

如果层本身的存在比它们的执行顺序更重要,那么我们是否可以独立运行各层,最后合并它们的结果呢?

比如像下图中,将原本堆叠在一起的中间层展开,并行运行后取各层输出的平均值,传递给最后的N个层。

图片

实验结果显示,GSM8K(数学应用题)基准中,模型性能有剧烈的变化,直线下降,其他基准分数的下滑则平缓得多。

图片

我们暂且可以下这样一个结论:并行运行是可行的,但解决数学问题除外。

要理解这种性能下降,可以用我们的「画家流水线」进行类比:某些中间层只有在看到合适输入时,才能对结果有所贡献,就像一个擅长画车轮的画家,只有在画面上看到汽车车身时,才更有可能画出轮子。

如果是这种情况,将中间层并行运行的过程迭代多次应该会提高性能。

如下图所示,论文将多个并行层的平均输出再作为输入反馈回去,如此进行一定次数的循环。

图片

图9显示了循环3次的结果,与图8中没有循环的方案相比,性能曲线的确相对平缓,尤其是在图右BERT模型未经归一化的分数上更加明显。

图片

图片

图10更清楚直观地展示了,并行的中间层数和循环次数如何影响性能,其中红框圈出了每列上的最高值。

除了29层和31层(接近Llama 2 7B的总层数32)得出例外的结果,从5层到27层都呈现出一致的趋势:最佳迭代次数大致与并行化层数呈线性比例。

图片

实验结果总结

将上述所有实验结果放到同一张图中(图11),我们就能比较不同变体对模型性能的影响程度。

图片

左图(Llama2)取各基准的中值,右图(BERT)取各基准的平均值

「随机化层顺序」和「循环并行」分别在Llama2和BERT-Large上造成了最少的性能下降,「中间重复」方案(用中心层运行多次代替整个中间层)则在两个模型上都造成了最严重的滑坡。

讨论

自从Transformer发布后,大多数工作都在关注架构的修改和优化,以达到性能提升或参数减少。这篇论文则提供了另一种视角,调查了层并行化和重用的影响。

基于「Transformer层即画家」这个类比,我们开头提出的几个问题都通过实验得到了答案,最后得到了3个有趣的发现:

  • 所有Transformer层可以大致分为三类:起始层、中间层和结束层,其中中间层占比最大;
  • 中间层具有一定程度的一致性,但并不冗余;
  • 与语义任务相比,各层的执行顺序对数学和推理任务更为重要。

为什么Transformer架构面对各种架构修改时能表现出如此强大的鲁棒性?作者表示将在之后的工作中再深入研究。

一个可能的假设是,训练过程中的残差连接是各层共享相同表征的必要条件。

我们已经知道,残差连接有助于解决梯度消失问题,然而相比没有残差连接的Transformer,加上残差会降低性能。

如果能在没有残差的Transformer上重新运行上述架构的变体,看看是否会破坏完全无残差模型所取得的微薄收益,那将会非常有趣。

对于未来的其他工作,研究人员还计划「解冻」模型,并研究Transformer是否需要(以及需要多长时间)通过微调来适应上述的架构变化。

虽然本文的目的是更好地理解Transformer的中间层,而非引入新模型,但根据实验结果,中间层并行或者干脆跳过都可以用适度的准确性损失换取更低的推理延迟。

作者团队

本文作者分别来自两家AI初创公司:Sakana AI和Emergence AI。

Sakana AI在今年年初刚刚获得3000万美元的种子轮融资,由Lux Capital领投,并得到了硅谷顶级风投公司Khosla Ventures以及Jeaf Dean、Alexandr Wang等大佬的支持。

图片

公司研发的重点是基于自然启发的新型基础模型,创始团队也是星光熠熠,一半成员来自「AI黄埔军校」——谷歌大脑和DeepMind。

图片

相比于关注基础研究的Sakana,Emergence AI更关注应用,专门从事LLM驱动的multi-agent系统研发。

公司联合创始Satya Nitta曾担任IBM研究院「AI解决方案」领域的全球主管,其中的许多研究人员和工程师也同样来自谷歌、Meta、微软、亚马逊和Allen AI等顶尖机构。

图片

Emergence上个月刚刚从Learn Capital获得9720万美元的资金,以及额外的总计超过一亿美元的信贷额度,未来的发展也是前途可期。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 SpringCloud 分布式架构网上商城

目录 1绪论 4 1.1项目研究的背景 4 1.2开发意义 4 1.3课题研究现状 4 1.4项目研究内容与结构 5 2开发技术介绍 6 2.1Java技术 6 2.2 SpringCloud简介 6 2.3MySQL 介绍 7 2.4MySQL环境配置 7 2.5B/S架构 8 3系统分析 9 3.1可行性分析 9 3.1.1技术可行性 9 3.1.2经济可行性 9 3.…

C语言 ——— 结构体类型的声明、自引用、定义以及初始化

目录 结构体的声明 结构体的自引用 结构体的定义以及初始化 结构体的声明 结构体的概念: 结构体是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量 结构体的声明: 结构体声明的关键字:st…

【安卓】Service的基本用法

文章目录 Service简介启动和停止ServiceActivity和Service进行通信 Service简介 新建一个ServiceTest项目,然后右击com.example.servicetest→New→Service→Service。 每个Service中最常用到onCreate()、onStartCommand()和onDestroy()这3个方法其中onCreate()方法…

Tomcat 启动时出现 java.util.zip.ZipException: error in opening zip file

Tomcat启动 java.util.zip.ZipException: error in opening zip file 错误解决 今天做一个Tomcat的Demo时出现了一个小问题,也在网上查询了很多资料,遇到这个问题的人很少,基本上没有遇到过这种情况,在此记录一下。 报错信息 异…

5 C 语言常量的定义和分类、#define 和 const 定义常量的区别

目录 1 什么是常量 2 常量的分类 3 常量的定义 3.1 使用 #define 定义常量 3.1.1 介绍 3.1.2 定义格式 3.1.3 案例演示 3.1.4 执行时机 3.2 const 关键字 3.2.1 介绍 3.2.2 const 定义常量的格式 3.2.3 案例演示 3.2.4 执行时机 3.2.5 注意事项 4 #define 和 co…

Spring事务管理和事务传播机制详解

目录 一.简单理解事务 二.Spring中事务的实现 编程式事务 声明式事务 三.Transactional 详解 ▐ 异常回滚属性 rollbackFor ▐ 事务隔离级别 Isolation ▐ 事务的传播机制 propagation 一.简单理解事务 事务是⼀组操作的集合,是⼀个不可分割的操作。 事务会…

CORS解决前端跨域案例学习

跨域的概念不再解释&#xff0c;直接演示下出现跨域的情况&#xff1a; 前端代码&#xff08;index.html&#xff09;: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" conten…

comfyUI工作流也能变现了,“SD变现宝”把工作流转为小程序,重塑内容创作者的商业之路

前言 在数字化浪潮的推动下&#xff0c;内容创作行业正经历着前所未有的变革。如何在这个充满竞争与机遇的时代中脱颖而出&#xff0c;成为每个创作者必须面对的挑战。 SD变现宝&#xff0c;作为ComfyUI的最新插件&#xff0c;凭借其独特的功能与优势&#xff0c;为创作者们开…

赋能未来制造:三品图文档管理软件在大连船推图文档管理中的深度应用与成效

在信息化浪潮席卷全球的今天&#xff0c;企业的研发管理能力已经成为衡量其核心竞争力的重要标尺。三品软件与大连船用推进器有限公司携手合作&#xff0c;成功实施了EDM图文档协同管理系统项目&#xff0c;为企业在激烈的市场竞争中提供强有力的支持&#xff0c;确保其始终处于…

RCE绕过练习

一.了解eval与assert eval与assert区别_eval assert-CSDN博客https://blog.csdn.net/qq_53568983/article/details/129782507 看了php官方文档,assert中提到的许多名词不明白,转而搜索文章,这篇是解释的是最直白的 其中提到eval不是一个函数,是语言构造器,不能被可变函数调用…

Git代码管理规范

1. 简介 git 分支分为集成分支、功能分支和修复分支&#xff0c;分别命名为 develop、feature 和 hotfix&#xff0c;均为单数。不可使用 features、future、hotfixes、hotfixs 等错误名称。 master&#xff08;主分支&#xff0c;永远是可用的稳定版本&#xff0c;不能直接在…

数据中台运营与实战案例集锦(125页PPT)

方案简介&#xff1a; 本篇通过理论讲解与实战案例相结合的方式&#xff0c;深入剖析了数据中台的概念、架构、关键技术、实施路径以及运营策略。内容覆盖从数据中台规划到落地的全过程&#xff0c;包括数据治理、数据资产管理、数据服务化、数据分析与挖掘、以及如何通过数据…

PythonStudio 控件使用常用方式(二十六)TProgressBar

PythonStudio是一个极强的开发Python的IDE工具&#xff0c;官网地址是&#xff1a;https://glsite.com/ &#xff0c;在官网可以下载最新版的PythonStudio&#xff0c;同时&#xff0c;在使用PythonStudio时&#xff0c;它也能及时为用户升到最新版本。它使用的是Delphi的控件&…

MySQL:复杂查询(一)——聚合函数分组查询联合查询01

目录 1、聚合查询 1.1 聚合函数 1.1.1 COUNT() 1.1.2 SUM() 1.1.3 AVG() 1.1.4 MAX()&#xff0c;MIN() 1.2 分组查询 1.2.1 GROUP BY子句 1.2.1.1 round() 1.2.2 HAVING 1.2.3 示例 2、联合查询&#xff08;表连接查询&#xff09; 2.1 内连接 2.1.1 ①取相关表笛…

机器学习——全连接(MLP多层感知机)的理解

全连接即是矩阵乘&#xff0c;因此在transformer中获取QKV理论上是输入与QKV权重矩阵相乘&#xff0c;但实际操作则是使用全连接即nn.Linear()&#xff0c;注意这里的输入和输出都是二维的[batch,d_model]&#xff0c;即每个样本是一维的。

【Echarts】custom自定义图表实现甘特图

效果图 主要注意点&#xff1a; 1、右上角图例visualMap实现 2、visualMap增加formatter 3、series使用custom自定义图表&#xff0c;encode解析四维数组。核心是renderItem方法&#xff0c;必填项&#xff0c;且需要注意要全部定义在options里面&#xff01;&#xff01;&…

程序员如何平衡日常编码工作与提升式学习?

程序员的两难&#xff1a;如何平衡日常编码与持续学习 在科技日新月异、更新迭代迅速的编程世界中&#xff0c;程序员面临的一个重要挑战是如何在繁忙的日常编码工作和持续的专业提升之间找到平衡。是否应当在工作时间全身心投入到项目推进中&#xff0c;还是应该抽出时间学习…

第38篇 冒泡排序<二>

Q&#xff1a;如何设计C语言程序对数组进行降序排列&#xff1f; A&#xff1a;基本原理&#xff1a;通过不断的比较和交换数组中的数据元素&#xff0c;最终使得最大的数据“冒泡”排到到数组最末&#xff0c;并逐步缩小待排序的范围直到所有数据都排列正确位置。首先定义简单…

行业大模型:信用评分大模型、生产优化大模型、库存管理大模型、物流行业大模型、零售行业大模型

金融行业大模型&#xff1a;信用评分大模型 信用评分模型在金融行业中扮演着至关重要的角色&#xff0c;它通过对个人或企业的信用状况进行评估&#xff0c;帮助金融机构有效控制风险&#xff0c;提高业务效率。以下是信用评分模型的特点及案例介绍&#xff1a; 信用评分模型…

git放弃本地add/commit

git放弃本地add/commit 还未添加add的情况已经执行git add缓存了的&#xff1a;可以用命令 还未添加add的情况 # 放弃某个文件git checkout <filename># 放弃所有文件git checkout .已经执行git add缓存了的&#xff1a;可以用命令 git reset HEAD filepathname &#x…