mindspore 2.1.0__cp39-none-any.whl → 2.2.10__cp39-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/__init__.py +4 -1
- mindspore/_akg/akg/build_module.py +5 -6
- mindspore/_akg/akg/composite/build_module.py +46 -19
- mindspore/_akg/akg/composite/split_stitch.py +10 -11
- mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
- mindspore/_akg/akg/tvm/api.py +4 -3
- mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
- mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
- mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
- mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
- mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
- mindspore/_akg/akg/tvm/build_module.py +16 -1
- mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
- mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
- mindspore/_akg/akg/tvm/ir_builder.py +1 -1
- mindspore/_akg/akg/tvm/module.py +1 -2
- mindspore/_akg/akg/tvm/stmt.py +2 -2
- mindspore/_akg/akg/utils/ascend_profilier/__init__.py +0 -0
- mindspore/_akg/akg/utils/ascend_profilier/cann_file_parser.py +76 -0
- mindspore/_akg/akg/utils/ascend_profilier/file_manager.py +56 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_bean.py +23 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_headers.py +8 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_parser.py +42 -0
- mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +65 -0
- mindspore/_akg/akg/utils/composite_op_helper.py +9 -10
- mindspore/_akg/akg/utils/kernel_exec.py +98 -274
- mindspore/_akg/akg/utils/result_analysis.py +4 -24
- mindspore/_akg/akg/utils/tbe_codegen_utils.py +219 -0
- mindspore/_akg/akg/utils/util.py +38 -0
- mindspore/_c_dataengine.cpython-39-aarch64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-39-aarch64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-39-aarch64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -1
- mindspore/_checkparam.py +23 -29
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
- mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
- mindspore/_extends/graph_kernel/splitter.py +4 -11
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
- mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
- mindspore/_extends/parse/__init__.py +12 -15
- mindspore/_extends/parse/namespace.py +7 -33
- mindspore/_extends/parse/parser.py +61 -71
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +74 -104
- mindspore/_extends/parse/trope.py +1 -1
- mindspore/_extends/remote/kernel_build_server.py +25 -7
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_mindspore_offline_debug.cpython-39-aarch64-linux-gnu.so +0 -0
- mindspore/amp.py +47 -11
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +1 -8
- mindspore/boost/boost_cell_wrapper.py +3 -2
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/group_loss_scale_manager.py +8 -7
- mindspore/common/__init__.py +5 -3
- mindspore/common/_jit_fallback_utils.py +6 -0
- mindspore/common/_register_for_adapter.py +2 -0
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +13 -0
- mindspore/common/_utils.py +13 -0
- mindspore/common/api.py +174 -259
- mindspore/common/auto_dynamic_shape.py +494 -0
- mindspore/common/dtype.py +18 -11
- mindspore/common/dump.py +6 -4
- mindspore/common/initializer.py +14 -14
- mindspore/common/jit_config.py +33 -15
- mindspore/common/lazy_inline.py +126 -7
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/parameter.py +51 -41
- mindspore/common/seed.py +4 -4
- mindspore/common/sparse_tensor.py +13 -14
- mindspore/common/tensor.py +243 -165
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +83 -4
- mindspore/communication/management.py +152 -84
- mindspore/config/op_info.config +14 -3
- mindspore/config/super_bar_config.json +4 -2
- mindspore/context.py +152 -61
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +2 -2
- mindspore/dataset/audio/transforms.py +52 -52
- mindspore/dataset/callback/ds_callback.py +16 -2
- mindspore/dataset/core/config.py +68 -51
- mindspore/dataset/engine/cache_client.py +28 -5
- mindspore/dataset/engine/datasets.py +250 -112
- mindspore/dataset/engine/datasets_audio.py +43 -211
- mindspore/dataset/engine/datasets_standard_format.py +16 -35
- mindspore/dataset/engine/datasets_text.py +43 -67
- mindspore/dataset/engine/datasets_user_defined.py +86 -100
- mindspore/dataset/engine/datasets_vision.py +219 -1029
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/samplers.py +1 -1
- mindspore/dataset/engine/validators.py +19 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +101 -127
- mindspore/dataset/text/utils.py +205 -138
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +95 -40
- mindspore/dataset/utils/browse_dataset.py +8 -2
- mindspore/dataset/utils/line_reader.py +17 -19
- mindspore/dataset/vision/__init__.py +3 -3
- mindspore/dataset/vision/c_transforms.py +6 -3
- mindspore/dataset/vision/transforms.py +409 -287
- mindspore/dataset/vision/utils.py +13 -14
- mindspore/dataset/vision/validators.py +11 -1
- mindspore/experimental/map_parameter.py +14 -0
- mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
- mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
- mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
- mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/data_type.h +2 -1
- mindspore/include/api/graph.h +0 -15
- mindspore/include/api/kernel.h +2 -0
- mindspore/include/api/kernel_api.h +37 -12
- mindspore/include/api/model.h +17 -14
- mindspore/include/api/status.h +8 -3
- mindspore/include/api/types.h +37 -4
- mindspore/include/c_api/ms/abstract.h +67 -0
- mindspore/include/c_api/ms/attribute.h +197 -0
- mindspore/include/c_api/ms/base/handle_types.h +43 -0
- mindspore/include/c_api/ms/base/macros.h +32 -0
- mindspore/include/c_api/ms/base/status.h +33 -0
- mindspore/include/c_api/ms/base/types.h +282 -0
- mindspore/include/c_api/ms/context.h +102 -0
- mindspore/include/c_api/ms/graph.h +160 -0
- mindspore/include/c_api/ms/node.h +606 -0
- mindspore/include/c_api/ms/tensor.h +161 -0
- mindspore/include/c_api/ms/value.h +84 -0
- mindspore/include/dataset/constants.h +6 -5
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +13 -13
- mindspore/include/dataset/vision.h +60 -60
- mindspore/include/dataset/vision_ascend.h +5 -6
- mindspore/include/dataset/vision_lite.h +17 -17
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/include/mindapi/base/types.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libjemalloc.so.2 +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/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/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310/aic-ascend310-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +158 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +37 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_proto/libop_proto.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +8928 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.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.2 +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/nn/__init__.py +0 -2
- mindspore/nn/cell.py +313 -74
- mindspore/nn/dynamic_lr.py +21 -21
- mindspore/nn/layer/activation.py +22 -30
- mindspore/nn/layer/basic.py +15 -13
- mindspore/nn/layer/channel_shuffle.py +1 -1
- mindspore/nn/layer/container.py +271 -9
- mindspore/nn/layer/conv.py +323 -204
- mindspore/nn/layer/dense.py +8 -5
- mindspore/nn/layer/embedding.py +33 -27
- mindspore/nn/layer/flash_attention.py +141 -88
- mindspore/nn/layer/image.py +8 -6
- mindspore/nn/layer/math.py +16 -25
- mindspore/nn/layer/normalization.py +107 -66
- mindspore/nn/layer/padding.py +1 -1
- mindspore/nn/layer/pooling.py +131 -109
- mindspore/nn/layer/rnn_cells.py +27 -22
- mindspore/nn/layer/rnns.py +13 -16
- mindspore/nn/layer/thor_layer.py +1 -1
- mindspore/nn/layer/transformer.py +221 -154
- mindspore/nn/learning_rate_schedule.py +9 -1
- mindspore/nn/loss/loss.py +235 -174
- mindspore/nn/optim/ada_grad.py +2 -1
- mindspore/nn/optim/adadelta.py +1 -0
- mindspore/nn/optim/adafactor.py +2 -1
- mindspore/nn/optim/adam.py +7 -4
- mindspore/nn/optim/adamax.py +3 -2
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -3
- mindspore/nn/optim/ftrl.py +6 -5
- mindspore/nn/optim/lamb.py +7 -4
- mindspore/nn/optim/lars.py +1 -1
- mindspore/nn/optim/lazyadam.py +5 -3
- mindspore/nn/optim/momentum.py +2 -1
- mindspore/nn/optim/optimizer.py +53 -4
- mindspore/nn/optim/proximal_ada_grad.py +3 -4
- mindspore/nn/optim/rmsprop.py +4 -3
- mindspore/nn/optim/rprop.py +23 -12
- mindspore/nn/optim/sgd.py +26 -11
- mindspore/nn/optim/thor.py +9 -7
- mindspore/nn/probability/bijector/bijector.py +5 -5
- mindspore/nn/probability/bijector/power_transform.py +27 -27
- mindspore/nn/probability/bijector/softplus.py +3 -3
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
- mindspore/nn/probability/distribution/bernoulli.py +5 -5
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +7 -7
- mindspore/nn/probability/distribution/cauchy.py +0 -1
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +4 -4
- mindspore/nn/probability/distribution/gumbel.py +4 -4
- mindspore/nn/probability/distribution/log_normal.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/poisson.py +4 -4
- mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
- mindspore/nn/probability/distribution/uniform.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +84 -34
- mindspore/nn/wrap/grad_reducer.py +8 -5
- mindspore/nn/wrap/loss_scale.py +105 -42
- mindspore/numpy/array_creations.py +1 -2
- mindspore/numpy/array_ops.py +3 -2
- mindspore/numpy/utils_const.py +5 -5
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +0 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
- mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
- mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
- mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
- mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
- mindspore/ops/_op_impl/aicpu/add.py +3 -3
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/aicpu/eps.py +32 -0
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
- mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
- mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
- mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
- mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
- mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
- mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
- mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
- mindspore/ops/_op_impl/tbe/__init__.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +45 -13
- mindspore/ops/_utils/utils.py +6 -1
- mindspore/ops/_vmap/vmap_array_ops.py +3 -3
- mindspore/ops/_vmap/vmap_base.py +3 -3
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/base.py +37 -10
- mindspore/ops/composite/math_ops.py +5 -4
- mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
- mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
- mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +4 -1
- mindspore/ops/function/array_func.py +174 -193
- mindspore/ops/function/clip_func.py +81 -13
- mindspore/ops/function/debug_func.py +1 -1
- mindspore/ops/function/grad/grad_func.py +18 -9
- mindspore/ops/function/image_func.py +10 -4
- mindspore/ops/function/linalg_func.py +5 -5
- mindspore/ops/function/math_func.py +575 -386
- mindspore/ops/function/nn_func.py +568 -260
- mindspore/ops/function/random_func.py +88 -57
- mindspore/ops/function/sparse_func.py +1 -1
- mindspore/ops/function/sparse_unary_func.py +14 -12
- mindspore/ops/function/vmap_func.py +6 -5
- mindspore/ops/functional.py +15 -10
- mindspore/ops/op_info_register.py +244 -25
- mindspore/ops/operations/__init__.py +28 -19
- mindspore/ops/operations/_grad_ops.py +72 -7
- mindspore/ops/operations/_inner_ops.py +350 -17
- mindspore/ops/operations/_quant_ops.py +4 -8
- mindspore/ops/operations/_sequence_ops.py +42 -0
- mindspore/ops/operations/array_ops.py +68 -282
- mindspore/ops/operations/comm_ops.py +107 -59
- mindspore/ops/operations/custom_ops.py +94 -70
- mindspore/ops/operations/debug_ops.py +8 -4
- mindspore/ops/operations/image_ops.py +18 -12
- mindspore/ops/operations/inner_ops.py +26 -3
- mindspore/ops/operations/math_ops.py +189 -141
- mindspore/ops/operations/nn_ops.py +794 -489
- mindspore/ops/operations/other_ops.py +0 -22
- mindspore/ops/operations/random_ops.py +53 -111
- mindspore/ops/operations/sparse_ops.py +3 -1
- mindspore/ops/primitive.py +24 -18
- mindspore/parallel/_auto_parallel_context.py +68 -8
- mindspore/parallel/_cost_model_context.py +2 -2
- mindspore/parallel/_offload_context.py +17 -3
- mindspore/parallel/_parallel_serialization.py +12 -5
- mindspore/parallel/_ps_context.py +12 -0
- mindspore/parallel/_tensor.py +18 -13
- mindspore/parallel/_transformer/layers.py +5 -3
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +2 -2
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +23 -3
- mindspore/parallel/_utils.py +11 -7
- mindspore/parallel/algo_parameter_config.py +85 -5
- mindspore/parallel/checkpoint_transform.py +19 -12
- mindspore/parallel/shard.py +21 -14
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +4 -2
- mindspore/profiler/envprofiling.py +1 -1
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +2 -2
- mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
- mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
- mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
- mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
- mindspore/profiler/parser/ascend_op_generator.py +6 -6
- mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
- mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
- mindspore/profiler/parser/base_timeline_generator.py +10 -8
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +38 -22
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +2 -2
- mindspore/profiler/parser/minddata_analyzer.py +12 -14
- mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +8 -4
- mindspore/profiler/parser/op_intermediate_parser.py +5 -2
- mindspore/profiler/parser/optime_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +21 -2
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +179 -89
- mindspore/rewrite/api/node.py +102 -19
- mindspore/rewrite/api/node_type.py +5 -1
- mindspore/rewrite/api/pattern_engine.py +1 -1
- mindspore/rewrite/api/scoped_value.py +9 -17
- mindspore/rewrite/api/symbol_tree.py +131 -47
- mindspore/rewrite/ast_helpers/__init__.py +2 -1
- mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +33 -24
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
- mindspore/rewrite/node/call_function.py +79 -0
- mindspore/rewrite/node/cell_container.py +135 -0
- mindspore/rewrite/node/control_flow.py +88 -0
- mindspore/rewrite/{node.py → node/node.py} +273 -234
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +216 -221
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +174 -113
- mindspore/rewrite/parsers/constant_parser.py +9 -6
- mindspore/rewrite/parsers/container_parser.py +9 -7
- mindspore/rewrite/parsers/for_parser.py +36 -15
- mindspore/rewrite/parsers/function_def_parser.py +24 -16
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +196 -25
- mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
- mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
- mindspore/rewrite/parsers/return_parser.py +6 -6
- mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree.py +523 -578
- mindspore/rewrite/symbol_tree_builder.py +9 -193
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +6 -4
- mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
- mindspore/safeguard/rewrite_obfuscation.py +541 -0
- mindspore/scipy/linalg.py +1 -1
- mindspore/scipy/optimize/minimize.py +7 -3
- mindspore/train/_utils.py +7 -3
- mindspore/train/amp.py +323 -123
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/_backup_and_restore.py +2 -12
- mindspore/train/callback/_callback.py +29 -4
- mindspore/train/callback/_checkpoint.py +23 -8
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_landscape.py +4 -4
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
- mindspore/train/callback/_summary_collector.py +15 -8
- mindspore/train/callback/_time_monitor.py +58 -5
- mindspore/train/data_sink.py +5 -11
- mindspore/train/dataset_helper.py +84 -57
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/__init__.py +3 -3
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +3 -2
- mindspore/train/metrics/mean_surface_distance.py +3 -2
- mindspore/train/metrics/metric.py +39 -19
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
- mindspore/train/mind_ir_pb2.py +85 -36
- mindspore/train/model.py +187 -47
- mindspore/train/serialization.py +487 -161
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/_writer_pool.py +3 -2
- mindspore/train/summary/summary_record.py +37 -17
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/train/train_thor/dataset_helper.py +1 -1
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/METADATA +6 -7
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/RECORD +477 -517
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/entry_points.txt +0 -1
- mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
- mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
- mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
- mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
- mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
- mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
- mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
- mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
- mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
- mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
- mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
- mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
- mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
- mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
- mindspore/_akg/akg/tvm/rpc/base.py +0 -182
- mindspore/_akg/akg/tvm/rpc/client.py +0 -436
- mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
- mindspore/_akg/akg/tvm/rpc/server.py +0 -413
- mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
- mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
- mindspore/_extends/graph_kernel/expander.py +0 -80
- mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
- mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
- mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
- mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
- mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
- mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
- mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
- mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
- mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
- mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
- mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
- mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
- mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
- mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
- mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
- mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
- mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
- mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
- mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
- mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
- mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
- mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
- mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
- mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
- mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
- mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
- mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
- mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
- mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
- mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
- mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
- mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
- mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
- mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
- mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
- mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
- mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
- mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
- mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
- mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
- mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/dataset/datapreprocess/__init__.py +0 -20
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/include/api/net.h +0 -142
- mindspore/nn/lr_scheduler.py +0 -262
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/WHEEL +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/top_level.txt +0 -0
mindspore/profiler/profiling.py
CHANGED
|
@@ -48,12 +48,12 @@ from mindspore.profiler.parser.msadvisor_analyzer import Msadvisor
|
|
|
48
48
|
from mindspore.profiler.parser.profiler_info import ProfilerInfo
|
|
49
49
|
from mindspore.common.api import _pynative_executor
|
|
50
50
|
from mindspore.profiler.parser.ascend_msprof_exporter import AscendMsprofExporter
|
|
51
|
-
from mindspore.profiler.parser.ascend_msprof_generator import AscendMsprofDataGenerator
|
|
51
|
+
from mindspore.profiler.parser.ascend_msprof_generator import AscendMsprofDataGenerator, AscendMsprofDataGeneratorOld
|
|
52
52
|
from mindspore.profiler.parser.ascend_fpbp_generator import AscendFPBPGenerator
|
|
53
53
|
from mindspore.profiler.parser.ascend_op_generator import AscendOPGenerator
|
|
54
54
|
from mindspore.profiler.parser.ascend_steptrace_generator import AscendStepTraceGenerator
|
|
55
55
|
from mindspore.profiler.parser.ascend_flops_generator import AscendFlopsGenerator
|
|
56
|
-
from mindspore.profiler.parser.ascend_hccl_generator import AscendHCCLGenerator
|
|
56
|
+
from mindspore.profiler.parser.ascend_hccl_generator import AscendHCCLGenerator, AscendHCCLGeneratorOld
|
|
57
57
|
|
|
58
58
|
INIT_OP_NAME = 'Default/InitDataSetQueue'
|
|
59
59
|
|
|
@@ -71,15 +71,21 @@ AICORE_METRICS_DICT = {
|
|
|
71
71
|
class DeviceSupportParam(Enum):
|
|
72
72
|
"""The device target enum."""
|
|
73
73
|
CPU = ['start', 'start_profile', 'output_path', 'timeline_limit', 'profile_framework', 'op_time']
|
|
74
|
-
GPU = [
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
GPU = [
|
|
75
|
+
'start', 'start_profile', 'output_path', 'data_process', 'timeline_limit', 'sync_enable', 'op_time',
|
|
76
|
+
'profile_framework'
|
|
77
|
+
]
|
|
78
|
+
ASCEND = [
|
|
79
|
+
'start', 'start_profile', 'output_path', 'data_process', 'timeline_limit', 'profile_memory',
|
|
80
|
+
'parallel_strategy', 'profile_communication', 'aicore_metrics', 'l2_cache', 'op_time', 'ascend_job_id',
|
|
81
|
+
'profile_framework'
|
|
82
|
+
]
|
|
79
83
|
|
|
80
84
|
|
|
81
|
-
ALWAYS_VALID_PARAM = [
|
|
82
|
-
|
|
85
|
+
ALWAYS_VALID_PARAM = [
|
|
86
|
+
'start', 'start_profile', 'output_path', 'data_process', 'parallel_strategy', 'l2_cache',
|
|
87
|
+
'ascend_job_id', 'op_time', 'profile_framework'
|
|
88
|
+
]
|
|
83
89
|
|
|
84
90
|
|
|
85
91
|
def _environment_check():
|
|
@@ -161,6 +167,7 @@ def _calculate_dataset_execution_time(input_file, output_file):
|
|
|
161
167
|
csv_writer.writerow(['Operation', 'Stage', 'Occurrences', 'Avg. time (us)', 'Custom Info'])
|
|
162
168
|
for _, v in execution_time_map.items():
|
|
163
169
|
csv_writer.writerow([v.event, v.stage, v.count, v.average_execution, v.custom_info])
|
|
170
|
+
os.chmod(output_file, modes)
|
|
164
171
|
logger.info('Successfully calculate the execution time and write it to file: %s.', output_file)
|
|
165
172
|
|
|
166
173
|
|
|
@@ -188,8 +195,10 @@ def _extract_timeline_item(row, time_line, ts_map):
|
|
|
188
195
|
# Put the instance event into timeline.
|
|
189
196
|
elif start_end == '2':
|
|
190
197
|
title = row['event'] + '::' + row['stage']
|
|
191
|
-
event = {
|
|
192
|
-
|
|
198
|
+
event = {
|
|
199
|
+
'name': title, 'cat': row['module_name'], 'ts': int(row['time_stamp(us)']), 'ph': 'i',
|
|
200
|
+
'pid': row['pid'], 'tid': row['tid'], 'args': {'parent_pid': row['parent_pid']}
|
|
201
|
+
}
|
|
193
202
|
time_line.append(event)
|
|
194
203
|
else:
|
|
195
204
|
logger.warning("Can not map the start time for item: %s.", row)
|
|
@@ -209,8 +218,10 @@ def _parse_host_info(input_file, output_timeline_file, output_memory_file, is_de
|
|
|
209
218
|
time_line = []
|
|
210
219
|
# ts_map is used to store the start time of each event_stage_tid_pid
|
|
211
220
|
ts_map = {}
|
|
212
|
-
memory_header = [
|
|
213
|
-
|
|
221
|
+
memory_header = [
|
|
222
|
+
'tid', 'pid', 'parent_pid', 'module_name', 'event', 'stage', 'level', 'start_end', 'custom_info',
|
|
223
|
+
'memory_usage(kB)', 'time_stamp(us)'
|
|
224
|
+
]
|
|
214
225
|
memory_info = []
|
|
215
226
|
with open(input_file, 'r') as f:
|
|
216
227
|
for row in csv.DictReader(f):
|
|
@@ -226,12 +237,12 @@ def _parse_host_info(input_file, output_timeline_file, output_memory_file, is_de
|
|
|
226
237
|
logger.error("Error occur when analyse line: %s, Details is: %s", row, e)
|
|
227
238
|
continue
|
|
228
239
|
if memory_info:
|
|
229
|
-
with os.fdopen(os.open(output_memory_file, os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
|
|
230
|
-
'w') as csv_file:
|
|
240
|
+
with os.fdopen(os.open(output_memory_file, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as csv_file:
|
|
231
241
|
csv_writer = csv.DictWriter(csv_file, fieldnames=memory_header)
|
|
232
242
|
csv_writer.writeheader()
|
|
233
243
|
for item in memory_info:
|
|
234
244
|
csv_writer.writerow(item)
|
|
245
|
+
os.chmod(output_memory_file, stat.S_IREAD | stat.S_IWRITE)
|
|
235
246
|
else:
|
|
236
247
|
logger.warning("No memory_usage is record in file: %s", input_file)
|
|
237
248
|
|
|
@@ -255,14 +266,28 @@ def _parse_host_info(input_file, output_timeline_file, output_memory_file, is_de
|
|
|
255
266
|
|
|
256
267
|
if time_line:
|
|
257
268
|
timeline_file = validate_and_normalize_path(output_timeline_file)
|
|
258
|
-
with os.fdopen(os.open(timeline_file, os.O_WRONLY | os.O_CREAT | os.O_TRUNC,
|
|
259
|
-
'w') as json_file:
|
|
269
|
+
with os.fdopen(os.open(timeline_file, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600), 'w') as json_file:
|
|
260
270
|
json.dump(time_line, json_file)
|
|
271
|
+
os.chmod(timeline_file, stat.S_IREAD | stat.S_IWRITE)
|
|
261
272
|
else:
|
|
262
273
|
logger.warning("No valid time_stamp is record in file: %s", input_file)
|
|
263
274
|
|
|
264
275
|
|
|
265
|
-
def
|
|
276
|
+
def _ascend_graph_msprof_generator(source_path, model_iteration_dict):
|
|
277
|
+
"""Executing the msprof export mode."""
|
|
278
|
+
try:
|
|
279
|
+
ProfilerInfo.set_export_start_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
280
|
+
msprof_exporter = AscendMsprofExporter(source_path)
|
|
281
|
+
flag = msprof_exporter.export(model_iteration_dict)
|
|
282
|
+
ProfilerInfo.set_export_end_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
283
|
+
return flag
|
|
284
|
+
|
|
285
|
+
except ProfilerException as err:
|
|
286
|
+
logger.warning(err.message)
|
|
287
|
+
return False
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def _ascend_graph_msprof_analyse(source_path, flag):
|
|
266
291
|
"""
|
|
267
292
|
Ascend graph model msprof data analyse.
|
|
268
293
|
|
|
@@ -273,7 +298,10 @@ def _ascend_graph_msprof_analyse(source_path):
|
|
|
273
298
|
df_op_statistic = []
|
|
274
299
|
df_step_trace = []
|
|
275
300
|
try:
|
|
276
|
-
|
|
301
|
+
if flag:
|
|
302
|
+
msprof_analyser = AscendMsprofDataGenerator(os.path.join(source_path, 'summary'))
|
|
303
|
+
else:
|
|
304
|
+
msprof_analyser = AscendMsprofDataGeneratorOld(os.path.join(source_path, 'summary'))
|
|
277
305
|
df_op_summary, df_op_statistic, df_step_trace = msprof_analyser.parse()
|
|
278
306
|
except ProfilerException as err:
|
|
279
307
|
logger.warning(err.message)
|
|
@@ -287,7 +315,8 @@ class Profiler:
|
|
|
287
315
|
This class to enable the profiling of MindSpore neural networks.
|
|
288
316
|
MindSpore users can import the mindspore.Profiler, initialize the Profiler object to start profiling,
|
|
289
317
|
and use Profiler.analyse() to stop profiling and analyse the results.
|
|
290
|
-
Users can visualize the results using the
|
|
318
|
+
Users can visualize the results using the `MindSpore Insight
|
|
319
|
+
<https://www.mindspore.cn/mindinsight/docs/en/r2.2/index.html>`_ tool.
|
|
291
320
|
Now, Profiler supports AICORE operator, AICPU operator, HostCPU operator, memory,
|
|
292
321
|
correspondence, cluster, etc data analysis.
|
|
293
322
|
|
|
@@ -330,11 +359,16 @@ class Profiler:
|
|
|
330
359
|
Default value: ``True`` .
|
|
331
360
|
timeline_limit (int, optional): (Ascend/GPU) Set the maximum storage size of the timeline file (unit M).
|
|
332
361
|
When using this parameter, `op_time` must be set to True. Default value: ``500`` .
|
|
333
|
-
profile_framework (str, optional): (Ascend/GPU)
|
|
334
|
-
["all", "time", "memory", None]
|
|
362
|
+
profile_framework (str, optional): (Ascend/GPU) The host information to collect, it must be one of
|
|
363
|
+
["all", "time", "memory", None], When is not set to None, a subdirectory host_info will be generated in the
|
|
335
364
|
specified profiler directory, which stores the collected memory and time files on the Host side.
|
|
336
365
|
Default: "all".
|
|
337
366
|
|
|
367
|
+
- "all": Record both host timestamp and host memory usage.
|
|
368
|
+
- "time": Only record host timestamp.
|
|
369
|
+
- "memory": Only record host memory usage.
|
|
370
|
+
- None: Not record host information.
|
|
371
|
+
|
|
338
372
|
Raises:
|
|
339
373
|
RuntimeError: When the version of CANN does not match the version of MindSpore,
|
|
340
374
|
MindSpore cannot parse the generated ascend_job_id directory structure.
|
|
@@ -407,9 +441,9 @@ class Profiler:
|
|
|
407
441
|
self._rank_size = 1
|
|
408
442
|
self._rank_id = 0
|
|
409
443
|
self._ascend_profiler = None
|
|
410
|
-
self._ascend_msprof_exporter = None
|
|
411
444
|
self._timeline_size_limit_byte = 500 * 1024 * 1024 # 500MB
|
|
412
445
|
self._parallel_strategy = True
|
|
446
|
+
self._model_iteration_dict = None
|
|
413
447
|
_environment_check()
|
|
414
448
|
# default aicore_metrics type is ArithmeticUtilization
|
|
415
449
|
self._aicore_metrics_id = 0
|
|
@@ -476,6 +510,25 @@ class Profiler:
|
|
|
476
510
|
|
|
477
511
|
return job_start_time
|
|
478
512
|
|
|
513
|
+
@staticmethod
|
|
514
|
+
def _parse_info_json(info_file):
|
|
515
|
+
"""
|
|
516
|
+
Parse info log file, get the rank id and device id of the job.
|
|
517
|
+
Args:
|
|
518
|
+
input_file (str): The file path of the parse info log file.
|
|
519
|
+
|
|
520
|
+
Returns:
|
|
521
|
+
rank id, device id
|
|
522
|
+
"""
|
|
523
|
+
with open(info_file, "r") as f:
|
|
524
|
+
info_dict = json.load(f)
|
|
525
|
+
|
|
526
|
+
rank_id = info_dict.get("rank_id", 0)
|
|
527
|
+
dev_info = info_dict.get("DeviceInfo", [])
|
|
528
|
+
dev_id = dev_info[0].get("id", -1)
|
|
529
|
+
|
|
530
|
+
return str(rank_id), str(dev_id)
|
|
531
|
+
|
|
479
532
|
def op_analyse(self, op_name, device_id=None):
|
|
480
533
|
"""
|
|
481
534
|
Profiler users can use this interface to obtain operator performance data.
|
|
@@ -487,8 +540,8 @@ class Profiler:
|
|
|
487
540
|
parse. If this interface is used for offline data parsing, Default: ``0`` .
|
|
488
541
|
|
|
489
542
|
Raises:
|
|
490
|
-
TypeError: If the op_name parameter type is incorrect.
|
|
491
|
-
TypeError: If the device_id parameter type is incorrect.
|
|
543
|
+
TypeError: If the `op_name` parameter type is incorrect.
|
|
544
|
+
TypeError: If the `device_id` parameter type is incorrect.
|
|
492
545
|
RuntimeError: If MindSpore runs on Ascend, this interface cannot be used.
|
|
493
546
|
|
|
494
547
|
Supported Platforms:
|
|
@@ -501,12 +554,12 @@ class Profiler:
|
|
|
501
554
|
>>> # Profiler init.
|
|
502
555
|
>>> profiler = Profiler()
|
|
503
556
|
>>> # Train Model or eval Model, taking LeNet5 as an example.
|
|
504
|
-
>>> # Refer to https://gitee.com/mindspore/docs/blob/r2.
|
|
557
|
+
>>> # Refer to https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/lenet.py
|
|
505
558
|
>>> net = LeNet5()
|
|
506
559
|
>>> optimizer = nn.Momentum(net.trainable_params(), learning_rate=0.1, momentum=0.9)
|
|
507
560
|
>>> loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
|
|
508
561
|
>>> # Create the dataset taking MNIST as an example.
|
|
509
|
-
>>> # Refer to https://gitee.com/mindspore/docs/blob/r2.
|
|
562
|
+
>>> # Refer to https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/mnist.py
|
|
510
563
|
>>> dataloader = create_dataset()
|
|
511
564
|
>>> model = Model(net, loss, optimizer)
|
|
512
565
|
>>> model.train(5, dataloader, dataset_sink_mode=False)
|
|
@@ -550,7 +603,34 @@ class Profiler:
|
|
|
550
603
|
Offline mode isused in abnormal exit scenario. This parameter should be set to ``None``
|
|
551
604
|
for online mode. Default: ``None``.
|
|
552
605
|
"""
|
|
606
|
+
self._analyse(offline_path=offline_path)
|
|
607
|
+
|
|
608
|
+
def _analyse(self, offline_path=None, model_iteration_dict=None):
|
|
609
|
+
"""
|
|
610
|
+
Collect and analyze training performance data, support calls during and after training. The example shows above.
|
|
611
|
+
|
|
612
|
+
Args:
|
|
613
|
+
offline_path (Union[str, None], optional): The data path which need to be analysed with offline mode.
|
|
614
|
+
Offline mode isused in abnormal exit scenario. This parameter should be set to ``None``
|
|
615
|
+
for online mode. Default: ``None``.
|
|
616
|
+
model_iteration_dict: Dictionary with model id as the key and iteration id as the value, Default: ``None``.
|
|
617
|
+
"""
|
|
618
|
+
self._model_iteration_dict = model_iteration_dict
|
|
619
|
+
|
|
620
|
+
self._init_profiler_info()
|
|
621
|
+
self._is_support_step_info_collect()
|
|
622
|
+
parallel_mode = get_auto_parallel_context("parallel_mode")
|
|
623
|
+
stage_num = get_auto_parallel_context("pipeline_stages")
|
|
624
|
+
|
|
625
|
+
ProfilerInfo.set_parallel_info(parallel_mode, stage_num)
|
|
626
|
+
ProfilerInfo.set_rank_size(self._rank_size)
|
|
627
|
+
ProfilerInfo.set_heterogeneous(self._is_heterogeneous)
|
|
553
628
|
if offline_path:
|
|
629
|
+
if self._is_offline_parser():
|
|
630
|
+
ProfilerInfo.set_analyse_start_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
631
|
+
self._ascend_graph_analyse()
|
|
632
|
+
ProfilerInfo.set_analyse_end_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
633
|
+
ProfilerInfo.save(self._output_path)
|
|
554
634
|
_offline_parse(offline_path)
|
|
555
635
|
return
|
|
556
636
|
if self._msprof_enable:
|
|
@@ -584,15 +664,7 @@ class Profiler:
|
|
|
584
664
|
logger.warning("The parameter 'profile_framework' is not support for CPU, so there no host_info"
|
|
585
665
|
" directory in the output path.")
|
|
586
666
|
logger.info("Profiling: all the data have been analyzed.")
|
|
587
|
-
self._init_profiler_info()
|
|
588
|
-
self._is_support_step_info_collect()
|
|
589
|
-
parallel_mode = get_auto_parallel_context("parallel_mode")
|
|
590
|
-
stage_num = get_auto_parallel_context("pipeline_stages")
|
|
591
|
-
|
|
592
|
-
ProfilerInfo.set_parallel_info(parallel_mode, stage_num)
|
|
593
667
|
ProfilerInfo.set_analyse_end_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
594
|
-
ProfilerInfo.set_rank_size(self._rank_size)
|
|
595
|
-
ProfilerInfo.set_heterogeneous(self._is_heterogeneous)
|
|
596
668
|
ProfilerInfo.save(self._output_path)
|
|
597
669
|
|
|
598
670
|
def start(self):
|
|
@@ -602,7 +674,7 @@ class Profiler:
|
|
|
602
674
|
Raises:
|
|
603
675
|
RuntimeError: If the profiler has already started.
|
|
604
676
|
RuntimeError: If MD profiling has stopped, repeated start action is not supported.
|
|
605
|
-
RuntimeError: If the start_profile parameter is not set or is set to True
|
|
677
|
+
RuntimeError: If the `start_profile` parameter is not set or is set to ``True``.
|
|
606
678
|
|
|
607
679
|
Examples:
|
|
608
680
|
>>> from mindspore.train import Callback
|
|
@@ -724,6 +796,8 @@ class Profiler:
|
|
|
724
796
|
|
|
725
797
|
self._stop_time = int(time.time() * 10000000)
|
|
726
798
|
ProfilerInfo.set_profiling_stop_time(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
|
|
799
|
+
self._init_profiler_info()
|
|
800
|
+
ProfilerInfo.save(self._output_path)
|
|
727
801
|
logger.info("Profiling: stop time: %d", self._stop_time)
|
|
728
802
|
|
|
729
803
|
def _profiler_init(self, kwargs):
|
|
@@ -749,7 +823,6 @@ class Profiler:
|
|
|
749
823
|
|
|
750
824
|
if self._device_target == DeviceTarget.ASCEND.value:
|
|
751
825
|
self._ascend_profiler = c_expression.Profiler.get_instance("Ascend")
|
|
752
|
-
self._ascend_msprof_exporter = AscendMsprofExporter(self._output_path)
|
|
753
826
|
self._get_devid_rankid_and_devtarget()
|
|
754
827
|
|
|
755
828
|
def _init_profiler_info(self):
|
|
@@ -827,7 +900,6 @@ class Profiler:
|
|
|
827
900
|
# use context interface to open profiling, for the new mindspore version(after 2020.5.21)
|
|
828
901
|
self._ascend_profiler = c_expression.Profiler.get_instance("Ascend")
|
|
829
902
|
self._ascend_profiler.init(self._output_path, int(self._dev_id), self._ascend_profiling_options)
|
|
830
|
-
self._ascend_msprof_exporter = AscendMsprofExporter(self._output_path)
|
|
831
903
|
base_profiling_container_path = os.path.join(self._output_path, "container")
|
|
832
904
|
container_path = os.path.join(base_profiling_container_path, self._dev_id)
|
|
833
905
|
data_path = os.path.join(container_path, "data")
|
|
@@ -965,8 +1037,6 @@ class Profiler:
|
|
|
965
1037
|
else:
|
|
966
1038
|
logger.info("No need to stop profiler because profiler has been stopped.")
|
|
967
1039
|
# export op data before analyse
|
|
968
|
-
if self._op_time:
|
|
969
|
-
self._ascend_msprof_exporter.export(self._start_time, support_step_trace=False)
|
|
970
1040
|
self._ascend_graph_analyse()
|
|
971
1041
|
|
|
972
1042
|
def _minddata_analyse(self, source_path):
|
|
@@ -1040,8 +1110,11 @@ class Profiler:
|
|
|
1040
1110
|
aicpu_intermediate_detail_path = validate_and_normalize_path(aicpu_intermediate_detail_path)
|
|
1041
1111
|
framework_raw_path = validate_and_normalize_path(framework_raw_path)
|
|
1042
1112
|
|
|
1043
|
-
|
|
1044
|
-
|
|
1113
|
+
if context.get_context("mode") == context.GRAPH_MODE:
|
|
1114
|
+
output_timeline_data_path = os.path.join(self._output_path, f'output_timeline_data_{dev_id}.txt')
|
|
1115
|
+
output_timeline_data_path = validate_and_normalize_path(output_timeline_data_path)
|
|
1116
|
+
else:
|
|
1117
|
+
output_timeline_data_path = None
|
|
1045
1118
|
|
|
1046
1119
|
op_analyser = AscendOPGenerator(op_summary, op_statistic, dynamic_status)
|
|
1047
1120
|
op_analyser.parse()
|
|
@@ -1070,7 +1143,7 @@ class Profiler:
|
|
|
1070
1143
|
finally:
|
|
1071
1144
|
pass
|
|
1072
1145
|
|
|
1073
|
-
def _ascend_timeline_analyse(self,
|
|
1146
|
+
def _ascend_timeline_analyse(self, op_summary, steptrace):
|
|
1074
1147
|
"""Analyse timeline info."""
|
|
1075
1148
|
try:
|
|
1076
1149
|
logger.info("Profiling: analyzing the timeline data")
|
|
@@ -1098,7 +1171,7 @@ class Profiler:
|
|
|
1098
1171
|
|
|
1099
1172
|
def _ascend_flops_analyse(self, op_summary):
|
|
1100
1173
|
"""Get op FLOPs from op_summary, write output_op_flops_x.csv."""
|
|
1101
|
-
if
|
|
1174
|
+
if 'vector_fops' not in op_summary.dtype.names and 'cube_fops' not in op_summary.dtype.names:
|
|
1102
1175
|
logger.warning("[Profiler] Can not found cube fops and vector fops data in the op summary.")
|
|
1103
1176
|
return
|
|
1104
1177
|
|
|
@@ -1135,21 +1208,24 @@ class Profiler:
|
|
|
1135
1208
|
finally:
|
|
1136
1209
|
pass
|
|
1137
1210
|
|
|
1138
|
-
def _ascend_graph_hccl_analyse(self, source_path):
|
|
1211
|
+
def _ascend_graph_hccl_analyse(self, source_path, steptrace, flag):
|
|
1139
1212
|
"""Analyse hccl profiler info."""
|
|
1140
1213
|
if not self._profile_communication:
|
|
1141
1214
|
return
|
|
1142
1215
|
if self._profile_communication and context.get_context("mode") == context.PYNATIVE_MODE:
|
|
1143
1216
|
logger.warning("[Profiler]The parameter profile_communication is not supported on Ascend "
|
|
1144
1217
|
"PyNative mode currently.")
|
|
1218
|
+
return
|
|
1145
1219
|
try:
|
|
1146
1220
|
logger.info("Profiling: analyzing the hccl profiler info.")
|
|
1147
1221
|
dev_id = self._rank_id if self._device_target == DeviceTarget.ASCEND.value else self._dev_id
|
|
1148
1222
|
|
|
1149
1223
|
hccl_raw_path = os.path.join(self._output_path, f'hccl_raw_{dev_id}.csv')
|
|
1150
1224
|
hccl_raw_path = validate_and_normalize_path(hccl_raw_path)
|
|
1151
|
-
|
|
1152
|
-
|
|
1225
|
+
if flag:
|
|
1226
|
+
hccl_analyse = AscendHCCLGenerator(os.path.join(source_path, 'timeline'), steptrace)
|
|
1227
|
+
else:
|
|
1228
|
+
hccl_analyse = AscendHCCLGeneratorOld(os.path.join(source_path, 'timeline'))
|
|
1153
1229
|
hccl_analyse.parse()
|
|
1154
1230
|
hccl_analyse.write(hccl_raw_path)
|
|
1155
1231
|
|
|
@@ -1191,9 +1267,14 @@ class Profiler:
|
|
|
1191
1267
|
source_path = os.path.join(self._output_path, job_id)
|
|
1192
1268
|
self._minddata_analyse(source_path)
|
|
1193
1269
|
if self._op_time:
|
|
1194
|
-
|
|
1270
|
+
flag = _ascend_graph_msprof_generator(source_path, self._model_iteration_dict)
|
|
1271
|
+
if not flag:
|
|
1272
|
+
logger.warning('Current driver package not support all export mode, use single export mode, '
|
|
1273
|
+
'this may lead to performance degradation. Suggest upgrading the driver package.')
|
|
1274
|
+
ProfilerInfo.set_export_flag(flag)
|
|
1275
|
+
op_summary, op_statistic, steptrace = _ascend_graph_msprof_analyse(source_path, flag)
|
|
1195
1276
|
self._ascend_op_analyse(op_summary, op_statistic, self._dynamic_status)
|
|
1196
|
-
self._ascend_timeline_analyse(
|
|
1277
|
+
self._ascend_timeline_analyse(op_summary, steptrace)
|
|
1197
1278
|
graph_ids = np.unique(op_summary['Model ID']).tolist()
|
|
1198
1279
|
points = self._ascend_fpbp_analyse(op_summary, steptrace)
|
|
1199
1280
|
if len(graph_ids) == 1:
|
|
@@ -1202,7 +1283,7 @@ class Profiler:
|
|
|
1202
1283
|
self._ascend_dynamic_net_analyse(op_summary)
|
|
1203
1284
|
self._ascend_flops_analyse(op_summary)
|
|
1204
1285
|
self._ascend_graph_memory_analyse(points)
|
|
1205
|
-
self._ascend_graph_hccl_analyse(source_path)
|
|
1286
|
+
self._ascend_graph_hccl_analyse(source_path, steptrace, flag)
|
|
1206
1287
|
self._ascend_graph_msadvisor_analyse(job_id)
|
|
1207
1288
|
ProfilerInfo.set_graph_ids(graph_ids)
|
|
1208
1289
|
|
|
@@ -1326,29 +1407,37 @@ class Profiler:
|
|
|
1326
1407
|
point_info_file_path = validate_and_normalize_path(point_info_file_path)
|
|
1327
1408
|
|
|
1328
1409
|
if self._device_target and self._device_target == DeviceTarget.GPU.value:
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1410
|
+
if context.get_context("mode") != context.PYNATIVE_MODE:
|
|
1411
|
+
input_file_path = os.path.join(self._output_path, f'step_trace_profiling_{self._dev_id}.txt')
|
|
1412
|
+
input_file_path = validate_and_normalize_path(input_file_path)
|
|
1413
|
+
parser = GpuStepTraceParser(input_dir=input_file_path,
|
|
1414
|
+
output_file_path=step_trace_intermediate_file_path,
|
|
1415
|
+
is_training_mode=is_training_mode_flag,
|
|
1416
|
+
is_gpu_kernel_async_launch=is_gpu_kernel_async_launch_flag)
|
|
1417
|
+
parser.parse_and_save()
|
|
1418
|
+
point_info = parser.record_point_info(point_info_file_path)
|
|
1419
|
+
# print parser result
|
|
1420
|
+
parser.show()
|
|
1421
|
+
logger.info("Finish saving the intermediate result: %s", step_trace_intermediate_file_path)
|
|
1422
|
+
logger.info("The point info is: %s", point_info)
|
|
1423
|
+
|
|
1424
|
+
return point_info, is_training_mode_flag
|
|
1425
|
+
return {}, is_training_mode_flag
|
|
1426
|
+
|
|
1427
|
+
# whether keep the first step
|
|
1428
|
+
skip_first_step_flag = framework_parser.check_op_name(INIT_OP_NAME)
|
|
1429
|
+
# recognize inference or training mode
|
|
1430
|
+
is_training_mode_flag = framework_parser.check_op_name("Gradients")
|
|
1431
|
+
# parser the step trace files and save the result to disk
|
|
1432
|
+
source_path = validate_and_normalize_path(source_path)
|
|
1433
|
+
parser = AscendStepTraceParser(input_dir=source_path,
|
|
1434
|
+
output_file_path=step_trace_intermediate_file_path,
|
|
1435
|
+
skip_first_step=skip_first_step_flag,
|
|
1436
|
+
is_training_mode=is_training_mode_flag)
|
|
1437
|
+
parser.set_task_id_op_name_dict(framework_parser.to_task_id_full_op_name_dict())
|
|
1438
|
+
parser.parse_and_save()
|
|
1439
|
+
point_info = parser.record_point_info(point_info_file_path)
|
|
1440
|
+
|
|
1352
1441
|
# print parser result
|
|
1353
1442
|
parser.show()
|
|
1354
1443
|
logger.info("Finish saving the intermediate result: %s", step_trace_intermediate_file_path)
|
|
@@ -1389,15 +1478,17 @@ class Profiler:
|
|
|
1389
1478
|
job_id = self._ascend_job_id.rstrip('/').split('/')[-1]
|
|
1390
1479
|
if job_id.startswith('PROF'):
|
|
1391
1480
|
device_dir = [dir for dir in os.listdir(self._ascend_job_id) if dir.startswith('device')]
|
|
1481
|
+
info_file_path = get_file_path(os.path.join(self._ascend_job_id, device_dir[0]), "info.json")
|
|
1482
|
+
training_rank_id, _ = self._parse_info_json(info_file_path)
|
|
1483
|
+
self._rank_id = int(training_rank_id)
|
|
1392
1484
|
return os.path.join(job_id, device_dir[0])
|
|
1393
1485
|
return job_id
|
|
1394
1486
|
|
|
1395
1487
|
job_id = ""
|
|
1396
|
-
job_dirs = filter(lambda item: item.startswith('JOB') or item.startswith('PROF') and
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
reverse=True)
|
|
1488
|
+
job_dirs = filter(lambda item: item.startswith('JOB') or item.startswith('PROF') and os.path.isdir(
|
|
1489
|
+
os.path.join(self._output_path, item)), os.listdir(self._output_path))
|
|
1490
|
+
sorted_job_dirs = sorted(
|
|
1491
|
+
job_dirs, key=lambda x: os.path.getmtime(os.path.join(self._output_path, x)), reverse=True)
|
|
1401
1492
|
|
|
1402
1493
|
for dir_name in sorted_job_dirs:
|
|
1403
1494
|
if dir_name.startswith('PROF'):
|
|
@@ -1414,22 +1505,21 @@ class Profiler:
|
|
|
1414
1505
|
"profiler will ignore this job dir.", job_dir)
|
|
1415
1506
|
continue
|
|
1416
1507
|
|
|
1417
|
-
|
|
1508
|
+
info_file_path = get_file_path(job_dir, "info.json")
|
|
1509
|
+
if info_file_path is None:
|
|
1510
|
+
logger.warning("Find profiling job path %s, but info.json not exist, "
|
|
1511
|
+
"profiler will ignore this job dir.", job_dir)
|
|
1512
|
+
continue
|
|
1513
|
+
|
|
1514
|
+
job_start_time = self._parse_start_log(start_file_path)
|
|
1515
|
+
_, training_device_id = self._parse_info_json(info_file_path)
|
|
1516
|
+
|
|
1418
1517
|
if self._dev_id != training_device_id:
|
|
1419
1518
|
logger.debug("Find profiling find job path %s, but not current training device id. "
|
|
1420
1519
|
"Current training device id %s, but job path device id: %s, "
|
|
1421
1520
|
"profiler will ignore this job dir.", job_dir, self._dev_id, training_device_id)
|
|
1422
1521
|
continue
|
|
1423
1522
|
|
|
1424
|
-
if not os.listdir(os.path.join(job_dir, 'data')):
|
|
1425
|
-
continue
|
|
1426
|
-
|
|
1427
|
-
job_start_time = self._parse_start_log(start_file_path)
|
|
1428
|
-
if not job_start_time:
|
|
1429
|
-
logger.warning("Find profiling job path %s, but fail to get job start info, "
|
|
1430
|
-
"profiler will ignore this job dir.", job_start_time)
|
|
1431
|
-
continue
|
|
1432
|
-
|
|
1433
1523
|
if int(job_start_time) < self._start_time:
|
|
1434
1524
|
logger.warning("Find profiling job path %s, but start_time(%d) is earlier than this training "
|
|
1435
1525
|
"start_time(%d), profiler will ignore this job dir.",
|
|
@@ -1586,7 +1676,7 @@ class Profiler:
|
|
|
1586
1676
|
self._profile_framework = kwargs.pop("profile_framework", "all")
|
|
1587
1677
|
if self._profile_framework not in ["memory", "time", "all", None]:
|
|
1588
1678
|
logger.warning(f"For '{self.__class__.__name__}', the parameter profile_framework must be one of ['memory',"
|
|
1589
|
-
f" 'time', 'all', None]
|
|
1679
|
+
f" 'time', 'all', None], but got {self._profile_framework}, it will be set to 'all'.")
|
|
1590
1680
|
self._profile_framework = "all"
|
|
1591
1681
|
|
|
1592
1682
|
def _host_info_analyse(self):
|