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

MPI 集体通信(collective communication) MPI_REDUCE将组内每个进程输入缓冲区中的数据按给定的操作op进行运算,并将其结果返回到序列号为root的进程的输出缓冲区中。 阅读详情
  • 分布式集合通信
  • 一 基础概念
    • 分布式系统模型
      • 节点与进程模型 多机多卡、多机多进程
      • 通信模式
        • 同步 、异步
    • 集合通信定义
      • 点对点通信 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)并测试扩展性
      • 实现分布式矩阵乘法,优化通信与计算比例

NCCL 集合通信--Collective Operations N个设备参与的broadcast,root是函数中指定的introot(以上图为例则是2),初始状态下,rank为root(上图中2)的设备上的sendbuffer长度为count。运行结束后,所有参与broadcast的N个设备上的recvbuffer长度为count,且所有N个rank的recvbuffer部分的数据均来自于root设备的sendbuffer的拷贝。,in_N-1,运行结束后,N个设备上的recvbuffer内容均相同,长度均为。.................. 阅读详情

相关推荐

大模型训练(7):集合通信与通信原语

在分布式训练过程中,深度学习训练框架不会去直接操作底层的通信网络,而是通过使用网络通信库来完成数据的集合通信,各家AI芯片加速卡厂家都会提供私有的网络通信库比如:xxx-AWARE OpenMPI或xCCL来完成这个底层通信硬件的屏蔽与抽象。

呆呆象呆呆的博客 2369

分布式训练——集合通信及其通信原语

集合通信(Collective Communications)是一个进程组的所有进程都参与的全局通信操作,其最为基础的操作有 发送send、接收receive、复制copy、组内进程栅障同步Barrier以及节点间进程同步(signal +wait ),这几个最基本的操作经过组合构成了一组通信模板也叫通信原语,比如:1对多的广播broadcast、多对1的收集gather、多对多的收集all-gather、1对多的发散scatter、多对1的规约reduce、多对多的规约all-reduce、组合的规约与发

weixin_44966641的博客 1万+

【AI系统】分布式通信与 NVLink

在进入大模型时代后,大模型的发展已成为 AI 的核心,但训练大模型实际上是一项比较复杂的工作,因为它需要大量的 GPU 资源和较长的训练时间。此外,由于单个 GPU 工作线程的内存有限,并且许多大模型的大小已经超出了单个 GPU 的范围。所以就需要实现跨多个 GPU 的模型训练,这种训练方式就涉及到了分布式通信和 NVLink。当谈及分布式通信和 NVLink 时,我们进入了一个引人入胜且不断演进的技术领域,本节我们将简单介绍分布式通信的原理和实现高效分布式通信背后的技术 NVLink 的演进。

ZOMI酱 1542

集合通信(Collective Communication):定义、核心组成与实现逻辑

集合通信是多节点协同的全局数据交互模式,区别于点对点通信,它通过标准化的通信原语(如AllReduce、Broadcast)、优化的网络拓扑(全互联/树形/环形)、同步机制和底层传输协议(RDMA/TCP),实现高效的多节点数据协同。这种通信范式是分布式AI训练和超算的核心技术,支持千亿参数模型的梯度同步等关键操作。通信库(如NCCL)自动优化传输路径,开发者只需调用封装接口即可实现高性能通信,无需关注底层细节。集合通信通过原子化操作和硬件感知优化,比手动组合点对点通信效率提升10-100倍,成为大规模分布

qq_41914036的博客 1732

pytorch 分布式通信进程组

本文学习一下pytorch中的分布式通信进程组,先看一下api参数,再写个例子验证一下,并说明遇到的其中一个坑。

fengcai_ke的博客 1432

【转载】分布式训练和集合通信

分布式深度学习的通信库选择目前比较通用的是基于MPI的实现(如OpenMPI)、NVIDIA的NCCL实现,如果是在使用NVIDIA-硬件的情况下,主流的选择是NVIDIA自家的NCCL。关于NCCL、OpenMPI、Gloo的Allreduce对比,可以参考开源项目mlbench-benchmarks。该项目使用pytorch框架,在相同的GPU及软硬件环境一致的情况下,对NCCL、OpenMPI、Gloo三种通信库的Allreduce作了性能测试。

NJU phd 在读。 1531

大模型集合通信

CCL与AI框架、通信原语、并行方式、CCL后端等

weixin_62472716的博客 1496

GEO数据挖掘实战:用R语言从GSE42872数据集中找到关键差异基因(附完整代码)

本文详细介绍了使用R语言从GSE42872数据集中挖掘关键差异基因的完整流程,包括数据下载、探针ID转换、差异表达分析和功能富集分析。通过实战代码演示,帮助生信研究者掌握GEO数据挖掘的核心技术,快速识别疾病相关基因并理解其生物学功能。

