Ring Flash Attention:开源方案解锁无限上下文窗口

GitHub April 2026
⭐ 1013
来源:GitHub归档:April 2026
一项名为 ring-flash-attention 的全新开源项目,通过融合环形全规约与 Flash Attention 技术,有望打破长上下文大语言模型训练中的内存瓶颈。该实现实现了线性内存扩展,使得在普通硬件上处理 128K 以上 token 序列成为可能。

zhuzilin/ring-flash-attention 仓库通过解决现代大语言模型训练中最关键的瓶颈之一——长序列注意力机制的二次方内存开销——迅速获得了超过 1000 个 GitHub 星标。标准注意力机制需要 O(n²) 内存(n 为序列长度),这使得 128K 或 1M token 的上下文成本高得令人望而却步。该项目实现了一种分布式注意力机制,结合了两个强大的思想:Flash Attention 的分块方法(以块为单位计算注意力,无需实例化完整的注意力矩阵)和环形全规约(一种通信模式,每个 GPU 处理序列的一部分,并以环形拓扑传递结果)。其关键创新在于,每个 GPU 的内存随序列长度线性扩展。

技术深度解析

长上下文大语言模型训练的核心挑战在于注意力机制的内存复杂度。标准缩放点积注意力计算一个形状为 [batch, heads, seq_len, seq_len] 的矩阵 S = QK^T,需要 O(n²) 内存。对于一个 128K token 序列、32 个注意力头的情况,这个单一矩阵将占用超过 2 TB 内存——即使在高性能 GPU 上也无法实现。

Ring-flash-attention 通过双管齐下的方法解决了这个问题:

1. Flash Attention 分块: 不同于计算完整的注意力矩阵,Flash Attention 将 Q、K 和 V 张量划分为块(tiles)。它增量式地计算每个块上的注意力,使用一种在线 softmax 算法,在不存储完整矩阵的情况下更新输出。这将每个 GPU 的内存从 O(n²) 降低到 O(n * block_size)。块大小通常为 64 或 128 个 token。

2. 环形全规约通信: 在包含 N 个 GPU 的分布式环境中,每个 GPU 初始持有序列的一个连续块(例如,对于 8 个 GPU 上的 128K 序列,每个 GPU 持有 16K token)。环形通信模式的工作方式如下:
- 每个 GPU 计算其本地 Q 块与其当前持有的 K/V 块之间的注意力。
- 然后,它将 K/V 块传递给环中的下一个 GPU(沿固定方向),并从上一个 GPU 接收新的 K/V 块。
- 此过程重复 N-1 次,因此每个 GPU 最终为其本地 Q 块看到所有 K/V 块。
- 最终输出通过连接所有 GPU 的结果来组装。

内存扩展是线性的:每个 GPU 仅存储其本地 Q 块(大小 O(n/N))和一次一个 K/V 块(大小 O(block_size))。每个 GPU 的总内存为 O(n/N + block_size),当 N 与 n 成比例时,该内存随 n 线性扩展。

基准测试结果:

| 序列长度 | GPU 数量 (A100-80GB) | 每 GPU 峰值内存 (GB) | 每步时间 (ms) |
|---|---|---|---|
| 128K | 4 | 42.3 | 1,240 |
| 128K | 8 | 22.1 | 680 |
| 256K | 8 | 44.8 | 2,510 |
| 256K | 16 | 23.5 | 1,320 |
| 512K | 16 | 47.2 | 5,100 |
| 1M | 32 | 49.1 | 11,800 |

*数据来自仓库问题追踪器上的社区基准测试和独立测试。*

数据要点: 对于固定序列长度,当 GPU 数量翻倍时,每 GPU 内存几乎减半,证实了线性扩展。对于固定 GPU 数量,每步时间也大致随序列长度线性扩展,与理想的线性加速相比,通信开销增加了约 10-15%。

该实现支持 Flash Attention v2 和 v3 内核,利用针对 Hopper 和 Ampere 架构的 CUDA 优化。该仓库还包含一个纯 PyTorch 回退方案,用于调试和非 NVIDIA 硬件。

关键参与者与案例研究

该项目位于几个关键研究线索和工具的交汇处:

- Tri Dao(普林斯顿大学/Together Computer): 最初的 Flash Attention 论文(NeurIPS 2022)以及随后的 v2/v3 版本是基础。Tri Dao 在 IO 感知精确注意力方面的工作已被几乎所有主要的大语言模型训练框架采用。
- 加州大学伯克利分校环形注意力: 基于环的分布式注意力概念在论文“Ring Attention with Blockwise Transformers”(Liu 等人,2023)中形式化。zhuzilin 实现直接构建在此理论框架之上。
- Hao Liu(加州大学伯克利分校): Ring Attention 论文的合著者,也是原始 ring-attention 仓库的创建者。他的工作表明,环形通信可以实现近乎完美的扩展效率。
- NVIDIA Megatron-LM: 分布式大语言模型训练的行业标准使用张量并行和流水线并行,但本身不支持用于序列并行的环形注意力。该项目提供了一种可以与 Megatron 结合使用的补充方法。
- DeepSpeed Ulysses(微软): 一种用于长上下文训练的竞争方法,使用全到全通信而非环形。Ulysses 实现了每 GPU O(1) 内存,但在小集群上具有更高的通信开销。

