mindspore 2.0.0a0__cp37-none-any.whl → 2.0.0rc1__cp37-none-any.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/Third_Party_Open_Source_Software_Notice +9064 -0
- mindspore/__init__.py +4 -2
- mindspore/_akg/akg/composite/build_module.py +11 -0
- mindspore/_akg/akg/config/repository_cuda.json +11 -0
- mindspore/_akg/akg/tvm/contrib/nvcc.py +4 -3
- mindspore/_c_dataengine.cpython-37m-aarch64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-37m-aarch64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-37m-aarch64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +102 -0
- mindspore/_checkparam.py +1066 -1001
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +4 -3
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +50 -48
- mindspore/_extends/parallel_compile/akg_compiler/util.py +9 -4
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +4 -4
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +9 -4
- mindspore/_extends/parse/__init__.py +5 -3
- mindspore/_extends/parse/namespace.py +16 -1
- mindspore/_extends/parse/parser.py +107 -22
- mindspore/_extends/parse/resources.py +0 -7
- mindspore/_extends/parse/standard_method.py +885 -413
- mindspore/_mindspore_offline_debug.cpython-37m-aarch64-linux-gnu.so +0 -0
- mindspore/amp.py +52 -57
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +2 -2
- mindspore/boost/boost_cell_wrapper.py +38 -20
- mindspore/boost/dim_reduce.py +3 -3
- mindspore/boost/group_loss_scale_manager.py +1 -1
- mindspore/common/__init__.py +4 -6
- 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 +41 -7
- mindspore/common/api.py +215 -141
- mindspore/common/dtype.py +8 -1
- mindspore/common/dump.py +2 -2
- mindspore/common/initializer.py +4 -2
- mindspore/common/jit_config.py +17 -13
- mindspore/common/mutable.py +33 -13
- mindspore/common/parameter.py +23 -21
- mindspore/common/seed.py +8 -24
- mindspore/common/sparse_tensor.py +62 -41
- mindspore/common/tensor.py +852 -1154
- mindspore/communication/__init__.py +2 -2
- mindspore/communication/_comm_helper.py +11 -4
- mindspore/communication/management.py +22 -21
- mindspore/config/op_info.config +501 -1008
- mindspore/config/super_bar_config.json +512 -0
- mindspore/context.py +201 -23
- mindspore/dataset/__init__.py +6 -6
- mindspore/dataset/audio/__init__.py +7 -7
- mindspore/dataset/audio/transforms.py +670 -30
- mindspore/dataset/audio/utils.py +47 -4
- mindspore/dataset/audio/validators.py +223 -1
- mindspore/dataset/callback/ds_callback.py +2 -2
- mindspore/dataset/core/config.py +210 -14
- mindspore/dataset/core/validator_helpers.py +2 -2
- 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 +1 -1
- mindspore/dataset/engine/datasets.py +322 -66
- mindspore/dataset/engine/datasets_audio.py +80 -76
- mindspore/dataset/engine/datasets_standard_format.py +51 -38
- mindspore/dataset/engine/datasets_text.py +232 -118
- mindspore/dataset/engine/datasets_user_defined.py +41 -17
- mindspore/dataset/engine/datasets_vision.py +746 -225
- mindspore/dataset/engine/graphdata.py +75 -10
- mindspore/dataset/engine/iterators.py +45 -5
- mindspore/dataset/engine/offload.py +48 -28
- mindspore/dataset/engine/validators.py +117 -8
- mindspore/dataset/text/__init__.py +6 -5
- mindspore/dataset/text/transforms.py +86 -3
- mindspore/dataset/text/utils.py +6 -4
- mindspore/dataset/text/validators.py +25 -0
- mindspore/dataset/transforms/__init__.py +3 -2
- mindspore/dataset/transforms/c_transforms.py +1 -1
- mindspore/dataset/transforms/transforms.py +2 -2
- mindspore/dataset/utils/__init__.py +2 -1
- mindspore/dataset/utils/line_reader.py +121 -0
- mindspore/dataset/vision/__init__.py +2 -3
- mindspore/dataset/vision/c_transforms.py +9 -9
- mindspore/dataset/vision/py_transforms.py +5 -5
- mindspore/dataset/vision/py_transforms_util.py +2 -0
- mindspore/dataset/vision/transforms.py +160 -161
- mindspore/dataset/vision/utils.py +3 -3
- mindspore/experimental/map_parameter.py +38 -26
- 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 +44 -9
- mindspore/include/api/delegate.h +1 -1
- 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_parallel_runner.h +2 -2
- mindspore/include/api/net.h +12 -11
- mindspore/include/api/serialization.h +19 -3
- mindspore/include/api/types.h +3 -3
- mindspore/include/dataset/constants.h +7 -0
- mindspore/include/dataset/text.h +59 -0
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libicudata.so.69 +0 -0
- mindspore/lib/libicui18n.so.69 +0 -0
- mindspore/lib/libicuuc.so.69 +0 -0
- mindspore/lib/libmindspore.so +0 -0
- mindspore/lib/libmindspore_backend.so +0 -0
- mindspore/lib/libmindspore_common.so +0 -0
- mindspore/lib/libmindspore_core.so +0 -0
- mindspore/lib/libmindspore_glog.so.0 +0 -0
- mindspore/lib/libmindspore_gpr.so.15 +0 -0
- mindspore/lib/libmindspore_grpc++.so.1 +0 -0
- mindspore/lib/libmindspore_grpc.so.15 +0 -0
- mindspore/lib/libmindspore_shared_lib.so +0 -0
- mindspore/lib/libmpi_adapter.so +0 -0
- mindspore/lib/libmpi_collective.so +0 -0
- mindspore/lib/libnnacl.so +0 -0
- mindspore/lib/libopencv_core.so.4.5 +0 -0
- mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
- mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
- mindspore/lib/libps_cache.so +0 -0
- mindspore/lib/plugin/ascend/libakg.so +0 -0
- mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
- mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
- mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
- mindspore/lib/plugin/cpu/libakg.so +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/{libmindspore_ascend.so → libmindspore_ascend.so.2} +0 -0
- mindspore/log.py +1 -1
- mindspore/mindrecord/filereader.py +18 -0
- mindspore/mindrecord/filewriter.py +197 -34
- mindspore/mindrecord/shardreader.py +9 -0
- mindspore/mindrecord/shardwriter.py +1 -1
- mindspore/mindrecord/tools/cifar100_to_mr.py +3 -3
- mindspore/mindrecord/tools/cifar10_to_mr.py +3 -3
- mindspore/mindrecord/tools/csv_to_mr.py +3 -3
- mindspore/mindrecord/tools/imagenet_to_mr.py +16 -11
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/mindrecord/tools/tfrecord_to_mr.py +6 -6
- mindspore/nn/__init__.py +0 -4
- mindspore/nn/cell.py +204 -132
- mindspore/nn/dynamic_lr.py +1 -1
- mindspore/nn/grad/cell_grad.py +7 -6
- mindspore/nn/layer/__init__.py +5 -4
- mindspore/nn/layer/activation.py +40 -89
- mindspore/nn/layer/basic.py +255 -624
- mindspore/nn/layer/channel_shuffle.py +7 -6
- mindspore/nn/layer/combined.py +1 -1
- mindspore/nn/layer/container.py +41 -4
- mindspore/nn/layer/conv.py +64 -28
- mindspore/nn/layer/dense.py +9 -8
- mindspore/nn/layer/embedding.py +27 -25
- mindspore/nn/layer/image.py +53 -46
- mindspore/nn/layer/math.py +97 -105
- mindspore/nn/layer/normalization.py +117 -86
- mindspore/nn/layer/padding.py +185 -95
- mindspore/nn/layer/pooling.py +817 -414
- mindspore/nn/layer/rnn_cells.py +10 -15
- mindspore/nn/layer/rnns.py +37 -38
- mindspore/nn/layer/thor_layer.py +11 -12
- 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 +5 -4
- mindspore/nn/loss/loss.py +334 -199
- mindspore/nn/optim/ada_grad.py +6 -6
- mindspore/nn/optim/adadelta.py +2 -3
- mindspore/nn/optim/adafactor.py +4 -5
- mindspore/nn/optim/adam.py +126 -62
- mindspore/nn/optim/adamax.py +3 -4
- mindspore/nn/optim/adasum.py +6 -6
- mindspore/nn/optim/asgd.py +2 -2
- mindspore/nn/optim/ftrl.py +67 -38
- mindspore/nn/optim/lamb.py +4 -5
- mindspore/nn/optim/lars.py +2 -2
- mindspore/nn/optim/lazyadam.py +43 -4
- mindspore/nn/optim/momentum.py +6 -5
- mindspore/nn/optim/optimizer.py +3 -1
- mindspore/nn/optim/proximal_ada_grad.py +2 -2
- mindspore/nn/optim/rmsprop.py +1 -1
- mindspore/nn/optim/rprop.py +8 -9
- mindspore/nn/optim/sgd.py +19 -13
- mindspore/nn/optim/thor.py +10 -15
- mindspore/nn/probability/__init__.py +0 -2
- mindspore/nn/probability/bijector/bijector.py +4 -4
- mindspore/nn/probability/bijector/invert.py +1 -1
- 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/_utils/utils.py +9 -15
- mindspore/nn/probability/distribution/bernoulli.py +3 -3
- mindspore/nn/probability/distribution/beta.py +1 -1
- mindspore/nn/probability/distribution/categorical.py +5 -7
- mindspore/nn/probability/distribution/cauchy.py +3 -3
- mindspore/nn/probability/distribution/distribution.py +2 -2
- mindspore/nn/probability/distribution/exponential.py +2 -2
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +1 -1
- mindspore/nn/probability/distribution/gumbel.py +3 -3
- mindspore/nn/probability/distribution/half_normal.py +15 -11
- mindspore/nn/probability/distribution/laplace.py +16 -13
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/normal.py +1 -1
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/student_t.py +20 -15
- mindspore/nn/probability/distribution/transformed_distribution.py +4 -4
- mindspore/nn/probability/distribution/uniform.py +2 -2
- mindspore/nn/reinforcement/_tensors_queue.py +3 -3
- mindspore/nn/reinforcement/tensor_array.py +2 -2
- mindspore/nn/sparse/sparse.py +2 -2
- mindspore/nn/wrap/cell_wrapper.py +27 -10
- mindspore/nn/wrap/grad_reducer.py +2 -2
- mindspore/nn/wrap/loss_scale.py +40 -24
- mindspore/numpy/array_creations.py +33 -22
- mindspore/numpy/array_ops.py +35 -30
- mindspore/numpy/logic_ops.py +6 -27
- mindspore/numpy/math_ops.py +22 -19
- mindspore/numpy/utils.py +1 -1
- mindspore/numpy/utils_const.py +108 -58
- mindspore/ops/_constants.py +0 -6
- mindspore/ops/_grad/__init__.py +2 -1
- mindspore/ops/_grad/grad_array_ops.py +86 -117
- mindspore/ops/_grad/grad_base.py +23 -1
- mindspore/ops/_grad/grad_clip_ops.py +2 -3
- mindspore/ops/_grad/grad_comm_ops.py +34 -24
- mindspore/ops/_grad/grad_implementations.py +9 -45
- mindspore/ops/_grad/grad_inner_ops.py +47 -4
- mindspore/ops/_grad/grad_math_ops.py +142 -117
- mindspore/ops/_grad/grad_nn_ops.py +71 -165
- mindspore/ops/_grad/grad_sequence_ops.py +296 -0
- mindspore/ops/_grad/grad_sparse.py +7 -6
- mindspore/ops/_grad_experimental/__init__.py +1 -0
- mindspore/ops/_grad_experimental/grad_array_ops.py +150 -15
- mindspore/ops/_grad_experimental/grad_image_ops.py +16 -7
- mindspore/ops/_grad_experimental/grad_inner_ops.py +1 -22
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +4 -11
- mindspore/ops/_grad_experimental/grad_math_ops.py +210 -89
- mindspore/ops/_grad_experimental/grad_nn_ops.py +26 -22
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +112 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +49 -8
- mindspore/ops/_op_impl/_custom_op/batch_matmul_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/batchnorm_fold.py +2 -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 +4 -4
- 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 +2 -2
- mindspore/ops/_op_impl/_custom_op/correction_mul_grad.py +2 -2
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -5
- 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_impl.py +0 -4
- 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 +236 -4
- mindspore/ops/_op_impl/aicpu/abs.py +36 -0
- mindspore/ops/_op_impl/aicpu/{adaptive_avg_pool_2d_v1.py → adaptive_avg_pool_2d.py} +6 -5
- mindspore/ops/_op_impl/aicpu/adaptive_avg_pool_2d_grad.py +34 -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/batch_matmul.py +43 -43
- mindspore/ops/_op_impl/aicpu/bernoulli.py +48 -0
- mindspore/{compression/common/__init__.py → ops/_op_impl/aicpu/bessel_i0.py} +15 -8
- mindspore/ops/_op_impl/aicpu/channel_shuffle.py +40 -0
- mindspore/ops/_op_impl/aicpu/conj.py +11 -0
- mindspore/ops/_op_impl/aicpu/cumulative_logsumexp.py +0 -3
- mindspore/ops/_op_impl/aicpu/deformable_offsets.py +38 -0
- mindspore/ops/_op_impl/aicpu/deformable_offsets_grad.py +43 -0
- mindspore/ops/_op_impl/aicpu/{adaptive_avg_pool_2d_grad_v1.py → digamma.py} +7 -9
- 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/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/aicpu/less.py +41 -0
- mindspore/{nn/probability/infer/variational/__init__.py → ops/_op_impl/aicpu/lgamma.py} +16 -10
- mindspore/ops/_op_impl/aicpu/mirror_pad.py +0 -4
- 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/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/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/randperm_v2.py +41 -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/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/smooth_l1_loss.py +35 -0
- mindspore/ops/_op_impl/aicpu/smooth_l1_loss_grad.py +37 -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_slice.py +4 -0
- mindspore/ops/_op_impl/aicpu/sparse_slice_grad.py +6 -0
- mindspore/ops/_op_impl/aicpu/tensor_scatter_update.py +59 -0
- mindspore/ops/_op_impl/aicpu/trans_data.py +1 -0
- mindspore/ops/_op_impl/aicpu/tril_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/dynamic_shape.py +5 -1
- mindspore/ops/_op_impl/cpu/sparse_slice.py +4 -0
- mindspore/ops/_op_impl/cpu/sparse_slice_grad.py +6 -0
- mindspore/ops/_op_impl/cpu/tensor_shape.py +5 -1
- mindspore/ops/_op_impl/tbe/__init__.py +27 -611
- 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/batch_matmul_ds.py +1 -0
- 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/bn_infer_grad.py +4 -2
- 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/data_format_dim_map_ds.py +1 -0
- mindspore/ops/_op_impl/tbe/depthwise_conv2d.py +2 -2
- 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/{index_add.py → inplace_index_add.py} +3 -6
- mindspore/ops/_op_impl/tbe/matmul_ds.py +2 -0
- 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/scatter_mul.py +2 -0
- mindspore/ops/_op_impl/tbe/scatter_nd_add.py +0 -2
- 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/trans_data_ds.py +15 -5
- mindspore/ops/_register_for_op.py +1 -0
- mindspore/ops/_utils/__init__.py +1 -2
- mindspore/ops/_utils/utils.py +19 -40
- mindspore/ops/_vmap/vmap_array_ops.py +116 -38
- mindspore/ops/_vmap/vmap_base.py +16 -9
- 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 +7 -5
- mindspore/ops/_vmap/vmap_image_ops.py +12 -5
- mindspore/ops/_vmap/vmap_math_ops.py +46 -5
- mindspore/ops/_vmap/vmap_nn_ops.py +15 -21
- mindspore/ops/_vmap/vmap_random_ops.py +1 -1
- mindspore/ops/bprop_mindir/AdaptiveAvgPool2D_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/AdaptiveMaxPool2D_bprop.mindir +0 -0
- 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/BatchNormGrad_bprop.mindir +0 -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 +220 -106
- mindspore/ops/bprop_mindir/CTCLoss_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/DeformableOffsets_bprop.mindir +58 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +138 -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 -23
- mindspore/ops/bprop_mindir/DropoutGenMask_bprop.mindir +16 -17
- 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/Elu_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ExpandDims_bprop.mindir +39 -41
- mindspore/ops/bprop_mindir/FastGeLU_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/Flatten_bprop.mindir +41 -43
- mindspore/ops/bprop_mindir/GatherNd_bprop.mindir +51 -57
- mindspore/ops/bprop_mindir/Gather_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/HSigmoid_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/HSwish_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/InstanceNorm_bprop.mindir +0 -0
- 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/LogSoftmax_bprop.mindir +23 -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/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/OneHot_bprop.mindir +24 -25
- 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/ReLU6_bprop.mindir +16 -0
- mindspore/ops/bprop_mindir/ReLUV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ReluGrad_bprop.mindir +18 -19
- mindspore/ops/bprop_mindir/Reshape_bprop.mindir +53 -53
- mindspore/ops/bprop_mindir/ResizeBilinear_bprop.mindir +29 -0
- mindspore/ops/bprop_mindir/ResizeNearestNeighbor_bprop.mindir +77 -85
- mindspore/ops/bprop_mindir/SeLU_bprop.mindir +21 -0
- 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/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/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Squeeze_bprop.mindir +37 -39
- mindspore/ops/bprop_mindir/StridedSlice_bprop.mindir +70 -72
- mindspore/ops/bprop_mindir/TanhGrad_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Tanh_bprop.mindir +66 -0
- mindspore/ops/bprop_mindir/Tile_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TopK_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +17 -17
- mindspore/ops/bprop_mindir/UpsampleNearest3D_bprop.mindir +32 -0
- mindspore/ops/bprop_mindir/UpsampleTrilinear3D_bprop.mindir +38 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +2 -0
- mindspore/ops/composite/__init__.py +7 -8
- mindspore/ops/composite/base.py +101 -47
- mindspore/ops/composite/math_ops.py +188 -158
- mindspore/ops/composite/multitype_ops/_compile_utils.py +415 -170
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +142 -87
- mindspore/ops/composite/multitype_ops/add_impl.py +6 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +2 -3
- mindspore/ops/composite/multitype_ops/getitem_impl.py +31 -3
- 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 +9 -0
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +31 -0
- mindspore/ops/composite/multitype_ops/less_impl.py +31 -0
- mindspore/ops/composite/multitype_ops/mul_impl.py +21 -5
- mindspore/ops/composite/multitype_ops/not_in_impl.py +9 -0
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +2 -4
- mindspore/ops/composite/multitype_ops/setitem_impl.py +21 -3
- mindspore/ops/composite/multitype_ops/sub_impl.py +1 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +35 -4
- mindspore/ops/function/__init__.py +152 -8
- mindspore/ops/function/array_func.py +2555 -674
- mindspore/ops/function/clip_func.py +209 -13
- mindspore/ops/function/debug_func.py +2 -2
- mindspore/ops/function/grad/__init__.py +2 -1
- mindspore/ops/function/grad/grad_func.py +147 -62
- mindspore/ops/function/image_func.py +54 -38
- mindspore/ops/function/linalg_func.py +167 -16
- mindspore/ops/function/math_func.py +4849 -1492
- mindspore/ops/function/nn_func.py +2573 -988
- mindspore/ops/function/other_func.py +115 -0
- mindspore/ops/function/parameter_func.py +3 -3
- mindspore/ops/function/random_func.py +790 -73
- mindspore/ops/function/sparse_func.py +98 -78
- mindspore/ops/function/sparse_unary_func.py +54 -53
- mindspore/ops/function/spectral_func.py +27 -24
- mindspore/ops/function/vmap_func.py +22 -2
- mindspore/ops/functional.py +97 -37
- mindspore/ops/op_info_register.py +70 -28
- mindspore/ops/operations/__init__.py +47 -14
- mindspore/ops/operations/_csr_ops.py +7 -7
- mindspore/ops/operations/_embedding_cache_ops.py +5 -5
- mindspore/ops/operations/_grad_ops.py +276 -187
- mindspore/ops/operations/_inner_ops.py +319 -113
- mindspore/ops/operations/_ms_kernel.py +10 -8
- mindspore/ops/operations/_ocr_ops.py +9 -9
- mindspore/ops/operations/_opaque_predicate_registry.py +4 -0
- mindspore/ops/operations/_quant_ops.py +137 -102
- mindspore/ops/operations/_rl_inner_ops.py +121 -60
- mindspore/ops/operations/_scalar_ops.py +466 -0
- mindspore/ops/operations/_sequence_ops.py +1004 -2
- mindspore/ops/operations/_tensor_array.py +10 -11
- mindspore/ops/operations/_thor_ops.py +1 -1
- mindspore/ops/operations/array_ops.py +801 -466
- mindspore/ops/operations/comm_ops.py +51 -49
- mindspore/ops/operations/control_ops.py +2 -2
- mindspore/ops/operations/custom_ops.py +123 -44
- mindspore/ops/operations/debug_ops.py +24 -24
- mindspore/ops/operations/image_ops.py +240 -153
- mindspore/ops/operations/inner_ops.py +34 -50
- mindspore/ops/operations/linalg_ops.py +31 -9
- mindspore/ops/operations/math_ops.py +988 -757
- mindspore/ops/operations/nn_ops.py +965 -819
- mindspore/ops/operations/other_ops.py +51 -40
- mindspore/ops/operations/random_ops.py +204 -122
- mindspore/ops/operations/rl_ops.py +8 -9
- mindspore/ops/operations/sparse_ops.py +254 -93
- mindspore/ops/operations/spectral_ops.py +35 -3
- mindspore/ops/primitive.py +111 -9
- mindspore/parallel/_auto_parallel_context.py +189 -83
- mindspore/parallel/_offload_context.py +185 -0
- mindspore/parallel/_parallel_serialization.py +99 -7
- mindspore/parallel/_ps_context.py +9 -5
- mindspore/parallel/_recovery_context.py +1 -1
- mindspore/parallel/_tensor.py +7 -1
- mindspore/{nn/transformer → parallel/_transformer}/__init__.py +6 -6
- mindspore/{nn/transformer → parallel/_transformer}/layers.py +6 -37
- mindspore/{nn/transformer → parallel/_transformer}/loss.py +4 -7
- mindspore/{nn/transformer → parallel/_transformer}/moe.py +20 -16
- mindspore/{nn/transformer → parallel/_transformer}/op_parallel_config.py +3 -3
- mindspore/{nn/transformer → parallel/_transformer}/transformer.py +48 -111
- mindspore/parallel/_utils.py +1 -2
- mindspore/parallel/algo_parameter_config.py +1 -1
- mindspore/parallel/checkpoint_transform.py +37 -34
- mindspore/parallel/shard.py +17 -18
- mindspore/profiler/common/validator/validate_path.py +2 -2
- mindspore/profiler/envprofiling.py +69 -47
- mindspore/profiler/parser/ascend_timeline_generator.py +49 -42
- mindspore/profiler/parser/base_timeline_generator.py +49 -56
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +98 -78
- mindspore/profiler/parser/hwts_log_parser.py +1 -1
- mindspore/profiler/parser/integrator.py +15 -14
- mindspore/profiler/parser/minddata_analyzer.py +2 -2
- mindspore/profiler/parser/msadvisor_analyzer.py +12 -25
- mindspore/profiler/parser/msadvisor_parser.py +2 -4
- mindspore/profiler/parser/optime_parser.py +17 -18
- mindspore/profiler/parser/profiler_info.py +2 -1
- mindspore/profiler/profiling.py +218 -186
- mindspore/rewrite/__init__.py +3 -1
- mindspore/rewrite/api/node.py +1 -114
- mindspore/rewrite/api/node_type.py +3 -0
- mindspore/rewrite/api/pattern_engine.py +31 -1
- mindspore/rewrite/api/scoped_value.py +4 -4
- mindspore/rewrite/api/symbol_tree.py +3 -78
- mindspore/rewrite/api/tree_node_helper.py +1 -1
- mindspore/rewrite/ast_creator_register.py +1 -0
- mindspore/rewrite/ast_helpers/__init__.py +2 -2
- mindspore/rewrite/ast_helpers/ast_creator.py +1 -2
- mindspore/rewrite/ast_helpers/ast_finder.py +65 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +11 -3
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +18 -2
- mindspore/rewrite/namespace.py +0 -2
- mindspore/rewrite/node.py +157 -11
- mindspore/rewrite/parsers/assign_parser.py +231 -53
- mindspore/rewrite/parsers/class_def_parser.py +187 -109
- mindspore/rewrite/parsers/for_parser.py +24 -14
- mindspore/rewrite/parsers/function_def_parser.py +21 -4
- mindspore/rewrite/parsers/if_parser.py +6 -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 +256 -133
- mindspore/rewrite/symbol_tree_builder.py +38 -1
- mindspore/run_check/_check_version.py +69 -63
- mindspore/run_check/run_check.py +2 -1
- mindspore/scipy/linalg.py +10 -114
- mindspore/scipy/ops.py +2 -2
- mindspore/scipy/ops_wrapper.py +1 -1
- mindspore/scipy/optimize/_bfgs.py +1 -1
- mindspore/scipy/optimize/_lagrange.py +200 -0
- mindspore/scipy/optimize/line_search.py +3 -2
- mindspore/scipy/optimize/minimize.py +41 -2
- mindspore/scipy/sparse/__init__.py +2 -2
- mindspore/scipy/sparse/linalg.py +4 -464
- mindspore/scipy/utils.py +1 -1
- mindspore/scipy/utils_const.py +7 -1
- mindspore/train/__init__.py +1 -1
- mindspore/train/_utils.py +28 -5
- mindspore/train/amp.py +273 -102
- mindspore/train/callback/_backup_and_restore.py +5 -5
- mindspore/train/callback/_callback.py +2 -2
- mindspore/train/callback/_checkpoint.py +3 -3
- mindspore/train/callback/_early_stop.py +3 -3
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +29 -31
- mindspore/train/callback/_loss_monitor.py +3 -3
- mindspore/train/callback/_on_request_exit.py +3 -3
- mindspore/train/callback/_reduce_lr_on_plateau.py +4 -4
- mindspore/train/callback/_summary_collector.py +23 -16
- mindspore/train/callback/_time_monitor.py +3 -3
- mindspore/train/checkpoint_pb2.py +68 -8
- mindspore/train/data_sink.py +15 -3
- mindspore/train/dataset_helper.py +10 -15
- mindspore/train/loss_scale_manager.py +8 -11
- mindspore/train/metrics/__init__.py +1 -1
- mindspore/train/metrics/bleu_score.py +1 -1
- mindspore/train/metrics/confusion_matrix.py +1 -1
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/dice.py +2 -2
- mindspore/train/metrics/fbeta.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +4 -3
- mindspore/train/metrics/mean_surface_distance.py +2 -2
- mindspore/train/metrics/occlusion_sensitivity.py +1 -1
- mindspore/train/metrics/perplexity.py +1 -1
- mindspore/train/metrics/precision.py +1 -1
- mindspore/train/metrics/recall.py +1 -1
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +116 -37
- mindspore/train/model.py +45 -28
- mindspore/train/serialization.py +295 -188
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/summary_record.py +43 -13
- mindspore/train/train_thor/convert_utils.py +2 -2
- mindspore/train/train_thor/dataset_helper.py +3 -3
- mindspore/version.py +1 -1
- {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/METADATA +3 -2
- {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/RECORD +648 -574
- mindspore/compression/__init__.py +0 -19
- mindspore/compression/common/constant.py +0 -124
- mindspore/compression/export/__init__.py +0 -19
- mindspore/compression/export/quant_export.py +0 -515
- mindspore/compression/quant/__init__.py +0 -28
- mindspore/compression/quant/qat.py +0 -634
- mindspore/compression/quant/quant_utils.py +0 -462
- mindspore/compression/quant/quantizer.py +0 -68
- 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 -140
- mindspore/nn/probability/dpn/vae/vae.py +0 -124
- 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 -364
- 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/aicpu/parallel_concat.py +0 -42
- mindspore/ops/_op_impl/tbe/gather_v2.py +0 -56
- mindspore/ops/bprop_mindir/AssignAdd_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/Cast_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/LogicalOr_bprop.mindir +0 -19
- mindspore/ops/bprop_mindir/MatMul_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ReLU_bprop.mindir +0 -17
- mindspore/ops/bprop_mindir/Transpose_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/UpdateState_bprop.mindir +0 -15
- mindspore/ops/composite/array_ops.py +0 -241
- mindspore/ops/composite/clip_ops.py +0 -134
- mindspore/ops/composite/random_ops.py +0 -426
- mindspore/ops/composite/vmap_ops.py +0 -38
- 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-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.0.0a0.dist-info → mindspore-2.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -16,53 +16,63 @@
|
|
|
16
16
|
import json
|
|
17
17
|
import os
|
|
18
18
|
import time
|
|
19
|
-
from enum import Enum
|
|
20
19
|
from mindspore.profiler import Profiler
|
|
21
|
-
from mindspore.profiler.profiling import AICORE_METRICS_DICT
|
|
20
|
+
from mindspore.profiler.profiling import AICORE_METRICS_DICT, DeviceSupportParam, ALWAYS_VALID_PARAM
|
|
22
21
|
from mindspore.profiler.common.validator.validate_path import validate_and_normalize_path
|
|
23
22
|
from mindspore.profiler.parser.integrator import DeviceTarget
|
|
24
23
|
|
|
25
24
|
from mindspore import log as logger, context
|
|
26
25
|
|
|
27
26
|
|
|
28
|
-
class DeviceSupportParam(Enum):
|
|
29
|
-
"""The device target enum."""
|
|
30
|
-
CPU = ['start', 'output_path']
|
|
31
|
-
GPU = ['start', 'output_path', 'data_process', 'timeline_limit', 'sync_enable']
|
|
32
|
-
ASCEND = ['start', 'output_path', 'data_process', 'timeline_limit', 'profile_memory', 'parallel_strategy',
|
|
33
|
-
'profile_communication', 'aicore_metrics', 'l2_cache']
|
|
34
|
-
|
|
35
|
-
|
|
36
27
|
def get_profiling_options():
|
|
37
28
|
"""Get profiling options."""
|
|
38
29
|
try:
|
|
39
30
|
options = json.loads(os.environ.get("MS_PROFILER_OPTIONS", "{}"))
|
|
40
31
|
except json.JSONDecodeError:
|
|
41
|
-
return
|
|
32
|
+
return {"error": True}
|
|
42
33
|
return options
|
|
43
34
|
|
|
44
35
|
|
|
45
|
-
def parse_device_support_param(
|
|
36
|
+
def parse_device_support_param(origin_options, final_options, factor_s_to_us=1e6):
|
|
46
37
|
"""Parse platform support parameters."""
|
|
47
38
|
device_target = context.get_context("device_target").upper()
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
op_time = final_options.get("op_time")
|
|
40
|
+
support_list = DeviceSupportParam.__getattr__(f'{device_target}').value
|
|
41
|
+
all_param = list(set(origin_options) | set(final_options))
|
|
42
|
+
for param in all_param:
|
|
43
|
+
if param not in support_list and param in list(origin_options.keys()):
|
|
44
|
+
logger.warning(f"[Profiler]'{param}' is an invalid param which doesn't work.")
|
|
45
|
+
if param in support_list:
|
|
46
|
+
if not op_time and param in origin_options.keys() and param not in ALWAYS_VALID_PARAM:
|
|
47
|
+
logger.warning(f"When op_time is set to False, the parameter '{param}' setting is invalid.")
|
|
48
|
+
if param not in support_list and final_options.get(param):
|
|
49
|
+
final_options.pop(param)
|
|
50
|
+
|
|
51
|
+
simple_options = {
|
|
52
|
+
"start_time": int(time.time() * factor_s_to_us),
|
|
53
|
+
"file_output_path": "",
|
|
54
|
+
"pid": os.getpid(),
|
|
55
|
+
}
|
|
56
|
+
final_options.update(simple_options)
|
|
57
|
+
return final_options
|
|
51
58
|
|
|
52
59
|
|
|
53
60
|
def construct_profiling_options():
|
|
54
61
|
"""Construct profiling options to determine which profiling data should be collected."""
|
|
55
62
|
profiling_options = get_profiling_options()
|
|
56
|
-
if profiling_options
|
|
57
|
-
|
|
63
|
+
if profiling_options.get('error'):
|
|
64
|
+
error_config = {"start": False}
|
|
65
|
+
if os.getenv("MS_PROFILER_RUN_CONFIG"):
|
|
66
|
+
return error_config
|
|
67
|
+
os.environ["MS_PROFILER_RUN_CONFIG"] = json.dumps(error_config)
|
|
68
|
+
logger.error(
|
|
58
69
|
"The format of MS_PROFILER_OPTIONS is incorrect. "
|
|
59
70
|
"The MS_PROFILER_OPTIONS parameter configuration may refer to "
|
|
60
71
|
"'https://www.mindspore.cn/mindinsight/docs/zh-CN/master/performance_profiling_ascend.html'."
|
|
61
72
|
)
|
|
62
|
-
|
|
63
|
-
conbine_options =
|
|
73
|
+
return error_config
|
|
74
|
+
conbine_options = combine_profile_options(profiling_options)
|
|
64
75
|
if conbine_options.get("start"):
|
|
65
|
-
parse_device_support_param(profiling_options)
|
|
66
76
|
output_path = conbine_options.get("output_path")
|
|
67
77
|
if not output_path:
|
|
68
78
|
output_path = os.path.join(os.getcwd(), "data")
|
|
@@ -87,11 +97,20 @@ def parse_pubilc_args(options):
|
|
|
87
97
|
"The 'data_process' parameter of the environment variable MS_PROFILE_OPTIONS must be bool,"
|
|
88
98
|
f" but got type {type(options.get('data_process'))}, it will be set to true.")
|
|
89
99
|
options["data_process"] = True
|
|
90
|
-
if not isinstance(options.get("
|
|
100
|
+
if not isinstance(options.get("op_time"), bool):
|
|
101
|
+
logger.warning(
|
|
102
|
+
"The 'op_time' parameter of the environment variable MS_PROFILE_OPTIONS must be bool,"
|
|
103
|
+
f" but got type {type(options.get('op_time'))}, it will be set to true.")
|
|
104
|
+
options["op_time"] = True
|
|
105
|
+
if isinstance(options.get("timeline_limit"), bool) or not isinstance(options.get("timeline_limit"), int):
|
|
91
106
|
logger.warning(
|
|
92
107
|
"The 'timeline_limit' parameter of the environment variable MS_PROFILE_OPTIONS must be int,"
|
|
93
108
|
f" but got type {type(options.get('timeline_limit'))}, it will be set to 500.")
|
|
94
109
|
options["timeline_limit"] = 500
|
|
110
|
+
if options.get('timeline_limit') <= 0:
|
|
111
|
+
logger.warning(
|
|
112
|
+
"The 'timeline_limit' parameter of the environment variable MS_PROFILE_OPTIONS must be greater than 0.")
|
|
113
|
+
options["timeline_limit"] = 500
|
|
95
114
|
absolute_path = os.path.join(os.getcwd(), "data")
|
|
96
115
|
if not isinstance(options.get("output_path"), str):
|
|
97
116
|
logger.warning(
|
|
@@ -160,28 +179,25 @@ def parse_profiling_args(options):
|
|
|
160
179
|
|
|
161
180
|
def combine_profile_options(profiling_options):
|
|
162
181
|
"""Combined profiling options."""
|
|
163
|
-
factor_s_to_us = 1e7
|
|
164
182
|
output_path = os.path.join(os.getcwd(), "data")
|
|
165
|
-
|
|
166
|
-
sync_enable = profiling_options.get("sync_enable", True)
|
|
167
|
-
else:
|
|
168
|
-
sync_enable = profiling_options.get("sync_enable", False)
|
|
169
|
-
options = {
|
|
183
|
+
config_options = {
|
|
170
184
|
"start": profiling_options.get('start', False),
|
|
171
|
-
"start_time": int(time.time() * factor_s_to_us),
|
|
172
|
-
"pid": os.getpid(),
|
|
173
185
|
"output_path": profiling_options.get('output_path', output_path),
|
|
174
|
-
"file_output_path": "",
|
|
175
186
|
"profile_memory": profiling_options.get("profile_memory", False),
|
|
176
187
|
"profile_communication": profiling_options.get("profile_communication", False),
|
|
177
188
|
"aicore_metrics": profiling_options.get("aicore_metrics", 0),
|
|
178
189
|
"l2_cache": profiling_options.get("l2_cache", False),
|
|
179
|
-
"sync_enable": sync_enable,
|
|
190
|
+
"sync_enable": profiling_options.get("sync_enable", True),
|
|
180
191
|
"data_process": profiling_options.get("data_process", True),
|
|
181
192
|
"timeline_limit": profiling_options.get("timeline_limit", 500),
|
|
182
193
|
"parallel_strategy": profiling_options.get("parallel_strategy", True),
|
|
194
|
+
'op_time': profiling_options.get("op_time", True)
|
|
183
195
|
}
|
|
184
|
-
|
|
196
|
+
combine_options = parse_profiling_args(config_options)
|
|
197
|
+
if combine_options.get("start"):
|
|
198
|
+
final_options = parse_device_support_param(profiling_options, combine_options)
|
|
199
|
+
return final_options
|
|
200
|
+
return combine_options
|
|
185
201
|
|
|
186
202
|
|
|
187
203
|
class EnvProfiler:
|
|
@@ -190,17 +206,22 @@ class EnvProfiler:
|
|
|
190
206
|
def __init__(self):
|
|
191
207
|
self._profiling_options = {}
|
|
192
208
|
|
|
193
|
-
def
|
|
194
|
-
"""Determine whether
|
|
209
|
+
def need_analyse(self):
|
|
210
|
+
"""Determine whether the data needs to be parsed."""
|
|
195
211
|
if not os.getenv("MS_PROFILER_OPTIONS"):
|
|
196
|
-
return
|
|
212
|
+
return False
|
|
197
213
|
self._profiling_options = json.loads(os.getenv("MS_PROFILER_RUN_CONFIG", "{}"))
|
|
198
214
|
if not self._profiling_options.get("pid", 0) == os.getpid():
|
|
199
|
-
return
|
|
215
|
+
return False
|
|
200
216
|
if not self._profiling_options.get("start"):
|
|
201
|
-
return
|
|
202
|
-
|
|
203
|
-
|
|
217
|
+
return False
|
|
218
|
+
return True
|
|
219
|
+
|
|
220
|
+
def analyse(self):
|
|
221
|
+
"""Determine whether to stop collecting and parsing performance data based on environment variables."""
|
|
222
|
+
if self.need_analyse():
|
|
223
|
+
profiler = Profiler(env_enable=self._profiling_options)
|
|
224
|
+
profiler.analyse()
|
|
204
225
|
|
|
205
226
|
|
|
206
227
|
def profiler_check_env():
|
|
@@ -214,14 +235,15 @@ def profiler_check_env():
|
|
|
214
235
|
if not config.get("start"):
|
|
215
236
|
return
|
|
216
237
|
Profiler(output_path=config.get("output_path"),
|
|
217
|
-
profile_memory=config.get("profile_memory"),
|
|
218
|
-
profile_communication=config.get("profile_communication"),
|
|
219
|
-
data_process=config.get("data_process"),
|
|
220
|
-
parallel_strategy=config.get("parallel_strategy"),
|
|
221
|
-
aicore_metrics=config.get("aicore_metrics"),
|
|
222
|
-
l2_cache=config.get("l2_cache"),
|
|
223
|
-
sync_enable=config.get("sync_enable"),
|
|
224
|
-
|
|
238
|
+
profile_memory=config.get("profile_memory", False),
|
|
239
|
+
profile_communication=config.get("profile_communication", False),
|
|
240
|
+
data_process=config.get("data_process", False),
|
|
241
|
+
parallel_strategy=config.get("parallel_strategy", False),
|
|
242
|
+
aicore_metrics=config.get("aicore_metrics", 0),
|
|
243
|
+
l2_cache=config.get("l2_cache", False),
|
|
244
|
+
sync_enable=config.get("sync_enable", False),
|
|
245
|
+
op_time=config.get("op_time", False),
|
|
246
|
+
timeline_limit=config.get("timeline_limit", 500))
|
|
225
247
|
|
|
226
248
|
|
|
227
249
|
profiler_check_env()
|
|
@@ -65,8 +65,7 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
65
65
|
|
|
66
66
|
logger.info('Initiating timeline...')
|
|
67
67
|
timeline_list = []
|
|
68
|
-
|
|
69
|
-
timeline_list.extend(op_timeline_list)
|
|
68
|
+
timeline_list.extend(self._get_op_timeline(communication_info, source_path))
|
|
70
69
|
|
|
71
70
|
# Generate step time.
|
|
72
71
|
self._set_step_start_and_end_op_name(timeline_list)
|
|
@@ -116,10 +115,9 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
116
115
|
self._format_meta_data_list.extend(self._timeline_meta)
|
|
117
116
|
self._timeline_meta = self._format_meta_data_list
|
|
118
117
|
# Get framework metadata.
|
|
119
|
-
framework_obj_list = framework_info.get('object')
|
|
120
118
|
# The length of list is the number of operators.
|
|
121
|
-
self._timeline_summary['num_of_ops'] += len(
|
|
122
|
-
self._add_framework_info(
|
|
119
|
+
self._timeline_summary['num_of_ops'] += len(framework_info.get('object'))
|
|
120
|
+
self._add_framework_info(framework_info.get('object'))
|
|
123
121
|
logger.info('Finished adding info into timeline...')
|
|
124
122
|
|
|
125
123
|
# Update timeline summary info
|
|
@@ -212,28 +210,24 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
212
210
|
|
|
213
211
|
try:
|
|
214
212
|
with open(host_start_file_path) as f_obj:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
host_monotonic = int(lines[2].strip().split(':')[1])
|
|
213
|
+
# f_obj.readlines()[2] stores host monotonic_raw time of start training.
|
|
214
|
+
host_monotonic = int(f_obj.readlines()[2].strip().split(':')[1])
|
|
218
215
|
except (IOError, OSError) as err:
|
|
219
216
|
logger.critical('Error occurred when read host_start.log: %s', err)
|
|
220
217
|
raise ProfilerIOException()
|
|
221
218
|
try:
|
|
222
219
|
with open(dev_start_file_path) as f_obj:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
dev_cntvct = int(lines[2].strip().split(':')[1])
|
|
220
|
+
# f_obj.readlines()[2] stores device cycle counter of start training.
|
|
221
|
+
dev_cntvct = int(f_obj.readlines()[2].strip().split(':')[1])
|
|
226
222
|
except (IOError, OSError) as err:
|
|
227
223
|
logger.critical('Error occurred when read dev_start.log: %s', err)
|
|
228
224
|
raise ProfilerIOException()
|
|
229
225
|
|
|
230
|
-
|
|
231
|
-
factor_ten_ns_to_ns = 10
|
|
232
|
-
factor_ms_to_ns = 1e6
|
|
226
|
+
factor = {"factor_ns_to_ms": 1e-6, "factor_ten_ns_to_ns": 10, "factor_ms_to_ns": 1e6}
|
|
233
227
|
for idx, time_item in enumerate(timeline_list):
|
|
234
|
-
host_time = int(float(time_item[self._start_time_idx]) * factor_ms_to_ns)
|
|
235
|
-
device_time = dev_cntvct * factor_ten_ns_to_ns + (host_time - host_monotonic)
|
|
236
|
-
timeline_list[idx][self._start_time_idx] = device_time * factor_ns_to_ms
|
|
228
|
+
host_time = int(float(time_item[self._start_time_idx]) * factor.get("factor_ms_to_ns"))
|
|
229
|
+
device_time = dev_cntvct * factor.get("factor_ten_ns_to_ns") + (host_time - host_monotonic)
|
|
230
|
+
timeline_list[idx][self._start_time_idx] = device_time * factor.get("factor_ns_to_ms")
|
|
237
231
|
|
|
238
232
|
def _add_framework_info(self, framework_obj_list):
|
|
239
233
|
"""
|
|
@@ -297,30 +291,33 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
297
291
|
that communication inside each stage slow down the training.
|
|
298
292
|
"""
|
|
299
293
|
is_pipeline_parallel = False
|
|
300
|
-
|
|
294
|
+
time_info = {"receive_op_not_overlapped_timeline": [], "collective_comm_not_overlapped_timeline": [],
|
|
295
|
+
"comm_not_overlapped_timeline": []}
|
|
296
|
+
comm_timeline = self._get_merged_time_list(
|
|
301
297
|
comm_info, display_name="communication"
|
|
302
298
|
)
|
|
303
|
-
|
|
299
|
+
aicore_timeline = self._get_merged_time_list(
|
|
304
300
|
aicore_info, get_interval_time=True
|
|
305
301
|
)
|
|
306
302
|
# Consider if the overlap will be 0 or not.
|
|
307
|
-
comm_not_overlapped_timeline = self._get_intersection_time(
|
|
308
|
-
|
|
303
|
+
time_info["comm_not_overlapped_timeline"] = self._get_intersection_time(
|
|
304
|
+
aicore_timeline[0], comm_timeline[0]
|
|
309
305
|
)
|
|
310
306
|
|
|
311
307
|
# Process receive part.
|
|
312
308
|
all_timeline = aicore_info + comm_info
|
|
313
309
|
all_timeline.sort(key=lambda x: float(x[self._start_time_idx]))
|
|
314
|
-
|
|
310
|
+
receive_timeline = self._produce_two_separated_timeline(
|
|
315
311
|
all_timeline, "Receive-op"
|
|
316
312
|
)
|
|
317
|
-
if
|
|
313
|
+
if receive_timeline[0]:
|
|
318
314
|
is_pipeline_parallel = True
|
|
319
|
-
receive_op_merged_timeline = self._get_merged_time_list(
|
|
315
|
+
receive_op_merged_timeline = self._get_merged_time_list(receive_timeline[0])[0]
|
|
320
316
|
timeline_exclude_receive_op_interval = self._get_merged_time_list(
|
|
321
|
-
|
|
317
|
+
receive_timeline[1], get_interval_time=True
|
|
322
318
|
)[0]
|
|
323
|
-
|
|
319
|
+
|
|
320
|
+
time_info["receive_op_not_overlapped_timeline"] = self._get_intersection_time(
|
|
324
321
|
timeline_exclude_receive_op_interval, receive_op_merged_timeline
|
|
325
322
|
)
|
|
326
323
|
|
|
@@ -328,9 +325,9 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
328
325
|
collective_comm_timeline = self._produce_two_separated_timeline(
|
|
329
326
|
comm_info, "Receive-op"
|
|
330
327
|
)[-1]
|
|
331
|
-
|
|
332
|
-
collective_comm_not_overlapped_timeline = self._get_intersection_time(
|
|
333
|
-
|
|
328
|
+
|
|
329
|
+
time_info["collective_comm_not_overlapped_timeline"] = self._get_intersection_time(
|
|
330
|
+
aicore_timeline[0], self._get_merged_time_list(collective_comm_timeline)[0]
|
|
334
331
|
)
|
|
335
332
|
|
|
336
333
|
# Generate free time that exclude computation and communication time.
|
|
@@ -338,41 +335,51 @@ class AscendTimelineGenerator(BaseTimelineGenerator):
|
|
|
338
335
|
all_timeline, get_interval_time=True, display_name="free_time"
|
|
339
336
|
)[1]
|
|
340
337
|
|
|
341
|
-
self._parse_cluster_metrices(step_info, receive_op_not_overlapped_timeline,
|
|
342
|
-
,
|
|
338
|
+
self._parse_cluster_metrices(step_info, time_info.get("receive_op_not_overlapped_timeline"),
|
|
339
|
+
time_info.get("comm_not_overlapped_timeline"),
|
|
340
|
+
time_info.get("collective_comm_not_overlapped_timeline"), is_pipeline_parallel)
|
|
343
341
|
|
|
344
342
|
res_timeline = []
|
|
345
|
-
res_timeline.extend(comm_not_overlapped_timeline)
|
|
346
|
-
res_timeline.extend(
|
|
347
|
-
res_timeline.extend(
|
|
343
|
+
res_timeline.extend(time_info.get("comm_not_overlapped_timeline"))
|
|
344
|
+
res_timeline.extend(aicore_timeline[2])
|
|
345
|
+
res_timeline.extend(comm_timeline[2])
|
|
348
346
|
res_timeline.extend(free_timeline)
|
|
349
347
|
|
|
350
348
|
return res_timeline
|
|
351
349
|
|
|
352
|
-
def _parse_cluster_metrices(self, step_info, receive_op_not_overlapped_timeline, comm_not_overlapped_timeline
|
|
353
|
-
|
|
350
|
+
def _parse_cluster_metrices(self, step_info, receive_op_not_overlapped_timeline, comm_not_overlapped_timeline,
|
|
351
|
+
collective_comm_not_overlapped_timeline, is_pipeline_parallel):
|
|
354
352
|
"""Write the cluster metrices"""
|
|
355
|
-
step_num = len(step_info)
|
|
356
353
|
# Compute these five metrics mentioned above per step.
|
|
357
354
|
recieve_alone_time = self._compute_time_inside_step(receive_op_not_overlapped_timeline, step_info)
|
|
358
|
-
|
|
355
|
+
time_info = {"stage_time": [], "computation_time": []}
|
|
359
356
|
comm_alone_time = self._compute_time_inside_step(comm_not_overlapped_timeline, step_info)
|
|
360
357
|
collective_comm_alone_time = self._compute_time_inside_step(
|
|
361
358
|
collective_comm_not_overlapped_timeline, step_info
|
|
362
359
|
)
|
|
360
|
+
step_num = len(step_info)
|
|
363
361
|
for step in range(step_num):
|
|
364
362
|
try:
|
|
365
363
|
if is_pipeline_parallel:
|
|
366
|
-
stage_time.append(step_info[step][self._duration_idx] - recieve_alone_time[step])
|
|
367
|
-
computation_time.append(step_info[step][self._duration_idx] - comm_alone_time[step])
|
|
364
|
+
time_info.get("stage_time").append(step_info[step][self._duration_idx] - recieve_alone_time[step])
|
|
368
365
|
except IndexError as err:
|
|
369
366
|
logger.error(err)
|
|
370
|
-
|
|
367
|
+
|
|
368
|
+
try:
|
|
369
|
+
time_info.get("computation_time").append(step_info[step][self._duration_idx] - comm_alone_time[step])
|
|
370
|
+
except IndexError as err:
|
|
371
|
+
logger.error(err)
|
|
372
|
+
|
|
373
|
+
metrices_per_step_list = [time_info.get("computation_time"), comm_alone_time, time_info.get("stage_time"),
|
|
371
374
|
recieve_alone_time, collective_comm_alone_time]
|
|
372
375
|
if step_num > 1:
|
|
373
376
|
for metric in metrices_per_step_list:
|
|
374
377
|
metric.append(sum(metric[1:]) / (step_num - 1))
|
|
375
|
-
|
|
378
|
+
try:
|
|
379
|
+
self._write_cluster_metrices(metrices_per_step_list, is_pipeline_parallel, "Ascend", self._rank_id)
|
|
380
|
+
except (IOError, OSError) as err:
|
|
381
|
+
logger.warning(err)
|
|
382
|
+
raise ProfilerIOException
|
|
376
383
|
|
|
377
384
|
def _compute_time_inside_step(self, metric_timeline, step_time_list):
|
|
378
385
|
"""Compute per step time of metric_timeline."""
|
|
@@ -107,8 +107,8 @@ class BaseTimelineGenerator:
|
|
|
107
107
|
def get_parallel_context():
|
|
108
108
|
"""Get parallel context."""
|
|
109
109
|
try:
|
|
110
|
-
parallel_mode = get_auto_parallel_context("parallel_mode")
|
|
111
|
-
|
|
110
|
+
parallel_mode, stage_num = get_auto_parallel_context("parallel_mode"), get_auto_parallel_context(
|
|
111
|
+
"pipeline_stages")
|
|
112
112
|
except RuntimeError:
|
|
113
113
|
logger.warning("[profiler] the feature of cluster bottleneck analyse "
|
|
114
114
|
"is not supported in offline parse mode.")
|
|
@@ -231,10 +231,11 @@ class BaseTimelineGenerator:
|
|
|
231
231
|
with os.fdopen(os.open(timeline_summary_file_path,
|
|
232
232
|
os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o660), 'w') as json_file:
|
|
233
233
|
json.dump(self._timeline_summary, json_file)
|
|
234
|
-
os.chmod(timeline_summary_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
235
234
|
except (IOError, OSError) as err:
|
|
236
235
|
logger.critical('Error occurred when write timeline summary file: %s', err)
|
|
237
236
|
raise ProfilerIOException()
|
|
237
|
+
if os.path.exists(timeline_summary_file_path):
|
|
238
|
+
os.chmod(timeline_summary_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
238
239
|
|
|
239
240
|
def _get_device_process_label(self):
|
|
240
241
|
"""Get device process label."""
|
|
@@ -274,27 +275,27 @@ class BaseTimelineGenerator:
|
|
|
274
275
|
)
|
|
275
276
|
|
|
276
277
|
# merged_display_list data used for ui page.
|
|
277
|
-
merged_display_list = [
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
278
|
+
merged_display_list = []
|
|
279
|
+
for i in range(len(time_merged_segment_list) // 2):
|
|
280
|
+
merged_display_list.append([display_name, tid, time_merged_segment_list[i * 2],
|
|
281
|
+
(time_merged_segment_list[i * 2 + 1] - time_merged_segment_list[
|
|
282
|
+
i * 2]) * factor, pid])
|
|
282
283
|
|
|
283
284
|
if get_interval_time:
|
|
284
285
|
time_merged_segment_list = time_merged_segment_list[1:-1]
|
|
285
286
|
|
|
286
287
|
# merged_res_list data used to compute overlap with other time_list.
|
|
287
|
-
merged_res_list = [
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
288
|
+
merged_res_list = []
|
|
289
|
+
for i in range(len(time_merged_segment_list) // 2):
|
|
290
|
+
merged_res_list.append(
|
|
291
|
+
[display_name, tid, time_merged_segment_list[i * 2], time_merged_segment_list[i * 2 + 1], pid])
|
|
291
292
|
|
|
292
293
|
# interval_display_list is interval time used for ui page.
|
|
293
|
-
interval_display_list = [
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
294
|
+
interval_display_list = []
|
|
295
|
+
for i in range(len(time_merged_segment_list) // 2):
|
|
296
|
+
interval_display_list.append([display_name, tid, time_merged_segment_list[i * 2],
|
|
297
|
+
(time_merged_segment_list[i * 2 + 1] - time_merged_segment_list[
|
|
298
|
+
i * 2]) * factor, pid])
|
|
298
299
|
|
|
299
300
|
return merged_res_list, interval_display_list, merged_display_list
|
|
300
301
|
|
|
@@ -327,17 +328,16 @@ class BaseTimelineGenerator:
|
|
|
327
328
|
|
|
328
329
|
thread_name_meta_data["tid"] = tid
|
|
329
330
|
thread_name_meta_data.get("args")["name"] = tid_name
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
331
|
+
self._format_meta_data_list.append(thread_name_meta_data)
|
|
332
|
+
|
|
333
|
+
thread_name_meta_data['name'] = "thread_sort_index"
|
|
334
|
+
thread_name_meta_data["args"] = {"sort_index": sort_index}
|
|
335
|
+
self._format_meta_data_list.append(thread_name_meta_data)
|
|
333
336
|
timeline_dict["tid"] = tid
|
|
334
337
|
|
|
335
338
|
if tid_name in self._thread_processed_list:
|
|
336
339
|
return
|
|
337
|
-
|
|
338
340
|
self._thread_processed_list.append(tid_name)
|
|
339
|
-
self._format_meta_data_list.append(thread_name_meta_data)
|
|
340
|
-
self._format_meta_data_list.append(thread_sort_meta_data)
|
|
341
341
|
|
|
342
342
|
def _get_max_scope_name_num(self, timeline_list):
|
|
343
343
|
"""Get the max number of scope level from all operator."""
|
|
@@ -354,12 +354,11 @@ class BaseTimelineGenerator:
|
|
|
354
354
|
# start and end index of time_item in timeline_list.
|
|
355
355
|
scope_name_start_duration_dict = {}
|
|
356
356
|
scope_name_time_list = []
|
|
357
|
-
|
|
358
|
-
tid = "Scope Name"
|
|
357
|
+
sort_idx = {"op_full_name_idx": 0, "scope_name_idx": 0, "invalid_idx": -1}
|
|
359
358
|
for idx, time_item in enumerate(timeline_list):
|
|
360
|
-
scope_name_list = time_item[op_full_name_idx].split('/')[:-1]
|
|
359
|
+
scope_name_list = time_item[sort_idx.get("op_full_name_idx")].split('/')[:-1]
|
|
361
360
|
# skip Default/InitDataSetQueue operator.
|
|
362
|
-
if time_item[op_full_name_idx].startswith("Default/InitDataSetQueue"):
|
|
361
|
+
if time_item[sort_idx.get("op_full_name_idx")].startswith("Default/InitDataSetQueue"):
|
|
363
362
|
scope_name_list = []
|
|
364
363
|
# process scope name of subgraph(Default/Gradients/recompute_Default) only.
|
|
365
364
|
if scope_name_list and scope_name_list[0] != subgraph:
|
|
@@ -370,34 +369,32 @@ class BaseTimelineGenerator:
|
|
|
370
369
|
|
|
371
370
|
# update the start and end index of time_item according to current scope_name
|
|
372
371
|
for scope_name in scope_name_list:
|
|
373
|
-
init_start_end_idx_dict = {'start_item_idx': idx, 'end_item_idx': idx}
|
|
374
372
|
if scope_name not in scope_name_start_duration_dict:
|
|
375
|
-
scope_name_start_duration_dict[scope_name] =
|
|
376
|
-
if scope_name_start_duration_dict.get(scope_name)['start_item_idx'] == invalid_idx:
|
|
377
|
-
scope_name_start_duration_dict[scope_name] =
|
|
373
|
+
scope_name_start_duration_dict[scope_name] = {'start_item_idx': idx, 'end_item_idx': idx}
|
|
374
|
+
if scope_name_start_duration_dict.get(scope_name)['start_item_idx'] == sort_idx.get("invalid_idx"):
|
|
375
|
+
scope_name_start_duration_dict[scope_name] = {'start_item_idx': idx, 'end_item_idx': idx}
|
|
378
376
|
else:
|
|
379
377
|
scope_name_start_duration_dict.get(scope_name)['end_item_idx'] = idx
|
|
380
378
|
# if the key(scope name) in scope_name_start_duration_dict does not appear in scope_name_list,
|
|
381
379
|
# it means this key(scope name) is end and it is append to scope_name_time_list.
|
|
382
380
|
for key, val in scope_name_start_duration_dict.items():
|
|
383
|
-
if val['start_item_idx'] == invalid_idx:
|
|
381
|
+
if val['start_item_idx'] == sort_idx.get("invalid_idx"):
|
|
384
382
|
continue
|
|
385
383
|
if (key not in scope_name_list) \
|
|
386
384
|
or idx == (len(timeline_list) - 1) \
|
|
387
|
-
or time_item[op_full_name_idx] == self._step_end_op_name:
|
|
385
|
+
or time_item[sort_idx.get("op_full_name_idx")] == self._step_end_op_name:
|
|
388
386
|
start_time = timeline_list[val['start_item_idx']][self._start_time_idx]
|
|
389
387
|
duration = (float(timeline_list[val['end_item_idx']][self._start_time_idx]) - float(start_time)) * \
|
|
390
388
|
factor_start_time_to_duration + \
|
|
391
389
|
float(timeline_list[val['end_item_idx']][self._duration_idx])
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
scope_name_start_duration_dict.get(key)['start_item_idx'] = invalid_idx
|
|
390
|
+
scope_name_time_list.append([key, "Scope Name", start_time, duration])
|
|
391
|
+
scope_name_start_duration_dict.get(key)['start_item_idx'] = sort_idx.get("invalid_idx")
|
|
395
392
|
|
|
396
393
|
# x[scope_name_idx] is a scope name like "0-Default".
|
|
397
394
|
# if two element in scope_name_time_list have the same start time,
|
|
398
395
|
# the previous element in list will displayed at the higher line in UI page.
|
|
399
396
|
scope_name_time_list.sort(
|
|
400
|
-
key=lambda x: (float(x[self._start_time_idx]), int(x[scope_name_idx].split('-')[0]))
|
|
397
|
+
key=lambda x: (float(x[self._start_time_idx]), int(x[sort_idx.get("scope_name_idx")].split('-')[0]))
|
|
401
398
|
)
|
|
402
399
|
|
|
403
400
|
return scope_name_time_list
|
|
@@ -451,25 +448,21 @@ class BaseTimelineGenerator:
|
|
|
451
448
|
)
|
|
452
449
|
cluster_analyse_file_path = validate_and_normalize_path(cluster_analyse_file_path)
|
|
453
450
|
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
for
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
os.chmod(cluster_analyse_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
470
|
-
except (IOError, OSError) as err:
|
|
471
|
-
logger.warning(f'Failed to save {cluster_analyse_file_path}. {err}')
|
|
472
|
-
raise ProfilerIOException
|
|
451
|
+
with os.fdopen(os.open(cluster_analyse_file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o660),
|
|
452
|
+
'w') as file_handle:
|
|
453
|
+
csv_writer = csv.writer(file_handle)
|
|
454
|
+
if is_pipeline_parallel:
|
|
455
|
+
header = ['computation_time', 'communication_alone_time', 'stage_time',
|
|
456
|
+
'receive_alone_time', 'collective_communication_alone_time']
|
|
457
|
+
zip_metrices = zip(metrices[0], metrices[1], metrices[2], metrices[3], metrices[4])
|
|
458
|
+
else:
|
|
459
|
+
header = ['computation_time', 'communication_alone_time']
|
|
460
|
+
zip_metrices = zip(metrices[0], metrices[1])
|
|
461
|
+
csv_writer.writerow(header)
|
|
462
|
+
for row_data in zip_metrices:
|
|
463
|
+
row_data = [round(val / unit, time_decimal_digits) for val in row_data]
|
|
464
|
+
csv_writer.writerow(row_data)
|
|
465
|
+
os.chmod(cluster_analyse_file_path, stat.S_IREAD | stat.S_IWRITE)
|
|
473
466
|
|
|
474
467
|
def _register_op_name(self, timeline_list):
|
|
475
468
|
"""Register op name to op name list."""
|