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

  • 分布式集合通信
  • 一 基础概念
    • 分布式系统模型
      • 节点与进程模型 多机多卡、多机多进程
      • 通信模式
        • 同步 、异步
    • 集合通信定义
      • 点对点通信 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)并测试扩展性
      • 实现分布式矩阵乘法,优化通信与计算比例
相关推荐
worilb3 分钟前
Spring Cloud 学习与实践(8):Spring Cloud Gateway 统一入口、路由转发与双重跨域故障演练
学习·spring·spring cloud
初圣魔门首席弟子3 分钟前
学习工作方法论与任务执行计划
学习
skywalk816331 分钟前
记录段言的开发过程
开发语言·学习·编程
知识分享小能手31 分钟前
Hadoop学习教程,从入门到精通, MapReduce分布式计算框架 — 完整知识点与代码案例(4)
hadoop·学习·mapreduce
YM52e1 小时前
鸿蒙HarmonyOS ArkTS 实战:教师座椅出入记录 APP 从零到一
学习·华为·harmonyos·鸿蒙系统
踏着七彩祥云的小丑1 小时前
嵌入式测试第 32 天:升级测试:固件OTA升级、断点续传、回滚测试
单片机·嵌入式硬件·学习
小陈phd1 小时前
Text2SQL智能体学习笔记(二)——NL2SQL落地的隐形基石:元数据库
数据库·笔记·学习
踏着七彩祥云的小丑2 小时前
Go学习第4天:条件、循环语句+函数
学习·golang·go
tedcloud1232 小时前
Supermemory部署教程:打造Agent记忆与RAG环境
服务器·人工智能·学习·自动化·powerpoint
骑士雄师2 小时前
18.1 星系案例:多智能体宇宙探索系统(学习langgraph 的存储知识)
windows·python·学习