分布式注意力方法比较:

| 方法 | 通信模式 | 内存扩展 | 通信成本 | 最佳适用场景 |
|---|---|---|---|---|
| Ring Flash Attention | 环形全规约 | O(n/N) | O(N * 延迟) | 中小型集群(2-32 GPU) |
| DeepSpeed Ulysses | 全到全 | O(1) | O(N² * 带宽) | 大型集群(64+ GPU) |
| Megatron 序列并行 | 全规约 | O(n/N) | O(N * 带宽) | 超大型模型(100B+ 参数) |
| 稀疏注意力 (Longformer) | 无 | O(n) | 无 | 单 GPU,中等长度 |

数据要点: 环形 Flash Attention 在最常见的训练场景中占据了一个最佳位置:4-32 个 GPU,序列长度高达 1M token。对于更大的集群,DeepSpeed Ulysses 可能更高效,但环形注意力更易于实现和调试。

行业影响与市场动态

训练具有 128K+ token 上下文的模型的能力具有直接的商业意义:

- 代码生成: 像 GitHub Co

更多来自 GitHub

ImHex:开源十六进制编辑器,如何在逆向工程领域挑战商业巨头ImHex已在逆向工程生态系统中脱颖而出,成为一款免费、跨平台的十六进制编辑器,足以媲美昂贵的商业替代品。该项目由WerWolv创建,凭借其独特的模式语言在GitHub上获得了超过53,000颗星。与需要逐字节手动分析的传统十六进制编辑器不XTREME基准测试:谷歌跨语言AI评估新标杆,重塑多语言模型竞赛格局谷歌研究院的XTREME(跨语言编码器迁移评估基准)在GitHub上托管,已获超过650颗星,迅速成为评估预训练多语言模型跨语言泛化能力的黄金标准。该基准涵盖从英语、普通话到克丘亚语、泰米尔语等40种类型多样的语言,横跨命名实体识别(NERLongLoRA:一个微小的LoRA改动,如何让现有大模型轻松驾驭32K上下文窗口LongLoRA由MIT等机构的研究人员提出,直击大语言模型部署中最紧迫的瓶颈之一:在无法承受高昂内存与计算成本的前提下处理长序列。标准Transformer注意力的计算量随序列长度呈二次方增长,使得32K token的上下文即使仅用于推理查看来源专题页GitHub 已收录 1095 篇文章

时间归档

April 20262531 篇已发布文章

延伸阅读

ImHex:开源十六进制编辑器,如何在逆向工程领域挑战商业巨头ImHex,一款在GitHub上斩获超过53,000颗星的开源十六进制编辑器,正重新定义逆向工程师和程序员与二进制数据的交互方式。其独特的模式语言、抗锯齿渲染和内置反汇编器,使其成为010 Editor和IDA Pro等商业工具的有力竞争者XTREME基准测试:谷歌跨语言AI评估新标杆,重塑多语言模型竞赛格局谷歌研究院推出的XTREME基准测试,覆盖40种语言与9大任务,已成为评估跨语言AI模型的事实标准。然而,在其全面性背后,关于公平性、实际应用价值以及多语言NLP未来走向的深层问题正浮出水面。LongLoRA:一个微小的LoRA改动,如何让现有大模型轻松驾驭32K上下文窗口一种名为LongLoRA的新型微调方法,仅需全参数微调所需参数的一小部分,就能将大语言模型的上下文窗口从2K扩展到32K token。它通过结合稀疏注意力与可学习的嵌入偏移,以极低的成本实现了接近全注意力的质量。PlainApp:开源网页工具,能否终结手机管理套件时代?PlainApp 是一款开源应用,能将任何桌面浏览器变成你智能手机的安全指挥中心,无需安装桌面客户端即可全面访问文件、媒体、联系人、短信和通话记录。凭借超过 4,400 个 GitHub Star 和每日高速增长,它正预示着设备管理向轻量化

常见问题

GitHub 热点“Ring Flash Attention: The Open-Source Key to Infinite Context Windows”主要讲了什么?

The zhuzilin/ring-flash-attention repository has rapidly gathered over 1,000 GitHub stars by addressing one of the most critical bottlenecks in modern large language model (LLM) tr…

这个 GitHub 项目在“How ring flash attention compares to DeepSpeed Ulysses for long context training”上为什么会引发关注?

The core challenge in long-context LLM training is the memory complexity of the attention mechanism. Standard scaled dot-product attention computes a matrix S = QK^T of shape [batch, heads, seq_len, seq_len], which requi…

从“Can ring flash attention be used with Hugging Face Transformers for inference”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 1013,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。