news 2026/6/10 4:49:05

TeleTron项目技术优化原理之上下文并行技术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TeleTron项目技术优化原理之上下文并行技术

1.Ulysses Context Parallel (上下文并行)原理

下面的例子主要展示的是 Image Tokens(最复杂的部分)。

TeleTron 中 DiT 模型处理长序列的核心机制:如何通过SeqAllToAll4D在“序列并行”和“头并行”之间转换。

  • 4 个大框 (GPU 0 - GPU 3):代表参与并行计算的 4 张显卡。

  • 小色块:代表数据张量(Tensor)。

    • 颜色:代表数据最初属于哪个 GPU(即属于序列的哪一部分)。

    • 文字H0-H3代表注意力头(Heads),S0-S3代表序列片段(Sequence Chunks)。

1.1 初始状态 (Sequence Parallel)

  • 长序列被切分为 4 段(S0, S1, S2, S3)。

  • GPU 0 只有 S0,但它拥有 S0 的所有注意力头 (Head 0-3)

  • 问题:Attention 需要计算全局关联,GPU 0 只有 S0,看不到 S1-S3,无法直接计算全局 Attention。

1.2 动态Padding

如果序列长度是 101,GPU 是 4 个。101 % 4≠ 0。pad.py 会在 All-to-All 之前将序列补齐到 104(能被 4 整除),确保每个 GPU 分到的数据块大小一致,否则通信原语会报错。

1.3 SeqAllToAll4D (Scatter)

  • 这是 Ulysses 的核心魔法。它执行了一个转置 (Transpose)操作。

  • 观察动画:GPU 0 把 Head 1 发给 GPU 1,Head 2 发给 GPU 2,Head 3 发给 GPU 3。同时它也接收了别人的 Head 0。

  • 结果:现在 GPU 0 拥有了S0, S1, S2, S3的全部数据,但只包含 Head 0

1.4 Attention 计算

因为 GPU 0 现在拥有了全序列(S0-S3)的 Head 0 数据,它可以直接进行标准的 Attention 计算(Q、K、V 都在本地了)。这就是为什么叫“Context Parallel”——每个 GPU 处理一部分 Context(这里是按 Head 划分)。

1.5 SeqAllToAll4D (Gather)

  • 计算完 Attention 后,数据是按 Head 划分的。为了进行下一层网络(如 MLP)的计算,必须还原回按 Sequence 划分的布局。

  • 执行逆向操作,数据飞回各自原本的 GPU。

2. 为什么需要 All-to-All?(核心矛盾)

在计算下列公式时,存在一个矛盾:

  • 输入状态(为了存下长序列):我们把超长的序列切几段,每张卡存一段。

    • 卡1拥有: 序列的第 0~100 个字,所有的注意力头。

    • 卡2拥有: 序列的第 101~200 个字,所有的注意力头。

  • 计算需求(Self-Attention):第 0 个字(卡1)需要和第 199 个字(卡2)计算相关性。

    • 问题:如果不通信,卡1根本看不到卡2里的数据,无法计算全局 Attention。

3. All-to-All 做了什么?(维度交换)

