首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >Transformer >有哪些方法可以降低 Transformer 的注意力计算复杂度?

有哪些方法可以降低 Transformer 的注意力计算复杂度?

词条归属:Transformer

1. 稀疏注意力

稀疏注意力通过只计算一部分 token 之间的注意力来降低开销。代表性工作包括 2019 年的 Sparse Transformer(将复杂度降至 O(n√n))、2020 年的 Longformer(滑动窗口加少量全局 token)和 BigBird(随机加局部加全局,兼具通用逼近性质)。

2. 线性注意力

线性注意力通过核技巧或随机特征近似 softmax,将复杂度降为线性 O(n)。代表性方法包括 Linformer(将键值投影到低维)和 Performer(用正交随机特征近似 softmax 核)。这类方法在长序列上速度优势明显,但在长上下文召回等任务上精度通常略有损失。

3. 硬件感知优化

FlashAttention 是另一条影响深远的路线,它不改变注意力的数学定义,而是通过分块计算和核融合,将注意力运算留在片上高速缓存中完成,避免在显存中物化完整的注意力矩阵,从而实现线性内存占用和数倍加速。它已成为 PyTorch、JAX 及主流推理框架的默认注意力内核,其后续版本 FlashAttention-2(2023)、FlashAttention-3(2024)依次提升了并行度与硬件利用率;2026 年 3 月发布的 FlashAttention-4 面向 Blackwell 架构(如 B200)进行算法与内核协同设计,在 BF16 精度下性能可达约 1613 TFLOPs/s。

相关文章
不得不看!降低Transformer复杂度的方法
记:序列长度为n,一个位置的embedding大小为d。例如(32,512,768)的序列,n=512,d=768.
NewBeeNLP
2022-04-14
3.4K0
有哪些办法可以降低 Redis 的内存使用情况?
Redis是一款高性能、非关系型的键值存储数据库。在使用Redis时,随着数据量的不断增长,需要考虑如何降低Redis的内存占用情况。下面将介绍Redis降低内存使用的常见方法。
用户1289394
2023-08-22
1.7K0
有哪些办法可以降低 Redis 的内存使用情况
在逛知乎时,看到这样一个问题,觉得挺不错的,将自己个人的见解分享给大家。问题是:有哪些办法可以降低 Redis 的内存使用情况?
兔云小新LM
2022-11-21
8950
常见计算用户之间的相似度方法有哪些?
模型计算用户之间的相似度方法在多个领域有着广泛应用,以下是对几种常见方法的详细描述:
jack.yang
2025-04-05
1.4K0
有哪些方法可以解决闭包导致的内存泄漏问题?
闭包导致的内存泄漏本质是:闭包保留了对外部作用域的引用,使得这些作用域及其变量无法被垃圾回收机制(GC)回收,最终导致内存占用持续增加。解决这类问题的核心是主动切断不必要的引用,帮助GC识别可回收的资源。以下是具体方法:
搜罗万相
2025-08-28
8790
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券