Triton-distributed

GitHub
1.4k 136 较难 1 次阅读 4天前MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

Triton-distributed 是由字节跳动 Seed 团队基于 OpenAI Triton 打造的分布式编译器,专为并行计算系统设计。它核心解决了大规模 AI 模型训练中“计算”与“通信”难以高效协同的痛点,通过独特的计算 - 通信重叠技术,让开发者能够编写出媲美高度优化底层库(如 Distributed-GEMM)的高效算子。

这款工具主要面向需要深度定制高性能内核的 AI 基础设施工程师、系统研究人员及算法开发者。无论是使用 NVIDIA 还是 AMD GPU,用户都能利用它轻松构建复杂的分布式算子,无需在多种硬件架构间重复造轮子。其技术亮点在于支持 MegaTritonKernel 大核融合、内置细粒度的核内性能分析器(Intra-Kernel Profiler),并能显著加速 MoE(混合专家)模型及端到端推理任务。近期更新还引入了低延迟模式与令牌节省机制,进一步提升了在 H800、L20 等主流算力卡上的运行效率。如果你希望突破现有框架的性能瓶颈,亲手打造极致的分布式计算流程,Triton-distributed 将是一个强大且灵活的选择。

使用场景

某大型模型团队正在基于 H800 集群部署混合专家(MoE)架构的大语言模型,亟需优化多卡并行推理时的通信延迟与计算效率。

没有 Triton-distributed 时

  • 开发门槛极高:工程师必须手动编写复杂的 CUDA/C++ 代码来实现计算与通信的重叠,调试难度大且周期长。
  • 性能瓶颈明显:传统的串行执行模式导致 GPU 在等待 AllReduce 等通信操作时空转,算力利用率不足 60%。
  • 算子适配困难:针对特定硬件(如 H800 或 L20)优化 MoE 路由与聚合算子需要重复造轮子,难以复用现有 Triton 生态。
  • 维护成本高昂:一旦模型结构或硬件拓扑变更,底层的分布式内核代码往往需要推倒重来,缺乏灵活性。

使用 Triton-distributed 后

  • 开发效率飞跃:团队直接利用熟悉的 Triton 语法编写分布式内核,自动处理底层通信逻辑,将新算子开发周期从数周缩短至数天。
  • 极致性能释放:通过原生支持的“计算 - 通信重叠”机制,有效掩盖了网络延迟,在 MoE 场景下实现了比肩手写 CUDA 的加速效果(如官方演示的 1.33 倍提速)。
  • 跨平台无缝迁移:一套代码即可同时适配 NVIDIA H800 和 AMD GPU,无需为不同硬件维护多套后端实现。
  • 精细化调优能力:借助内置的核内分析器(Intra-Kernel Profiler),开发者能精准定位并行系统中的微小延迟,快速迭代优化策略。

Triton-distributed 让开发者能以纯 Python 的高生产力,轻松构建出媲美顶级手工优化库的高性能分布式 AI 内核。

运行环境要求

操作系统
  • Linux
GPU
  • 必需
  • 主要支持 NVIDIA GPU (SM80, SM89, SM90a,如 H800, L20) 和 AMD GPU (CDNA3)
  • 示例中使用了 H800/L20
  • 需安装 CUDA 12.4 环境 (基于 nvcr.io/nvidia/pytorch:25.04-py3 容器)
内存

未说明 (Docker 启动参数建议共享内存 --shm-size=10g)

依赖
notes1. 官方推荐使用特定的 PyTorch Docker 容器 (nvcr.io/nvidia/pytorch:25.04-py3) 进行部署。 2. 通信后端依赖 NVSHMEM,需确保硬件支持 NVLink、InfiniBand 或 PCIe。 3. 安装前需卸载原有的 triton 包以避免冲突。 4. 该工具专为计算 - 通信重叠优化,适用于多卡分布式训练/推理场景。
python3.12
cuda.core==0.2.0
nvidia-nvshmem-cu12==3.3.9
Cython==0.29.24
nvshmem4py-cu12==0.1.2
cuda-python==12.4
PyTorch (通过 Docker 容器 nvcr.io/nvidia/pytorch:25.04-py3 提供)
Triton-distributed hero image

