• 【知识点】分布式系统相关名词/概念/知识点


    目录

    通信原语[1]

    BroadCast

    Scatter

    Gather

    All-Gather

    Reduce

    Reduce-Scatter

    All-Reduce

    All-to-All

    Ring-Base Collectives[2]

    参考文献与帖子


    通信原语[1]

    BroadCast

            1对多,广播方式。主节点0将数据发送到其他节点,且数据内容相同

    应用场景:

    1. 数据并行的参数初始化,确保每张卡上的初始参数是一致的;
    2. allReduce里的 broadcast + reduce组合里的broadcast操作;
    3. 分布式训练parameter server 参数服务器结构里的 master节点 broadcast 数据到worker节点,再从worker节点reduce数据回master节点里的broadcast操作;

    Scatter

            1对多,广播方式。主节点0将数据发送到其他节点,且数据内容相同

    应用场景有:

    1. ReduceScatter组合里的 Scatter操作;
    2. 模型并行里初始化时将模型scatter到不同的XPU上;

    Gather

            多对1。把多个节点的数据汇聚到一个节点上。

    应用场景有:

    1. ReduceScatter组合里的 Scatter操作;

    All-Gather

            多对多。收集所有的数据所有的节点上。把多个节点的数据收集到一个主节点上(Gather),再把这个收集到的数据分发到其他节点上(broadcast)。

    应用场景有:

    1.  All-Gather可应用于模型并行;
    2. 模型并行里前向计算里的参数全同步,需要用all-gather把模型并行里将切分到不同的XPU上的参数全同步到一张XPU上才能进行前向计算。

    Reduce

            多对1。把多个节点的数据规约运算到一个主节点上。

            常用的规约操作符有:求累加和SUM、求累乘积PROD、求最大值MAX、求最小值MIN、逻辑与 LAND、按位与BAND、逻辑或LOR、按位或BOR、逻辑异或LXOR、按位异或BOXR、求最大值和最小大的位置MAXLOC、求最小值和最小值的位置MINLOC等,这些规约运算也需要加速卡支持对应的算子才能生效。

    应用场景有:

    1. AllReduce里的 broadcast + reduce组合里的reduce操作;
    2. ReduceScatter组合里的 reduce操作;
    3. 分布式训练parameter server 参数服务器结构里的 master节点 broadcast 数据到worker节点,再从worker节点reduce数据回master节点里的reduce操作;

    Reduce-Scatter

            多对多。在集群内的所有节点上都按维度执行相同的Reduce规约运算,再将结果发散到集群内所有的节点上。

    应用场景有:

    1. ReduceScatter即可应用于数据并行也可应用于模型并行;
    2. 数据并行allReduce里的 ReduceScatter+ Allgather组合里的ReduceScatter操作;
    3. 模型并行里在前向allgather后的反向计算里的ReduceScatter;

    All-Reduce

            多对多。在所有节点上都执行相同的Reduce操作,将所有节点的数据规约运算得到的结果发送到所有的节点上。

    应用场景有:

    1. AllReduce应用于数据并行;
    2. 数据并行各种通信拓扑结构比如Ring allReduce、Tree allReduce里的 allReduce操作;

    All-to-All

            多对多。对All-Gather的扩展,但不同的节点向某一节点收集到的数据是不同的。

    应用场景有:

    1. 应用于模型并行;
    2. 模型并行里的矩阵转置;
    3. 数据并行到模型并行的矩阵转置;

    Ring-Base Collectives[2]

            将所有的通信节点通过首尾连接形成一个单向环,数据在环上依次传输。

    下面把要传输的数据分成S份,每次只传N/S的数据量

    在以GPU为通信节点的场景下,如何构建通信环:

    • 单机4卡通过同一个PCIe switch挂载在一棵CPU:

    • 单机8卡通过两个CPU下不同的PCIe switch挂载:

    参考文献与帖子

    [1] 常平的笔记 - 认识世界是为了改造世界

    [2] 如何理解Nvidia英伟达的Multi-GPU多卡通信框架NCCL? - 知乎

  • 相关阅读:
    【网页设计】基于HTML+CSS+JavaScript学生网上报到系统响应式网站
    FreeSql 导入数据的各种场景总结 [C#.NET ORM]
    MS4553S双向电平转换器可pin对pin兼容TXB0102/TXS0102
    基于MATLAB的函数拟合
    swm34s基于RT-Thread系统使用SDIO驱动读写SD卡
    发布订阅机制和点对点机制
    【AI使用场景】50个在工作流中的运用场景示例
    大数据必学Java基础(三十):IDEA的使用介绍
    Mysql中的数据类型和运算符
    python 绘制3D图
  • 原文地址:https://blog.csdn.net/sxf1061700625/article/details/127690558