API功能:TP切分场景下,实现mm和all_reduce的融合,融合算子内部实现计算和通信流水并行。
计算公式:
[object Object]
x1 (
[object Object]):必选参数。数据类型支持[object Object]、[object Object]、[object Object]。数据格式支持,输入shape支持2维或者3维。x2 (
[object Object]):必选参数。数据类型支持[object Object]、[object Object]、[object Object],数据格式支持(昇腾亲和排布格式)、。非量化场景,数据类型需要和[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],数据格式支持。[object Object]当前仅支持一维,且维度大小与[object Object]的最后一维大小相同。antiquant_scale (
[object Object]):可选参数。伪量化场景对[object Object]进行去量化的系数,数据类型支持[object Object]、[object Object],数据格式支持。伪量化场景数据类型需要和[object Object]保持一致。pertensor场景:shape为。
perchannel场景:shape为或者,为
[object Object]最后一维的大小。pergroup场景:shape为。其中为
[object Object]第一维的大小,为[object Object]最后一维的大小,为伪量化场景对输入[object Object]进行反量化计算的groupSize输入。[object Object]
antiquant_offset (
[object Object]):可选参数。伪量化场景对[object Object]进行去量化的系数,数据类型支持[object Object]、[object Object],数据格式支持。数据类型、shape需要和[object Object]保持一致。x3 (
[object Object]):可选参数。matmul计算后的偏移。数据类型支持[object Object]、[object Object],数据格式支持。数据类型、shape需要和输出[object Object]保持一致。dequant_scale (
[object Object]):可选参数。matmul计算后的去量化系数。数据类型支持[object Object]、[object Object]、[object Object]、[object Object];数据格式支持。- pertensor场景:shape为。
- perchannel场景:shape为,为
[object Object]最后一维的大小。
pertoken_scale (
[object Object]):可选参数。matmul计算后的pertoken去量化系数。数据类型支持[object Object]。当[object Object]为时[object Object]shape为;当[object Object]为时[object Object]shape为。comm_quant_scale_1 (
[object Object]):可选参数。alltoall通信前后的量化、去量化系数。支持[object Object]、[object Object],支持格式。[object Object]为时shape为或,用户需保证每张卡上数据保持一致且正确。comm_quant_scale_2 (
[object Object]):可选参数。allgather通信前后的量化、去量化系数。支持[object Object]、[object Object],支持格式。[object Object]为时shape为或,用户需保证每张卡上数据保持一致且正确。comm_turn (
[object Object]):可选参数。表示rank间通信切分粒度,默认值:[object Object],表示默认的切分方式。当前版本仅支持输入[object Object]。antiquant_group_size (
[object Object]):可选参数。表示伪量化pergroup算法模式下,对输入[object Object]进行反量化计算的groupSize输入,描述一组反量化参数对应的待反量化数据量在轴方向的大小。当伪量化算法模式不为pergroup时传入[object Object];当伪量化算法模式为pergroup时传入值的范围为[object Object]且值要求是32的倍数,其中为[object Object]第一维的大小。默认值[object Object],为[object Object]则表示非pergroup场景。
[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]可为2维或者3维、[object Object]必须是2维,分别为, ,轴满足mm算子入参要求,轴相等。[object Object]当前仅支持一维,且维度大小与[object Object]的最后一维大小相同。[object Object]的shape与[object Object]的shape相同。[object Object]不支持输入转置后的tensor,[object Object]转置后输入,需要满足shape的第一维大小与[object Object]的最后一维相同,满足matmul的计算条件。[object Object]中值的范围与matmul一致,为[object Object],[object Object]大于。[object Object]Atlas A2 训练系列产品/Atlas A2 推理系列产品[object Object]:
- 数据类型支持
[object Object]。 [object Object]、[object Object]不支持为空tensor。- 支持1、2、4、8卡,并且仅支持hccs链路all mesh组网。
- 非量化场景下,的取值范围均为
[object Object]。 [object Object],[object Object]的shape应保持一致,dtype与输出的dtype保持一致,且只在全量化场景支持。
- 数据类型支持
全量化场景:取值范围均为
[object Object],[object Object]、[object Object]的最后一维范围为[object Object],即的取值范围为[object Object]、仅当[object Object]([object Object])为转置时可以大于65535。伪量化场景:取值范围均为
[object Object],的取值范围为[object Object]。Atlas A2 训练系列产品:一个模型中的通算融合算子(AllGatherMatmul、MatmulReduceScatter、MatmulAllReduce),仅支持相同通信域。
在长序列场景,随着或者的增大,可能出现内存不足或者计算超时。
不同场景下数据类型支持情况:
表1 非量化场景
[object Object]undefined
表2 伪量化场景
[object Object]undefined
表3 全量化场景
[object Object]undefined
[object Object]
单算子模式调用
[object Object]图模式调用
非量化、伪量化、全量化使能NZ调用示例如下:
[object Object]