快速开始

👋 大家好!
我们是字节跳动Seed团队。

您可以通过以下渠道进一步了解我们👇

seed logo

Triton-distributed

原版 Triton README | 中文版 README

Triton-distributed 是一款基于 OpenAI Triton 的分布式编译器,专为计算与通信重叠设计。

借助 Triton-distributed,程序员可以开发出媲美高度优化库的高效内核(包括 Distributed-GEMMFLUX)。目前,Triton-distributed 主要面向 Nvidia GPU 和 AMD GPU,未来也可移植到其他硬件平台。如果您希望在自己的硬件上使用 Triton-distributed,请随时联系我们。

新闻

  • 2025年12月22日 ✨✨✨:更新了 EP 函数,支持低延迟模式、令牌节省和 Mega-EP。
  • 2025年10月21日 🔥🔥🔥:Triton-distributed 在 2025 年 Triton 开发者大会 上进行了展示,详情请参阅 演讲视频
  • 2025年3月9日 ✨✨✨:推出了内核级性能分析器,详情请参阅 文档
  • 2025年8月24日 ⚡⚡⚡:支持对 ByteDance-Seed/Seed-OSS-36B-Instruct 进行推理加速,速度提升至 1.33 倍。
  • 2025年8月13日 ✨✨✨:引入了 MegaTritonKernel,并在 H20/H800 上提供了 Qwen3 TP 示例,详情请参阅 文档
  • 2025年8月6日 ✨✨✨:支持在 H800 上进行 GEMM+AllReduce 操作,并在 L20 上支持 MoE 算子,详细信息请参见 GEMM+AR 测试MOE 测试
  • 2025年7月24日 🤖🤖🤖:推出了端到端推理加速演示,统一支持 NVIDIA 和 AMD GPU,详情请参阅 文档
  • 2025年7月11日 ✨✨✨:利用 Triton-distributed 实现了快速 AllReduce,详情请参见 AllReduce 测试
  • 2025年7月11日 ✨✨✨:改进了张量并行下的 MoE 算子,详情请参见 AG+MoE 测试MoE+RS 测试
  • 2025年7月11日 ✨✨✨:支持 Triton 3.4,并集成 NVSHMEM4py(MR)。无需修改 NVSHMEM 代码即可通过 pip install 安装。
  • 2025年5月12日 🚀🚀🚀:我们的论文《TileLink:利用以块为中心的原语生成高效的计算-通信重叠内核》已被 MLSys 2025 接受。

入门指南

安装 Triton-distributed

方法一:从源码编译

请参阅 从源码构建

方法二:使用 pip 安装

准备 PyTorch 容器

docker run --name triton-dist --ipc=host --network=host --privileged --cap-add=SYS_ADMIN --shm-size=10g --gpus=all -itd nvcr.io/nvidia/pytorch:25.04-py3 /bin/bash
docker exec -it triton-dist /bin/bash

安装依赖项

pip3 install cuda.core==0.2.0 nvidia-nvshmem-cu12==3.3.9 Cython==0.29.24 nvshmem4py-cu12==0.1.2
pip3 install cuda-python==12.4 setuptools==69.0.0 wheel pybind11

然后,使用 pip 安装 Triton-distributed。

# 移除随 torch 安装的 Triton
pip uninstall triton
pip uninstall triton_dist # 移除之前的 Triton-distributed
rm -rf /usr/local/lib/python3.12/dist-packages/triton
# 安装 Triton-distributed
VERSION=v0.0.2 # 使用最新版本
pip install https://github.com/ByteDance-Seed/Triton-distributed/releases/download/${VERSION}/triton_dist-3.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

