microsoft/mscclpp

MSCCL++: A GPU-driven communication stack for scalable AI applications

解决的问题

MSCCL++ 是一个为 GPU 间通信设计的 GPU 驱动通信栈,旨在使 GPU 间通信更加高效且可定制。它解决了大规模 AI 模型(如 LLM)等分布式 GPU 应用中的复杂性和性能瓶颈问题,其中标准的集合通信库在特定工作负载下(例如 LLM 推理中的提示处理与令牌采样差异)可能并非最优。

工作原理

MSCCL++ 提供多层抽象系统,允许开发者在 GPU 内核中直接定义通信逻辑。

  • 通道:使用「通道」作为 GPU 之间的点对点连接。这些通道在主机端定义,但在 GPU 内核中作为设备函数调用。
  • 通信原语:提供单边、零拷贝的同步和异步原语(如 put()get()signal()flush()wait()),允许数据发送到远程 GPU,而无需远程端对应接收指令。
  • 通道类型:提供 PortChannel(使用主机端代理触发 DMA 传输)和 MemoryChannel(使用 GPU 线程直接读写远程内存以实现更低延迟)。
  • 统一接口:抽象底层硬件,无论 GPU 是通过 NVLink、xGMI 或 InfiniBand 连接,还是在同一节点或不同节点,都提供相同的接口。

适用人群

适用于高性能分布式 AI 应用开发者、内核开发者以及构建可扩展 AI 基础设施的研究人员,例如开发 LLM 服务框架(如 SGLang、LMDeploy)或深度学习编译器(如 TVM)的人员。

主要亮点

  • GPU 驱动:通信可直接从 GPU 内核中触发和管理。
  • 零拷贝传输:直接在用户缓冲区之间传输数据,节省带宽和内存。
  • 硬件无关:对本地和远程节点上的 NVLink、xGMI 和 InfiniBand 提供统一抽象。
  • 可自定义代理:支持自定义主机端代理,以优化 GPU 触发的处理方式。
  • Python 绑定:包含便于与基于 Python 的 AI 应用集成的接口。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目