weixin_42625070的博客 365

深度学习的分布式训练与集合通信(一)

其中,一对一的通信模式又被称为点到点通信(Point-to-Point,P2P),涉及到多个计算节点参与的一对多,多对一,和多对多的通信模式则属于集合通信(Collective Communication,CC)操作的范畴。在模型训练之前,有一些准备性工作,如数据预处理,模型选择,损失函数和优化方法的确定,以及超参数的预设等,这里不做详细展开。

m0_71340392的博客 1260

车规级非易失存储选型指南:从AEC-Q100到ISO 26262的可靠性设计

非易失存储器是电子系统中负责长期保存关键数据与代码的核心组件,其可靠性直接决定了系统的长期稳定运行能力。在汽车电子领域,这一要求被提升到了极致,必须满足严苛的车规级标准。从原理上看,存储器的数据保持能力、擦写寿命等关键参数在高温、振动等恶劣环境下会急剧衰减,因此需要专门的设计与验证。其技术价值在于保障车辆全生命周期的功能安全与数据完整性,避免因存储失效导致的安全隐患或频繁维护。应用场景涵盖从发动机控制单元、自动驾驶域控制器到智能座舱的各类电子控制单元。本文聚焦于车规级非易失存储的选型,深入解析AEC-Q10

weixin_30938149的博客 456

J-SCOPE实战:除了看波形,如何用它和JLink-RTT模式高效调试你的STM32变量?

本文详细介绍了如何利用J-SCOPE和JLink-RTT模式高效调试STM32变量,实现实时数据可视化。通过对比HSS和RTT模式的优劣,提供固件端配置、J-SCOPE设置及实战应用案例,帮助开发者快速掌握这一高效调试技术,特别适用于电机控制、传感器融合等需要实时监控的场景。

weixin_29159613的博客 444

深度学习的分布式训练与集合通信(二)

而后者对应的则是MoE层,它有点像把这个大的全连接层打散成很多可以并行运作的小的全连接单元,每个单元称之为一个专家,通过在训练中对不同专家进行有导向有分工的学习,同时训练一个输入数据进入专家模块之前的路由选择机制,MoE就可以在保证神经网络效果的同时大大减少网络的计算量。上面是从计算并行的角度来说的,如果从存储的角度来看,故事就反过来了——更多的小批次的数据进入流水,意味着从一个数据的产生到消耗之间,更多的与之无关的计算被插入进来,这些计算也会产生需要存储的中间数据。下面来总结下张量并行涉及到的通信方式。

m0_71340392的博客 1386

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1452

深度学习的分布式训练与集合通信(三)

而SP是按照输入数据的序列长度的维度分的,涉及到的通信主要是正向一次的KV矩阵的AllGather与反向一次的KV矩阵梯度的ReduceScatter。总结一下就是,Attention阶段的序列并行,在模型训练的前向传播中,主要涉及到的集合通信操作有二,一是计算注意力矩阵A′时对于所有序列并行节点上矩阵K的AllGather操作,二是计算输出矩阵O时对于所有序列并行节点上矩阵V的AllGather操作,如下图所示。虽然都是序列并行,但由于处于不同的运算阶段,它们的行为以及影响是不同的。

m0_71340392的博客 1698

NVIDIA 2025 Board Design Engineer 校招笔试

电路分析,矩形波阶跃反馈驱动​,误差信号。非常简单,数电or​离散基础。第一题是考试规矩知情确认。大二暑假做的,纯体验​。五六题太长,下篇分享。

m0_74253823的博客 1124

强化学习赋能宇树机器狗:Isaac Gym与MuJoCo仿真训练全解析

本文详细解析了如何利用Isaac Gym和MuJoCo两大仿真平台为宇树机器狗构建强化学习训练管道。内容涵盖环境配置、模型导入、PPO算法框架设计、奖励函数构建以及从仿真到实机的策略迁移技巧,为开发者提供了一套完整的宇树狗仿真训练实践方案。

zeta9的博客 619

分布式训练常用的集合通信及其通信原语

集合通信(Collective Communications)是一个进程组的所有进程都参与的全局通信操作,其最为基础的操作有 发送send、接收receive、复制copy、组内进程栅障同步Barrier以及节点间进程同步(signal +wait ),这几个最基本的操作经过组合构成了一组通信模板也叫通信原语,比如:1对多的广播broadcast、多对1的收集gather、多对多的收集all-gather、1对多的发散scatter、多对1的规约reduce、多对多的规约all-reduce、组合的规约与发

tugouxp的专栏 960

