分布式集合通信--学习笔记

发布于:2025-07-05 ⋅ 阅读:(23) ⋅ 点赞:(0)
  • 分布式集合通信
  • 一 基础概念
    • 分布式系统模型
      • 节点与进程模型 多机多卡、多机多进程
      • 通信模式
        • 同步 、异步
    • 集合通信定义
      • 点对点通信 vs 集合通信
        • 点对点通信
          • 定义 :两个节点之间的直接数据传输,通常基于专用链路或网络路径
          • 通信范围:仅涉及两个节点(如A→B或B→A),支持双向数据传输 1 2
          • 示例 :电话呼叫、TCP/IP连接、MPI中的 MPI_Send 和 MPI_Recv
        • 定义:一组节点(通信子)共同参与的全局操作,所有节点协同完成数据交换
        • 通信范围:涉及多个节点(如广播、规约、全收集等),需所有节点同步调用函数
      • 常见操作: Broadcast \ Reduce \ Allgather \AllReduce
    • 性能指标
      • 延迟 Latency
      • 带宽 Bandwidth
      • 扩展性 Scalability
  • 二 核心算法
    • 广播算法
      • 洪泛算法(Simple Flooding)
      • 基于树的广播(Tree-based Broadcast)
      • 环形广播(Ring Algorithm)
    • 规约算法
      • 线性规约(Linear Reduce)
      • 二叉树规约(Binary Tree Reduce)
    • 全收集算法
      • 循环全收集(Recursive DOUBLING Algorithm)
      • 二叉树全收集(Binary Tree Allgather)
    • 全归约算法
      • 结合规约与广播的Allreduce
      • Ring-Allreduce算法(NVIDIA NCCL实现)
  • 三 应用场景
    • 分布式机器学习
      • 梯度同步(Allreduce)
      • 参数广播(Broadcast)
    • 科学计算
      • 矩阵乘法中的通信优化
      • 分布式FFT(快速傅里叶变换)
    • 分布式存储
      • 数据分片与合并(Allgather)
      • 一致性哈希与数据迁移
  • 四 优化策略
    • 通信与计算重叠
      • 隐藏通信延迟的技术(Pipeline)
    • 拓扑感知优化
      • Mesh网络与Ring网络的通信策略
      • 硬件拓扑映射(如GPU的NVLink)
    • 混合算法
      • 结合树状与环形结构的分层通信
      • 动态调整算法(小规模用Ring,大规模用Tree)
  • 五 实践工具与框架
    • MPI(Message Passing Interface)
      • MPI_Bcast、MPI_Reduce等函数
    • NCCL(NVIDIA Collective Communications Library)
      • GPU集合通信优化
    • HCCL(Huawei Collective Communication Library)
      • 华为Ascend芯片的集合通信实现
    • PyTorch/TensorFlow
      • 分布式训练中的通信API
    • HCCL与NCCL对比
      • 维度 HCCL NCCL
      • 适用硬件 华为昇腾AI处理器(NPU) NVIDIA GPU
      • 通信算法 Mesh、Ring、HD、NHR、NB(自动选择) Ring、Mesh、Bruck、Halving-Doubling等
      • 传输优化 全硬化调度,SDMA/RDMA链路 多通道并行(block-level),NVLink/PCIe优化
      • 流管理 主流+从流,Notify同步 CUDA Stream异步,多任务并发
      • 容错性 依赖硬件调度稳定性(需进一步扩展) 支持异步错误处理(ncclCommAbort)
      • 生态支持 适配TensorFlow、PyTorch(单算子模式) 集成主流框架(PyTorch、TensorFlow等)
      • 开源与定制 部分算法开源(Gitee),支持自定义开发 源代码闭源,部分厂商基于其扩展(如BCCL)
  • 六 学习步骤
    • 阶段1:基础入门
      • 理解分布式系统模型
        • 学习多机多卡(如GPU集群)的通信架构
        • 掌握同步与异步通信的区别(例如:阻塞vs非阻塞API)
      • 熟悉集合通信操作
        • 实现简单的点对点通信(如Send/Recv)
        • 动手实现Broadcast和Reduce的基础版本(例如:线性规约)
    • 阶段2:核心算法学习
      • 广播算法
        • 实现洪泛算法,分析其缺点(如冗余通信)
        • 学习树状广播(如二叉树广播),优化通信复杂度
      • 规约与全归约
        • 实现线性规约,理解其O(n)复杂度
        • 优化为二叉树规约,降低时间复杂度至O(logn)
        • 结合广播实现Allreduce(例如:先规约后广播)
      • 全收集算法
        • 实现循环全收集(Recursive Doubling),分析其通信模式
        • 对比树状全收集与环形全收集的性能差异
    • 阶段3:应用场景实践
      • 分布式机器学习案例
        • 使用Allreduce实现梯度同步(如MNIST分布式训练)
        • 优化通信:对比同步Allreduce与异步参数更新
      • 科学计算优化
        • 实现分布式矩阵乘法,优化通信与计算比例
        • 使用MPI_Alltoall实现数据分块交换
      • 性能调优
        • 测试不同算法(Ring vs Tree)在不同节点数下的表现
        • 使用NCCL或HCCL库优化GPU通信
    • 阶段4:高级优化与扩展
      • 通信与计算重叠
        • 实现Pipeline技术,在通信时进行计算
        • 使用异步API隐藏延迟(如Non-blocking MPI)
      • 拓扑感知优化
        • 分析服务器内Mesh网络的通信策略(如NVIDIA的NVLink)
        • 实现跨节点的Ring算法,减少网络跳数
      • 混合算法设计
        • 结合树状与环形结构,设计分层通信策略
        • 动态选择算法(如小规模用Ring,大规模用Tree)
    • 阶段5:工具与框架实战
      • MPI实践
        • 使用MPI实现Broadcast、Reduce和Allreduce
        • 分析MPI的性能瓶颈(如通信延迟、带宽限制)
      • NCCL与HCCL
        • 在GPU集群上使用NCCL优化Allreduce
        • 对比不同框架(如NCCL vs PyTorch DCP)的性能
      • 分布式框架集成
        • 在PyTorch中实现分布式训练,调用
      • torch.distributed
      • API
        • 使用TensorFlow的MirroredStrategy进行参数同步
  • 七 学习资源
    • 书籍
      • 《分布式系统:原理与范型》(原书第3版)
      • 《MPI并行程序设计》
      • 《深度学习系统优化》
  • 八 实践项目建议
    • 初级项目
      • 实现一个基于Socket的Broadcast算法
      • 使用MPI实现Allreduce并测试不同节点数的性能
    • 中级项目
      • 优化Allreduce算法,结合树状与环形结构
      • 在GPU集群上使用NCCL训练ResNet模型
    • 高级项目
      • 设计一个混合通信策略(如Ring+Tree)并测试扩展性
      • 实现分布式矩阵乘法,优化通信与计算比例


网站公告

今日签到

点亮在社区的每一天
去签到