下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

HCCL_ALGO

功能描述

此环境变量用于配置集合通信Server间跨机通信算法,支持全局配置算法类型与按算子配置算法类型两种配置方式。

HCCL提供自适应算法选择功能,默认会根据产品形态、数据量和Server个数选择合适的算法,一般情况下用户无需手工指定。若通过此环境变量指定了Server间通信算法,则自适应算法选择功能不再生效。

  • 全局配置算法类型,配置方式如下:

    export HCCL_ALGO="level0:NA;level1:<algo>"

    其中level0代表server内通信算法,当前仅支持配置为NA;level1代表server间通信算法,支持如下几种取值:
    • ring:基于环结构的通信算法,通信步数多(线性复杂度),时延相对较高,但通信关系简单,受网络拥塞影响较小。适合通信域内Server个数较少、通信数据量较小、网络存在明显拥塞、且pipeline算法不适用的场景。
    • H-D_R:递归二分和倍增算法(Recursive Halving-Doubling:RHD),通信步数少(对数复杂度),时延相对较低,但在非2次幂节点规模下会引入额外的通信量。适合通信域内Server个数是2的整数次幂且pipeline算法不适用,或Server个数不是2的整数次幂但通信数据量较小的场景。
    • NHR:非均衡的层次环算法(Nonuniform Hierarchical Ring),通信步数少(对数复杂度),时延相对较低。适合通信域内Server个数较多且pipeline算法不适用的场景。
    • NHR_V1:对应历史版本的NHR算法,通信步数少(根复杂度),时延相对较低,适合通信域内Server数为非2的整数次幂且pipeline算法不适用的场景。NHR_V1算法理论性能低于新版NHR算法,该配置项未来会逐步下线,建议开发者使用NHR算法。
    • NB:非均匀的数据块通信算法(Nonuniform Bruck),通信步数少(对数复杂度),时延相对较低。适合通信域内Server个数较多且pipeline算法不适用的场景。
    • pipeline:流水线并行算法,可并发使用Server内与Server间的链路,适合通信数据量较大且通信域内每机包含多卡的场景。
    • pairwise:逐对通信算法,仅用于AlltoAll、AlltoAllV与AlltoAllVC算子,通信步数较多(线性复杂度),时延相对较高,但可以避免网络中出现一打多现象,适合通信数据量较大、需要规避网络一打多的场景。

    每种通信算法支持的通信算子、数据类型、归约类型、网络运行模式、产品型号等说明可参见Server间通信算法支持度

  • 按算子类型配置通信算法,配置方式如下:

    export HCCL_ALGO="<op0>=level0:NA;level1:<algo0>/<op1>=level0:NA;level1:<algo1>"

    其中:
    • <op>为通信算子的类型,支持配置为:allgather、reducescatter、allreduce、broadcast、reduce、scatter、alltoall。
    • <algo>为指定的通信算子采用的server间通信算法,支持的配置同全局配置方法中的level1取值,请确保指定的通信算法为通信算子支持的算法类型,每种算法支持的通信算子可参见表1,未指定通信算法的通信算子会根据产品形态、节点数以及数据量自动选择通信算法。
    • 多个算子之间的配置使用“/”分隔。
当不设置此环境变量时:
  • 针对Atlas 训练系列产品,当通信域内Server的个数为非2的整数次幂时,默认使用ring算法;其他场景默认使用H-D_R算法。
  • 针对Atlas A2 训练系列产品,内部会根据产品形态、节点数以及数据量自动选择算法。

配置示例

  • 全局配置算法类型
    export HCCL_ALGO="level0:NA;level1:H-D_R"
  • 按算子配置算法类型
    # AllReduce算子使用ring算法,其他算子根据产品形态、节点数以及数据量自动选择通信算法。
    export HCCL_ALGO="allreduce=level0:NA;level1:ring"

Server间通信算法支持度

表1 Server间通信算法支持度列表

算法类型

集合通信算子

数据类型

归约类型

网络运行模式

是否支持确定性计算

支持的产品型号

不支持算子处理方法

ring

ReduceScatter、AllGather、AllReduce、Reduce、Scatter

int8、int16、int32、 int64、float16、float32、bfp16

sum、prod、max、min

单算子/图模式

Atlas 训练系列产品

Atlas A2 训练系列产品

自动选择为H-D_R

H-D_R

ReduceScatter、AllGather、AllReduce、Broadcast、Reduce

int8、int16、int32、int64、float16、float32、bfp16

sum、prod、max、min

单算子/图模式

Atlas 训练系列产品

Atlas A2 训练系列产品

自动选择为ring算法

NHR

ReduceScatter、AllGather、AllReduce、Broadcast、Scatter

int8、int16、int32、int64、float16、float32、bfp16

sum、prod、max、min

单算子/图模式

Atlas 训练系列产品

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

NHR_V1

ReduceScatter、AllGather、AllReduce、Broadcast

int8、int16、int32、int64、float16、float32、bfp16

sum、prod、max、min

单算子/图模式

Atlas 训练系列产品

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

NB

ReduceScatter、AllGather、AllReduce、Broadcast、Scatter

int8、int16、int32、int64、float16、float32、bfp16

sum、prod、max、min

单算子/图模式

Atlas 训练系列产品

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

pipeline

AllReduce

int8、int16、int32、float16、float32、bfp16

sum、max、min

单算子模式

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

AllGather

int8、int16、int32、int64、float16、float32、bfp16

-

单算子模式

-

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

ReduceScatter

int8、int16、int32、float16、float32、bfp16

sum、max、min

单算子模式

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

AlltoAll

int8、int16、int32、int64、float16、float32、bfp16

-

单算子模式

-

Atlas A2 训练系列产品

自动选择为pairwise算法

AlltoAllV

int8、int16、int32、int64、float16、float32、bfp16

-

单算子模式

-

Atlas A2 训练系列产品

自动选择为pairwise算法

pairwise

AlltoAll、AlltoAllV、AlltoAllVC

int8、int16、int32、int64、float16、float32、bfp16

-

单算子模式/图模式

-

Atlas A2 训练系列产品

自动选择为H-D_R或者ring算法

使用约束

当前版本Server内通信算法仅支持配置为“NA”。

支持的型号

Atlas 训练系列产品

Atlas A2 训练系列产品

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词