mindspore 2.5.0__cp310-cp310-win_amd64.whl → 2.6.0rc1__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +6 -4
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -33
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +19 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +24 -193
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +97 -74
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +4 -4
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +2 -2
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +4 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -1
- mindspore/common/_stub_tensor.py +5 -10
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +1915 -3287
- mindspore/common/api.py +341 -354
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +5 -2
- mindspore/common/dump.py +7 -5
- mindspore/common/file_system.py +3 -0
- mindspore/common/hook_handle.py +5 -3
- mindspore/common/initializer.py +10 -6
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +2 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +106 -39
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +297 -714
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +47 -2
- mindspore/communication/comm_func.py +70 -53
- mindspore/communication/management.py +83 -17
- mindspore/context.py +214 -560
- mindspore/dataset/__init__.py +44 -20
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/core/config.py +3 -3
- mindspore/dataset/engine/cache_client.py +1 -1
- mindspore/dataset/engine/datasets.py +102 -120
- mindspore/dataset/engine/datasets_audio.py +22 -22
- mindspore/dataset/engine/datasets_standard_format.py +43 -24
- mindspore/dataset/engine/datasets_text.py +78 -85
- mindspore/dataset/engine/datasets_user_defined.py +108 -76
- mindspore/dataset/engine/datasets_vision.py +111 -108
- mindspore/dataset/engine/iterators.py +5 -3
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/samplers.py +279 -57
- mindspore/dataset/engine/serializer_deserializer.py +2 -1
- mindspore/dataset/engine/validators.py +10 -0
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/transforms.py +3 -3
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/device_context/ascend/op_debug.py +60 -1
- mindspore/device_context/ascend/op_tuning.py +0 -4
- mindspore/device_manager.py +39 -3
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +22 -26
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +4 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +40 -22
- mindspore/experimental/optim/radam.py +5 -5
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -81
- mindspore/hal/event.py +38 -55
- mindspore/hal/memory.py +93 -144
- mindspore/hal/stream.py +81 -125
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +40 -2
- mindspore/mindrecord/__init__.py +20 -7
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +131 -700
- mindspore/mint/distributed/__init__.py +5 -1
- mindspore/mint/distributed/distributed.py +194 -109
- mindspore/mint/linalg/__init__.py +2 -0
- mindspore/mint/nn/__init__.py +280 -18
- mindspore/mint/nn/functional.py +282 -64
- mindspore/mint/nn/layer/__init__.py +4 -0
- mindspore/mint/nn/layer/_functions.py +7 -3
- mindspore/mint/nn/layer/activation.py +120 -13
- mindspore/mint/nn/layer/conv.py +218 -24
- mindspore/mint/nn/layer/normalization.py +15 -16
- mindspore/mint/nn/layer/padding.py +1 -1
- mindspore/mint/nn/layer/pooling.py +66 -1
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1250 -176
- mindspore/nn/layer/activation.py +23 -21
- mindspore/nn/layer/basic.py +22 -16
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +9 -8
- mindspore/nn/layer/normalization.py +48 -42
- mindspore/nn/layer/pooling.py +75 -31
- mindspore/nn/layer/transformer.py +11 -10
- mindspore/nn/learning_rate_schedule.py +4 -2
- mindspore/nn/loss/loss.py +27 -19
- mindspore/nn/optim/ada_grad.py +6 -5
- mindspore/nn/optim/adadelta.py +9 -7
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +16 -12
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +2 -2
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +9 -7
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +178 -117
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +3 -3
- mindspore/numpy/array_creations.py +3 -3
- mindspore/numpy/array_ops.py +1 -1
- mindspore/numpy/math_ops.py +4 -4
- mindspore/numpy/utils.py +1 -2
- mindspore/numpy/utils_const.py +1 -2
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +3 -2
- mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
- mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
- mindspore/ops/_vmap/vmap_array_ops.py +7 -6
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
- mindspore/ops/_vmap/vmap_math_ops.py +4 -7
- mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
- mindspore/ops/auto_generate/gen_extend_func.py +281 -135
- mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
- mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
- mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +19 -24
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +2 -3
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +28 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +1629 -2345
- mindspore/ops/function/clip_func.py +38 -45
- mindspore/ops/function/debug_func.py +36 -44
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +46 -78
- mindspore/ops/function/math_func.py +3035 -3705
- mindspore/ops/function/nn_func.py +676 -241
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +17 -30
- mindspore/ops/function/random_func.py +204 -361
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +5 -5
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +6 -4
- mindspore/ops/functional_overload.py +547 -4
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +10 -5
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_grad_ops.py +1 -10
- mindspore/ops/operations/_inner_ops.py +5 -76
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +37 -22
- mindspore/ops/operations/comm_ops.py +150 -107
- mindspore/ops/operations/custom_ops.py +221 -23
- mindspore/ops/operations/debug_ops.py +115 -16
- mindspore/ops/operations/inner_ops.py +1 -1
- mindspore/ops/operations/linalg_ops.py +1 -58
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +746 -79
- mindspore/ops/operations/math_ops.py +21 -18
- mindspore/ops/operations/nn_ops.py +65 -191
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +43 -32
- mindspore/ops/tensor_method.py +232 -13
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
- mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
- mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
- mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
- mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
- mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
- mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
- mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
- mindspore/ops_generate/{template.py → common/template.py} +96 -84
- mindspore/ops_generate/gen_ops.py +23 -325
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
- mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
- mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
- mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
- mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
- mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
- mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
- mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
- mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
- mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
- mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
- mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
- mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
- mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
- mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
- mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +6 -2
- mindspore/parallel/_auto_parallel_context.py +133 -6
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +95 -4
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +198 -25
- mindspore/parallel/algo_parameter_config.py +3 -3
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +656 -37
- mindspore/parallel/cluster/process_entity/_api.py +151 -19
- mindspore/parallel/cluster/run.py +1 -1
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +24 -13
- mindspore/parallel/shard.py +137 -61
- mindspore/parallel/transform_safetensors.py +287 -95
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +9 -5
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
- mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
- mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
- mindspore/profiler/common/constant.py +12 -0
- mindspore/profiler/common/msprof_cmd_tool.py +42 -23
- mindspore/profiler/common/path_manager.py +24 -0
- mindspore/profiler/common/profiler_context.py +26 -2
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_parameters.py +59 -18
- mindspore/profiler/common/profiler_path_manager.py +66 -7
- mindspore/profiler/dynamic_profiler.py +112 -79
- mindspore/profiler/envprofiler.py +26 -1
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +57 -14
- mindspore/profiler/platform/npu_profiler.py +33 -7
- mindspore/profiler/profiler.py +541 -45
- mindspore/profiler/profiler_action_controller.py +1 -1
- mindspore/profiler/profiler_interface.py +4 -0
- mindspore/profiler/schedule.py +57 -22
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +25 -14
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +2 -2
- mindspore/runtime/executor.py +40 -11
- mindspore/runtime/memory.py +25 -8
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +35 -7
- mindspore/train/amp.py +1 -1
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +24 -40
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_flops_collector.py +2 -3
- mindspore/train/callback/_history.py +7 -4
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +8 -13
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +4 -5
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +8 -6
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +19 -12
- mindspore/train/model.py +176 -103
- mindspore/train/serialization.py +246 -988
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +3 -2
- mindspore/utils/dryrun.py +4 -2
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_constants.py +0 -190
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
- /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -21,6 +21,7 @@ from typing import Dict, List, Optional
|
|
|
21
21
|
|
|
22
22
|
from mindspore import log as logger
|
|
23
23
|
from mindspore.profiler.common.command_executor import CommandExecutor
|
|
24
|
+
from mindspore.profiler.common.constant import ExportType
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class MsprofCmdTool:
|
|
@@ -37,22 +38,30 @@ class MsprofCmdTool:
|
|
|
37
38
|
self._msprof_profile_path = msprof_profile_path
|
|
38
39
|
self._check_environment()
|
|
39
40
|
|
|
40
|
-
def run_ms_export_cmd(self) -> None:
|
|
41
|
-
"""Run msprof export command.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
def run_ms_export_cmd(self, analyse_export_type: List[str]) -> None:
|
|
42
|
+
"""Run msprof export command.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
analyse_export_type (List[str]): The type of data to export.
|
|
46
|
+
"""
|
|
47
|
+
export_cmd = [
|
|
48
|
+
self._MSPROF_CMD,
|
|
49
|
+
"--export=on",
|
|
50
|
+
f"--output={self._msprof_profile_path}",
|
|
51
|
+
]
|
|
52
|
+
if ExportType.Text.value in analyse_export_type:
|
|
53
|
+
CommandExecutor.execute(export_cmd)
|
|
54
|
+
if ExportType.Db.value in analyse_export_type:
|
|
55
|
+
export_cmd.append("--type=db")
|
|
56
|
+
CommandExecutor.execute(export_cmd)
|
|
57
|
+
|
|
58
|
+
def run_ms_py_export_cmd(self, model_id: int, iter_list: List[int], analyse_export_type: List[str]) -> None:
|
|
51
59
|
"""Export timeline and summary data for the specified model and iterations.
|
|
52
60
|
|
|
53
61
|
Args:
|
|
54
62
|
model_id (int): The ID of the model to export data for.
|
|
55
63
|
iter_list (List[int]): A list of iteration IDs to export data for.
|
|
64
|
+
analyse_export_type (List[str]): The type of data to export.
|
|
56
65
|
|
|
57
66
|
Raises:
|
|
58
67
|
FileNotFoundError: If msprof.py path cannot be found.
|
|
@@ -66,24 +75,34 @@ class MsprofCmdTool:
|
|
|
66
75
|
export_cmd = ["python3", script_path]
|
|
67
76
|
iter_param = self._get_iteration_params(model_id, iter_list)
|
|
68
77
|
|
|
69
|
-
|
|
78
|
+
if ExportType.Text.value in analyse_export_type:
|
|
79
|
+
for export_type in ("timeline", "summary"):
|
|
80
|
+
cmd = (
|
|
81
|
+
export_cmd
|
|
82
|
+
+ ["export", export_type, "-dir", self._msprof_profile_path]
|
|
83
|
+
+ iter_param
|
|
84
|
+
)
|
|
85
|
+
CommandExecutor.execute(cmd)
|
|
86
|
+
if ExportType.Db.value in analyse_export_type:
|
|
70
87
|
cmd = (
|
|
71
88
|
export_cmd
|
|
72
|
-
+ ["export",
|
|
73
|
-
+ iter_param
|
|
89
|
+
+ ["export", "db", "-dir", self._msprof_profile_path]
|
|
74
90
|
)
|
|
75
91
|
CommandExecutor.execute(cmd)
|
|
76
92
|
|
|
77
|
-
def run_ms_analyze_cmd(self) -> None:
|
|
93
|
+
def run_ms_analyze_cmd(self, analyse_export_type: List[str]) -> None:
|
|
78
94
|
"""Run msprof analyze command."""
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
95
|
+
analyze_cmd = [
|
|
96
|
+
self._MSPROF_CMD,
|
|
97
|
+
"--analyze=on",
|
|
98
|
+
"--rule=communication,communication_matrix",
|
|
99
|
+
f"--output={self._msprof_profile_path}",
|
|
100
|
+
]
|
|
101
|
+
if ExportType.Text.value in analyse_export_type:
|
|
102
|
+
CommandExecutor.execute(analyze_cmd)
|
|
103
|
+
if ExportType.Db.value in analyse_export_type:
|
|
104
|
+
analyze_cmd.append("--type=db")
|
|
105
|
+
CommandExecutor.execute(analyze_cmd)
|
|
87
106
|
|
|
88
107
|
@lru_cache(maxsize=1)
|
|
89
108
|
def get_msprof_info(self):
|
|
@@ -17,6 +17,7 @@ import os
|
|
|
17
17
|
import re
|
|
18
18
|
import shutil
|
|
19
19
|
import glob
|
|
20
|
+
import stat
|
|
20
21
|
|
|
21
22
|
from mindspore import log as logger
|
|
22
23
|
from mindspore.profiler.common.constant import FileConstant
|
|
@@ -369,3 +370,26 @@ class PathManager:
|
|
|
369
370
|
msg = f"Invalid input path is a soft link: {path}"
|
|
370
371
|
raise ProfilerPathErrorException(msg)
|
|
371
372
|
return os.path.realpath(expanded_path)
|
|
373
|
+
|
|
374
|
+
@classmethod
|
|
375
|
+
def check_cann_lib_valid(cls, path: str) -> bool:
|
|
376
|
+
"""
|
|
377
|
+
Function Description:
|
|
378
|
+
check if cann lib path is valid
|
|
379
|
+
Parameter:
|
|
380
|
+
path: the cann lib path to check
|
|
381
|
+
Return:
|
|
382
|
+
bool: True if the path is valid, False otherwise
|
|
383
|
+
"""
|
|
384
|
+
lib_path = os.path.realpath(path)
|
|
385
|
+
if not os.path.exists(lib_path):
|
|
386
|
+
return False
|
|
387
|
+
if os.path.isdir(lib_path) or os.path.islink(lib_path):
|
|
388
|
+
return False
|
|
389
|
+
if bool(os.stat(lib_path).st_mode & stat.S_IWOTH):
|
|
390
|
+
return False
|
|
391
|
+
if os.name == 'nt':
|
|
392
|
+
return False
|
|
393
|
+
if os.stat(path).st_uid == 0 or os.stat(path).st_uid == os.getuid():
|
|
394
|
+
return True
|
|
395
|
+
return False
|
|
@@ -30,7 +30,8 @@ from mindspore.profiler.common.constant import (
|
|
|
30
30
|
DeviceTarget,
|
|
31
31
|
ProfilerLevel,
|
|
32
32
|
ProfilerActivity,
|
|
33
|
-
AicoreMetrics
|
|
33
|
+
AicoreMetrics,
|
|
34
|
+
ExportType
|
|
34
35
|
)
|
|
35
36
|
from mindspore.profiler.common.profiler_output_path import ProfilerOutputPath
|
|
36
37
|
from mindspore.profiler.common.profiler_parameters import ProfilerParameters
|
|
@@ -59,6 +60,7 @@ class ProfilerContext:
|
|
|
59
60
|
self._mode: str = AnalysisMode.SYNC_MODE.value
|
|
60
61
|
self._pretty: bool = False
|
|
61
62
|
self._profiler_path_mgr: ProfilerOutputPath = None
|
|
63
|
+
self._on_trace_ready_output_path = None
|
|
62
64
|
self._jit_level: Optional[str] = ""
|
|
63
65
|
self._context_mode: Optional[int] = -1
|
|
64
66
|
|
|
@@ -71,12 +73,32 @@ class ProfilerContext:
|
|
|
71
73
|
"""
|
|
72
74
|
Set profiler parameters and paths
|
|
73
75
|
"""
|
|
76
|
+
# output_path and on_trace_ready cannot be set at the same time. If both are set,
|
|
77
|
+
# only paths in on_trace_ready take effect
|
|
78
|
+
if self._on_trace_ready_output_path:
|
|
79
|
+
final_path = self._on_trace_ready_output_path
|
|
80
|
+
if "output_path" in kwargs:
|
|
81
|
+
logger.warning(f"Both on_trace_ready path and output_path are provided. "
|
|
82
|
+
f"The on_trace_ready path takes effect. Final path is {final_path}")
|
|
83
|
+
kwargs["output_path"] = final_path
|
|
84
|
+
|
|
74
85
|
self._profiler_params_mgr: ProfilerParameters = ProfilerParameters(**kwargs)
|
|
75
86
|
self._profiler_path_mgr: ProfilerOutputPath = ProfilerOutputPath(
|
|
76
87
|
device_id=int(self._device_id), rank_id=int(self._rank_id)
|
|
77
88
|
)
|
|
89
|
+
|
|
78
90
|
self._profiler_path_mgr.output_path = self._profiler_params_mgr.output_path
|
|
79
91
|
|
|
92
|
+
@property
|
|
93
|
+
def on_trace_ready_output_path(self) -> str:
|
|
94
|
+
"""Get the on trace ready output path."""
|
|
95
|
+
return self._on_trace_ready_output_path
|
|
96
|
+
|
|
97
|
+
@on_trace_ready_output_path.setter
|
|
98
|
+
def on_trace_ready_output_path(self, value: str):
|
|
99
|
+
"""Set the tensorboard profile path to on trace ready output path."""
|
|
100
|
+
self._on_trace_ready_output_path = value
|
|
101
|
+
|
|
80
102
|
def to_dict(self) -> Dict[str, Any]:
|
|
81
103
|
"""
|
|
82
104
|
Convert the profiler context to a dictionary for multiprocessing.
|
|
@@ -105,10 +127,12 @@ class ProfilerContext:
|
|
|
105
127
|
if param in profiler_parameters:
|
|
106
128
|
if param == "profiler_level":
|
|
107
129
|
value = ProfilerLevel(profiler_parameters[param])
|
|
108
|
-
elif param == "
|
|
130
|
+
elif param == "aic_metrics":
|
|
109
131
|
value = AicoreMetrics(profiler_parameters[param])
|
|
110
132
|
elif param == "activities":
|
|
111
133
|
value = [ProfilerActivity(activity) for activity in profiler_parameters[param]]
|
|
134
|
+
elif param == "export_type":
|
|
135
|
+
value = [ExportType(export_type) for export_type in profiler_parameters[param]]
|
|
112
136
|
elif param == "schedule":
|
|
113
137
|
continue
|
|
114
138
|
else:
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Copyright 2024-2025 Huawei Technologies Co., Ltd
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
# ============================================================================
|
|
15
|
+
"""Profiler Meta Data"""
|
|
16
|
+
import os
|
|
17
|
+
from typing import Dict
|
|
18
|
+
|
|
19
|
+
import mindspore.communication as comm
|
|
20
|
+
from mindspore.profiler.common.constant import DeviceTarget
|
|
21
|
+
from mindspore.profiler.common.profiler_context import ProfilerContext
|
|
22
|
+
import mindspore.communication._comm_helper as comm_helper
|
|
23
|
+
from mindspore.profiler.common.file_manager import FileManager
|
|
24
|
+
from mindspore import log as logger
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ProfilerMetaData:
|
|
28
|
+
"""
|
|
29
|
+
Profiler MetaData
|
|
30
|
+
This class is used to handle metadata.
|
|
31
|
+
"""
|
|
32
|
+
metadata: Dict[str, str] = {}
|
|
33
|
+
|
|
34
|
+
@classmethod
|
|
35
|
+
def get_metadata(cls) -> Dict[str, str]:
|
|
36
|
+
"""Get metadata"""
|
|
37
|
+
return cls.metadata
|
|
38
|
+
|
|
39
|
+
@classmethod
|
|
40
|
+
def set_metadata(cls, value: Dict[str, str]):
|
|
41
|
+
"""Set metadata"""
|
|
42
|
+
cls.metadata = value
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def dump_metadata(cls):
|
|
46
|
+
"""Dump metadata to file."""
|
|
47
|
+
cls.add_group_info_to_metadata()
|
|
48
|
+
if not cls.metadata:
|
|
49
|
+
return
|
|
50
|
+
save_path = os.path.join(ProfilerContext().ascend_ms_dir, "profiler_metadata.json")
|
|
51
|
+
FileManager.create_json_file(save_path, cls.metadata)
|
|
52
|
+
cls.metadata.clear()
|
|
53
|
+
|
|
54
|
+
@classmethod
|
|
55
|
+
def add_group_info_to_metadata(cls):
|
|
56
|
+
"""Add parallel group info to metadata"""
|
|
57
|
+
try:
|
|
58
|
+
if ProfilerContext().device_target == DeviceTarget.NPU.value and comm.GlobalComm.INITED \
|
|
59
|
+
and comm.GlobalComm.BACKEND == comm_helper.Backend.HCCL:
|
|
60
|
+
group_info = {}
|
|
61
|
+
# pylint: disable=protected-access
|
|
62
|
+
for group_name in comm_helper._get_group_map().keys():
|
|
63
|
+
comm_name = comm.get_comm_name(group_name)
|
|
64
|
+
if not comm_name:
|
|
65
|
+
continue
|
|
66
|
+
group_info[comm_name] = {
|
|
67
|
+
"group_name": group_name,
|
|
68
|
+
"group_rank": comm.get_local_rank(group_name),
|
|
69
|
+
"global_ranks": comm.get_process_group_ranks(group_name)
|
|
70
|
+
}
|
|
71
|
+
if group_info:
|
|
72
|
+
cls.metadata.update({"parallel_group_info": group_info})
|
|
73
|
+
except Exception as err: # pylint: disable=broad-except
|
|
74
|
+
logger.error(f"Failed to get parallel group info, Exception: {str(err)}")
|
|
@@ -21,6 +21,7 @@ from mindspore.profiler.common.constant import (
|
|
|
21
21
|
ProfilerLevel,
|
|
22
22
|
ProfilerActivity,
|
|
23
23
|
AicoreMetrics,
|
|
24
|
+
ExportType
|
|
24
25
|
)
|
|
25
26
|
from mindspore.profiler.schedule import Schedule
|
|
26
27
|
|
|
@@ -35,7 +36,7 @@ class ProfilerParameters:
|
|
|
35
36
|
"output_path": (str, "./data"),
|
|
36
37
|
"profiler_level": (ProfilerLevel, ProfilerLevel.Level0),
|
|
37
38
|
"activities": (list, [ProfilerActivity.CPU, ProfilerActivity.NPU]),
|
|
38
|
-
"
|
|
39
|
+
"aic_metrics": (AicoreMetrics, AicoreMetrics.AiCoreNone),
|
|
39
40
|
"with_stack": (bool, False),
|
|
40
41
|
"profile_memory": (bool, False),
|
|
41
42
|
"data_process": (bool, False),
|
|
@@ -46,6 +47,7 @@ class ProfilerParameters:
|
|
|
46
47
|
"pcie": (bool, False),
|
|
47
48
|
"sync_enable": (bool, True),
|
|
48
49
|
"data_simplification": (bool, True),
|
|
50
|
+
"export_type": (list, [ExportType.Text]),
|
|
49
51
|
"mstx": (bool, False),
|
|
50
52
|
"schedule": (Schedule, None),
|
|
51
53
|
"on_trace_ready": (Optional[Callable[..., Any]], None)
|
|
@@ -58,10 +60,7 @@ class ProfilerParameters:
|
|
|
58
60
|
self.is_set_schedule: bool = False
|
|
59
61
|
self._set_schedule(**kwargs)
|
|
60
62
|
self._check_deprecated_params(**kwargs)
|
|
61
|
-
|
|
62
|
-
for param, (_, default_value) in self.PARAMS.items():
|
|
63
|
-
setattr(self, param, kwargs.get(param, default_value))
|
|
64
|
-
|
|
63
|
+
self._init_params(kwargs)
|
|
65
64
|
self._check_params_type()
|
|
66
65
|
self._handle_compatibility()
|
|
67
66
|
|
|
@@ -75,10 +74,12 @@ class ProfilerParameters:
|
|
|
75
74
|
for param, (_, _) in self.PARAMS.items():
|
|
76
75
|
if param == "profiler_level":
|
|
77
76
|
params[param] = getattr(self, param).value
|
|
78
|
-
elif param == "
|
|
77
|
+
elif param == "aic_metrics":
|
|
79
78
|
params[param] = getattr(self, param).value
|
|
80
79
|
elif param == "activities":
|
|
81
80
|
params[param] = [item.value for item in getattr(self, param)]
|
|
81
|
+
elif param == "export_type":
|
|
82
|
+
params[param] = [item.value for item in getattr(self, param)]
|
|
82
83
|
elif param == "schedule":
|
|
83
84
|
params[param] = getattr(self, param).to_dict()
|
|
84
85
|
elif param == "on_trace_ready":
|
|
@@ -97,19 +98,27 @@ class ProfilerParameters:
|
|
|
97
98
|
"""
|
|
98
99
|
return {
|
|
99
100
|
"profile_memory": self.profile_memory,
|
|
100
|
-
"
|
|
101
|
+
"aicore_metrics": self.aic_metrics.value,
|
|
101
102
|
"l2_cache": self.l2_cache,
|
|
102
103
|
"hbm_ddr": self.hbm_ddr,
|
|
103
104
|
"pcie": self.pcie,
|
|
104
105
|
"parallel_strategy": self.parallel_strategy,
|
|
105
106
|
"profiler_level": self.profiler_level.value,
|
|
106
|
-
"aicore_metrics": self.aicore_metrics.value,
|
|
107
107
|
"with_stack": self.with_stack,
|
|
108
108
|
"mstx": self.mstx,
|
|
109
109
|
"cpu_trace": ProfilerActivity.CPU in self.activities,
|
|
110
110
|
"npu_trace": ProfilerActivity.NPU in self.activities,
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
+
def _init_params(self, kwargs):
|
|
114
|
+
"""
|
|
115
|
+
Initialize parameters with kwargs
|
|
116
|
+
"""
|
|
117
|
+
for param, (_, default_value) in self.PARAMS.items():
|
|
118
|
+
if param == "schedule" and kwargs.get(param) is None:
|
|
119
|
+
kwargs["schedule"] = Schedule(wait=0, active=1)
|
|
120
|
+
setattr(self, param, kwargs.get(param) if kwargs.get(param) is not None else default_value)
|
|
121
|
+
|
|
113
122
|
def _check_params_type(self) -> None:
|
|
114
123
|
"""
|
|
115
124
|
Check profiler input params type, if type is invalid reset to default value.
|
|
@@ -121,11 +130,19 @@ class ProfilerParameters:
|
|
|
121
130
|
|
|
122
131
|
# Callable特殊处理
|
|
123
132
|
if key == "on_trace_ready":
|
|
124
|
-
if not callable(value):
|
|
133
|
+
if value is not None and not callable(value):
|
|
125
134
|
setattr(self, key, default_value)
|
|
135
|
+
logger.warning(
|
|
136
|
+
f"For Profiler, on_trace_ready value is Invalid, reset to {default_value}."
|
|
137
|
+
)
|
|
126
138
|
elif key == "schedule":
|
|
127
139
|
if not isinstance(value, Schedule):
|
|
128
140
|
setattr(self, key, Schedule(wait=0, active=1))
|
|
141
|
+
logger.warning(
|
|
142
|
+
f"For Profiler, schedule value is Invalid, reset to {Schedule(wait=0, active=1)}"
|
|
143
|
+
)
|
|
144
|
+
elif key == "export_type":
|
|
145
|
+
setattr(self, key, self._check_and_get_export_type(value))
|
|
129
146
|
# 检查可迭代类型
|
|
130
147
|
elif isinstance(expected_type, type) and issubclass(expected_type, (list, tuple, set)):
|
|
131
148
|
if not (isinstance(value, expected_type) and
|
|
@@ -190,16 +207,40 @@ class ProfilerParameters:
|
|
|
190
207
|
warnings.warn("when 'mstx' is disabled, 'profiler_level' cannot be set to 'ProfilerLevel.LevelNone', "
|
|
191
208
|
"reset to 'ProfilerLevel.Level0'.")
|
|
192
209
|
|
|
193
|
-
if self.__dict__.get('profiler_level')
|
|
194
|
-
self.__dict__.get('
|
|
195
|
-
self.
|
|
196
|
-
warnings.warn("when 'profiler_level' is set to '
|
|
197
|
-
"'
|
|
198
|
-
"reset to 'AicoreMetrics.AiCoreNone'.")
|
|
210
|
+
if self.__dict__.get('profiler_level') in (ProfilerLevel.LevelNone, ProfilerLevel.Level0) and \
|
|
211
|
+
self.__dict__.get('aic_metrics') != AicoreMetrics.AiCoreNone:
|
|
212
|
+
self.aic_metrics = AicoreMetrics.AiCoreNone
|
|
213
|
+
warnings.warn(f"when 'profiler_level' is set to '{self.__dict__.get('profiler_level')}', "
|
|
214
|
+
f"'aic_metrics' cannot be set to other value except 'AicoreMetrics.AiCoreNone', "
|
|
215
|
+
f"reset to 'AicoreMetrics.AiCoreNone'.")
|
|
216
|
+
|
|
217
|
+
if self.__dict__.get('profiler_level') in (ProfilerLevel.Level1, ProfilerLevel.Level2) and \
|
|
218
|
+
self.__dict__.get('aic_metrics') == AicoreMetrics.AiCoreNone:
|
|
219
|
+
self.aic_metrics = AicoreMetrics.PipeUtilization
|
|
220
|
+
warnings.warn(f"when 'profiler_level' is set to '{self.__dict__.get('profiler_level')}', "
|
|
221
|
+
f"'aic_metrics' cannot be set to 'AicoreMetrics.AiCoreNone', "
|
|
222
|
+
f"reset to 'AicoreMetrics.PipeUtilization'.")
|
|
223
|
+
|
|
224
|
+
def _check_and_get_export_type(self, export_type) -> list:
|
|
225
|
+
"""
|
|
226
|
+
Check export type.
|
|
227
|
+
"""
|
|
228
|
+
if not export_type:
|
|
229
|
+
return [ExportType.Text]
|
|
230
|
+
|
|
231
|
+
if isinstance(export_type, str):
|
|
232
|
+
if export_type in [ExportType.Text.value, ExportType.Db.value]:
|
|
233
|
+
return [ExportType(export_type)]
|
|
234
|
+
|
|
235
|
+
if isinstance(export_type, list):
|
|
236
|
+
if all(isinstance(type, ExportType) for type in export_type):
|
|
237
|
+
return list(set(export_type))
|
|
238
|
+
|
|
239
|
+
if isinstance(export_type, ExportType):
|
|
240
|
+
return [export_type]
|
|
199
241
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
self.aicore_metrics = AicoreMetrics.PipeUtilization
|
|
242
|
+
logger.warning("Invalid parameter export_type, reset it to text.")
|
|
243
|
+
return [ExportType.Text]
|
|
203
244
|
|
|
204
245
|
def __getattr__(self, name):
|
|
205
246
|
"""
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"""Profiler Path Manager"""
|
|
16
16
|
import os
|
|
17
17
|
import socket
|
|
18
|
+
import glob
|
|
19
|
+
import shutil
|
|
18
20
|
from datetime import datetime, timezone
|
|
19
21
|
|
|
20
22
|
from mindspore import log as logger
|
|
@@ -29,10 +31,39 @@ class ProfilerPathManager:
|
|
|
29
31
|
ProfilerPathManager is responsible for creating and managing all paths used by profiler.
|
|
30
32
|
"""
|
|
31
33
|
|
|
32
|
-
_ASCEND_MS_DIR = "{}_{}
|
|
34
|
+
_ASCEND_MS_DIR = "{}_{}_ascend_ms"
|
|
35
|
+
MAX_WORKER_NAME_LENGTH = 226
|
|
33
36
|
|
|
34
37
|
def __init__(self):
|
|
35
38
|
self._prof_ctx = ProfilerContext()
|
|
39
|
+
self._worker_name = None
|
|
40
|
+
self._dir_path = None
|
|
41
|
+
|
|
42
|
+
def init(self, worker_name: str = None, dir_name: str = None) -> None:
|
|
43
|
+
"""
|
|
44
|
+
Init the profiler path.
|
|
45
|
+
"""
|
|
46
|
+
valid_wk_name = worker_name and isinstance(worker_name, str)
|
|
47
|
+
valid_wk_len = isinstance(worker_name, str) and len(worker_name) < self.MAX_WORKER_NAME_LENGTH
|
|
48
|
+
if (valid_wk_name and valid_wk_len) or worker_name is None:
|
|
49
|
+
self._worker_name = worker_name
|
|
50
|
+
else:
|
|
51
|
+
logger.warning("Invalid parameter worker_name, reset it to default.")
|
|
52
|
+
self._worker_name = None
|
|
53
|
+
|
|
54
|
+
valid_dir_name = dir_name and isinstance(dir_name, str)
|
|
55
|
+
if valid_dir_name:
|
|
56
|
+
dir_path = PathManager.get_real_path(dir_name)
|
|
57
|
+
PathManager.check_input_directory_path(dir_path)
|
|
58
|
+
self._dir_path = dir_path
|
|
59
|
+
elif dir_name is None:
|
|
60
|
+
self._dir_path = dir_name
|
|
61
|
+
else:
|
|
62
|
+
logger.warning(f"Invalid parameter dir_name, reset it to default.")
|
|
63
|
+
self._dir_path = None
|
|
64
|
+
|
|
65
|
+
if self._dir_path:
|
|
66
|
+
self._prof_ctx.on_trace_ready_output_path = self._dir_path
|
|
36
67
|
|
|
37
68
|
def clean_analysis_cache(self):
|
|
38
69
|
"""
|
|
@@ -86,6 +117,33 @@ class ProfilerPathManager:
|
|
|
86
117
|
elif os.path.isdir(cache_path):
|
|
87
118
|
PathManager.remove_path_safety(cache_path)
|
|
88
119
|
|
|
120
|
+
def move_db_file(self):
|
|
121
|
+
"""
|
|
122
|
+
Copy the db file to the output path.
|
|
123
|
+
"""
|
|
124
|
+
if not self._prof_ctx.msprof_profile_output_path:
|
|
125
|
+
return
|
|
126
|
+
db_files = glob.glob(os.path.join(
|
|
127
|
+
os.path.dirname(self._prof_ctx.msprof_profile_output_path),
|
|
128
|
+
'msprof*.db'
|
|
129
|
+
)) + glob.glob(os.path.join(
|
|
130
|
+
os.path.dirname(self._prof_ctx.msprof_profile_output_path),
|
|
131
|
+
"analyze",
|
|
132
|
+
"communication_analyzer.db"
|
|
133
|
+
))
|
|
134
|
+
for db_file in db_files:
|
|
135
|
+
if os.path.isfile(db_file):
|
|
136
|
+
db_file_name = os.path.basename(db_file)
|
|
137
|
+
if db_file_name == "communication_analyzer.db":
|
|
138
|
+
new_file_name = os.path.join(self._prof_ctx.ascend_profiler_output_path, db_file_name)
|
|
139
|
+
shutil.copy(db_file, new_file_name)
|
|
140
|
+
else:
|
|
141
|
+
new_file_name = f"ascend_mindspore_profiler_{self._prof_ctx.rank_id}.db" if self._prof_ctx.rank_id \
|
|
142
|
+
else f"ascend_mindspore_profiler.db"
|
|
143
|
+
new_file_path = os.path.join(self._prof_ctx.ascend_profiler_output_path, new_file_name)
|
|
144
|
+
shutil.move(db_file, new_file_path)
|
|
145
|
+
|
|
146
|
+
|
|
89
147
|
def create_output_path(self):
|
|
90
148
|
"""
|
|
91
149
|
Create ASCEND_PROFILER_OUTPUT dir, this method should call before analysis
|
|
@@ -112,9 +170,10 @@ class ProfilerPathManager:
|
|
|
112
170
|
"""
|
|
113
171
|
Generate xxx_ascend_ms name
|
|
114
172
|
"""
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
os.getpid()
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
173
|
+
timestamp = datetime.now(timezone.utc).strftime("%Y%m%d%H%M%S%f")[:-3]
|
|
174
|
+
if not self._worker_name:
|
|
175
|
+
worker_name = f"{socket.gethostname()}_{os.getpid()}"
|
|
176
|
+
else:
|
|
177
|
+
worker_name = f"{self._worker_name}_{os.getpid()}"
|
|
178
|
+
|
|
179
|
+
return self._ASCEND_MS_DIR.format(worker_name, timestamp)
|