开发者
资源
[object Object][object Object][object Object]undefined
[object Object]
  • API功能:TP切分场景下,实现mm和all_reduce的融合,融合算子内部实现计算和通信流水并行。

  • 计算公式:

    output=allreduce(x1@((x2+antiquantOffset)antiquantScale)+bias+x3)output = allreduce\left(x1 \mathbin{@} \left((x2 + antiquantOffset) * antiquantScale\right) + bias + x3\right)
[object Object]
[object Object]
[object Object]
[object Object]
  • x1 ([object Object]):必选参数。数据类型支持[object Object][object Object][object Object]。数据格式支持NDND,输入shape支持2维或者3维。

  • x2 ([object Object]):必选参数。数据类型支持[object Object][object Object][object Object],数据格式支持NZNZ(昇腾亲和排布格式)、NDND。非量化场景,数据类型需要和[object Object]保持一致,输入shape维度第0维和[object Object]的最后一维保持一致。

  • hcom ([object Object]):必选参数。通信域handle名,通过[object Object]接口获取。

  • [object Object]*[object Object]:必选参数,代表其之前的变量是位置相关的,必须按照顺序输入;之后的变量是可选参数,位置无关,需要使用键值对赋值,不赋值会使用默认值。

  • reduce_op ([object Object]):可选参数。reduce操作类型,当前版本仅支持[object Object],默认值:[object Object]

  • bias ([object Object]):可选参数。数据类型支持[object Object][object Object][object Object],数据格式支持NDND[object Object]当前仅支持一维,且维度大小与[object Object]的最后一维大小相同。

  • antiquant_scale ([object Object]):可选参数。伪量化场景对[object Object]进行去量化的系数,数据类型支持[object Object][object Object],数据格式支持NDND。伪量化场景数据类型需要和[object Object]保持一致。

    • pertensor场景:shape为[1][1]

    • perchannel场景:shape为[1,n][1,n]或者[n][n]nn[object Object]最后一维的大小。

    • pergroup场景:shape为[ceil(k,antiquant_group_size),n][ceil(k, antiquant\_group\_size), n]。其中kk[object Object]第一维的大小,nn[object Object]最后一维的大小,antiquant_group_sizeantiquant\_group\_size为伪量化场景对输入[object Object]进行反量化计算的groupSize输入。

      [object Object]
  • antiquant_offset ([object Object]):可选参数。伪量化场景对[object Object]进行去量化的系数,数据类型支持[object Object][object Object],数据格式支持NDND。数据类型、shape需要和[object Object]保持一致。

  • x3 ([object Object]):可选参数。matmul计算后的偏移。数据类型支持[object Object][object Object],数据格式支持NDND。数据类型、shape需要和输出[object Object]保持一致。

  • dequant_scale ([object Object]):可选参数。matmul计算后的去量化系数。数据类型支持[object Object][object Object][object Object][object Object];数据格式支持NDND

    • pertensor场景:shape为[1][1]
    • perchannel场景:shape为[n]/[1,n][n]/[1,n]nn[object Object]最后一维的大小。
  • pertoken_scale ([object Object]):可选参数。matmul计算后的pertoken去量化系数。数据类型支持[object Object]。当[object Object][m,k][m,k][object Object] shape为[m][m];当[object Object][b,s,k][b, s, k][object Object] shape为[bs][b*s]

  • comm_quant_scale_1 ([object Object]):可选参数。alltoall通信前后的量化、去量化系数。支持[object Object][object Object],支持NDND格式。[object Object][k,n][k, n]时shape为[1,n][1, n][n][n],用户需保证每张卡上数据保持一致且正确。

  • comm_quant_scale_2 ([object Object]):可选参数。allgather通信前后的量化、去量化系数。支持[object Object][object Object],支持NDND格式。[object Object][k,n][k, n]时shape为[1,n][1, n][n][n],用户需保证每张卡上数据保持一致且正确。

  • comm_turn ([object Object]):可选参数。表示rank间通信切分粒度,默认值:[object Object],表示默认的切分方式。当前版本仅支持输入[object Object]

  • antiquant_group_size ([object Object]):可选参数。表示伪量化pergroup算法模式下,对输入[object Object]进行反量化计算的groupSize输入,描述一组反量化参数对应的待反量化数据量在kk轴方向的大小。当伪量化算法模式不为pergroup时传入[object Object];当伪量化算法模式为pergroup时传入值的范围为[object Object]且值要求是32的倍数,其中kk[object Object]第一维的大小。默认值[object Object],为[object Object]则表示非pergroup场景。

[object Object]

[object Object]

数据类型非量化场景以及伪量化场景与[object Object]保持一致,全量化场景输出数据类型为[object Object][object Object]。shape第0维度和[object Object]的0维保持一致,若[object Object]为2维,shape第1维度和[object Object]的1维保持一致,若[object Object]为3维,shape第1维度和[object Object]的1维保持一致,shape第2维度和[object Object]的1维保持一致。

[object Object]
  • 该接口支持推理场景下使用。

  • 增量场景不使能该融合算子,全量场景使能该融合算子。

  • 该接口支持图模式。

  • 输入[object Object]可为2维或者3维、[object Object]必须是2维,分别为(b,s,k)/(m,k)(b, s, k)/(m, k), (k,n)(k, n)kk轴满足mm算子入参要求,kk轴相等。[object Object]当前仅支持一维,且维度大小与[object Object]的最后一维大小相同。[object Object]的shape与[object Object]的shape相同。

  • [object Object]不支持输入转置后的tensor,[object Object]转置后输入,需要满足shape的第一维大小与[object Object]的最后一维相同,满足matmul的计算条件。

  • [object Object]kk值的范围与matmul一致,为[object Object][object Object]大于(k1)(k-1)

  • [object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:

    • 数据类型支持[object Object]
    • [object Object][object Object]不支持为空tensor。
    • 支持1、2、4、8卡,并且仅支持hccs链路all mesh组网。
    • 非量化场景下,mknm、k、n的取值范围均为[object Object]
    • [object Object][object Object]的shape应保持一致,dtype与输出的dtype保持一致,且只在全量化场景支持。
  • 全量化场景:mm取值范围均为[object Object][object Object][object Object]的最后一维范围为[object Object],即kk的取值范围为[object Object]、仅当[object Object]([object Object])为转置时nn可以大于65535。

  • 伪量化场景:mm取值范围均为[object Object]knk、n的取值范围为[object Object]

  • Atlas A2 训练系列产品:一个模型中的通算融合算子(AllGatherMatmul、MatmulReduceScatter、MatmulAllReduce),仅支持相同通信域。

  • 在长序列场景,随着b/sb/s或者mm的增大,可能出现内存不足或者计算超时。

  • 不同场景下数据类型支持情况:

    表1 非量化场景

    [object Object]undefined

    表2 伪量化场景

    [object Object]undefined

    表3 全量化场景

    [object Object]undefined
    [object Object]
[object Object]
  • 单算子模式调用

    [object Object]
  • 图模式调用

    非量化、伪量化、全量化使能NZ调用示例如下:

    [object Object]