Ring Attention分布式注意力

Ring Attention:分布式长上下文

超长上下文的分布式挑战 随着LLM上下文长度从32K扩展到1M甚至更长,单GPU的显存和计算能力已经远远不够。一个1M token的注意力矩阵在FP16下需要2TB显存——即使分布在8个GPU上,每张卡也需要256GB。 更关键的是,标准注意力计算需要在所有Query-Key对之间计算注意力分数,这在分布式环境下意味着大量的跨GPU通信。Ring Attention通过优雅的环形通信模式解决了这个问题。 核心思想:通信-计算重叠的环形流 Ring Attention的基本思想是:将长序列均匀切分到多个GPU上,每个GPU持有一段序列的Q、K、V。然后通过环形通信传递K/V块,同时与本地Q计算部分注意力。 环形拓扑 假设有N个GPU,编号为0到N-1。GPU i 持有序列的第 i 段的Q_i、K_i、V_i。计算过程如下: 第0步: GPU_i 用本地 Q_i 和 K_i 计算注意力,结果存为 partial_O_i 同时,GPU_i 将 K_i, V_i 发送给 GPU_{(i+1) % N} 第1步: GPU_i 接收 K_{(i-1) % N}, V_{(i-1) % N} 用 Q_i 和接收的 K 计算注意力,累加到 partial_O_i 同时发送 K_{(i-1) % N}, V_{(i-1) % N} 给 GPU_{(i+1) % N} ... (重复N-1步) 第N-1步: GPU_i 已与所有K/V块计算过注意力 partial_O_i 即为最终结果 关键在于:每一步中,通信和计算是并行进行的——GPU在接收下一块K/V的同时,用当前K/V进行注意力计算。 ...

2026-07-02 · 3 min · 454 words · 硅基 AGI 探索者
长上下文技术演进:从位置编码到环形注意力

长上下文技术演进:从位置编码到环形注意力

从GPT-3的2K上下文到Gemini 2.5的10M上下文,长上下文技术是大模型领域进步最快的方向之一。2026年,百万级token的上下文窗口已成为旗舰模型的标配。本文将系统梳理这一技术演进的核心脉络。 1. 位置编码的演进 1.1 绝对位置编码的局限 原始Transformer使用可学习的绝对位置编码,最大长度在训练时固定。外推到更长序列时效果急剧下降。 1.2 RoPE:旋转位置编码 RoPE(Rotary Position Embedding)通过在复数域旋转Query和Key来编码相对位置: $$\text{RoPE}(x, m) = x e^{im\theta}$$ 其中 $m$ 为位置索引,$\theta_i = 10000^{-2i/d}$。两个位置 $m, n$ 的注意力分数仅依赖于相对位置 $m - n$: $$\text{Re}[\langle \text{RoPE}(q, m), \text{RoPE}(k, n) \rangle] = \text{Re}[\langle q, k \rangle \cdot e^{i(m-n)\theta}]$$ def apply_rotary_pos_emb(q, k, cos, sin): # q, k: [batch, heads, seq_len, d_k] # cos, sin: [seq_len, d_k] q_rot = (q * cos) + (rotate_half(q) * sin) k_rot = (k * cos) + (rotate_half(k) * sin) return q_rot, k_rot def rotate_half(x): x1 = x[..., :x.shape[-1] // 2] x2 = x[..., x.shape[-1] // 2:] return torch.cat((-x2, x1), dim=-1) 1.3 RoPE外推方案 训练时上下文长度为 $L_{train}$,推理时需要扩展到 $L_{test}$。主要外推方案: 方案 原理 效果 计算开销 Position Interpolation (PI) 将位置索引缩放到训练范围 良好 无 NTK-aware 调整RoPE基频 $\theta$ 优秀 无 YaRN 分频段不同插值策略 最佳 极低 LongRoPE 进化搜索最优插值参数 2026年SOTA 一次性搜索 YaRN的核心思想是对不同频率分量采用不同策略: ...

2026-06-30 · 4 min · 652 words · 硅基 AGI 探索者
ring attention million token context

Ring Attention:百万 Token 上下文的秘密

Ring Attention:突破 GPU 显存墙 当上下文窗口从 4K 扩展到 1M Token 时,单 GPU 的 KV Cache 存储和注意力计算已经无法满足需求。Ring Attention(环形注意力)通过将注意力计算分布到多 GPU,实现了超长上下文的训练和推理。 一、长上下文的挑战 1.1 注意力计算复杂度 标准注意力的计算和显存需求都是 $O(n^2)$: 对于 $n = 1,048,576$(1M Token): 注意力矩阵:$10^{12}$ 元素 = 8 TB(FP16) 单 GPU A100 80GB 显存:只能放下 0.01 的注意力矩阵 即使使用 Flash Attention 减少 HBM 访问,单 GPU 也无法存储完整的注意力矩阵。 1.2 KV Cache 显存需求 每个 Token 需要存储 Key 和 Value 向量。以 DeepSeek V4(MLA 压缩后)为例: $$\text{KV Cache/Token} = 512 \times 2 \times 2 \text{ bytes} = 2 \text{ KB}$$ ...

2026-06-28 · 5 min · 936 words · 硅基 AGI 探索者
ring attention long context

Ring Attention:突破百万 Token 上下文的分布式注意力

长上下文的显存困境 大模型上下文窗口从 4K 扩展到 1M,最大的障碍不是计算量,而是 KV Cache 的显存。 以 Llama-3-70B 为例,fp16 精度下: 上下文长度 KV Cache (单序列) 单卡 80GB 够吗? 8K ~1.5 GB 是 32K ~6 GB 是 128K ~24 GB 勉强 1M ~192 GB 需要多卡 如果 batch_size > 1,显存需求成倍增长。单卡无法装下百万 token 的 KV Cache,必须将注意力计算分布到多张卡上。 分布式注意力的三种方案 1. Megatron 张量并行 将 Q、K、V 矩阵按头切分到不同 GPU: GPU 0: 计算 Head 0-19 的注意力 GPU 1: 计算 Head 20-39 的注意力 优点:通信量小(只需 AllReduce 输出) 缺点:KV Cache 仍按头切分,单序列长度受限于 单卡显存 × 总头数 ...

2026-06-25 · 6 min · 1112 words · 硅基 AGI 探索者
ring attention explained

Ring Attention 解析:百万 Token 上下文的秘密

朴素 Attention 的显存墙 标准自注意力的计算: $$\text{Attn}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V$$ 对于序列长度 $n$,中间矩阵 $QK^T$ 的形状为 $n \times n$。当 $n = 1\text{M}$ 时: FP16 显存:$10^6 \times 10^6 \times 2 \text{ bytes} = 2 \text{ TB}$ 即使分块计算,单 GPU 的 HBM(80 GB)也远远不够 朴素方案是序列并行——将序列切分到多个 GPU,但 Softmax 需要全局归约,通信量巨大。 Ring Attention 核心思想 Liu et al. (2023) 提出 Ring Attention:将序列分块分布在多个 GPU 上,以环形拓扑传递 KV 块,与计算重叠。 关键洞察 注意力可以分解为分块计算: $$\text{softmax}(QK^T)V = \frac{\sum_{j} e^{s_j} V_j}{\sum_{j} e^{s_j}}, \quad s_j = QK_j^T$$ 每个 GPU 只需要:本地 Q + 当前 KV 块 → 计算部分 score → 更新 running max 和 running sum。 ...

2026-06-25 · 4 min · 826 words · 硅基 AGI 探索者
鲁ICP备2026018361号