如何使用 Triton-distributed

Triton-distributed 提供了一组易于使用的原语,以支持分布式计算与通信重叠内核的开发。这些原语分为低层原语和高层原语。目前,我们已发布了低层原语,并计划在未来发布高层原语。

Triton-distributed 原语

借助这些原语,用户可以轻松地编写通信内核。例如,下面展示了一个低延迟的 AllToAll 操作(其延迟优于用于推理的 DeepEP)。 在 32 张 H800 GPU 上,该示例的性能为 137 微秒(每张卡 128 个标记,topk=8,隐藏层大小为 7168,数据类型为 fp8),而 DeepEP 的性能则为 182 微秒(注意:DeepEP 在推理时不使用 NVLink)。

@triton_dist.jit
def all_to_all_kernel(
    data_src,
    data_dst,
    splits_src,
    splits_dst,
    signal,
    splits_cumsum,
    scale_src,
    scale_dst,
    rank: int,
    call_count: int,
    WITH_SCALE: tl.constexpr,
    WORLD_SIZE: tl.constexpr,
    HIDDEN: tl.constexpr,
    MAX_M: tl.constexpr,
    EXPERTS_PER_RANK: tl.constexpr,
    NUM_TOT_EXPERTS: tl.constexpr,
    ELEMENT_SIZE: tl.constexpr = 2,
    SCALE_ELEMENT_SIZE: tl.constexpr = 4,
):
    pid = tl.program_id(0)
    threadidx = tid(axis=0)

    exp_st = pid * EXPERTS_PER_RANK
    exp_ed = exp_st + EXPERTS_PER_RANK

    m_st = tl.load(splits_cumsum + exp_st)
    m_ed = tl.load(splits_cumsum + exp_ed)
    num_rows_cur_block = m_ed - m_st

    src_off = m_st
    dst_off = rank * MAX_M

    split_src_ptr = splits_src + exp_st
    off0 = exp_st + tl.arange(0, EXPERTS_PER_RANK)
    off1 = exp_st + tl.arange(0, EXPERTS_PER_RANK) + 1
    cumsum_sts = tl.load(splits_cumsum + off0)
    cumsum_eds = tl.load(splits_cumsum + off1)
    tl.store(split_src_ptr + tl.arange(0, EXPERTS_PER_RANK), cumsum_eds - cumsum_sts)

    act_pos = call_count % 2
    data_dst_ptr = data_dst + act_pos * WORLD_SIZE * MAX_M * HIDDEN + dst_off * HIDDEN
    split_dst_ptr = splits_dst + act_pos * NUM_TOT_EXPERTS + rank * EXPERTS_PER_RANK
    signal_ptr = signal + act_pos * WORLD_SIZE + rank

    libshmem_device.putmem_nbi_block(
        data_dst_ptr,
        data_src + src_off * HIDDEN,
        num_rows_cur_block * HIDDEN * ELEMENT_SIZE,
        pid,
    )
    libshmem_device.putmem_nbi_block(
        split_dst_ptr,
        split_src_ptr,
        EXPERTS_PER_RANK * 4,  # 现在我们使用 `int32` 来表示分割信息
        pid,
    )
    if WITH_SCALE:
        scale_dst_ptr = scale_dst + act_pos * WORLD_SIZE * MAX_M + dst_off
        libshmem_device.putmem_signal_nbi_block(
            scale_dst_ptr,
            scale_src + src_off,
            num_rows_cur_block * SCALE_ELEMENT_SIZE,
            signal_ptr,
            call_count,
            libshmem_device.NVSHMEM_SIGNAL_SET,
            pid,
        )

    libshmem_device.fence()
    if threadidx == 0:
        if not WITH_SCALE:
            libshmem_device.signal_op(
                signal_ptr,
                call_count,
                libshmem_device.NVSHMEM_SIGNAL_SET,
                pid,
            )
        libshmem_device.signal_wait_until(
            signal + act_pos * WORLD_SIZE + pid,
            libshmem_device.NVSHMEM_CMP_EQ,
            call_count,
        )