使用IntelliJ IDEA配置版本管理(SVN和Git)

在开发过程中,版本管理是必不可少的一部分,它可以帮助团队协作、管理代码历史记录,并且提供了代码回滚和分支管理等功能。本文将介绍如何使用IntelliJ IDEA配置版本管理,包括SVN和Git两种方式,另外列举了常见的问题并指导修复,以帮助开发者更高效地进行代码管理和协作。

2868

Ray项目中的分布式集合通信库详解

Ray项目中的分布式集合通信库详解 【免费下载链接】ray ray-project/ray: 是一个分布式计算框架,它没有使用数据库。适合用于大规模数据处理和机器学习任务的开发和实现,特别是对于需要使用分布式计算框架的场景。特点是分布式计算框架、无数据库。 ...

gitblog_00926的博客 499

计算机组成原理(第三版)唐朔飞-第一章第二章-课后习题

计算机组成原理

weixin_45735391的博客 7万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

集合通信源语

All to All 与 All Gather 相比较,区别在于:All Gather 操作中,不同进程向某一进程收集到的数据是完全相同的,而在 All to All 中,不同的进程向某一进程收集到的数据是不同的。以分布式数据并行为例,在数据并行训练中,每块NPU都有整个神经网络模型的完整副本,每次进行迭代的时候,只分配了小批次Batch中数据样本的子集,每块NPU利用该Batch样本数据进行网络模型的前向计算,然后计算损失误差进行反向传播,以计算损耗相对于网络参数的梯度。

m0_63920473的博客 208

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

了解集合通信与模型并行策略

通过HCCS实现两两互联(Full Mesh),如NPU与NPU之间,CPU与CPU之间;NPU和CPU之间通过PCIE连接。Full Mesh是指在一个网络拓扑中,每个节点都直接连接到其他节点,形成一个完全互联的网络结构。在Full Mesh网络中,任何两个节点之间都可以直接通信。双mesh组网(8P Full-mesh)

cc_beolus的博客 1205

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

HCCL 集合通信库架构解析:如何让分布式训练做到拓扑感知?

本文主题在生产中可落地为端到端部署:以 OM 模型承载推理服务,接入 AIPP 完成图像或文本前处理,通过 ACL 管理设备资源与多流并发,结合容器与 K8s 形成弹性伸缩与资源隔离,在 CI/CD 中纳入性能基线,定期回归并输出报表。本文围绕主题“最佳实践:工程化规范 · 概览”展开,聚焦 CANN 在软件栈与工程化的协同:从 GE 的图优化、ATC 转换与 AIPP 前处理,到 ACL 管理的设备/内存/流,再到分布式通信与可靠性保障。

2301_77888392的博客 992

Java集合的Redis实现:Redisson分布式集合框架全解析

你是否还在为分布式系统中的集合操作头疼?在分布式环境下,传统Java集合无法跨节点共享数据,而Redis虽然提供了丰富的数据结构,直接操作又面临复杂的序列化、连接管理等问题。Redisson分布式集合框架正是为解决这些痛点而生,它将Java集合API与Redis完美结合,让开发者能像使用本地集合一样轻松操作分布式数据。读完本文,你将全面掌握Redisson分布式集合的核心功能、使用方法和实现原理,

gitblog_00647的博客 735

C++ 与分布式训练:基于 NCCL 协议的 C++ 集合通信通信原语封装

NCCL 是 NVIDIA 提供的一个开源库,旨在为 NVIDIA GPU 提供优化的多 GPU 和多节点集合通信。它的设计目标是最大化通信带宽并最小化通信延迟,特别适用于深度学习工作负载。充分利用 NVIDIA GPU 之间的直连技术,如 NVLink(在同一台服务器内)和 PCIe,以及高性能网络接口如 InfiniBand 和 RoCE(在多台服务器之间)。NCCL 能够自动检测系统的网络拓扑结构,并选择最优的通信算法和路径,以实现最高效的数据传输。

weixin_41455464的博客 89

CANN HCCL:分布式训练的集合通信底座

昇腾 HCCL 分布式通信库解析 摘要 本文深入分析了华为昇腾 NPU 的分布式通信库 HCCL (Huawei Collective Communication Library) 的设计原理与应用实践。HCCL 作为昇腾 AI 计算架构 CANN 的核心通信组件,为大规模深度学习训练提供高效的集合通信支持。文章首先对比了集合通信与点对点通信的区别,明确了 HCCL 在 NPU 分布式训练中的关键定位。随后详细解析了 AllReduce、Broadcast、AllGather、ReduceScatter 和

2401_88937325的博客 460
上一篇: Transformers快速入门-学习笔记(二)
 汪超
博客等级 码龄17年 65粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值