MindSpore分布式算子支持

Linux Ascend GPU CPU 模型开发 初级 中级 高级

分布式算子

操作名 约束
mindspore.ops.Abs
mindspore.ops.ACos
mindspore.ops.Acosh
mindspore.ops.Add
mindspore.ops.ApproximateEqual
mindspore.ops.ArgMaxWithValue 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致
mindspore.ops.ArgMinWithValue 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致
mindspore.ops.Asin
mindspore.ops.Asinh
mindspore.ops.Assign
mindspore.ops.AssignAdd
mindspore.ops.AssignSub
mindspore.ops.Atan
mindspore.ops.Atan2
mindspore.ops.Atanh
mindspore.ops.BatchMatMul 不支持transpose_a=True
mindspore.ops.BesselI0e
mindspore.ops.BesselI1e
mindspore.ops.BiasAdd
mindspore.ops.BroadcastTo
mindspore.ops.Cast Auto Parallel和Semi Auto Parallel模式下,配置策略不生效
mindspore.ops.Ceil
mindspore.ops.Concat 输入(input_x)在轴(axis)所对应的维度不能切分,切分后,在数学逻辑上和单机不等价
mindspore.ops.Cos
mindspore.ops.Cosh
mindspore.ops.Div
mindspore.ops.DivNoNan
mindspore.ops.DropoutDoMask 需和DropoutGenMask联合使用,不支持配置切分策略
mindspore.ops.DropoutGenMask 需和DropoutDoMask联合使用
mindspore.ops.Elu
mindspore.ops.EmbeddingLookup 同GatherV2
mindspore.ops.Equal
mindspore.ops.Erf
mindspore.ops.Erfc
mindspore.ops.Exp
mindspore.ops.ExpandDims
mindspore.ops.Expm1
mindspore.ops.Floor
mindspore.ops.FloorDiv
mindspore.ops.FloorMod
mindspore.ops.GatherV2 仅支持1维和2维的input_params,并且input_params的最后一维要32字节对齐(出于性能考虑);不支持标量input_indices;参数在轴(axis)所在维度切分时,不支持重复计算;不支持input_indices和input_params同时进行切分
mindspore.ops.Gather 仅支持1维和2维的input_params,并且input_params的最后一维要32字节对齐(出于性能考虑);不支持标量input_indices;参数在轴(axis)所在维度切分时,不支持重复计算;不支持input_indices和input_params同时进行切分
mindspore.ops.Gelu
mindspore.ops.GeLU
mindspore.ops.Greater
mindspore.ops.GreaterEqual
mindspore.ops.Inv
mindspore.ops.L2Normalize 输入(input_x)在轴(axis)对应的维度不能切,切分后,在数学逻辑上和单机不等价
mindspore.ops.Less
mindspore.ops.LessEqual
mindspore.ops.LogicalAnd
mindspore.ops.LogicalNot
mindspore.ops.LogicalOr
mindspore.ops.Log
mindspore.ops.Log1p
mindspore.ops.LogSoftmax 输入(logits)在轴(axis)对应的维度不可切分,切分后,在数学逻辑上和单机不等价
mindspore.ops.MatMul 不支持transpose_a=True
mindspore.ops.Maximum
mindspore.ops.Minimum
mindspore.ops.Mod
mindspore.ops.Mul
mindspore.ops.Neg
mindspore.ops.NotEqual
mindspore.ops.OneHot 仅支持输入(indices)是1维的Tensor,切分策略要配置输出的切分策略,以及第1和第2个输入的切分策略
mindspore.ops.OnesLike
mindspore.ops.Pack
mindspore.ops.Pow
mindspore.ops.PReLU weight的shape在非[1]的情况下,输入(input_x)的Channel维要和weight的切分方式一致
mindspore.ops.RealDiv
mindspore.ops.Reciprocal
mindspore.ops.ReduceMax 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致
mindspore.ops.ReduceMin 输入在轴(axis)的维度进行切分时,分布式结果可能会和单机不一致
mindspore.ops.ReduceSum
mindspore.ops.ReduceMean
mindspore.ops.ReLU
mindspore.ops.ReLU6
mindspore.ops.ReLUV2
mindspore.ops.Reshape 不支持配置切分策略,并且,在自动并行模式下,当reshape算子后接有多个算子,不允许对这些算子配置不同的切分策略
mindspore.ops.Round
mindspore.ops.Rsqrt
mindspore.ops.Sigmoid
mindspore.ops.SigmoidCrossEntropyWithLogits
mindspore.ops.Sign
mindspore.ops.Sin
mindspore.ops.Sinh
mindspore.ops.Softmax 输入(logits)在轴(axis)对应的维度不可切分,切分后,在数学逻辑上和单机不等价
mindspore.ops.SoftmaxCrossEntropyWithLogits 输入(logits、labels)的最后一维不能切分;有两个输出,正向的loss只支持取[0]
mindspore.ops.Softplus
mindspore.ops.Softsign
mindspore.ops.SparseGatherV2 同GatherV2
mindspore.ops.Split 轴(axis)所对应的维度不能切分,切分后,在数学逻辑上和单机不等价
mindspore.ops.Sqrt
mindspore.ops.Square
mindspore.ops.Squeeze
mindspore.ops.StridedSlice 仅支持值为全0的mask;需要切分的维度必须全部提取;输入在strides不为1对应的维度不支持切分
mindspore.ops.Slice 需要切分的维度必须全部提取
mindspore.ops.Sub
mindspore.ops.Tan
mindspore.ops.Tanh
mindspore.ops.TensorAdd
mindspore.ops.Tile 仅支持对multiples配置切分策略
mindspore.ops.TopK 最后一维不支持切分,切分后,在数学逻辑上和单机不等价
mindspore.ops.Transpose
mindspore.ops.Unique 只支持重复计算的策略(1,)
mindspore.ops.UnsortedSegmentSum 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致
mindspore.ops.UnsortedSegmentMin 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致。注意:在segment id为空时,输出向量的对应位置会填充为输入类型的最大值。需要用户进行掩码处理,将最大值转换成0。否则容易造成数值溢出,导致通信算子上溢错误,从而引发Run Task Error
mindspore.ops.UnsortedSegmentMax 输入input_x和segment_ids的切分配置必须在segment_ids的维度上保持一致。注意:在segment id为空时,输出向量的对应位置会填充为输入类型的最小值。需要用户进行掩码处理,将最小值转换成0。否则容易造成数值溢出,导致通信算子上溢错误,从而引发Run Task Error
mindspore.ops.ZerosLike

重复计算是指,机器没有用满,比如:集群有8张卡跑分布式训练,切分策略只对输入切成了4份。这种情况下会发生重复计算。