aclnnQuantReduceScatter

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

说明: 使用该接口时,请确保驱动固件包和CANN包都为配套的8.0.RC2版本或者配套的更高版本,否则将会引发报错,比如BUS ERROR等。

功能说明

  • 算子功能:实现quant + reduceScatter融合计算。

  • 计算公式

    output=Reduce(AllToAllScales∗AllToAllData)output=Reduce(AllToAllScales * AllToAllData)

    AllToAllData=AllToAll(x)AllToAllData=AllToAll(x)

    AllToAllScales=AllToAll(scales)AllToAllScales=AllToAll(scales)

    其中的Reduce计算是将来自不同rank的数据进行reduce计算。

    参数名 输入/输出 描述 使用说明 数据类型 数据格式 维度(shape) 连续Tensor
    x 输入 公式中的输入x
    • 不支持空Tensor。
    • 支持的shape为:(BS, H)或者(B, S, H)。B为batch size,S为sequence length,H为hidden size。当前版本输入x的H支持1024~8192中任意128对齐泛化。
    INT8, HIFLOAT8, FLOAT8_E4M3FN, FLOAT8_E5M2 ND 2-3
    scales 输入 公式中的输入scales
    • 不支持空Tensor。
    • 当scales的数据类型为FLOAT8_E8M0时,x的数据类型必须为FLOAT8_E4M3FN、FLOAT8_E5M2,x的shape为(BS, H)或者(B, S, H),scales的shape必须对应x的shape为(BS, H/64, 2)或者(B, S, H/64, 2)。
    • 当scales的数据类型为FLOAT时,x的数据类型必须为INT8、HIFLOAT8、FLOAT8_E4M3FN、FLOAT8_E5M2,x的shape为(BS, H)或者(B, S, H),scales的shape必须对应x的shape为(BS, H/128)或者(B, S, H/128)。
    FLOAT, FLOAT8_E8M0 ND 2-4
    group 输入 通信域标识 通信域标识 String - - -
    reduceOp 输入 公式中的reduce操作类型。 当前仅支持"sum" string - - -
    output 输出 公式中的输出output。
    • 不支持空Tensor。
    • 当x的shape是(BS,H)的时候,output的shape必须为(BS/rankNum,H); 当x的shape是(B,S,H)的时候,output的shape必须为(B*S/rankNum,H)。rankNum表示通信域大小。
    FLOAT、FLOAT16、BFLOAT16 ND 2
    workspaceSize 输出 返回需要在Device侧申请的workspace大小。 - - - - -
    executor 输出 返回op执行器,包含了算子计算流程。 - - - - -

约束说明

  • 当x的数据类型为FLOAT8_E4M3FN, FLOAT8_E5M2并且scales的数据类型为FLOAT8_E8M0时,输入数据的量化方式为mx量化。
  • 当x的数据类型为INT8、HIFLOAT8、FLOAT8_E4M3FN, FLOAT8_E5M2并且scales的数据类型为FLOAT时,输入数据的量化方式为pertoken-pergroup量化(groupSize=128)。
  • 只在Ascend950系列平台使能。
  • 不支持空tensor输入。
  • 通信引擎约束:
    • Ascend950PR/Ascend950DT: 仅支持UB-Memory通信。
  • 通信域大小支持2、4、8。
  • 通信域使用约束:同一通信域内仅允许连续执行aclnnQuantAllReduceaclnnQuantReduceScatter算子,且该通信域中不允许有其他通信算子。
  • HCCL_BUFFSIZE:调用本算子前需检查HCCL_BUFFSIZE环境变量取值是否合理,该环境变量表示单个通信域占用内存大小,单位MB,不配置时默认为200MB。要求满足HCCL_BUFFSIZE>= 2 * (xDataSize + scalesDataSize + 1)。其中xDataSize为输入x的数据大小,计算公式为:xDataSize = BS * H * 1 (Byte)scalesDataSizescales的数据大小,当量化方式为pertoken-pergroup量化时,计算公式为:scalesDataSize = BS * H / 128 * 4 (Byte),当量化方式为mx量化时,计算公式为:scalesDataSize = BS * H / 32 * 1 (Byte)
  • H范围仅支持[1024, 8192],要求128对齐。

调用说明

调用方式 样例代码 说明
aclnn接口 test_aclnn_quant_reduce_scatter.cpp 通过aclnnQuantReduceScatter接口方式调用quant_reduce_scatter算子。