此外,用户还可以将通信部分与计算部分结合,设计出重叠内核。我们在 python/triton_dist/kernels 中提供了示例实现。

性能

Triton-distributed 的性能可以达到与手工优化库相当甚至更好的水平。

单节点 H800x8 上的 AllGather GEMM

Ag-GEMM-inter-node

单节点 H800x8 上的 GEMM ReduceScatter

Ag-GEMM-inter-node

两节点 H800x8 上的 AllGather GEMM

Ag-GEMM-inter-node

两节点 H800x8 上的 GEMM ReduceScatter

GEMM-Rs-inter-node

分布式 Flash-Decode 从 1 张 GPU 扩展到 32 张 GPU 的性能

解码时的批次大小为 1(单个查询)。 flash-decode-inter-node

其他平台上的性能

AMD GPU

路线图

功能

  • 发布低层原语
  • 发布高层原语
  • 教程
  • 预编译二进制文件

内核

  • 发布单节点 GEMM TP 重叠内核
  • 发布单节点 MoE TP 重叠内核
  • 发布单节点分布式 Flash-Decoding 内核
  • 发布单节点 MoE EP 重叠内核
  • 发布跨节点 GEMM TP 重叠内核
  • 发布跨节点 MoE TP 重叠内核
  • 发布跨节点分布式 Flash-Decoding 内核
  • 发布跨节点 EP 全对全通信内核(类似于 DeepEP
  • 提供内核实现教程

后端

计算

  • 支持 Nvidia SM90a
  • 支持 Nvidia SM80
  • 支持 Nvidia SM89
  • 支持 AMD CDNA3

通信

  • NVLink
  • IB
  • PCIe

性能

  • 性能报告

许可证

Triton-distributed 项目采用 MIT 许可证。我们的部分代码采用 Apache-2.0 许可证:

  • python/triton_dist/kernels/flash_decode.py

引用

如果您在科学出版物中使用 Triton-distributed,我们鼓励您在相关论文中添加以下参考文献:

@misc{zheng2025tritondistributed,
      title={Triton-distributed: 使用 Triton 编译器在分布式 AI 系统上编程重叠内核},
      author={Size Zheng、Wenlei Bao、Qi Hou、Xuegui Zheng、Jin Fang、Chenhui Huang、Tianqi Li、Haojie Duanmu、Renze Chen、Ruifan Xu、Yifan Guo、Ningxin Zheng、Ziheng Jiang、Xinyi Di、Dongyang Wang、Jianxi Ye、Haibin Lin、Li-Wen Chang、Liqiang Lu、Yun Liang、Jidong Zhai、Xin Liu},
      year={2025},
      eprint={2504.19442},
      archivePrefix={arXiv},
      primaryClass={cs.DC},
      url={https://arxiv.org/abs/2504.19442},
}

@article{zheng2025tilelink,
  title={Tilelink: 使用以 Tile 为中心的原语生成高效的计算-通信重叠内核},
  author={Zheng, Size、Fang, Jin、Zheng, Xuegui、Hou, Qi、Bao, Wenlei、Zheng, Ningxin、Jiang, Ziheng、Wang, Dongyang、Ye, Jianxi、Lin, Haibin 等},
  journal={arXiv 预印本 arXiv:2503.20313},
  year={2025}
}

关于 字节跳动 Seed 团队

字节跳动 Seed 团队成立于 2023 年,致力于打造业界最先进的 AI 基础模型。该团队立志成为世界一流的研究团队,为科学和社会的进步做出重大贡献。

讨论与贡献

请使用议题或拉取请求进行讨论和贡献(参见 CONTRIBUTING.md)。

版本历史

v0.0.2-rc2025/09/12
v0.0.1-rc2025/08/20
experimental2025/07/11

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架