Transformer相比RNN(循环神经网络)的核心优势之一是天然支持并行计算,这源于其自注意力机制和网络结构的设计.并行计算能力长序列处理瓶颈是其架构特性的两个关键表现:

  • 并行计算:指 Transformer 在训练 / 推理时通过矩阵运算并行化、模块独立性实现高效计算的能力;
  • 长序列处理瓶颈:指当输入序列长度(n)增加时,自注意力机制的计算 / 内存复杂度呈O(n²)增长,导致效率骤降的问题。

1. 并行计算

1. 自注意力机制的并行性

自注意力的计算公式为:
Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q,K,V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})VAttention(Q,K,V)=softmax(dkQKT)V

对于序列长度为nnn的输入,自注意力中每个位置的计算不依赖其他位置的中间结果

  • 计算Q、K、VQ、K、VQKV的线性变换时,所有token的qi、ki、viq_i、k_i、v_iqikivi可同时生成(并行);
  • 计算QKTQK^TQKTn×nn×nn×n的分数矩阵)时,每个元素score(i,j)score(i,j)score(i,j)的计算独立于其他元素(可并行);
  • 即使是softmax和加权求和步骤,也可对整个序列的所有位置同时执行(并行)。
    而RNN需要按序列顺序计算(hih_ihi依赖hi−1h_{i-1}hi1),完全串行,无法并行。

2. 网络结构的并行性

  • 编码器/解码器层的并行:编码器的每一层(多头注意力+前馈网络)对整个序列的处理是“批量”的,所有token共享层参数,可同时更新;
  • 训练时的并行优化:结合数据并行(同一模型在不同样本上并行训练)、模型并行(将网络层拆分到不同设备),可充分利用GPU/TPU的并行计算能力,大幅加速训练。
    核心观点:Transformer的并行能力源于模块独立性和矩阵运算的可并行性。
  1. 底层:矩阵运算天然支持并行(GPU的SIMD架构可并行处理矩阵元素);
  2. 中层:模块独立(前馈网络对每个位置的计算独立;多头注意力的“头”之间无依赖);
  3. 顶层:训练时可通过批处理(batch维度)、序列分片进一步提升并行效率。

根本原理:并行能力源于“计算单元的独立性”和“矩阵运算的可拆分性”。

  • 前馈网络:对序列中每个位置的计算是独立函数(FFN(x_i) = W2·ReLU(W1·x_i + b1) + b2),无跨位置依赖,可完全并行;
  • 多头注意力:每个“头”的计算独立(head_i = Attention(QW_i^Q, KW_i^K, VW_i^V)),头之间可并行;
  • 矩阵运算:QKT的每个元素(QKT)[i][j] = Q[i]·K[j],元素间无依赖,可由GPU并行计算。

1. 长序列瓶颈

长序列处理的核心瓶颈
当序列长度nnn增大(如文档级文本、长视频帧、基因组序列,nnn可达10410^4104甚至10510^5105),Transformer的性能会急剧下降,核心瓶颈来自自注意力的O(n2)O(n²)O(n2)复杂度

1. 计算复杂度瓶颈

自注意力的核心步骤(QKTQK^TQKT矩阵乘法)的计算量为O(n2⋅d)O(n²·d)O(n2d)ddd为隐藏层维度):

  • n=1000n=1000n=1000时,计算量约为106⋅d10^6·d106d
  • n=10000n=10000n=10000时,计算量增至108⋅d10^8·d108d(是前者的100倍)。
    这种平方级增长会导致:
  • 单次前向/反向传播时间大幅增加(训练/推理变慢);
  • 难以利用并行计算优势(过多计算量超出硬件算力上限)。

2. 内存瓶颈

自注意力过程中需要存储多个n×nn×nn×nn×dn×dn×d的中间张量:

  • Q、K、VQ、K、VQKV的形状为(n,d)(n,d)(n,d),总内存为O(3nd)O(3nd)O(3nd)
  • QKTQK^TQKT的分数矩阵形状为(n,n)(n,n)(n,n),内存为O(n2)O(n²)O(n2)
  • 注意力权重矩阵(softmax结果)同样为(n,n)(n,n)(n,n),内存O(n2)O(n²)O(n2)
    n=10000n=10000n=10000时,n2=108n²=10^8n2=108,若每个元素为4字节(float32),仅分数矩阵就需要400MB内存,加上其他张量,单头注意力就可能占用数GB内存,远超普通GPU的显存上限(如16GB GPU难以处理n=20000n=20000n=20000的序列)。

3. 优化器的额外负担

训练时,优化器(如Adam)需要存储所有参数的梯度和动量信息,长序列会导致中间变量(如注意力权重的梯度)的内存占用也随n2n²n2增长,进一步加剧内存压力。

三、长序列处理的解决方案

