mindspore 1.10.0__cp38-cp38-win_amd64.whl → 2.0.0rc1__cp38-cp38-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/ConcurrencyCheck.dll +0 -0
- mindspore/CppBuildInsights.dll +0 -0
- mindspore/CppCoreCheck.dll +0 -0
- mindspore/EnumIndex.dll +0 -0
- mindspore/EspXEngine.dll +0 -0
- mindspore/HResultCheck.dll +0 -0
- mindspore/KernelTraceControl.dll +0 -0
- mindspore/LocalESPC.dll +0 -0
- mindspore/Microsoft.Diagnostics.Tracing.EventSource.dll +0 -0
- mindspore/Microsoft.VisualStudio.RemoteControl.dll +0 -0
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Microsoft.VisualStudio.Utilities.Internal.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/System.Runtime.CompilerServices.Unsafe.dll +0 -0
- mindspore/VariantClear.dll +0 -0
- mindspore/__init__.py +9 -4
- mindspore/_c_dataengine.cp38-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp38-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp38-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +102 -0
- mindspore/_checkparam.py +1066 -1001
- mindspore/_extends/builtin_operations.py +32 -4
- mindspore/_extends/graph_kernel/model/graph_split.py +66 -222
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +12 -9
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +119 -26
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +50 -50
- mindspore/_extends/parallel_compile/akg_compiler/util.py +9 -6
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +4 -25
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +9 -4
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -27
- mindspore/_extends/parse/__init__.py +5 -3
- mindspore/_extends/parse/namespace.py +17 -2
- mindspore/_extends/parse/parser.py +193 -34
- mindspore/_extends/parse/resources.py +7 -8
- mindspore/_extends/parse/standard_method.py +1780 -435
- mindspore/_extends/parse/trope.py +3 -1
- mindspore/amp.py +53 -58
- mindspore/atlprov.dll +0 -0
- mindspore/boost/adasum.py +3 -2
- mindspore/boost/boost.py +2 -2
- mindspore/boost/boost_cell_wrapper.py +46 -26
- mindspore/boost/dim_reduce.py +6 -5
- mindspore/boost/grad_accumulation.py +2 -1
- mindspore/boost/group_loss_scale_manager.py +1 -1
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/cfgpersist.dll +0 -0
- mindspore/clang_rt.asan_dbg_dynamic-x86_64.dll +0 -0
- mindspore/clang_rt.asan_dynamic-x86_64.dll +0 -0
- mindspore/common/__init__.py +11 -10
- mindspore/common/_decorator.py +2 -0
- mindspore/common/_register_for_adapter.py +55 -0
- mindspore/common/_stub_tensor.py +201 -0
- mindspore/common/_utils.py +57 -0
- mindspore/common/api.py +582 -297
- mindspore/common/dtype.py +66 -18
- mindspore/common/dump.py +2 -2
- mindspore/common/initializer.py +38 -1
- mindspore/common/jit_config.py +25 -13
- mindspore/common/mutable.py +53 -24
- mindspore/common/parameter.py +60 -37
- mindspore/common/seed.py +8 -24
- mindspore/common/sparse_tensor.py +927 -0
- mindspore/common/tensor.py +1627 -3900
- mindspore/communication/__init__.py +10 -5
- mindspore/communication/_comm_helper.py +78 -214
- mindspore/communication/_hccl_management.py +2 -1
- mindspore/communication/management.py +136 -47
- mindspore/config/op_info.config +501 -1008
- mindspore/context.py +291 -56
- mindspore/d3dcompiler_47.dll +0 -0
- mindspore/dataset/__init__.py +12 -8
- mindspore/dataset/audio/__init__.py +9 -9
- mindspore/dataset/audio/transforms.py +1090 -228
- mindspore/dataset/audio/utils.py +87 -39
- mindspore/dataset/audio/validators.py +223 -1
- mindspore/dataset/callback/ds_callback.py +17 -15
- mindspore/dataset/core/config.py +246 -17
- mindspore/dataset/core/py_util_helpers.py +4 -3
- mindspore/dataset/core/validator_helpers.py +10 -10
- mindspore/{parallel/nn/layers.py → dataset/debug/__init__.py} +7 -8
- mindspore/dataset/debug/debug_hook.py +65 -0
- mindspore/dataset/debug/pre_defined_hook.py +67 -0
- mindspore/dataset/engine/__init__.py +7 -3
- mindspore/dataset/engine/cache_client.py +9 -9
- mindspore/dataset/engine/datasets.py +648 -477
- mindspore/dataset/engine/datasets_audio.py +165 -167
- mindspore/dataset/engine/datasets_standard_format.py +93 -67
- mindspore/dataset/engine/datasets_text.py +492 -342
- mindspore/dataset/engine/datasets_user_defined.py +85 -50
- mindspore/dataset/engine/datasets_vision.py +1224 -699
- mindspore/dataset/engine/graphdata.py +134 -69
- mindspore/dataset/engine/iterators.py +50 -9
- mindspore/dataset/engine/offload.py +52 -31
- mindspore/dataset/engine/samplers.py +27 -24
- mindspore/dataset/engine/serializer_deserializer.py +14 -15
- mindspore/dataset/engine/validators.py +213 -52
- mindspore/dataset/text/__init__.py +10 -8
- mindspore/dataset/text/transforms.py +152 -57
- mindspore/dataset/text/utils.py +98 -49
- mindspore/dataset/text/validators.py +25 -0
- mindspore/dataset/transforms/__init__.py +4 -2
- mindspore/dataset/transforms/c_transforms.py +11 -13
- mindspore/dataset/transforms/py_transforms.py +2 -2
- mindspore/dataset/transforms/py_transforms_util.py +10 -0
- mindspore/dataset/transforms/transforms.py +13 -15
- mindspore/dataset/transforms/validators.py +7 -7
- mindspore/dataset/utils/__init__.py +2 -1
- mindspore/dataset/utils/browse_dataset.py +13 -13
- mindspore/dataset/utils/line_reader.py +121 -0
- mindspore/dataset/vision/__init__.py +8 -7
- mindspore/dataset/vision/c_transforms.py +125 -126
- mindspore/dataset/vision/py_transforms.py +37 -37
- mindspore/dataset/vision/py_transforms_util.py +23 -20
- mindspore/dataset/vision/transforms.py +316 -315
- mindspore/dataset/vision/utils.py +313 -17
- mindspore/dataset/vision/validators.py +6 -6
- mindspore/default_config.py +0 -1
- mindspore/dpcmi.dll +0 -0
- mindspore/{compression → experimental}/__init__.py +6 -5
- mindspore/experimental/map_parameter.py +275 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/callback/callback.h +9 -13
- mindspore/include/api/callback/ckpt_saver.h +2 -2
- mindspore/include/api/callback/loss_monitor.h +2 -2
- mindspore/include/api/callback/lr_scheduler.h +5 -5
- mindspore/include/api/callback/time_monitor.h +2 -2
- mindspore/include/api/callback/train_accuracy.h +4 -6
- mindspore/include/api/cfg.h +19 -6
- mindspore/include/api/context.h +70 -9
- mindspore/include/api/delegate.h +8 -1
- mindspore/include/api/dual_abi_helper.h +8 -24
- mindspore/include/api/metrics/accuracy.h +2 -2
- mindspore/include/api/metrics/metrics.h +4 -3
- mindspore/include/api/model.h +9 -4
- mindspore/include/api/model_group.h +68 -0
- mindspore/include/api/model_parallel_runner.h +17 -17
- mindspore/include/api/net.h +12 -11
- mindspore/include/api/serialization.h +20 -4
- mindspore/include/api/status.h +7 -1
- mindspore/include/api/types.h +25 -21
- mindspore/include/api/visible.h +4 -0
- mindspore/include/c_api/model_c.h +5 -0
- mindspore/include/c_api/status_c.h +1 -1
- mindspore/include/dataset/config.h +1 -1
- mindspore/include/dataset/constants.h +14 -0
- mindspore/include/dataset/text.h +59 -0
- mindspore/include/dataset/vision.h +56 -117
- mindspore/include/dataset/vision_lite.h +102 -0
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +28 -28
- mindspore/mindrecord/common/exceptions.py +2 -4
- mindspore/mindrecord/filereader.py +19 -1
- mindspore/mindrecord/filewriter.py +250 -88
- mindspore/mindrecord/mindpage.py +13 -13
- mindspore/mindrecord/shardheader.py +15 -15
- mindspore/mindrecord/shardreader.py +9 -0
- mindspore/mindrecord/shardwriter.py +29 -29
- mindspore/mindrecord/tools/cifar100_to_mr.py +9 -9
- mindspore/mindrecord/tools/cifar10_to_mr.py +9 -9
- mindspore/mindrecord/tools/csv_to_mr.py +4 -4
- mindspore/mindrecord/tools/imagenet_to_mr.py +70 -65
- mindspore/mindrecord/tools/mnist_to_mr.py +41 -41
- mindspore/mindrecord/tools/tfrecord_to_mr.py +6 -6
- mindspore/{libmindspore_backend.dll → mindspore_backend.dll} +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_shared_lib.dll +0 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/nn/__init__.py +1 -5
- mindspore/nn/cell.py +297 -234
- mindspore/nn/dynamic_lr.py +1 -1
- mindspore/nn/grad/cell_grad.py +17 -42
- mindspore/nn/layer/__init__.py +7 -4
- mindspore/nn/layer/activation.py +131 -88
- mindspore/nn/layer/basic.py +313 -613
- mindspore/nn/layer/channel_shuffle.py +103 -0
- mindspore/nn/layer/combined.py +1 -1
- mindspore/nn/layer/container.py +52 -6
- mindspore/nn/layer/conv.py +112 -43
- mindspore/nn/layer/dense.py +10 -9
- mindspore/nn/layer/embedding.py +36 -34
- mindspore/nn/layer/image.py +123 -27
- mindspore/nn/layer/math.py +108 -107
- mindspore/nn/layer/normalization.py +212 -366
- mindspore/nn/layer/padding.py +370 -42
- mindspore/nn/layer/pooling.py +1443 -219
- mindspore/nn/layer/rnn_cells.py +11 -16
- mindspore/nn/layer/rnns.py +38 -39
- mindspore/nn/layer/thor_layer.py +24 -25
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +701 -0
- mindspore/nn/learning_rate_schedule.py +8 -8
- mindspore/nn/loss/__init__.py +9 -6
- mindspore/nn/loss/loss.py +678 -142
- mindspore/nn/metrics.py +53 -0
- mindspore/nn/optim/_dist_optimizer_registry.py +2 -2
- mindspore/nn/optim/ada_grad.py +8 -8
- mindspore/nn/optim/adadelta.py +2 -3
- mindspore/nn/optim/adafactor.py +18 -14
- mindspore/nn/optim/adam.py +429 -87
- mindspore/nn/optim/adamax.py +5 -6
- mindspore/nn/optim/adasum.py +10 -8
- mindspore/nn/optim/asgd.py +7 -7
- mindspore/nn/optim/ftrl.py +81 -11
- mindspore/nn/optim/lamb.py +7 -8
- mindspore/nn/optim/lars.py +4 -4
- mindspore/nn/optim/lazyadam.py +82 -7
- mindspore/nn/optim/momentum.py +8 -7
- mindspore/nn/optim/optimizer.py +19 -10
- mindspore/nn/optim/proximal_ada_grad.py +6 -5
- mindspore/nn/optim/rmsprop.py +3 -3
- mindspore/nn/optim/rprop.py +20 -16
- mindspore/nn/optim/sgd.py +21 -15
- mindspore/nn/optim/thor.py +23 -21
- mindspore/nn/probability/__init__.py +0 -2
- mindspore/nn/probability/bijector/bijector.py +7 -6
- mindspore/nn/probability/bijector/invert.py +4 -2
- mindspore/nn/probability/bijector/softplus.py +2 -2
- mindspore/nn/probability/bnn_layers/dense_variational.py +1 -1
- mindspore/nn/probability/bnn_layers/layer_distribution.py +2 -2
- mindspore/nn/probability/distribution/__init__.py +6 -0
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -2
- mindspore/nn/probability/distribution/_utils/utils.py +11 -17
- mindspore/nn/probability/distribution/bernoulli.py +6 -6
- mindspore/nn/probability/distribution/beta.py +1 -1
- mindspore/nn/probability/distribution/categorical.py +9 -9
- mindspore/nn/probability/distribution/cauchy.py +8 -8
- mindspore/nn/probability/distribution/distribution.py +12 -6
- mindspore/nn/probability/distribution/exponential.py +5 -5
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +6 -5
- mindspore/nn/probability/distribution/gumbel.py +5 -5
- mindspore/nn/probability/distribution/half_normal.py +133 -0
- mindspore/nn/probability/distribution/laplace.py +128 -0
- mindspore/nn/probability/distribution/log_normal.py +0 -1
- mindspore/nn/probability/distribution/logistic.py +4 -5
- mindspore/nn/probability/distribution/normal.py +11 -15
- mindspore/nn/probability/distribution/poisson.py +6 -2
- mindspore/nn/probability/distribution/student_t.py +150 -0
- mindspore/nn/probability/distribution/transformed_distribution.py +4 -4
- mindspore/nn/probability/distribution/uniform.py +5 -5
- mindspore/nn/reinforcement/_tensors_queue.py +3 -3
- mindspore/nn/reinforcement/tensor_array.py +2 -2
- mindspore/nn/sparse/sparse.py +8 -1
- mindspore/nn/wrap/cell_wrapper.py +55 -27
- mindspore/nn/wrap/grad_reducer.py +20 -11
- mindspore/nn/wrap/loss_scale.py +47 -30
- mindspore/numpy/array_creations.py +33 -22
- mindspore/numpy/array_ops.py +46 -42
- mindspore/numpy/logic_ops.py +6 -27
- mindspore/numpy/math_ops.py +26 -19
- mindspore/numpy/utils.py +1 -8
- mindspore/numpy/utils_const.py +112 -62
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +6 -3
- mindspore/ops/_constants.py +0 -6
- mindspore/ops/_grad/__init__.py +2 -1
- mindspore/ops/_grad/grad_array_ops.py +209 -152
- mindspore/ops/_grad/grad_base.py +55 -17
- mindspore/ops/_grad/grad_clip_ops.py +11 -3
- mindspore/ops/_grad/grad_comm_ops.py +58 -47
- mindspore/ops/_grad/grad_implementations.py +21 -61
- mindspore/ops/_grad/grad_inner_ops.py +48 -6
- mindspore/ops/_grad/grad_math_ops.py +306 -161
- mindspore/ops/_grad/grad_nn_ops.py +192 -181
- mindspore/ops/_grad/grad_other_ops.py +1 -1
- mindspore/ops/_grad/grad_quant_ops.py +5 -5
- mindspore/ops/_grad/grad_sequence_ops.py +296 -0
- mindspore/ops/_grad/grad_sparse.py +15 -9
- mindspore/ops/_grad_experimental/__init__.py +1 -0
- mindspore/ops/_grad_experimental/grad_array_ops.py +441 -55
- mindspore/ops/_grad_experimental/grad_image_ops.py +25 -7
- mindspore/ops/_grad_experimental/grad_inner_ops.py +3 -44
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +16 -21
- mindspore/ops/_grad_experimental/grad_math_ops.py +979 -49
- mindspore/ops/_grad_experimental/grad_nn_ops.py +78 -8
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +112 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +197 -13
- mindspore/ops/_op_impl/__init__.py +3 -3
- mindspore/ops/_op_impl/_custom_op/__init__.py +0 -1
- mindspore/ops/_op_impl/_custom_op/_basic.py +0 -1
- mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +4 -2
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2.py +2 -2
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold2_grad_reduce.py +5 -5
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold_grad.py +3 -3
- mindspore/ops/_op_impl/_custom_op/cholesky_trsm_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/correction_mul.py +3 -3
- mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +4 -8
- mindspore/ops/_op_impl/_custom_op/dsd_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perchannel_grad_reduce.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_learned_scale_quant_perlayer_grad_reduce.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_quant_perchannel_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fake_quant_perlayer_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/fused_abs_max1_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/img2col_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_left_impl.py +2 -2
- mindspore/ops/_op_impl/_custom_op/matmul_cube_dense_right_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_left_cast_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/matmul_cube_fracz_right_mul_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/matmul_cube_impl.py +2 -2
- mindspore/ops/_op_impl/_custom_op/matmul_dds_grad_impl.py +0 -1
- mindspore/ops/_op_impl/_custom_op/matmul_dds_impl.py +0 -1
- mindspore/ops/_op_impl/_custom_op/matrix_combine_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/minmax_update_perchannel.py +2 -2
- mindspore/ops/_op_impl/_custom_op/minmax_update_perlayer.py +2 -2
- mindspore/ops/_op_impl/_custom_op/transpose02314_impl.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +238 -3
- mindspore/ops/_op_impl/aicpu/abs.py +36 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d.py +34 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d.py +39 -0
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_3d_grad.py +39 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_2d_grad.py +37 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d.py +42 -0
- mindspore/ops/_op_impl/aicpu/adaptive_max_pool_3d_grad.py +152 -0
- mindspore/ops/_op_impl/aicpu/add.py +43 -0
- mindspore/ops/_op_impl/aicpu/addcdiv.py +0 -32
- mindspore/ops/_op_impl/aicpu/addcmul.py +0 -84
- mindspore/ops/_op_impl/aicpu/affine_grid_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/arg_max.py +75 -0
- mindspore/ops/_op_impl/aicpu/arg_min.py +75 -0
- mindspore/ops/_op_impl/aicpu/argmin_with_value.py +43 -0
- mindspore/ops/_op_impl/aicpu/batch_matmul.py +43 -0
- mindspore/ops/_op_impl/aicpu/batch_norm_grad_grad.py +49 -0
- mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
- mindspore/ops/_op_impl/aicpu/bessel_i0.py +31 -0
- mindspore/ops/_op_impl/aicpu/bias_add.py +44 -0
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +43 -0
- mindspore/ops/_op_impl/aicpu/bincount.py +33 -0
- mindspore/{nn/probability/infer/variational/__init__.py → ops/_op_impl/aicpu/cauchy.py} +17 -10
- mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
- mindspore/ops/_op_impl/aicpu/cholesky.py +1 -1
- mindspore/ops/_op_impl/{cpu/bias_add.py → aicpu/choleskygrad.py} +9 -7
- mindspore/ops/_op_impl/aicpu/combined_non_max_suppression.py +42 -0
- mindspore/ops/_op_impl/aicpu/concat_offset.py +42 -0
- mindspore/ops/_op_impl/aicpu/concat_offset_v1.py +31 -0
- mindspore/ops/_op_impl/aicpu/conj.py +11 -0
- mindspore/ops/_op_impl/aicpu/crop_and_resize_grad_image.py +38 -0
- mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +36 -0
- mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
- mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +2 -2
- mindspore/ops/_op_impl/aicpu/dense_to_sparse_set_operation.py +48 -0
- mindspore/ops/_op_impl/aicpu/diag.py +36 -0
- mindspore/ops/_op_impl/aicpu/diag_part.py +36 -0
- mindspore/ops/_op_impl/aicpu/diagonal.py +35 -0
- mindspore/ops/_op_impl/{cpu/bias_add_grad.py → aicpu/digamma.py} +9 -7
- mindspore/ops/_op_impl/aicpu/eig.py +35 -0
- mindspore/ops/_op_impl/aicpu/fft_with_size.py +41 -0
- mindspore/ops/_op_impl/aicpu/flatten.py +1 -0
- mindspore/ops/_op_impl/aicpu/fmax.py +36 -0
- mindspore/ops/_op_impl/aicpu/fmin.py +37 -0
- mindspore/ops/_op_impl/aicpu/fractional_max_pool3d_with_fixed_ksize.py +1 -1
- mindspore/ops/_op_impl/aicpu/fse_decode.py +43 -0
- mindspore/ops/_op_impl/aicpu/glu.py +33 -0
- mindspore/ops/_op_impl/aicpu/glu_grad.py +34 -0
- mindspore/ops/_op_impl/aicpu/greater.py +41 -0
- mindspore/ops/_op_impl/aicpu/greater_equal.py +41 -0
- mindspore/ops/_op_impl/aicpu/index_put.py +50 -0
- mindspore/ops/_op_impl/{tbe/scatter_add_ds.py → aicpu/inplace_index_add.py} +17 -21
- mindspore/ops/_op_impl/aicpu/instance_norm_v2.py +41 -0
- mindspore/ops/_op_impl/aicpu/instance_norm_v2_grad.py +44 -0
- mindspore/ops/_op_impl/aicpu/layer_norm_grad_grad.py +47 -0
- mindspore/ops/_op_impl/aicpu/less.py +41 -0
- mindspore/ops/_op_impl/aicpu/less_equal.py +41 -0
- mindspore/ops/_op_impl/aicpu/lgamma.py +32 -0
- mindspore/ops/_op_impl/aicpu/log_normal_reverse.py +33 -0
- mindspore/ops/_op_impl/aicpu/logit.py +33 -0
- mindspore/ops/_op_impl/aicpu/logit_grad.py +34 -0
- mindspore/ops/_op_impl/aicpu/masked_fill.py +42 -0
- mindspore/ops/_op_impl/aicpu/masked_scatter.py +39 -0
- mindspore/ops/_op_impl/aicpu/matmul.py +39 -0
- mindspore/ops/_op_impl/aicpu/matrix_logarithm.py +31 -0
- mindspore/ops/_op_impl/aicpu/matrix_power.py +32 -0
- mindspore/ops/_op_impl/aicpu/matrix_solve_ls.py +36 -0
- mindspore/ops/_op_impl/aicpu/matrix_triangular_solve.py +36 -0
- mindspore/ops/_op_impl/aicpu/mirror_pad.py +2 -0
- mindspore/ops/_op_impl/aicpu/mirror_pad_grad.py +0 -4
- mindspore/ops/_op_impl/aicpu/mul.py +3 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +14 -6
- mindspore/ops/_op_impl/aicpu/multinomial_with_replacement.py +35 -0
- mindspore/ops/_op_impl/aicpu/nan_to_num.py +34 -0
- mindspore/ops/_op_impl/aicpu/nllloss.py +38 -0
- mindspore/ops/_op_impl/aicpu/nllloss_grad.py +39 -0
- mindspore/ops/_op_impl/aicpu/ones_like.py +0 -2
- mindspore/ops/_op_impl/aicpu/polar.py +32 -0
- mindspore/ops/_op_impl/aicpu/polygamma.py +34 -0
- mindspore/ops/_op_impl/aicpu/qr.py +36 -0
- mindspore/ops/_op_impl/aicpu/quant_dtype_cast.py +40 -0
- mindspore/ops/_op_impl/aicpu/quantile.py +35 -0
- mindspore/ops/_op_impl/aicpu/ragged_tensor_to_sparse.py +73 -0
- mindspore/ops/_op_impl/aicpu/ragged_tensor_to_tensor.py +74 -0
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +3 -0
- mindspore/ops/_op_impl/aicpu/randperm_v2.py +41 -0
- mindspore/ops/_op_impl/aicpu/range.py +36 -0
- mindspore/ops/_op_impl/aicpu/reciprocal.py +34 -0
- mindspore/ops/_op_impl/aicpu/reciprocal_grad.py +35 -0
- mindspore/ops/_op_impl/aicpu/reduce_sum.py +57 -0
- mindspore/ops/_op_impl/aicpu/resize_bicubic.py +2 -8
- mindspore/ops/_op_impl/aicpu/resize_bicubic_grad.py +1 -1
- mindspore/ops/_op_impl/aicpu/resize_v2.py +68 -0
- mindspore/ops/_op_impl/aicpu/resize_v2_grad.py +68 -0
- mindspore/ops/_op_impl/aicpu/scatter_elements.py +4 -0
- mindspore/ops/_op_impl/aicpu/scatter_nd_update.py +2 -0
- mindspore/ops/_op_impl/aicpu/search_sorted.py +12 -6
- mindspore/ops/_op_impl/aicpu/self_adjoint_eig.py +34 -0
- mindspore/ops/_op_impl/aicpu/sequence_add.py +34 -0
- mindspore/ops/_op_impl/aicpu/sequence_add_offset.py +34 -0
- mindspore/ops/_op_impl/aicpu/sequence_addn.py +38 -0
- mindspore/ops/_op_impl/aicpu/slice_grad.py +76 -0
- mindspore/ops/_op_impl/aicpu/smooth_l1_loss.py +35 -0
- mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -0
- mindspore/ops/_op_impl/aicpu/sort.py +39 -0
- mindspore/ops/_op_impl/aicpu/sparse_apply_adagrad_da.py +0 -24
- mindspore/ops/_op_impl/aicpu/sparse_cross.py +42 -0
- mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows.py +63 -0
- mindspore/ops/_op_impl/aicpu/sparse_fill_empty_rows_grad.py +45 -0
- mindspore/ops/_op_impl/aicpu/sparse_matrix_mat_mul.py +56 -0
- mindspore/ops/_op_impl/{tbe/slice_ds.py → aicpu/sparse_segment_sum.py} +16 -24
- mindspore/ops/_op_impl/aicpu/sparse_segment_sum_with_num_segments.py +68 -0
- mindspore/ops/_op_impl/aicpu/sparse_slice.py +63 -0
- mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +61 -0
- mindspore/ops/_op_impl/aicpu/squared_difference.py +2 -0
- mindspore/ops/_op_impl/aicpu/strided_slice_v2.py +93 -0
- mindspore/ops/_op_impl/aicpu/strided_slice_v2_grad.py +66 -0
- mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
- mindspore/ops/_op_impl/{tbe/gather_v2.py → aicpu/tile.py} +24 -24
- mindspore/ops/_op_impl/aicpu/tridiagonal_solve.py +35 -0
- mindspore/ops/_op_impl/aicpu/tril_indices.py +34 -0
- mindspore/ops/_op_impl/aicpu/triu_indices.py +34 -0
- mindspore/ops/_op_impl/aicpu/uniform.py +34 -0
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +1 -0
- mindspore/ops/_op_impl/aicpu/unique_consecutive.py +10 -2
- mindspore/ops/_op_impl/cpu/__init__.py +1 -2
- mindspore/ops/_op_impl/cpu/dynamic_shape.py +5 -1
- mindspore/ops/_op_impl/cpu/maximum_grad.py +2 -0
- mindspore/{compression/common/__init__.py → ops/_op_impl/cpu/pyexecute.py} +13 -8
- mindspore/ops/_op_impl/cpu/reduce_sum.py +8 -0
- mindspore/ops/_op_impl/cpu/sparse_slice.py +62 -0
- mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +60 -0
- mindspore/ops/_op_impl/cpu/tensor_shape.py +5 -1
- mindspore/ops/_op_impl/tbe/__init__.py +27 -608
- mindspore/ops/_op_impl/tbe/addcdiv_ds.py +42 -0
- mindspore/ops/_op_impl/tbe/addcmul_ds.py +44 -0
- mindspore/ops/_op_impl/tbe/assign_add_ds.py +1 -0
- mindspore/ops/_op_impl/tbe/atomic_addr_clean.py +1 -1
- mindspore/ops/_op_impl/tbe/avg_pool_3d_grad.py +1 -1
- mindspore/ops/_op_impl/tbe/basic_lstm_cell_c_state_grad_v2.py +0 -1
- mindspore/ops/_op_impl/tbe/batch_to_space.py +1 -1
- mindspore/ops/_op_impl/tbe/batch_to_space_nd.py +1 -1
- mindspore/ops/_op_impl/tbe/batch_to_space_nd_v2.py +41 -0
- mindspore/ops/_op_impl/tbe/bce_with_logits_loss.py +1 -0
- mindspore/ops/_op_impl/tbe/bias_add_grad.py +2 -0
- mindspore/ops/_op_impl/tbe/bn_infer_grad.py +4 -2
- mindspore/ops/_op_impl/tbe/bn_infer_grad_ds.py +40 -0
- mindspore/ops/_op_impl/tbe/bn_training_update.py +0 -1
- mindspore/ops/_op_impl/tbe/bn_training_update_ds.py +0 -1
- mindspore/ops/_op_impl/tbe/broadcast_to_ds.py +6 -4
- mindspore/ops/_op_impl/tbe/cast.py +0 -2
- mindspore/ops/_op_impl/tbe/cast_ds.py +3 -3
- mindspore/ops/_op_impl/tbe/ctc_loss_v2.py +0 -2
- mindspore/ops/_op_impl/tbe/ctc_loss_v2_grad.py +0 -2
- mindspore/ops/_op_impl/tbe/data_format_dim_map_ds.py +1 -0
- mindspore/ops/_op_impl/tbe/deformable_offsets.py +1 -0
- mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +1 -1
- mindspore/ops/_op_impl/tbe/dynamic_atomic_addr_clean.py +1 -1
- mindspore/ops/_op_impl/tbe/gather_nd.py +1 -0
- mindspore/ops/_op_impl/tbe/greater.py +2 -0
- mindspore/ops/_op_impl/tbe/{index_add.py → inplace_index_add.py} +3 -6
- mindspore/ops/_op_impl/tbe/layer_norm_beta_gamma_backprop_v2.py +0 -1
- mindspore/ops/_op_impl/tbe/npu_clear_float_status_v2.py +35 -0
- mindspore/ops/_op_impl/tbe/npu_get_float_status_v2.py +35 -0
- mindspore/ops/_op_impl/tbe/one_hot_ds.py +0 -6
- mindspore/ops/_op_impl/tbe/{greater_ds.py → reduce_all_ds.py} +13 -16
- mindspore/ops/_op_impl/tbe/reduce_any_ds.py +39 -0
- mindspore/ops/_op_impl/tbe/roi_align_ds.py +44 -0
- mindspore/ops/_op_impl/tbe/roi_align_grad_ds.py +44 -0
- mindspore/ops/_op_impl/tbe/scatter_add.py +2 -0
- mindspore/ops/_op_impl/tbe/scatter_nd_add.py +2 -2
- mindspore/ops/_op_impl/tbe/slice.py +26 -15
- mindspore/ops/_op_impl/tbe/space_to_batch.py +1 -1
- mindspore/ops/_op_impl/tbe/space_to_batch_nd.py +1 -1
- mindspore/ops/_op_impl/tbe/strided_slice_grad_d.py +1 -0
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +15 -5
- mindspore/ops/_op_impl/tbe/unsorted_segment_sum.py +1 -1
- mindspore/ops/_op_impl/tbe/unsorted_segment_sum_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +3 -2
- mindspore/ops/_register_for_op.py +11 -0
- mindspore/ops/_utils/__init__.py +1 -1
- mindspore/ops/_utils/utils.py +20 -41
- mindspore/ops/_vmap/__init__.py +2 -2
- mindspore/ops/_vmap/vmap_array_ops.py +170 -78
- mindspore/ops/_vmap/vmap_base.py +24 -10
- mindspore/ops/_vmap/vmap_convolution_ops.py +7 -10
- mindspore/ops/_vmap/vmap_grad_math_ops.py +4 -4
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +41 -9
- mindspore/ops/_vmap/vmap_image_ops.py +52 -0
- mindspore/ops/_vmap/vmap_math_ops.py +77 -6
- mindspore/ops/_vmap/vmap_nn_ops.py +78 -29
- mindspore/ops/_vmap/vmap_other_ops.py +3 -1
- mindspore/ops/_vmap/vmap_random_ops.py +55 -3
- mindspore/ops/_vmap/vmap_sparse_ops.py +1 -0
- mindspore/ops/bprop_mindir/AdaptiveAvgPool2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/AdaptiveMaxPool2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ApproximateEqual_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/Argmax_bprop.mindir +13 -12
- mindspore/ops/bprop_mindir/Argmin_bprop.mindir +14 -13
- mindspore/ops/bprop_mindir/AssignSub_bprop.mindir +17 -18
- mindspore/ops/bprop_mindir/Assign_bprop.mindir +16 -16
- mindspore/ops/bprop_mindir/AvgPool3D_bprop.mindir +150 -0
- mindspore/ops/bprop_mindir/AvgPool_bprop.mindir +66 -0
- mindspore/ops/bprop_mindir/BCEWithLogitsLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +13 -12
- mindspore/ops/bprop_mindir/BatchNormGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BatchToSpaceND_bprop.mindir +28 -0
- mindspore/ops/bprop_mindir/BiasAddGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/BinaryCrossEntropy_bprop.mindir +33 -0
- mindspore/ops/bprop_mindir/BroadcastTo_bprop.mindir +306 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +12 -8
- mindspore/ops/bprop_mindir/CTCLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Concat_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Conv2DBackpropFilter_bprop.mindir +240 -0
- mindspore/ops/bprop_mindir/Conv2DBackpropInput_bprop.mindir +247 -0
- mindspore/ops/bprop_mindir/Conv2DTranspose_bprop.mindir +247 -0
- mindspore/ops/bprop_mindir/Conv3DTranspose_bprop.mindir +315 -0
- mindspore/ops/bprop_mindir/Conv3D_bprop.mindir +278 -0
- mindspore/ops/bprop_mindir/DType_bprop.mindir +12 -12
- mindspore/ops/bprop_mindir/DeformableOffsets_bprop.mindir +58 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +12 -13
- mindspore/ops/bprop_mindir/DepthToSpace_bprop.mindir +23 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +138 -0
- mindspore/ops/bprop_mindir/DiagPart_bprop.mindir +15 -0
- mindspore/ops/bprop_mindir/Dropout2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Dropout3D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DropoutDoMask_bprop.mindir +22 -24
- mindspore/ops/bprop_mindir/DropoutGenMask_bprop.mindir +16 -14
- mindspore/ops/bprop_mindir/DropoutGrad_bprop.mindir +27 -0
- mindspore/ops/bprop_mindir/Dropout_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicGRUV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicRNN_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DynamicShape_bprop.mindir +12 -12
- mindspore/ops/bprop_mindir/Elu_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Equal_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/ExpandDims_bprop.mindir +58 -0
- mindspore/ops/bprop_mindir/FastGeLU_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/Flatten_bprop.mindir +54 -0
- mindspore/ops/bprop_mindir/FloorDiv_bprop.mindir +18 -15
- mindspore/ops/bprop_mindir/GatherD_bprop.mindir +26 -0
- mindspore/ops/bprop_mindir/GatherNd_bprop.mindir +57 -0
- mindspore/ops/bprop_mindir/Gather_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/GreaterEqual_bprop.mindir +17 -18
- mindspore/ops/bprop_mindir/Greater_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/HSigmoid_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/HSwish_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/IOU_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/InstanceNorm_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/IsFinite_bprop.mindir +13 -12
- mindspore/ops/bprop_mindir/IsInf_bprop.mindir +13 -10
- mindspore/ops/bprop_mindir/IsNan_bprop.mindir +14 -11
- mindspore/ops/bprop_mindir/KLDivLoss_bprop.mindir +126 -0
- mindspore/ops/bprop_mindir/L2Loss_bprop.mindir +15 -0
- mindspore/ops/bprop_mindir/L2Normalize_bprop.mindir +30 -0
- mindspore/ops/bprop_mindir/LRN_bprop.mindir +43 -0
- mindspore/ops/bprop_mindir/LayerNormGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/LessEqual_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/Less_bprop.mindir +17 -18
- mindspore/ops/bprop_mindir/LinSpace_bprop.mindir +22 -19
- mindspore/ops/bprop_mindir/Load_bprop.mindir +12 -13
- mindspore/ops/bprop_mindir/LogSoftmax_bprop.mindir +23 -0
- mindspore/ops/bprop_mindir/LogicalAnd_bprop.mindir +17 -18
- mindspore/ops/bprop_mindir/LogicalNot_bprop.mindir +14 -13
- mindspore/ops/bprop_mindir/MaskedSelect_bprop.mindir +21 -0
- mindspore/ops/bprop_mindir/MaxPool3DGradGrad_bprop.mindir +74 -0
- mindspore/ops/bprop_mindir/MaxPool3DGrad_bprop.mindir +74 -0
- mindspore/ops/bprop_mindir/MaxPool3D_bprop.mindir +75 -0
- mindspore/ops/bprop_mindir/MaxPoolGradGrad_bprop.mindir +65 -0
- mindspore/ops/bprop_mindir/MaxPoolWithArgmax_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Maximum_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Minimum_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/MirrorPad_bprop.mindir +27 -0
- mindspore/ops/bprop_mindir/Mish_bprop.mindir +35 -0
- mindspore/ops/bprop_mindir/MulNoNan_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/NLLLoss_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/NonZero_bprop.mindir +14 -0
- mindspore/ops/bprop_mindir/NotEqual_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/OneHot_bprop.mindir +25 -23
- mindspore/ops/bprop_mindir/OnesLike_bprop.mindir +13 -13
- mindspore/ops/bprop_mindir/PReLU_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Pad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Padding_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/RNNTLoss_bprop.mindir +29 -0
- mindspore/ops/bprop_mindir/ROIAlign_bprop.mindir +82 -0
- mindspore/ops/bprop_mindir/Range_bprop.mindir +21 -19
- mindspore/ops/bprop_mindir/Rank_bprop.mindir +11 -11
- mindspore/ops/bprop_mindir/ReLU6_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/ReLUV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ReduceAll_bprop.mindir +18 -17
- mindspore/ops/bprop_mindir/ReduceAny_bprop.mindir +18 -17
- mindspore/ops/bprop_mindir/ReluGrad_bprop.mindir +19 -23
- mindspore/ops/bprop_mindir/Reshape_bprop.mindir +60 -0
- mindspore/ops/bprop_mindir/ResizeBilinear_bprop.mindir +29 -0
- mindspore/ops/bprop_mindir/ResizeNearestNeighbor_bprop.mindir +89 -0
- mindspore/ops/bprop_mindir/ReverseSequence_bprop.mindir +52 -0
- mindspore/ops/bprop_mindir/ReverseV2_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/Round_bprop.mindir +14 -13
- mindspore/ops/bprop_mindir/ScatterMax_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterMin_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNdUpdate_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/ScatterNd_bprop.mindir +24 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/ScatterUpdate_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SeLU_bprop.mindir +21 -0
- mindspore/ops/bprop_mindir/Select_bprop.mindir +30 -34
- mindspore/ops/bprop_mindir/Shape_bprop.mindir +12 -12
- mindspore/ops/bprop_mindir/SigmoidCrossEntropyWithLogits_bprop.mindir +21 -0
- mindspore/ops/bprop_mindir/SigmoidGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Sigmoid_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/Sign_bprop.mindir +13 -12
- mindspore/ops/bprop_mindir/Slice_bprop.mindir +26 -0
- mindspore/ops/bprop_mindir/SmoothL1Loss_bprop.mindir +36 -0
- mindspore/ops/bprop_mindir/SoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Softplus_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/Softsign_bprop.mindir +33 -0
- mindspore/ops/bprop_mindir/Sort_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SpaceToBatchND_bprop.mindir +28 -0
- mindspore/ops/bprop_mindir/SpaceToDepth_bprop.mindir +23 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Split_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/Squeeze_bprop.mindir +54 -0
- mindspore/ops/bprop_mindir/StridedSliceGrad_bprop.mindir +95 -0
- mindspore/ops/bprop_mindir/StridedSlice_bprop.mindir +98 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +28 -32
- mindspore/ops/bprop_mindir/TanhGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Tanh_bprop.mindir +66 -0
- mindspore/ops/bprop_mindir/TensorScatterAdd_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/TensorScatterUpdate_bprop.mindir +29 -0
- mindspore/ops/bprop_mindir/TensorShape_bprop.mindir +14 -0
- mindspore/ops/bprop_mindir/Tile_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TopK_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +23 -0
- mindspore/ops/bprop_mindir/TruncateDiv_bprop.mindir +18 -15
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +11 -13
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +22 -0
- mindspore/ops/bprop_mindir/UpsampleNearest3D_bprop.mindir +32 -0
- mindspore/ops/bprop_mindir/UpsampleTrilinear3D_bprop.mindir +38 -0
- mindspore/ops/bprop_mindir/ZerosLike_bprop.mindir +13 -12
- mindspore/ops/bprop_mindir/__init__.py +1 -4
- mindspore/ops/bprop_mindir/generate_mindir.py +32 -20
- mindspore/ops/composite/__init__.py +12 -13
- mindspore/ops/composite/base.py +261 -254
- mindspore/ops/composite/env_ops.py +41 -0
- mindspore/ops/composite/math_ops.py +197 -156
- mindspore/ops/composite/multitype_ops/_compile_utils.py +428 -176
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +188 -87
- mindspore/ops/composite/multitype_ops/add_impl.py +23 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +3 -3
- mindspore/ops/composite/multitype_ops/equal_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +1 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +52 -5
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +31 -0
- mindspore/ops/composite/multitype_ops/greater_impl.py +31 -0
- mindspore/ops/composite/multitype_ops/in_impl.py +15 -3
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +33 -2
- mindspore/ops/composite/multitype_ops/less_impl.py +33 -0
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -2
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +1 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +21 -7
- mindspore/ops/composite/multitype_ops/not_in_impl.py +15 -3
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -4
- mindspore/ops/composite/multitype_ops/pow_impl.py +1 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +62 -70
- mindspore/ops/composite/multitype_ops/sub_impl.py +3 -3
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +41 -4
- mindspore/ops/function/__init__.py +323 -8
- mindspore/ops/function/array_func.py +3511 -780
- mindspore/ops/function/clip_func.py +329 -0
- mindspore/ops/function/debug_func.py +6 -6
- mindspore/ops/function/grad/__init__.py +5 -1
- mindspore/ops/function/grad/grad_func.py +736 -65
- mindspore/ops/function/image_func.py +270 -0
- mindspore/ops/function/linalg_func.py +268 -8
- mindspore/ops/function/math_func.py +8032 -3164
- mindspore/ops/function/nn_func.py +5619 -1855
- mindspore/ops/function/other_func.py +115 -0
- mindspore/ops/function/parameter_func.py +11 -10
- mindspore/ops/function/random_func.py +939 -77
- mindspore/ops/function/sparse_func.py +249 -84
- mindspore/ops/function/sparse_unary_func.py +2303 -0
- mindspore/ops/function/spectral_func.py +146 -0
- mindspore/ops/function/vmap_func.py +114 -0
- mindspore/ops/functional.py +182 -254
- mindspore/ops/op_info_register.py +79 -34
- mindspore/ops/operations/__init__.py +210 -118
- mindspore/ops/operations/_csr_ops.py +7 -7
- mindspore/ops/operations/_embedding_cache_ops.py +25 -15
- mindspore/ops/operations/_grad_ops.py +447 -322
- mindspore/ops/operations/_inner_ops.py +547 -176
- mindspore/ops/operations/_map_tensor_ops.py +112 -0
- mindspore/ops/operations/_ms_kernel.py +29 -27
- mindspore/ops/operations/_ocr_ops.py +11 -11
- mindspore/ops/operations/_opaque_predicate_registry.py +41 -0
- mindspore/ops/operations/_quant_ops.py +186 -101
- mindspore/ops/operations/_rl_inner_ops.py +122 -61
- mindspore/ops/operations/_scalar_ops.py +466 -0
- mindspore/ops/operations/_sequence_ops.py +1047 -0
- mindspore/ops/operations/_tensor_array.py +10 -11
- mindspore/ops/operations/_thor_ops.py +4 -4
- mindspore/ops/operations/array_ops.py +1428 -1226
- mindspore/ops/operations/comm_ops.py +180 -117
- mindspore/ops/operations/control_ops.py +4 -2
- mindspore/ops/operations/custom_ops.py +185 -98
- mindspore/ops/operations/debug_ops.py +92 -54
- mindspore/ops/operations/image_ops.py +406 -211
- mindspore/ops/operations/inner_ops.py +42 -53
- mindspore/ops/operations/linalg_ops.py +32 -29
- mindspore/ops/operations/math_ops.py +2076 -897
- mindspore/ops/operations/nn_ops.py +1282 -1252
- mindspore/ops/operations/other_ops.py +124 -278
- mindspore/ops/operations/random_ops.py +345 -178
- mindspore/ops/operations/rl_ops.py +8 -9
- mindspore/ops/operations/sparse_ops.py +502 -157
- mindspore/ops/operations/spectral_ops.py +107 -0
- mindspore/ops/primitive.py +192 -15
- mindspore/ops/vm_impl_registry.py +23 -2
- mindspore/parallel/__init__.py +6 -1
- mindspore/parallel/_auto_parallel_context.py +199 -92
- mindspore/parallel/_cell_wrapper.py +4 -2
- mindspore/parallel/_cost_model_context.py +3 -0
- mindspore/parallel/_dp_allreduce_fusion.py +2 -1
- mindspore/parallel/_offload_context.py +185 -0
- mindspore/parallel/_parallel_serialization.py +167 -28
- mindspore/parallel/_ps_context.py +9 -5
- mindspore/parallel/_recovery_context.py +1 -1
- mindspore/parallel/_tensor.py +9 -1
- mindspore/{nn/transformer → parallel/_transformer}/__init__.py +6 -6
- mindspore/{nn/transformer → parallel/_transformer}/layers.py +59 -37
- mindspore/{nn/transformer → parallel/_transformer}/loss.py +4 -7
- mindspore/{nn/transformer → parallel/_transformer}/moe.py +160 -35
- mindspore/{nn/transformer → parallel/_transformer}/op_parallel_config.py +3 -3
- mindspore/{nn/transformer → parallel/_transformer}/transformer.py +235 -196
- mindspore/parallel/_utils.py +47 -7
- mindspore/parallel/algo_parameter_config.py +5 -1
- mindspore/parallel/checkpoint_transform.py +329 -0
- mindspore/parallel/shard.py +229 -0
- mindspore/perf_msvcbuildinsights.dll +0 -0
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +2 -1
- mindspore/profiler/common/util.py +4 -3
- mindspore/profiler/common/validator/validate_path.py +2 -2
- mindspore/profiler/envprofiling.py +249 -0
- mindspore/profiler/parser/aicpu_data_parser.py +38 -39
- mindspore/profiler/parser/ascend_timeline_generator.py +497 -0
- mindspore/profiler/parser/base_timeline_generator.py +471 -0
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +684 -0
- mindspore/profiler/parser/framework_parser.py +42 -16
- mindspore/profiler/parser/hccl_parser.py +158 -158
- mindspore/profiler/parser/hwts_log_parser.py +7 -6
- mindspore/profiler/parser/integrator.py +18 -1579
- mindspore/profiler/parser/minddata_analyzer.py +8 -8
- mindspore/profiler/parser/msadvisor_analyzer.py +14 -27
- mindspore/profiler/parser/msadvisor_parser.py +2 -4
- mindspore/profiler/parser/optime_parser.py +17 -18
- mindspore/profiler/parser/profiler_info.py +108 -0
- mindspore/profiler/parser/step_trace_parser.py +1 -1
- mindspore/profiler/profiling.py +396 -194
- mindspore/rewrite/__init__.py +6 -2
- mindspore/rewrite/api/node.py +51 -110
- mindspore/rewrite/api/node_type.py +10 -6
- mindspore/rewrite/api/pattern_engine.py +51 -7
- mindspore/rewrite/api/scoped_value.py +64 -53
- mindspore/rewrite/api/symbol_tree.py +108 -61
- mindspore/rewrite/api/tree_node_helper.py +2 -3
- mindspore/{compression/quant/__init__.py → rewrite/ast_creator_register.py} +20 -11
- mindspore/rewrite/ast_helpers/__init__.py +6 -3
- mindspore/rewrite/ast_helpers/ast_creator.py +115 -0
- mindspore/rewrite/ast_helpers/ast_finder.py +99 -1
- mindspore/rewrite/ast_helpers/ast_modifier.py +17 -4
- mindspore/rewrite/ast_helpers/ast_replacer.py +1 -1
- mindspore/rewrite/ast_transformers/__init__.py +0 -1
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +46 -5
- mindspore/rewrite/ast_transformers/remove_return_out_of_if.py +6 -3
- mindspore/rewrite/common/__init__.py +2 -0
- mindspore/rewrite/common/event.py +1 -1
- mindspore/rewrite/common/observable.py +1 -1
- mindspore/rewrite/common/observer.py +1 -1
- mindspore/rewrite/common/rewrite_elog.py +35 -0
- mindspore/rewrite/namer.py +2 -2
- mindspore/rewrite/namespace.py +14 -4
- mindspore/rewrite/node.py +161 -13
- mindspore/rewrite/parser.py +0 -1
- mindspore/rewrite/parser_register.py +0 -1
- mindspore/rewrite/parsers/arguments_parser.py +3 -2
- mindspore/rewrite/parsers/assign_parser.py +267 -67
- mindspore/rewrite/parsers/attribute_parser.py +56 -0
- mindspore/rewrite/parsers/class_def_parser.py +191 -108
- mindspore/rewrite/parsers/constant_parser.py +101 -0
- mindspore/rewrite/parsers/container_parser.py +88 -0
- mindspore/rewrite/parsers/for_parser.py +28 -15
- mindspore/rewrite/parsers/function_def_parser.py +21 -5
- mindspore/rewrite/parsers/if_parser.py +11 -28
- mindspore/rewrite/parsers/module_parser.py +9 -6
- mindspore/rewrite/parsers/return_parser.py +3 -2
- mindspore/rewrite/sparsify/__init__.py +0 -0
- mindspore/rewrite/sparsify/sparse_transformer.py +448 -0
- mindspore/rewrite/sparsify/sparsify.py +109 -0
- mindspore/rewrite/sparsify/utils.py +173 -0
- mindspore/rewrite/symbol_tree.py +322 -109
- mindspore/rewrite/symbol_tree_builder.py +45 -8
- mindspore/rewrite/symbol_tree_dumper.py +0 -1
- mindspore/rewrite/topological_manager.py +1 -2
- mindspore/run_check/_check_version.py +209 -112
- mindspore/run_check/run_check.py +2 -1
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +6 -4
- mindspore/train/_utils.py +28 -5
- mindspore/train/amp.py +321 -50
- mindspore/train/callback/__init__.py +3 -1
- mindspore/train/callback/_backup_and_restore.py +120 -0
- mindspore/train/callback/_callback.py +8 -8
- mindspore/train/callback/_checkpoint.py +12 -9
- mindspore/train/callback/_early_stop.py +13 -7
- mindspore/train/callback/_history.py +8 -8
- mindspore/train/callback/_lambda_callback.py +6 -6
- mindspore/train/callback/_landscape.py +36 -38
- mindspore/train/callback/_loss_monitor.py +12 -6
- mindspore/train/callback/_lr_scheduler_callback.py +2 -4
- mindspore/train/callback/_on_request_exit.py +212 -0
- mindspore/train/callback/_reduce_lr_on_plateau.py +13 -7
- mindspore/train/callback/_summary_collector.py +27 -19
- mindspore/train/callback/_time_monitor.py +13 -7
- mindspore/train/checkpoint_pb2.py +68 -8
- mindspore/train/data_sink.py +122 -33
- mindspore/train/dataset_helper.py +28 -87
- mindspore/train/loss_scale_manager.py +4 -7
- mindspore/{nn → train}/metrics/__init__.py +20 -20
- mindspore/{nn → train}/metrics/accuracy.py +12 -10
- mindspore/{nn → train}/metrics/auc.py +4 -4
- mindspore/{nn → train}/metrics/bleu_score.py +4 -4
- mindspore/{nn → train}/metrics/confusion_matrix.py +10 -8
- mindspore/{nn → train}/metrics/cosine_similarity.py +4 -4
- mindspore/{nn → train}/metrics/dice.py +6 -5
- mindspore/{nn → train}/metrics/error.py +7 -5
- mindspore/{nn → train}/metrics/fbeta.py +9 -7
- mindspore/{nn → train}/metrics/hausdorff_distance.py +8 -6
- mindspore/{nn → train}/metrics/loss.py +4 -3
- mindspore/{nn → train}/metrics/mean_surface_distance.py +6 -5
- mindspore/{nn → train}/metrics/metric.py +6 -5
- mindspore/{nn → train}/metrics/occlusion_sensitivity.py +4 -3
- mindspore/{nn → train}/metrics/perplexity.py +5 -4
- mindspore/{nn → train}/metrics/precision.py +5 -4
- mindspore/{nn → train}/metrics/recall.py +5 -4
- mindspore/{nn → train}/metrics/roc.py +7 -6
- mindspore/{nn → train}/metrics/root_mean_square_surface_distance.py +6 -5
- mindspore/{nn → train}/metrics/topk.py +7 -5
- mindspore/train/mind_ir_pb2.py +339 -32
- mindspore/train/model.py +113 -84
- mindspore/train/serialization.py +547 -167
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/summary_record.py +43 -12
- mindspore/train/train_thor/convert_utils.py +7 -1
- mindspore/train/train_thor/dataset_helper.py +3 -3
- mindspore/train/train_thor/model_thor.py +0 -4
- mindspore/turbojpeg.dll +0 -0
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-1.10.0.dist-info → mindspore-2.0.0rc1.dist-info}/METADATA +4 -3
- {mindspore-1.10.0.dist-info → mindspore-2.0.0rc1.dist-info}/RECORD +901 -660
- mindspore/compression/common/constant.py +0 -124
- mindspore/compression/export/__init__.py +0 -19
- mindspore/compression/export/quant_export.py +0 -514
- mindspore/compression/quant/qat.py +0 -636
- mindspore/compression/quant/quant_utils.py +0 -462
- mindspore/compression/quant/quantizer.py +0 -68
- mindspore/libatomic-1.dll +0 -0
- mindspore/libgcc_s_seh-1.dll +0 -0
- mindspore/libgfortran-4.dll +0 -0
- mindspore/libgomp-1.dll +0 -0
- mindspore/libjpeg-62.dll +0 -0
- mindspore/libmindspore.dll +0 -0
- mindspore/libmindspore_common.dll +0 -0
- mindspore/libmindspore_core.dll +0 -0
- mindspore/libmindspore_glog.dll +0 -0
- mindspore/libnnacl.dll +0 -0
- mindspore/libopencv_core452.dll +0 -0
- mindspore/libopencv_imgcodecs452.dll +0 -0
- mindspore/libopencv_imgproc452.dll +0 -0
- mindspore/libquadmath-0.dll +0 -0
- mindspore/libsqlite3.dll +0 -0
- mindspore/libssp-0.dll +0 -0
- mindspore/libstdc++-6.dll +0 -0
- mindspore/libtinyxml2.dll +0 -0
- mindspore/libturbojpeg.dll +0 -0
- mindspore/libwinpthread-1.dll +0 -0
- mindspore/nn/layer/quant.py +0 -1868
- mindspore/nn/layer/rnn_utils.py +0 -90
- mindspore/nn/probability/dpn/__init__.py +0 -22
- mindspore/nn/probability/dpn/vae/__init__.py +0 -25
- mindspore/nn/probability/dpn/vae/cvae.py +0 -138
- mindspore/nn/probability/dpn/vae/vae.py +0 -122
- mindspore/nn/probability/infer/__init__.py +0 -22
- mindspore/nn/probability/infer/variational/elbo.py +0 -70
- mindspore/nn/probability/infer/variational/svi.py +0 -84
- mindspore/nn/probability/toolbox/__init__.py +0 -22
- mindspore/nn/probability/toolbox/anomaly_detection.py +0 -99
- mindspore/nn/probability/toolbox/uncertainty_evaluation.py +0 -363
- mindspore/nn/probability/transforms/__init__.py +0 -22
- mindspore/nn/probability/transforms/transform_bnn.py +0 -262
- mindspore/nn/probability/zhusuan/__init__.py +0 -18
- mindspore/nn/probability/zhusuan/framework/__init__.py +0 -18
- mindspore/nn/probability/zhusuan/framework/bn.py +0 -95
- mindspore/nn/probability/zhusuan/variational/__init__.py +0 -18
- mindspore/nn/probability/zhusuan/variational/elbo.py +0 -46
- mindspore/ops/_op_impl/tbe/bias_add_grad_ds.py +0 -52
- mindspore/ops/_op_impl/tbe/scatter_nd_add_ds.py +0 -43
- mindspore/ops/bprop_mindir/AssignAdd_bprop.mindir +0 -20
- mindspore/ops/bprop_mindir/Identity_bprop.mindir +0 -9
- mindspore/ops/bprop_mindir/LogicalOr_bprop.mindir +0 -20
- mindspore/ops/bprop_mindir/ReLU_bprop.mindir +0 -16
- mindspore/ops/bprop_mindir/UpdateState_bprop.mindir +0 -17
- mindspore/ops/bprop_mindir/stop_gradient_bprop.mindir +0 -12
- mindspore/ops/composite/array_ops.py +0 -210
- mindspore/ops/composite/clip_ops.py +0 -238
- mindspore/ops/composite/random_ops.py +0 -426
- mindspore/ops/composite/vmap_ops.py +0 -38
- mindspore/ops/operations/sponge_ops.py +0 -3531
- mindspore/ops/operations/sponge_update_ops.py +0 -2546
- mindspore/parallel/nn/__init__.py +0 -42
- mindspore/parallel/nn/loss.py +0 -22
- mindspore/parallel/nn/moe.py +0 -21
- mindspore/parallel/nn/op_parallel_config.py +0 -22
- mindspore/parallel/nn/transformer.py +0 -31
- mindspore/run_check/_check_deps_version.py +0 -84
- {mindspore-1.10.0.dist-info → mindspore-2.0.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-1.10.0.dist-info → mindspore-2.0.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-1.10.0.dist-info → mindspore-2.0.0rc1.dist-info}/top_level.txt +0 -0
mindspore/parallel/_utils.py
CHANGED
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Utils of auto parallel"""
|
|
16
|
-
from __future__ import absolute_import
|
|
17
16
|
from importlib import import_module
|
|
18
17
|
import numpy as np
|
|
19
18
|
import mindspore as ms
|
|
@@ -44,6 +43,20 @@ def _is_in_auto_parallel_mode():
|
|
|
44
43
|
return _get_parallel_mode() in [ms.ParallelMode.SEMI_AUTO_PARALLEL, ms.ParallelMode.AUTO_PARALLEL]
|
|
45
44
|
|
|
46
45
|
|
|
46
|
+
def _is_in_data_parallel_mode():
|
|
47
|
+
return _get_parallel_mode() == ms.ParallelMode.DATA_PARALLEL
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _is_in_hybrid_parallel_mode():
|
|
51
|
+
return _get_parallel_mode() == ms.ParallelMode.HYBRID_PARALLEL
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _is_pynative_parallel():
|
|
55
|
+
parallel_mode = context.get_auto_parallel_context('parallel_mode')
|
|
56
|
+
return context.get_context('mode') == context.PYNATIVE_MODE and parallel_mode in (
|
|
57
|
+
context.ParallelMode.SEMI_AUTO_PARALLEL, context.ParallelMode.AUTO_PARALLEL)
|
|
58
|
+
|
|
59
|
+
|
|
47
60
|
def _get_full_batch():
|
|
48
61
|
"""Get whether to use full_batch."""
|
|
49
62
|
return auto_parallel_context().get_full_batch()
|
|
@@ -79,16 +92,25 @@ def _need_to_full():
|
|
|
79
92
|
|
|
80
93
|
def _slice_parameter(parameter, phase, layout):
|
|
81
94
|
"""Slice python parameter obj according to the layout."""
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
else:
|
|
95
|
+
graph_executor = GraphExecutor_.get_instance()
|
|
96
|
+
new_param = parameter.init_data(layout, set_sliced=True)
|
|
97
|
+
parameter = new_param
|
|
98
|
+
graph_executor.updata_param_node_default_input(phase, {parameter.name: parameter})
|
|
99
|
+
if not parameter.sliced and (layout is not None):
|
|
88
100
|
new_tensor = _load_tensor_by_layout(parameter, layout)
|
|
89
101
|
parameter.set_data(new_tensor, True)
|
|
90
102
|
|
|
91
103
|
|
|
104
|
+
def _init_optimizer_state(parameter, phase):
|
|
105
|
+
"""init optimizer state"""
|
|
106
|
+
if not parameter.has_init:
|
|
107
|
+
return
|
|
108
|
+
graph_executor = GraphExecutor_.get_instance()
|
|
109
|
+
new_param = parameter.init_data()
|
|
110
|
+
parameter = new_param
|
|
111
|
+
graph_executor.updata_param_node_default_input(phase, {parameter.name: parameter})
|
|
112
|
+
|
|
113
|
+
|
|
92
114
|
def _to_full_shapes(shapes, device_num):
|
|
93
115
|
"""Expanding batch dimension according to device_num, adapt to mindspore minddata graph solution."""
|
|
94
116
|
new_shapes = []
|
|
@@ -381,3 +403,21 @@ def _infer_rank_list(train_map, predict_map=None):
|
|
|
381
403
|
else:
|
|
382
404
|
ret[param_name] = (rank_list, False)
|
|
383
405
|
return ret
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
def _grads_divided_by_device_num_if_recomputation(grads):
|
|
409
|
+
"""
|
|
410
|
+
If in pynative parallel and full_batch is True, divide grads by device num to ensure that the gradients is correct.
|
|
411
|
+
"""
|
|
412
|
+
if not grads or not _is_pynative_parallel() or not _get_full_batch():
|
|
413
|
+
return grads
|
|
414
|
+
|
|
415
|
+
device_num = Tensor(_get_device_num(), grads[0].dtype)
|
|
416
|
+
logger.info(f"In PyNative mode, when parallel mode is in "
|
|
417
|
+
f"({context.ParallelMode.SEMI_AUTO_PARALLEL}, {context.ParallelMode.AUTO_PARALLEL}) and "
|
|
418
|
+
f"full_batch is Ture, the gradients will be automatically divided by device_num({device_num}).")
|
|
419
|
+
new_grads = ()
|
|
420
|
+
for grad in grads:
|
|
421
|
+
new_grads += (grad / device_num,)
|
|
422
|
+
|
|
423
|
+
return new_grads
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
# ============================================================================
|
|
15
15
|
"""Configuration of parameters for strategy-searching algorithm in auto_parallel"""
|
|
16
16
|
from __future__ import absolute_import
|
|
17
|
+
from __future__ import division
|
|
18
|
+
|
|
17
19
|
import threading
|
|
18
20
|
|
|
19
21
|
from mindspore._c_expression import CostModelContext
|
|
@@ -21,6 +23,8 @@ from mindspore._checkparam import args_type_check
|
|
|
21
23
|
|
|
22
24
|
__all__ = ["get_algo_parameters", "reset_algo_parameters", "set_algo_parameters"]
|
|
23
25
|
|
|
26
|
+
_PARAMETER_CONFIG = None
|
|
27
|
+
|
|
24
28
|
|
|
25
29
|
class _AlgoParameterConfig:
|
|
26
30
|
"""
|
|
@@ -225,7 +229,7 @@ def set_algo_parameters(**kwargs):
|
|
|
225
229
|
"""
|
|
226
230
|
Set parameters in the algorithm for parallel strategy searching. See a typical use in
|
|
227
231
|
`test_auto_parallel_resnet.py
|
|
228
|
-
<https://gitee.com/mindspore/mindspore/blob/
|
|
232
|
+
<https://gitee.com/mindspore/mindspore/blob/r2.0/tests/ut/python/parallel/test_auto_parallel_resnet.py>`_.
|
|
229
233
|
|
|
230
234
|
Note:
|
|
231
235
|
The attribute name is required. This interface works ONLY in AUTO_PARALLEL mode.
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
# Copyright 2022 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
"""Transform distributed checkpoint"""
|
|
16
|
+
from __future__ import absolute_import
|
|
17
|
+
|
|
18
|
+
import os
|
|
19
|
+
import glob
|
|
20
|
+
import copy
|
|
21
|
+
from collections import defaultdict
|
|
22
|
+
import numpy as np
|
|
23
|
+
import mindspore as ms
|
|
24
|
+
from mindspore.parallel._parallel_serialization import _rank_list_for_transform_parallel_checkpoint, \
|
|
25
|
+
_transform_parallel_checkpoint, _get_device_num_from_strategy, _make_dir, \
|
|
26
|
+
_extract_layout_map, _extract_src_dst_layout_map, _parameter_not_in_local_stage, _extract_pipeline_stage_num, \
|
|
27
|
+
_merge_protobuf_strategy, _merge_json_strategy
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
__all__ = ["merge_pipeline_strategys", "rank_list_for_transform", "transform_checkpoint_by_rank",
|
|
31
|
+
"transform_checkpoints"]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def merge_pipeline_strategys(src_strategy_dirs, dst_strategy_file):
|
|
35
|
+
"""
|
|
36
|
+
Merge parallel strategy between all pipeline stages in pipeline parallel mode.
|
|
37
|
+
For more details about converting distributed Checkpoint, please refer to
|
|
38
|
+
`Distributed Resilience Training and
|
|
39
|
+
Inference <https://www.mindspore.cn/tutorials/experts/en/r2.0/parallel/resilience_train_and_predict.html>`_.
|
|
40
|
+
|
|
41
|
+
Note:
|
|
42
|
+
Strategy file of each pipeline stage should be included in src_strategy_dirs.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
src_strategy_dirs (str): The directory of strategy files including all pipeline stage which is saved by
|
|
46
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'
|
|
47
|
+
dst_strategy_file (str): The file merged strategy to save.
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
NotADirectoryError: `src_strategy_dirs` is not a directory.
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
>>> # src_strategy_dir/stra0.ckpt, src_strategy_dir/stra1.ckpt ... src_strategy_dir/stra127.ckpt
|
|
54
|
+
>>> merge_pipeline_strategys("./src_strategy_dir", "./dst_strategy.ckpt")
|
|
55
|
+
|
|
56
|
+
"""
|
|
57
|
+
dst_strategy_dir, _ = os.path.split(dst_strategy_file)
|
|
58
|
+
if not os.path.exists(dst_strategy_dir):
|
|
59
|
+
_make_dir(dst_strategy_dir, "path")
|
|
60
|
+
if not os.path.isdir(src_strategy_dirs):
|
|
61
|
+
raise NotADirectoryError("src_strategy_dirs {} is not a directory.".format(src_strategy_dirs))
|
|
62
|
+
src_strategy_files_protobuf = glob.glob(os.path.join(src_strategy_dirs, "*.ckpt"))
|
|
63
|
+
src_strategy_files_json = glob.glob(os.path.join(src_strategy_dirs, "*.json"))
|
|
64
|
+
if src_strategy_files_protobuf and src_strategy_files_json:
|
|
65
|
+
raise ValueError("The strategys format should be all '.ckpt' or all '.json'")
|
|
66
|
+
is_protobuf = len(src_strategy_files_protobuf) > 0
|
|
67
|
+
if is_protobuf:
|
|
68
|
+
_merge_protobuf_strategy(src_strategy_files_protobuf, dst_strategy_file)
|
|
69
|
+
else:
|
|
70
|
+
_merge_json_strategy(src_strategy_files_json, dst_strategy_file)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def rank_list_for_transform(rank_id, src_strategy_file=None, dst_strategy_file=None):
|
|
75
|
+
"""
|
|
76
|
+
List of original distributed checkpoint rank index for obtaining the target checkpoint of a rank_id
|
|
77
|
+
during the distributed checkpoint conversion. For more details about converting distributed Checkpoint,
|
|
78
|
+
please refer to `Distributed Resilience Training and
|
|
79
|
+
Inference <https://www.mindspore.cn/tutorials/experts/en/r2.0/parallel/resilience_train_and_predict.html>`_.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
rank_id (int): The rank of which distributed checkpoint needs to be obtained after conversion.
|
|
83
|
+
src_strategy_file (str): Name of source sharding strategy file which saved by
|
|
84
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
85
|
+
when the 'src_strategy_file' is None, it means that the source sharding strategy is
|
|
86
|
+
without any sharing for each parameter. Default:None.
|
|
87
|
+
dst_strategy_file (str): Name of destination sharding strategy file which saved by
|
|
88
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
89
|
+
when the 'dst_strategy_file' is None, it means that the destination sharding strategy
|
|
90
|
+
is without any sharing for each parameter. Default:None.
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
List, the rank list required for converting the distributed checkpoint of rank_id.
|
|
94
|
+
|
|
95
|
+
Raises:
|
|
96
|
+
ValueError: `src_strategy_file` or dst_strategy_file is incorrect.
|
|
97
|
+
TypeError: `src_strategy_file` or dst_strategy_file is not a string.
|
|
98
|
+
TypeError: `rank_id` is not a int.
|
|
99
|
+
|
|
100
|
+
Examples:
|
|
101
|
+
>>> rank_id = 0
|
|
102
|
+
>>> rank_list = rank_list_for_transform(rank_id, "./src_strategy.ckpt", "./dst_strategy.ckpt")
|
|
103
|
+
>>> checkpoint_files_map = {}
|
|
104
|
+
>>> for rank in rank_list:
|
|
105
|
+
... checkpoint_files_map[rank] = "./pangu{}-100_2.ckpt".format(rank)
|
|
106
|
+
|
|
107
|
+
"""
|
|
108
|
+
if not isinstance(rank_id, int):
|
|
109
|
+
raise TypeError("The rank_id should be a int.")
|
|
110
|
+
if src_strategy_file is None:
|
|
111
|
+
return [0]
|
|
112
|
+
src_strategy_list, dst_strategy_list = _extract_src_dst_layout_map(rank_id, src_strategy_file, dst_strategy_file)
|
|
113
|
+
src_stage_device_num = np.prod(src_strategy_list.get(list(src_strategy_list.keys())[0])[0]) if src_strategy_list \
|
|
114
|
+
is not None else 1
|
|
115
|
+
dst_stage_device_num = np.prod(dst_strategy_list.get(list(dst_strategy_list.keys())[0])[0]) if dst_strategy_list \
|
|
116
|
+
is not None else 1
|
|
117
|
+
|
|
118
|
+
if not src_strategy_list:
|
|
119
|
+
raise ValueError("The src_strategy_file is empty.")
|
|
120
|
+
local_rank_id = rank_id % dst_stage_device_num if dst_stage_device_num > 1 else rank_id
|
|
121
|
+
needed_rank_list_in_local_stage = _rank_list_for_transform_parallel_checkpoint(local_rank_id,
|
|
122
|
+
src_strategy_list, dst_strategy_list)
|
|
123
|
+
result_set = set()
|
|
124
|
+
handled_pipeline_stage = []
|
|
125
|
+
for _, layout in src_strategy_list.items():
|
|
126
|
+
for src_pipeline_stage_id in layout[6]:
|
|
127
|
+
if src_pipeline_stage_id in handled_pipeline_stage:
|
|
128
|
+
continue
|
|
129
|
+
src_rank_id_start = src_pipeline_stage_id * src_stage_device_num
|
|
130
|
+
result_set.update([src_rank_id_start + rank for rank in needed_rank_list_in_local_stage])
|
|
131
|
+
handled_pipeline_stage.append(src_pipeline_stage_id)
|
|
132
|
+
result_list = list(result_set)
|
|
133
|
+
result_list.sort(reverse=True)
|
|
134
|
+
return result_list
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def transform_checkpoint_by_rank(rank_id, checkpoint_files_map, save_checkpoint_file_name,
|
|
138
|
+
src_strategy_file=None, dst_strategy_file=None):
|
|
139
|
+
"""
|
|
140
|
+
Transform distributed checkpoint from source sharding strategy to destination sharding strategy by rank
|
|
141
|
+
for a network. For more details about converting distributed Checkpoint, please refer to
|
|
142
|
+
`Distributed Resilience Training and
|
|
143
|
+
Inference <https://www.mindspore.cn/tutorials/experts/en/r2.0/parallel/resilience_train_and_predict.html>`_.
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
rank_id (int): The rank of which distributed checkpoint needs to be obtained after conversion.
|
|
147
|
+
checkpoint_files_map (dict): The checkpoint files map whose key is the rank id and the value is
|
|
148
|
+
the checkpoint file name.
|
|
149
|
+
save_checkpoint_file_name (str): The file name to save the converted checkpoint.
|
|
150
|
+
src_strategy_file (str): Name of source sharding strategy file which saved by
|
|
151
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
152
|
+
when the 'src_strategy_file' is None, it means that the source sharding strategy is
|
|
153
|
+
without any sharing for each parameter. Default:None.
|
|
154
|
+
dst_strategy_file (str): Name of destination sharding strategy file which saved by
|
|
155
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
156
|
+
when the 'dst_strategy_file' is None, it means that the destination sharding strategy
|
|
157
|
+
is without any sharing for each parameter. Default:None.
|
|
158
|
+
|
|
159
|
+
Raises:
|
|
160
|
+
ValueError: `src_strategy_file` or `dst_strategy_file` is incorrect.
|
|
161
|
+
ValueError: item in `checkpoint_files_map` is incorrect.
|
|
162
|
+
ValueError: `save_checkpoint_file_name` is not end with ".ckpt".
|
|
163
|
+
TypeError: `checkpoint_files_map` is not a dict.
|
|
164
|
+
TypeError: `src_strategy_file` or `dst_strategy_file` is not a string.
|
|
165
|
+
TypeError: `rank_id` is not a int.
|
|
166
|
+
TypeError: `save_checkpoint_file_name` is not a string.
|
|
167
|
+
|
|
168
|
+
Examples:
|
|
169
|
+
>>> dst_device_num = 8
|
|
170
|
+
>>> for rank_id in range(dst_device_num):
|
|
171
|
+
... rank_list = rank_list_for_transform(rank_id, "./src_strategy.ckpt", "./dst_strategy.ckpt")
|
|
172
|
+
... checkpoint_files_map = {}
|
|
173
|
+
... for rank in rank_list:
|
|
174
|
+
... checkpoint_files_map[rank] = "./origin_checkpoint_rank{}/pangu{}-100_2.ckpt".format(rank)
|
|
175
|
+
... save_checkpoint_file_name = "./new_checkpoint_rank{}/pangu{}-100_2.ckpt".format(rank_id)
|
|
176
|
+
... transform_checkpoint_by_rank(rank_id, checkpoint_files_map, save_checkpoint_file_name,
|
|
177
|
+
... "./src_strategy.ckpt", "./dst_strategy.ckpt")
|
|
178
|
+
|
|
179
|
+
"""
|
|
180
|
+
if not isinstance(checkpoint_files_map, dict):
|
|
181
|
+
raise TypeError("The checkpoint_files_map should be a dict.")
|
|
182
|
+
if not isinstance(rank_id, int):
|
|
183
|
+
raise TypeError("The rank_id should be a int.")
|
|
184
|
+
if not isinstance(save_checkpoint_file_name, str):
|
|
185
|
+
raise TypeError("The save_checkpoint_file_name should be a str.")
|
|
186
|
+
if save_checkpoint_file_name[-5:] != ".ckpt":
|
|
187
|
+
raise ValueError("The save_checkpoint_file_name {} should end with .ckpt".format(save_checkpoint_file_name))
|
|
188
|
+
if dst_strategy_file and os.path.dirname(dst_strategy_file) and not os.path.exists(
|
|
189
|
+
os.path.dirname(dst_strategy_file)):
|
|
190
|
+
raise ValueError("The director of dst_strategy_file: {} is not exists.".
|
|
191
|
+
format(os.path.dirname(dst_strategy_file)))
|
|
192
|
+
for rank, local_file in checkpoint_files_map.items():
|
|
193
|
+
if not os.path.exists(local_file):
|
|
194
|
+
raise ValueError("Checkpoint file {} in rank {} not exits: ".format(local_file, rank))
|
|
195
|
+
param_total_dict = defaultdict(dict)
|
|
196
|
+
param_attr_dict = defaultdict(dict)
|
|
197
|
+
src_strategy_list, dst_strategy_list = _extract_src_dst_layout_map(rank_id, src_strategy_file, dst_strategy_file)
|
|
198
|
+
# src rank => local rank inside pipeline stage
|
|
199
|
+
src_stage_device_num = np.prod(src_strategy_list.get(list(src_strategy_list.keys())[0])[0]) if src_strategy_list \
|
|
200
|
+
is not None else 1
|
|
201
|
+
dst_stage_device_num = np.prod(dst_strategy_list.get(list(dst_strategy_list.keys())[0])[0]) if dst_strategy_list \
|
|
202
|
+
is not None else 1
|
|
203
|
+
origin_dst_strategy_list = _extract_layout_map(dst_strategy_file)
|
|
204
|
+
origin_src_strategy_list = _extract_layout_map(src_strategy_file)
|
|
205
|
+
for rank, file_name in checkpoint_files_map.items():
|
|
206
|
+
ckpt_dict = ms.load_checkpoint(file_name)
|
|
207
|
+
for param_name, param in ckpt_dict.items():
|
|
208
|
+
# cut the parameter not in the pipeline stage.
|
|
209
|
+
if _parameter_not_in_local_stage(param_name, origin_src_strategy_list, src_strategy_list) \
|
|
210
|
+
and _parameter_not_in_local_stage(param_name, origin_dst_strategy_list, dst_strategy_list):
|
|
211
|
+
continue
|
|
212
|
+
src_rank = rank % src_stage_device_num
|
|
213
|
+
param_total_dict[param_name][src_rank] = param.data.asnumpy()
|
|
214
|
+
param_attr_dict[param_name][src_rank] = (param.requires_grad, param.layerwise_parallel)
|
|
215
|
+
local_rank_id = rank_id % dst_stage_device_num
|
|
216
|
+
transform_param_list = _transform_parallel_checkpoint(local_rank_id, param_total_dict,
|
|
217
|
+
param_attr_dict, src_strategy_list, dst_strategy_list)
|
|
218
|
+
ms.save_checkpoint(transform_param_list, save_checkpoint_file_name)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
def transform_checkpoints(src_checkpoints_dir, dst_checkpoints_dir, ckpt_prefix, src_strategy_file=None,
|
|
222
|
+
dst_strategy_file=None):
|
|
223
|
+
"""
|
|
224
|
+
Transform distributed checkpoint from source sharding strategy to destination sharding strategy for a rank.
|
|
225
|
+
For more details about converting distributed Checkpoint, please refer to
|
|
226
|
+
`Distributed Resilience Training and
|
|
227
|
+
Inference <https://www.mindspore.cn/tutorials/experts/en/r2.0/parallel/resilience_train_and_predict.html>`_.
|
|
228
|
+
|
|
229
|
+
Note:
|
|
230
|
+
The `src_checkpoints_dir` directory structure should be organized like "src_checkpoints_dir/rank_0/a.ckpt", the
|
|
231
|
+
rank number should be set to a subdirectory and the checkpoint file is stored in this subdirectory. If multiple
|
|
232
|
+
files exist in a rank directory, the last file in the lexicgraphic order would be selected.
|
|
233
|
+
|
|
234
|
+
Args:
|
|
235
|
+
src_checkpoints_dir (str): The source checkpoints directory.
|
|
236
|
+
dst_checkpoints_dir (str): The destination checkpoints directory to save the converted checkpoints.
|
|
237
|
+
ckpt_prefix (str): The destination checkpoint name prefix.
|
|
238
|
+
src_strategy_file (str): Name of source sharding strategy file which saved by
|
|
239
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
240
|
+
when the 'src_strategy_file' is None, it means that the source sharding strategy is
|
|
241
|
+
without any sharing for each parameter. Default:None.
|
|
242
|
+
dst_strategy_file (str): Name of destination sharding strategy file which saved by
|
|
243
|
+
'mindspore.set_auto_parallel_context(strategy_ckpt_save_file)'.
|
|
244
|
+
when the 'dst_strategy_file' is None, it means that the destination sharding strategy
|
|
245
|
+
is without any sharing for each parameter. Default:None.
|
|
246
|
+
|
|
247
|
+
Raises:
|
|
248
|
+
ValueError: `src_strategy_file` or `dst_strategy_file` is incorrect.
|
|
249
|
+
NotADirectoryError: `src_checkpoints_dir` or `dst_checkpoints_dir` is not a directory.
|
|
250
|
+
ValueError: The checkpoint file is missing in `src_checkpoints_dir`.
|
|
251
|
+
TypeError: `src_strategy_file` or `dst_strategy_file` is not a string.
|
|
252
|
+
|
|
253
|
+
Examples:
|
|
254
|
+
>>> transform_checkpoints(src_checkpoints_dir, dst_checkpoints_dir, "dst_checkpoint",
|
|
255
|
+
... "./src_strategy.ckpt", "./dst_strategy.ckpt")
|
|
256
|
+
|
|
257
|
+
"""
|
|
258
|
+
if not os.path.isdir(src_checkpoints_dir):
|
|
259
|
+
raise NotADirectoryError("src_checkpoints_dir {} is not a directory.".format(src_checkpoints_dir))
|
|
260
|
+
_make_dir(dst_checkpoints_dir, "path")
|
|
261
|
+
if not isinstance(ckpt_prefix, str):
|
|
262
|
+
raise TypeError("The ckpt_prefix should be a str.")
|
|
263
|
+
checkpoints_rank_dir_list = os.path.join(src_checkpoints_dir, "rank_[0-9]*")
|
|
264
|
+
all_checkpoint_files_map = {}
|
|
265
|
+
for checkpoint_dir in glob.glob(checkpoints_rank_dir_list):
|
|
266
|
+
if not os.path.isdir(checkpoint_dir):
|
|
267
|
+
ms.log.warning("{} is not a directory.".format(checkpoint_dir))
|
|
268
|
+
continue
|
|
269
|
+
rank_id_str = checkpoint_dir.split('rank_')[-1]
|
|
270
|
+
if not rank_id_str.isdigit():
|
|
271
|
+
ms.log.warning("{} is not a expected directory, the directory should end with rank_0/rank_1.....".
|
|
272
|
+
format(checkpoint_dir))
|
|
273
|
+
continue
|
|
274
|
+
rank_id = int(rank_id_str)
|
|
275
|
+
checkpoint_file_name = os.path.join(checkpoint_dir, "*.ckpt")
|
|
276
|
+
rank_ckpts = glob.glob(checkpoint_file_name)
|
|
277
|
+
rank_ckpts.sort()
|
|
278
|
+
for checkpoint_file in rank_ckpts:
|
|
279
|
+
if not os.path.isfile(checkpoint_file):
|
|
280
|
+
ms.log.warning("{} is not a checkpoint file.".format(checkpoint_file))
|
|
281
|
+
continue
|
|
282
|
+
all_checkpoint_files_map[rank_id] = checkpoint_file
|
|
283
|
+
|
|
284
|
+
needed_rank_list_map = defaultdict(list)
|
|
285
|
+
dst_stage_device_num = _get_device_num_from_strategy(dst_strategy_file)
|
|
286
|
+
src_stage_device_num = _get_device_num_from_strategy(src_strategy_file)
|
|
287
|
+
dst_stage_num = _extract_pipeline_stage_num(dst_strategy_file)
|
|
288
|
+
dst_device_num = dst_stage_device_num * dst_stage_num
|
|
289
|
+
origin_src_strategy_list = _extract_layout_map(src_strategy_file)
|
|
290
|
+
origin_dst_strategy_list = _extract_layout_map(dst_strategy_file)
|
|
291
|
+
for rank in range(dst_device_num):
|
|
292
|
+
needed_rank_list = rank_list_for_transform(rank, src_strategy_file, dst_strategy_file)
|
|
293
|
+
for needed_rank in needed_rank_list:
|
|
294
|
+
if needed_rank not in all_checkpoint_files_map:
|
|
295
|
+
raise ValueError("The checkpoint file of rank{} is needed for converting rank{}'s checkpoint, "
|
|
296
|
+
"but it is missing.".format(needed_rank, rank))
|
|
297
|
+
needed_rank_list_key = "-".join([str(r) for r in needed_rank_list])
|
|
298
|
+
needed_rank_list_map[needed_rank_list_key].append(rank)
|
|
299
|
+
for needed_rank_list_key, transform_rank_list in needed_rank_list_map.items():
|
|
300
|
+
param_total_dict = defaultdict(dict)
|
|
301
|
+
param_attr_dict = defaultdict(dict)
|
|
302
|
+
needed_rank_list = needed_rank_list_key.split("-")
|
|
303
|
+
for needed_rank in needed_rank_list:
|
|
304
|
+
ckpt_dict = ms.load_checkpoint(all_checkpoint_files_map.get(int(needed_rank)))
|
|
305
|
+
for param_name, param in ckpt_dict.items():
|
|
306
|
+
src_rank = int(needed_rank) % src_stage_device_num
|
|
307
|
+
param_total_dict[param_name][src_rank] = param.data.asnumpy()
|
|
308
|
+
param_attr_dict[param_name][src_rank] = (param.requires_grad, param.layerwise_parallel)
|
|
309
|
+
for transform_rank in transform_rank_list:
|
|
310
|
+
param_total_dict_copy = copy.deepcopy(param_total_dict)
|
|
311
|
+
src_strategy_list, dst_strategy_list = _extract_src_dst_layout_map(transform_rank, src_strategy_file,
|
|
312
|
+
dst_strategy_file)
|
|
313
|
+
# cut the parameter not in the pipeline stage.
|
|
314
|
+
for param in list(param_total_dict_copy.keys()):
|
|
315
|
+
if _parameter_not_in_local_stage(param, origin_src_strategy_list, src_strategy_list) \
|
|
316
|
+
and _parameter_not_in_local_stage(param, origin_dst_strategy_list, dst_strategy_list):
|
|
317
|
+
param_total_dict_copy.pop(param)
|
|
318
|
+
|
|
319
|
+
local_rank_id = transform_rank % dst_stage_device_num
|
|
320
|
+
transform_param_list = _transform_parallel_checkpoint(local_rank_id, param_total_dict_copy,
|
|
321
|
+
param_attr_dict, src_strategy_list, dst_strategy_list)
|
|
322
|
+
save_checkpoint_file = "{}{}.ckpt".format(ckpt_prefix, transform_rank)
|
|
323
|
+
save_checkpoint_file_dir = os.path.join(dst_checkpoints_dir, "rank_{}".format(transform_rank))
|
|
324
|
+
if not os.path.exists(save_checkpoint_file_dir):
|
|
325
|
+
_make_dir(save_checkpoint_file_dir, "path")
|
|
326
|
+
save_checkpoint_file_name = os.path.join(save_checkpoint_file_dir, save_checkpoint_file)
|
|
327
|
+
ms.save_checkpoint(transform_param_list, save_checkpoint_file_name)
|
|
328
|
+
del param_total_dict_copy
|
|
329
|
+
del param_total_dict
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Copyright 2022 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
"""pynative shard"""
|
|
16
|
+
|
|
17
|
+
import mindspore as ms
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
from mindspore._c_expression import Shard_
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class Shard(Shard_):
|
|
23
|
+
"""Shard operation"""
|
|
24
|
+
|
|
25
|
+
def __init__(self):
|
|
26
|
+
"""Initialize Shard."""
|
|
27
|
+
Shard_.__init__(self, 'Shard')
|
|
28
|
+
self.shard_fn = None
|
|
29
|
+
self.fn = None
|
|
30
|
+
self.in_strategy = None
|
|
31
|
+
self.out_strategy = None
|
|
32
|
+
self.parameter_plan = None
|
|
33
|
+
self.device = None
|
|
34
|
+
self.level = None
|
|
35
|
+
|
|
36
|
+
def __call__(self, fn, in_strategy, out_strategy=None, parameter_plan=None, device="Ascend", level=0):
|
|
37
|
+
if ms.context.get_context("mode") != ms.context.PYNATIVE_MODE or \
|
|
38
|
+
ms.context.get_auto_parallel_context("parallel_mode") not in ["auto_parallel"]:
|
|
39
|
+
raise AssertionError(f"Cell shard only supports auto parallel under PyNative mode.")
|
|
40
|
+
if ms.context.get_context("device_target") not in ["Ascend", "GPU"]:
|
|
41
|
+
raise AssertionError(f"'Shard' now only supports 'Ascend' and 'GPU'")
|
|
42
|
+
if ms.context.get_auto_parallel_context("search_mode") != "sharding_propagation":
|
|
43
|
+
raise AssertionError(f"'search_mode' must be 'sharding_propagation' for 'Shard'")
|
|
44
|
+
if not isinstance(in_strategy, tuple):
|
|
45
|
+
raise TypeError(f"For 'Shard', the 'in_strategy' should be a tuple, but got {type(in_strategy).__name__}")
|
|
46
|
+
if not isinstance(out_strategy, (type(None), tuple)):
|
|
47
|
+
raise TypeError(f"For 'Shard', the 'out_strategy' should be None or tuple, "
|
|
48
|
+
f"but got {type(out_strategy).__name__}")
|
|
49
|
+
|
|
50
|
+
if not isinstance(device, str):
|
|
51
|
+
raise TypeError(f"For 'Shard', the 'device' should be a string, "
|
|
52
|
+
f"but got {type(device).__name__}")
|
|
53
|
+
if not isinstance(level, int):
|
|
54
|
+
raise TypeError(f"For 'Shard', the 'level' should be an integer, "
|
|
55
|
+
f"but got {type(level).__name__}")
|
|
56
|
+
|
|
57
|
+
if ms.get_algo_parameters("fully_use_devices") is True:
|
|
58
|
+
logger.warning("After calling 'shard', the environment variable 'fully_use_devices' "
|
|
59
|
+
"will be overwritten as False.")
|
|
60
|
+
ms.set_algo_parameters(fully_use_devices=False)
|
|
61
|
+
|
|
62
|
+
if ms.context.get_auto_parallel_context("full_batch_is_set") is False:
|
|
63
|
+
logger.warning("When calling the shard interface, "
|
|
64
|
+
"'dataset_strategy' or 'full_batch' is not manually set by the user, "
|
|
65
|
+
"and the 'dataset_strategy' will be set to 'full_batch'.")
|
|
66
|
+
ms.context.set_auto_parallel_context(dataset_strategy="full_batch")
|
|
67
|
+
|
|
68
|
+
if self._is_attrs_has_been_set(fn, in_strategy, out_strategy, device, level):
|
|
69
|
+
return self.shard_fn
|
|
70
|
+
shard_ = Shard()
|
|
71
|
+
|
|
72
|
+
if isinstance(fn, ms.nn.Cell):
|
|
73
|
+
for param in fn.trainable_params():
|
|
74
|
+
param.is_in_shard = True
|
|
75
|
+
|
|
76
|
+
# Set parameter layout to corresponding parameter
|
|
77
|
+
self._set_param_layout_into_parameter(fn, parameter_plan)
|
|
78
|
+
|
|
79
|
+
def shard_fn(*args):
|
|
80
|
+
@ms.common.jit(hash_args=fn)
|
|
81
|
+
def after_shard(*args):
|
|
82
|
+
return shard_(fn, in_strategy, out_strategy, device, level)(*args)
|
|
83
|
+
|
|
84
|
+
return after_shard(*args)
|
|
85
|
+
|
|
86
|
+
self.shard_fn = shard_fn
|
|
87
|
+
self.fn = fn
|
|
88
|
+
self.in_strategy = in_strategy
|
|
89
|
+
self.out_strategy = out_strategy
|
|
90
|
+
self.device = device
|
|
91
|
+
self.level = level
|
|
92
|
+
return self.shard_fn
|
|
93
|
+
|
|
94
|
+
@staticmethod
|
|
95
|
+
def _search_parameter_by_name(param_name: str, net):
|
|
96
|
+
param_name = param_name.replace("self.", "")
|
|
97
|
+
for param in net.trainable_params():
|
|
98
|
+
if param.name == param_name:
|
|
99
|
+
return param
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
@staticmethod
|
|
103
|
+
def _check_layout_is_valid(param_name, param_shape, param_strategy):
|
|
104
|
+
if len(param_strategy) != len(param_shape):
|
|
105
|
+
raise ValueError(f"For {param_name}, the length of param_strategy: {len(param_strategy)}, "
|
|
106
|
+
f"is not equal to param_shape len: {len(param_shape)}.")
|
|
107
|
+
for i, _ in enumerate(param_strategy):
|
|
108
|
+
if param_shape[i] % param_strategy[i] != 0:
|
|
109
|
+
raise ValueError(f"For '{param_name}', the param_shape is {param_shape} and "
|
|
110
|
+
f"the setting param_strategy is {param_strategy}. "
|
|
111
|
+
f"The param_shape[{i}]: {param_shape[i]} cannot be divisible by "
|
|
112
|
+
f"param_strategy[{i}]: {param_strategy[i]}.")
|
|
113
|
+
|
|
114
|
+
def _set_param_layout_into_parameter(self, fn, parameter_plan):
|
|
115
|
+
""" Set param_strategy into parameter if fn is a Cell and parameter_plan is a dict."""
|
|
116
|
+
if parameter_plan is None:
|
|
117
|
+
return
|
|
118
|
+
if isinstance(parameter_plan, dict):
|
|
119
|
+
if not isinstance(fn, ms.nn.Cell):
|
|
120
|
+
raise TypeError(f"If parameter_plan is set, type of fn must be mindspore.nn.Cell, but got {type(fn)}")
|
|
121
|
+
for k in parameter_plan.keys():
|
|
122
|
+
v = parameter_plan[k]
|
|
123
|
+
if not isinstance(k, str) or not isinstance(v, tuple):
|
|
124
|
+
raise TypeError(f"For 'Shard', the type of each key and value in 'parameter_plan' must be str and "
|
|
125
|
+
f"tuple, but got {type(k).__name__} and {type(v).__name__}")
|
|
126
|
+
else:
|
|
127
|
+
raise TypeError(f"For 'Shard', the 'parameter_plan' should be a dict or None, "
|
|
128
|
+
f"but got {type(parameter_plan).__name__}")
|
|
129
|
+
|
|
130
|
+
for param_name in parameter_plan.keys():
|
|
131
|
+
param_strategy = parameter_plan[param_name]
|
|
132
|
+
param = self._search_parameter_by_name(param_name, fn)
|
|
133
|
+
if param is None:
|
|
134
|
+
logger.warning(f"{param_name} is not exist, ignored its setting.")
|
|
135
|
+
continue
|
|
136
|
+
|
|
137
|
+
self._check_layout_is_valid(param_name, param.shape, param_strategy)
|
|
138
|
+
if param.param_info.param_strategy:
|
|
139
|
+
logger.warning(f"The layout of parameter '{param_name}' "
|
|
140
|
+
f"has been set to {param.param_info.param_strategy}, "
|
|
141
|
+
f"current setting {param_strategy} will be ignored.")
|
|
142
|
+
param.param_info.param_strategy = param_strategy
|
|
143
|
+
|
|
144
|
+
def _is_attrs_has_been_set(self, fn, in_strategy, out_strategy, device, level):
|
|
145
|
+
return self.shard_fn is not None and self.fn == fn and self.in_strategy == in_strategy and \
|
|
146
|
+
self.out_strategy == out_strategy and self.device == device and self.level == level
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
def shard(fn, in_strategy, out_strategy=None, parameter_plan=None, device="Ascend", level=0):
|
|
150
|
+
"""
|
|
151
|
+
Defining the input and output layouts of this cell and the parallel strategies of remaining ops will be
|
|
152
|
+
generated by sharding propagation. In PyNative mode, use this method
|
|
153
|
+
to specify a Cell for distributed execution in graph mode.
|
|
154
|
+
in_strategy and out_strategy define the input and output layout respectively.
|
|
155
|
+
in_strategy/out_strategy should be a tuple, each element of which corresponds to the desired layout of
|
|
156
|
+
this input/output, and None represents data_parallel,
|
|
157
|
+
which can refer to the description of :func:`mindspore.ops.Primitive.shard`.
|
|
158
|
+
The parallel strategies of remaining operators are derived from the strategy specified by the input and output.
|
|
159
|
+
|
|
160
|
+
Note:
|
|
161
|
+
You need to set the execution mode to PyNative mode,
|
|
162
|
+
set the parallel mode in `set_auto_parallel_context` to "auto_parallel"
|
|
163
|
+
and the search mode to "sharding_propagation".
|
|
164
|
+
If the input contain Parameter, its strategy should be set in `in_strategy`.
|
|
165
|
+
For more details about shard, please refer to `Functional Operator Sharding
|
|
166
|
+
<https://www.mindspore.cn/tutorials/experts/en/r2.0/parallel/pynative_shard_function_parallel.html>`_.
|
|
167
|
+
|
|
168
|
+
Args:
|
|
169
|
+
fn (Union[Cell, Function]): Function to be executed in parallel.
|
|
170
|
+
Its arguments and return value must be Tensor or Parameter.
|
|
171
|
+
If `fn` is a Cell with parameters, `fn` needs to be an instantiated object,
|
|
172
|
+
otherwise its arguments cannot be accessed.
|
|
173
|
+
in_strategy (tuple): Define the layout of inputs, each element of the tuple should be a tuple or None.
|
|
174
|
+
Tuple defines the layout of the corresponding input
|
|
175
|
+
and None represents a data parallel strategy.
|
|
176
|
+
out_strategy (Union[tuple, None]): Define the layout of outputs similar with `in_strategy`.
|
|
177
|
+
It is not in use right now. Default: None.
|
|
178
|
+
parameter_plan (Union[dict, None]): Define the layout for the specified parameters. Each element in dict
|
|
179
|
+
defines the layout of the parameter like "param_name: layout".
|
|
180
|
+
The key is a parameter name of type 'str'.
|
|
181
|
+
The value is a 1-D integer tuple, indicating the corresponding layout.
|
|
182
|
+
If the parameter name is incorrect or the corresponding parameter
|
|
183
|
+
has been set, the parameter setting will be ignored.
|
|
184
|
+
Default: None.
|
|
185
|
+
device (string): Select a certain `device` target. It is not in use right now.
|
|
186
|
+
Support ["CPU", "GPU", "Ascend"]. Default: "Ascend".
|
|
187
|
+
level (int): Option for parallel strategy infer algorithm, namely the object function, maximize computation
|
|
188
|
+
over communication ratio, maximize speed performance, minimize memory usage etc. It is not in
|
|
189
|
+
use right now. Support ["0", "1", "2"]. Default: "0".
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
Function, return the function that will be executed under auto parallel process.
|
|
193
|
+
|
|
194
|
+
Raises:
|
|
195
|
+
AssertionError: If execute mode is not PYNATIVE_MODE.
|
|
196
|
+
AssertionError: If parallel mode is not "auto_parallel".
|
|
197
|
+
AssertionError: If search_mode it not "sharding_propagation".
|
|
198
|
+
AssertionError: If device_target it not "Ascend" or "GPU".
|
|
199
|
+
TypeError: If `in_strategy` is not a tuple.
|
|
200
|
+
TypeError: If `out_strategy` is not a tuple or None.
|
|
201
|
+
TypeError: If `parameter_plan` is not a dict or None.
|
|
202
|
+
TypeError: If any key in `parameter_plan` is not a str.
|
|
203
|
+
TypeError: If any value in `parameter_plan` is not a tuple.
|
|
204
|
+
TypeError: If `device` is not a str.
|
|
205
|
+
TypeError: If `level` is not an integer.
|
|
206
|
+
|
|
207
|
+
Supported Platforms:
|
|
208
|
+
``Ascend`` ``GPU``
|
|
209
|
+
|
|
210
|
+
Examples:
|
|
211
|
+
>>> import numpy as np
|
|
212
|
+
>>> from mindspore import Tensor, set_context, set_auto_parallel_context, shard, PYNATIVE_MODE
|
|
213
|
+
>>> from mindspore.communication import init
|
|
214
|
+
>>> set_context(mode=PYNATIVE_MODE)
|
|
215
|
+
>>> init()
|
|
216
|
+
>>> set_auto_parallel_context(parallel_mode="auto_parallel", search_mode="sharding_propagation",
|
|
217
|
+
... device_num=2)
|
|
218
|
+
>>> def test_shard(x, y):
|
|
219
|
+
... return x + y
|
|
220
|
+
>>> x = Tensor(np.ones(shape=(32, 10)))
|
|
221
|
+
>>> y = Tensor(np.ones(shape=(32, 10)))
|
|
222
|
+
>>> output = shard(test_shard, in_strategy=((2, 1), (2, 1)))(x, y)
|
|
223
|
+
>>> print(output.shape)
|
|
224
|
+
(32, 10)
|
|
225
|
+
"""
|
|
226
|
+
if not isinstance(fn, (ms.nn.Cell)):
|
|
227
|
+
logger.warning("'fn' is not a mindspore.nn.Cell, and its definition cannot involve Parameter; "
|
|
228
|
+
"otherwise, the result may be incorrect.")
|
|
229
|
+
return Shard()(fn, in_strategy, out_strategy, parameter_plan, device, level)
|