SeqAllToAll4D 在这里执行了一个“洗牌”操作。它让所有显卡互相交换数据,从而改变数据的切分维度。

  • 操作前(序列并行):

    • 卡1:拿着部分序列(Seq 1/N),但是有全部特征头(Heads All)。

    • 卡2:拿着部分序列(Seq 2/N),但是有全部特征头(Heads All)。

    (此时无法做全局 Attention)

    ⬇️执行 All-to-All 通信⬇️
    (卡1把它的第2个头的数据发给卡2,卡2把它的第1个头的数据发给卡1...)

  • 操作后(头并行):

    • 卡1:拿着全部序列(Seq All),但是只有部分特征头(Head 1/N)。

    • 卡2:拿着全部序列(Seq All),但是只有部分特征头(Head 2/N)。

    (此时可以做 Attention 了!因为卡1拥有所有序列的 Head 1 信息,它可以在 Head 1 的维度上计算第 0 个字和第 199 个字的关系

4. TeleTron 的区别对待

理解了 All-to-All 是在做“切分维度的转换”,我们就能看懂 TeleTron 为什么要对文本特殊处理。

4.1 图像 Tokens (Long Sequence) - 必须做 All-to-All

图像序列太长了(比如 4K 分辨率),单卡显存根本存不下完整的序列 (𝑄,𝐾,𝑉)

  1. All-to-All #1:把切散的序列拼凑回来,同时把 Heads 切散分给各卡。

  2. 计算 Attention:每张卡算自己那部分 Heads 的全局 Attention。

  3. All-to-All #2:再次通信,把 Heads 拼凑回来,重新把序列切散(为了省显存)。

  • 代价:两次巨大的通信开销。

4.2 . 文本 Tokens (Short Sequence) - 优化方案

文本通常很短(几十到几百个 Token),或者是作为 Condition(条件)。

  • 现状:单卡完全存得下完整的文本序列。

  • TeleTron 的逻辑:既然单卡能存下完整的文本序列,为什么还要浪费时间做那两次昂贵的 All-to-All 来切分 Heads 呢?

  • 优化操作:

    1. Split Forward (切分):仅仅是将文本数据简单地切分或复制,使其在物理位置上与图像数据所在的设备对齐(Align),以便后续做 Cross-Attention 或者拼接。

    2. Skip All-to-All:直接跳过了图像那种“序列换头”的复杂通信过程。

    3. 计算:直接利用本地数据参与计算。

    4. Gather Backward (聚合):反向传播时,简单地把梯度收集起来即可。

5. 总结

All-to-All 在这里就是“为了让原本被切碎的长序列能看到彼此,暂时把注意力头(Heads)切碎来换取视野”的操作。

TeleTron 对文本的优化在于:文本不够长,不需要“切碎头换视野”,直接处理即可,从而省下了昂贵的通信费。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:32:41

基于YOLO11-seg的白蚁种类智能识别与分类系统——利用深度学习技术实现白蚁图像分割与多类别精准识别

该数据集为白蚁种类识别与分类任务提供了丰富的视觉资源,共包含3153张经过预处理的图像,所有图像均以YOLOv8格式进行了标注。数据集在预处理阶段采用了自动方向调整(去除EXIF方向信息)并将所有图像统一缩放至640640像素的尺寸&…

作者头像 李华
网站建设 2026/6/9 21:55:29

AI写论文“终极PK”:宏智树AI凭啥成2025届毕业生的“隐形导师”

官网直达:www.hzsxueshu.com 毕业季的“论文战场”上,有人为选题愁到脱发,有人为文献查重熬红双眼,更有人因格式混乱被导师“连环暴击”。当通用AI还在生成“车轱辘话”时,一款名为宏智树AI的论文助手悄然杀出——它不…

作者头像 李华
网站建设 2026/6/10 6:05:29

AI写论文哪个软件最好?与宏智树AI共舞,毕业从“困局”到“胜局”

宏智树AI,远不止于论文写作。它是一款专为学术旅程设计的智能伙伴,旨在与你并肩完成从灵感到终稿的全过程。从第一缕灵感的落地——一份结构清晰的开题报告,到广纳百家之言的文献综述,再到主体章节的精心构筑,乃至对学…

作者头像 李华
网站建设 2026/6/10 12:33:11

Symfony 8 Monolog配置避坑指南:5个常见错误及修复方案

第一章:Symfony 8 日志系统概览Symfony 8 的日志系统建立在强大的 Monolog 库之上,为开发者提供灵活、可扩展的日志记录机制。无论是在开发环境调试问题,还是在生产环境中监控应用行为,Symfony 都能通过配置将不同级别的日志输出到…

作者头像 李华
网站建设 2026/6/10 15:48:20

模型融合后如何验证?R和Python输出差异的真相,90%的人都忽略了

第一章:R-Python 模型融合的结果验证在跨语言建模场景中,R 与 Python 的模型融合已成为提升预测性能的重要手段。通过将 R 中擅长的统计分析模型与 Python 在机器学习框架上的优势结合,可以构建更稳健的集成系统。然而,融合后的结…

作者头像 李华
网站建设 2026/6/10 15:54:58

国产自容式ADCP真的能替代进口设备吗?偶信科技给出答案

在海洋观测、水文监测和环境评估等领域,声学多普勒流速剖面仪(ADCP)是获取海流数据的核心装备。长期以来,我国高端ADCP市场被国外品牌主导,但近年来,随着技术突破与工程化能力提升,国产自容式AD…

作者头像 李华