为突破O(n2)O(n²)O(n2)瓶颈,研究者提出了多种优化思路,核心是用“稀疏注意力”或“线性复杂度注意力”替代全局注意力

  1. 稀疏注意力(Sparse Attention)
    仅计算部分位置的注意力,将复杂度降至O(n⋅w)O(n·w)O(nw)www为局部窗口大小):
  • 滑动窗口注意力(如Longformer):每个位置仅关注左右www个相邻位置(总窗口2w+12w+12w+1),适合时序相关的长序列;
  • 固定稀疏模式(如BigBird):每个位置关注“局部窗口+随机采样+全局标记”,兼顾局部相关性和全局信息;
  • 轴向注意力(如Axial Transformer):将长序列拆分为多个维度(如文本拆分为“句-词”),在每个维度单独计算注意力,复杂度降至O(n⋅n)O(n·\sqrt{n})O(nn)
  1. 线性注意力(Linear Attention)
    用“核函数”替换QKTQK^TQKT的矩阵乘法,将复杂度降至O(n⋅d)O(n·d)O(nd)
  • 核心思路:将softmax(QKT/d)V\text{softmax}(QK^T/\sqrt{d})Vsoftmax(QKT/d)V改写为KT(softmax(QKT/d)TV)Z\frac{K^T(\text{softmax}(QK^T/\sqrt{d})^T V)}{Z}ZKT(softmax(QKT/d)TV)ZZZ为归一化项),通过核函数(如exp⁡(q⋅k)\exp(q·k)exp(qk))的性质,将矩阵乘法转化为逐元素操作;
  • 代表模型:Performer(用随机特征映射近似核函数)、Linformer(用低秩矩阵近似K、VK、VKV)。
  1. 分层/压缩注意力
    通过“序列压缩”减少有效长度:
  • ** hierarchical Attention**:先对长序列分块,计算块内注意力得到“块表示”,再计算块间注意力(如文档先分句子,再对句子表示计算注意力);
  • Downsampling:用池化(如平均池化)或卷积将长序列压缩为短序列(如ViT中的Patch Embedding将图像压缩为n=14×14n=14×14n=14×14的patch序列)。

核心观点:长序列处理瓶颈源于自注意力的全连接关联特性,导致复杂度随长度平方增长。分层展开:

  1. 底层:自注意力需计算“每个位置与所有位置”的关联(QK^T矩阵为n×n);
  2. 中层:计算复杂度O(n²d)(d为隐藏维度)、内存占用O(n²)(存储注意力权重);
  3. 顶层:当n过大(如n>10k),计算耗时、内存溢出,效率骤降。

根本原理:自注意力的“全关联定义”导致复杂度随长度平方增长,是机制固有属性。
自注意力的核心公式为:
Attention(Q,K,V) = softmax((QK^T)/√d_k)·V
其中QK^T是n×n矩阵(n为序列长度),其计算/存储复杂度必然是O(n²);即使优化实现(如稀疏化),也只能降低系数,无法改变O(n²)的本质(因“注意力”定义本身要求衡量位置间的关联)。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LightRAG:大模型时代的低成本检索利器

LightRAG:大模型时代的低成本检索利器 大模型浪潮下,RAG 技术的困境与曙光 在科技飞速发展的当下,大语言模型(LLMs)已成为人工智能领域的璀璨明星。从最初惊艳世人的 GPT-3,到如今功能愈发强大的 GPT-4&…

spring boot开发中的资源处理等问题

文章目录一、RESTful 风格二、Spring Boot 静态资源处理三、Spring Boot 首页(欢迎页)四、PathVariable 注解五、拦截器(Interceptor)六、过滤器(Filter)七、触发器(Trigger)八、Han…

[2025CVPR-图象生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色

​研究背景与挑战​ ​临床需求​ 组织学染色(如H&E和IHC)是病理诊断的核心技术,但IHC染色存在耗时、组织消耗大、图像未对齐等问题。 虚拟染色技术可通过生成模型将H&E图像转换为IHC图像,但现有方法面临两大挑战: ​染色不真实性​:生成图像与真实IHC的分布存在…

【Leetcode】2106. 摘水果

文章目录题目思路代码CJavaPython复杂度分析时间复杂度空间复杂度结果总结题目 题目链接🔗 在一个无限的 x 坐标轴上,有许多水果分布在其中某些位置。给你一个二维整数数组 fruits ,其中 fruits[i] [positioni, amounti] 表示共有 amounti…

(CVPR 2024)SLAM卷不动了,机器人还有哪些方向能做?

关注gongzhonghao【CVPR顶会精选】众所周知,机器人因复杂环境适应性差、硬件部署成本高,对高效泛化一直需求迫切。再加上多传感器协同难题、真实场景数据获取不易,当下对迁移学习 机器人智能融合的研究也就更热烈了。不过显然,这…

Go语言 延 迟 语 句

延迟语句(defer)是Go 语言里一个非常有用的关键字,它能把资源的释放语句与申请语句放到距离相近的位置,从而减少了资源泄漏的情况发生。延迟语句是什么defer 是Go 语言提供的一种用于注册延迟调用的机制:让函数或语句可…

【go 】数组的多种初始化方式与操作

在 Go 语言中,数组是一种固定长度的数据结构,用于存储相同类型的元素。以下是 Go 中数组的多种初始化方式,结合搜索结果整理如下: (一)使用 var 关键字声明并初始化数组 使用 var 关键字声明数组时&#xf…

基于Java+MySQL 实现(Web)网上商城

悦桔拉拉商城1. 课设目的可以巩固自己之前所学的知识,以及学习更多的新知识。可以掌握业务流程,学习工作的流程。2. 开发环境硬件环境:Window11 电脑、Centos7.6 服务器软件环境:IntelliJ IDEA 2021.1.3 开发工具JDK 16 运行环境M…

高并发抢单系统核心实现详解:Redisson分布式锁实战

一、方法整体流程解析 #mermaid-svg-MROZ2xF7WaNPaztA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MROZ2xF7WaNPaztA .error-icon{fill:#552222;}#mermaid-svg-MROZ2xF7WaNPaztA .error-text{fill:#552222;strok…

Android12 User版本开启adb root, adb remount, su, 关闭selinux

开启adb root 直接看adb源码: __android_log_is_debuggable就是判断ro.debuggable属性值,感兴趣可以在 源码下grep下实现看看。auth_required :在adb源码下定义的全局变量,默认等于true,。看名字就是是否需要用户授权的flag, 这里不再继续跟…

金融专业高分简历撰写指南

一、金融求职简历原则:深度与亮点并存在金融行业求职时,一份出色的简历需突出经历深度与亮点。01 教育背景需如实填写毕业院校、专业、GPA及所学课程。金融行业不少公司对求职者学校和学历有严格标准,如“985”“211”院校或硕士以上学历等。…

专题:2025生命科学与生物制药全景报告:产业图谱、投资方向及策略洞察|附130+份报告PDF、原数据表汇总下载

原文链接:https://tecdat.cn/?p43526 过去一年,全球生命科学VC融资回暖至1021.5亿美元,并购交易虽下滑23%却聚焦关键赛道,创新药管线中GLP-1受体激动剂以170亿美元市场规模领跑,AI技术将研发周期缩短60%……这些数据背…

Compose笔记(四十)--ClickableText

这一节主要了解一下Compose中的ClickableText,在Jetpack Compose中,ClickableText是用于创建可点击文本的组件,其核心功能是通过声明式语法将文本设置为交互式元素,用户点击时可触发特定操作。简单总结如下:API含义 text&#xff…

面试必刷的数组三连:原地删除与合并

坚持用 清晰易懂的图解 多语言代码,让每道题变得简单! 呆头个人主页详情 呆头个人Gitee代码仓库 呆头详细专栏系列 座右铭: “不患无位,患所以立。” 面试必刷的数组三连:原地删除与合并前言目录1.移除元素2.删除有序…

力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)

1、题干 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1:输入:matrix [[1,2,3],[4,5,6],[7,8,9]]…

译|用户增长策略如何使用因果机器学习的案例

来自上传文件中的文章《[Causal Machine Learning for Growth: Loyalty Programs, LTV, and What to Do When You Can’t Experiment | by Torty Sivill | Towards AI]》 本文探讨了当 A/B 测试不可行时,如何利用因果推断从历史数据中获取洞察。技术亮点在于通过构建…

java~final关键字

final关键字final基本介绍final的使用细节final基本介绍 final是最终的意思,可以修饰类,属性,方法,局部变量什么时候会要使用到final呢? 1.想要类不被继承时 2.不希望类的某个属性的值被改变时 3.不想父类的某个方法被…

Node.js(四)之数据库与身份认证

数据库与身份认证 目录 数据库与身份认证 十三、数据库的基本概念 13.1 什么是数据库 13.2 常见的数据库及分类 13.3 传统型数据库的数据组织结构 1. Excel 的数据组织结构 2. 传统型数据库的数据组织结构 3. 实际开发中库、表、行、字段的关系 十四、安装并配置MySQ…

SpringBoot+SpringMVC常用注解

文章目录发展历程项目创建项目结构入门案例配置文件的两种方式:只能使用一种创建项目二入门案例常用知识及注解Controller:类上面加,SpringMVC的注解GetMapping:方法上面加Spring框架的两项核心功能Component:组件。控制反转,加在业务类上面&…

标准GS相位恢复算法

标准GS相位恢复算法详解与MATLAB实现 Gerchberg-Saxton (GS) 算法是一种经典的相位恢复方法,广泛应用于光学成像、衍射成像和全息技术等领域。该算法通过迭代过程从未知相位的强度测量中恢复相位信息。 算法原理 GS算法的核心思想是利用傅里叶变换关系在空间域和频率…