mindspore 2.5.0__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-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.cp39-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp39-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
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
# Copyright 2024 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
|
+
|
|
16
|
+
"""JIT Context for trace JIT."""
|
|
17
|
+
|
|
18
|
+
import inspect
|
|
19
|
+
import re
|
|
20
|
+
from functools import wraps
|
|
21
|
+
import mindspore as ms
|
|
22
|
+
from mindspore import log as logger
|
|
23
|
+
from mindspore import context
|
|
24
|
+
from mindspore.common.jit_context import JitContext, set_jit_context, jit_context
|
|
25
|
+
from mindspore.common.tensor import Tensor as PythonTensor
|
|
26
|
+
from mindspore._checkparam import is_stub_tensor
|
|
27
|
+
from mindspore._c_expression import TraceRecorder as tr
|
|
28
|
+
from mindspore._c_expression import JitExecutor_
|
|
29
|
+
from mindspore._c_expression import TensorNode
|
|
30
|
+
from mindspore._c_expression import TensorPy as Tensor, CSRTensor, COOTensor
|
|
31
|
+
from mindspore._c_expression import typing
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class TraceJitContext(JitContext):
|
|
35
|
+
"""JIT Context for trace JIT."""
|
|
36
|
+
|
|
37
|
+
def __init__(self):
|
|
38
|
+
JitContext.__init__(self)
|
|
39
|
+
self._is_nested = False
|
|
40
|
+
|
|
41
|
+
def set_is_nested(self, status):
|
|
42
|
+
self._is_nested = status
|
|
43
|
+
|
|
44
|
+
def is_nested(self):
|
|
45
|
+
return self._is_nested
|
|
46
|
+
|
|
47
|
+
def run_op(self, prim, prim_res, *args):
|
|
48
|
+
"""Capture op"""
|
|
49
|
+
logger.debug(f'prim: {prim}, args: {args}, prim_res: {prim_res}')
|
|
50
|
+
if isinstance(prim_res, TensorNode):
|
|
51
|
+
prim_res = prim_res.get_value()
|
|
52
|
+
prim_res = _sync_stub_tensor(prim_res)
|
|
53
|
+
args = tuple(_sync_stub_tensor(arg) for arg in args)
|
|
54
|
+
args = tuple(_convert_arg_for_operators(arg, prim.name) for arg in args)
|
|
55
|
+
file_names, linenos = _get_caller_lines()
|
|
56
|
+
tr.get_instance().new_node(prim, prim_res, file_names, linenos, False, *args)
|
|
57
|
+
return prim_res
|
|
58
|
+
|
|
59
|
+
def run_graph(self, phase, prim_res, *args):
|
|
60
|
+
"""Capture func_graph generated from ast"""
|
|
61
|
+
logger.debug(f'phase: {phase}, args: {args}, prim_res: {prim_res}')
|
|
62
|
+
if isinstance(prim_res, TensorNode):
|
|
63
|
+
prim_res = prim_res.get_value()
|
|
64
|
+
prim_res = _sync_stub_tensor(prim_res)
|
|
65
|
+
args = tuple(_sync_stub_tensor(arg) for arg in args)
|
|
66
|
+
file_names, linenos = _get_caller_lines()
|
|
67
|
+
tr.get_instance().new_fg_node((phase, prim_res, file_names, linenos, self._is_nested), *args)
|
|
68
|
+
return prim_res
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
_compile_only = False
|
|
72
|
+
_trace_jit_context = TraceJitContext()
|
|
73
|
+
_trace_compile_cache = set()
|
|
74
|
+
_jit_executor = JitExecutor_.get_instance()
|
|
75
|
+
_using_trace = False
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def _set_compile_only(compile_only=True):
|
|
79
|
+
global _compile_only
|
|
80
|
+
_compile_only = compile_only
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def _sync_stub_tensor(stub):
|
|
84
|
+
"""Synchronize stub tensor"""
|
|
85
|
+
if is_stub_tensor(stub):
|
|
86
|
+
real_tensor = stub.stub_sync()
|
|
87
|
+
logger.debug(f'Convert stub tensor, stub: [{type(stub)}] {id(stub)}/{stub}, '
|
|
88
|
+
f'tensor: [{type(real_tensor)}] {id(real_tensor)}/{real_tensor}')
|
|
89
|
+
return real_tensor
|
|
90
|
+
if isinstance(stub, tuple):
|
|
91
|
+
return tuple(_sync_stub_tensor(item) for item in stub)
|
|
92
|
+
if isinstance(stub, list):
|
|
93
|
+
return list(_sync_stub_tensor(item) for item in stub)
|
|
94
|
+
return stub
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def convert_tensorpy(args):
|
|
98
|
+
new_args = []
|
|
99
|
+
for arg in args:
|
|
100
|
+
if isinstance(arg, Tensor):
|
|
101
|
+
new_args.append(PythonTensor(arg))
|
|
102
|
+
else:
|
|
103
|
+
new_args.append(arg)
|
|
104
|
+
return tuple(new_args)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _convert_arg_for_operators(arg, prim_name):
|
|
108
|
+
"""Convert dtype to enum"""
|
|
109
|
+
from mindspore.ops._utils.arg_dtype_cast import DtypeToEnum
|
|
110
|
+
if isinstance(arg, typing.Type):
|
|
111
|
+
return DtypeToEnum()(prim_name, 'dtype', arg)
|
|
112
|
+
return arg
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def nested_run(obj, cell, *args):
|
|
117
|
+
"""Start a trace process nested in ast."""
|
|
118
|
+
set_jit_context(_trace_jit_context)
|
|
119
|
+
_trace_jit_context.set_is_nested(True)
|
|
120
|
+
args = args[0]
|
|
121
|
+
args = convert_tensorpy(args)
|
|
122
|
+
if isinstance(obj, ms.nn.Cell):
|
|
123
|
+
res = obj.construct.__wrapped__(obj, *args)
|
|
124
|
+
else:
|
|
125
|
+
if not cell:
|
|
126
|
+
res = obj.__wrapped__(*args)
|
|
127
|
+
else:
|
|
128
|
+
res = obj.__wrapped__(cell, *args)
|
|
129
|
+
if res is not tuple:
|
|
130
|
+
res = (res,)
|
|
131
|
+
file_names, linenos = _get_caller_lines()
|
|
132
|
+
res = _sync_stub_tensor(res)
|
|
133
|
+
set_jit_context(None)
|
|
134
|
+
return file_names, linenos, res
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def _jit_trace(fn):
|
|
138
|
+
"""
|
|
139
|
+
Create a callable MindSpore graph from a Python function by trace method.
|
|
140
|
+
|
|
141
|
+
This allows the MindSpore runtime to apply optimizations based on traced func graph.
|
|
142
|
+
|
|
143
|
+
Args:
|
|
144
|
+
fn (Function): The Python function that will be run as a graph. Default: ``None`` .
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
Function, if `fn` is not None, returns a callable function that will execute the compiled function; If `fn` is
|
|
148
|
+
None, returns a decorator and when this decorator invokes with a single `fn` argument, the callable function is
|
|
149
|
+
equal to the case when `fn` is not None.
|
|
150
|
+
|
|
151
|
+
Supported Platforms:
|
|
152
|
+
``Ascend`` ``GPU`` ``CPU``
|
|
153
|
+
|
|
154
|
+
Examples:
|
|
155
|
+
>>> import numpy as np
|
|
156
|
+
>>> from mindspore import Tensor
|
|
157
|
+
>>> from mindspore.common.jit_trace import _jit_trace as jit_trace
|
|
158
|
+
...
|
|
159
|
+
>>> x = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
160
|
+
>>> y = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
161
|
+
...
|
|
162
|
+
>>> # To create a callable MindSpore graph by calling decorator @jit_trace
|
|
163
|
+
>>> def tensor_add(x, y):
|
|
164
|
+
... z = x + y
|
|
165
|
+
... return z
|
|
166
|
+
...
|
|
167
|
+
>>> tensor_add_graph = jit_trace(fn=tensor_add)
|
|
168
|
+
>>> out = tensor_add_graph(x, y)
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
@wraps(fn)
|
|
172
|
+
def jit_trace_wrap(*args, **kwargs):
|
|
173
|
+
# If a trace graph is already built, keep going without building a new trace graph.
|
|
174
|
+
if jit_context():
|
|
175
|
+
return fn(*args, **kwargs)
|
|
176
|
+
# Start trace process.
|
|
177
|
+
if kwargs:
|
|
178
|
+
bound_arguments = inspect.signature(fn).bind(*args, **kwargs)
|
|
179
|
+
bound_arguments.apply_defaults()
|
|
180
|
+
args = bound_arguments.args
|
|
181
|
+
kwargs = bound_arguments.kwargs
|
|
182
|
+
generate_name = fn.__module__
|
|
183
|
+
if args:
|
|
184
|
+
jit_args = args[1:] if hasattr(args[0], fn.__name__) else args
|
|
185
|
+
obj = args[0]
|
|
186
|
+
if hasattr(obj, fn.__name__): # Add class name for Cell.
|
|
187
|
+
generate_name = generate_name + "." + obj.__class__.__name__
|
|
188
|
+
else:
|
|
189
|
+
jit_args = args
|
|
190
|
+
generate_name = generate_name + "." + fn.__name__ + "#" + str(id(fn))
|
|
191
|
+
# Add create time for Cell.
|
|
192
|
+
if args and hasattr(obj, fn.__name__):
|
|
193
|
+
generate_name = generate_name + '#created_' + str(args[0].create_time)
|
|
194
|
+
line_str = fn.__code__.co_filename + ":" + str(fn.__code__.co_firstlineno)
|
|
195
|
+
generate_name = generate_name + '#[' + line_str + ']'
|
|
196
|
+
|
|
197
|
+
new_compile = _jit_trace_begin(generate_name, *jit_args)
|
|
198
|
+
if new_compile:
|
|
199
|
+
fn_res = fn(*args, **kwargs)
|
|
200
|
+
logger.debug(f'fn: {fn}, fn_res: {fn_res}, line: {line_str}')
|
|
201
|
+
# Use fn's output to build func graph's output.
|
|
202
|
+
output = _jit_trace_end(fn_res)
|
|
203
|
+
else:
|
|
204
|
+
output = _jit_trace_end(None) # Run with compilation.
|
|
205
|
+
logger.debug(f'output: {output}')
|
|
206
|
+
return output
|
|
207
|
+
|
|
208
|
+
jit_trace_wrap.__trace_func__ = True
|
|
209
|
+
return jit_trace_wrap
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
def _get_caller_lines():
|
|
213
|
+
"""Get caller code line info."""
|
|
214
|
+
file_names = []
|
|
215
|
+
linenos = []
|
|
216
|
+
for frame_info in inspect.stack():
|
|
217
|
+
logger.debug(f'\t- frame: {frame_info[1]}:{frame_info[2]}/{frame_info[4][0]}')
|
|
218
|
+
file_name = frame_info[1]
|
|
219
|
+
if re.search(r'mindspore/common/.*\.py|mindspore/ops/.*\.py|mindspore/nn/.*\.py', file_name) is not None:
|
|
220
|
+
continue
|
|
221
|
+
lineno = frame_info[2]
|
|
222
|
+
logger.debug(f'Match caller frame: {frame_info[1]}:{frame_info[2]}/{frame_info[4][0]}')
|
|
223
|
+
file_names.append(file_name)
|
|
224
|
+
linenos.append(lineno)
|
|
225
|
+
return file_names, linenos
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def _get_args_for_run(args):
|
|
229
|
+
"""Get the actual input args and kwargs for runtime."""
|
|
230
|
+
new_args = []
|
|
231
|
+
for arg in args:
|
|
232
|
+
if isinstance(arg, PythonTensor):
|
|
233
|
+
if arg.has_init:
|
|
234
|
+
arg.init_data()
|
|
235
|
+
if not arg.const_arg:
|
|
236
|
+
new_args.append(arg)
|
|
237
|
+
elif isinstance(arg, (Tensor, CSRTensor, COOTensor)):
|
|
238
|
+
new_args.append(arg)
|
|
239
|
+
elif context.get_context("grad_for_scalar") and isinstance(arg, (int, float)):
|
|
240
|
+
new_args.append(arg)
|
|
241
|
+
elif isinstance(arg, dict) and hasattr(arg, "__ms_mutable__"):
|
|
242
|
+
new_args.append(tuple(arg.values()))
|
|
243
|
+
return tuple(new_args)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _jit_trace_begin(fn_name, *args):
|
|
247
|
+
"""
|
|
248
|
+
Start to build a MindIR func graph for a code snippet by trace method.
|
|
249
|
+
|
|
250
|
+
This allows the MindSpore runtime to apply optimizations based on traced func graph.
|
|
251
|
+
|
|
252
|
+
Note:
|
|
253
|
+
Use it with `_jit_trace_end` cooperatively.
|
|
254
|
+
|
|
255
|
+
Also see: :func:`_jit_trace_end`.
|
|
256
|
+
|
|
257
|
+
Args:
|
|
258
|
+
fn_name (str): The name of func graph to be built.
|
|
259
|
+
args (tuple): The arguments of func graph.
|
|
260
|
+
|
|
261
|
+
Supported Platforms:
|
|
262
|
+
``Ascend`` ``GPU`` ``CPU``
|
|
263
|
+
|
|
264
|
+
Examples:
|
|
265
|
+
>>> import numpy as np
|
|
266
|
+
>>> from mindspore import Tensor
|
|
267
|
+
>>> from mindspore.common.jit_trace import _jit_trace_begin, _jit_trace_end
|
|
268
|
+
...
|
|
269
|
+
>>> x = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
270
|
+
>>> y = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
271
|
+
>>> def tensor_add(x, y):
|
|
272
|
+
... _jit_trace_begin(x, y)
|
|
273
|
+
... z = x + y
|
|
274
|
+
... z = _jit_trace_end(z)
|
|
275
|
+
... return z
|
|
276
|
+
...
|
|
277
|
+
>>> out = tensor_add(x, y)
|
|
278
|
+
"""
|
|
279
|
+
global _using_trace
|
|
280
|
+
if _using_trace:
|
|
281
|
+
raise RuntimeError(
|
|
282
|
+
"Should not use jit_block and jit_trace at the same time.")
|
|
283
|
+
_using_trace = True
|
|
284
|
+
logger.debug(f'_jit_trace_begin, args: {args}')
|
|
285
|
+
_trace_jit_context.set_is_nested(False)
|
|
286
|
+
set_jit_context(_trace_jit_context)
|
|
287
|
+
args = tuple(_sync_stub_tensor(arg) for arg in args)
|
|
288
|
+
for arg in args:
|
|
289
|
+
logger.debug(f'_jit_trace_begin, arg: {arg}, {type(arg)}')
|
|
290
|
+
|
|
291
|
+
# Generate phase for compile pipeline.
|
|
292
|
+
key = _jit_executor.generate_arguments_key(None, args, dict(), False)
|
|
293
|
+
from mindspore.common.api import _PyNativeExecutor
|
|
294
|
+
phase = fn_name + '.' + str(key)
|
|
295
|
+
if _PyNativeExecutor().requires_grad():
|
|
296
|
+
phase = phase + ".grad"
|
|
297
|
+
logger.debug(f'phase: {phase}')
|
|
298
|
+
# Compiled before, just run.
|
|
299
|
+
if not _compile_only and phase in _trace_compile_cache:
|
|
300
|
+
logger.debug('Had compiled, just run.')
|
|
301
|
+
_trace_jit_context.compiled = True
|
|
302
|
+
output = tr.get_instance().run_graph(phase, args)
|
|
303
|
+
from mindspore.common.api import _convert_python_data
|
|
304
|
+
_trace_jit_context.result = _convert_python_data(output)
|
|
305
|
+
logger.debug(f'jit trace result: {_trace_jit_context.result}')
|
|
306
|
+
return False
|
|
307
|
+
logger.debug('Start compiling...')
|
|
308
|
+
file_names, linenos = _get_caller_lines()
|
|
309
|
+
fn_short_name = fn_name.split('#')[0]
|
|
310
|
+
tr.get_instance().begin_graph(fn_short_name, phase, file_names, linenos, *args)
|
|
311
|
+
_trace_compile_cache.add(phase)
|
|
312
|
+
# Save for first call, used in end().
|
|
313
|
+
_trace_jit_context.phase = phase
|
|
314
|
+
_trace_jit_context.args = args
|
|
315
|
+
return True
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
def _jit_trace_end(*output_args):
|
|
319
|
+
"""
|
|
320
|
+
Finish building a MindIR func graph for a code snippet by trace method.
|
|
321
|
+
|
|
322
|
+
This allows the MindSpore runtime to apply optimizations based on traced func graph.
|
|
323
|
+
|
|
324
|
+
Note:
|
|
325
|
+
Use it with `_jit_trace_begin` cooperatively.
|
|
326
|
+
|
|
327
|
+
Also see: :func:`_jit_trace_begin`.
|
|
328
|
+
|
|
329
|
+
Args:
|
|
330
|
+
output_args (tuple): The output of func graph.
|
|
331
|
+
|
|
332
|
+
Returns:
|
|
333
|
+
The same as args `output_args`.
|
|
334
|
+
|
|
335
|
+
Supported Platforms:
|
|
336
|
+
``Ascend`` ``GPU`` ``CPU``
|
|
337
|
+
|
|
338
|
+
Examples:
|
|
339
|
+
>>> import numpy as np
|
|
340
|
+
>>> from mindspore import Tensor
|
|
341
|
+
>>> from mindspore.common.jit_trace import _jit_trace_begin, _jit_trace_end
|
|
342
|
+
...
|
|
343
|
+
>>> x = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
344
|
+
>>> y = Tensor(np.ones([1, 1, 3, 3]).astype(np.float32))
|
|
345
|
+
>>> def tensor_add(x, y):
|
|
346
|
+
... _jit_trace_begin(x, y)
|
|
347
|
+
... z = x + y
|
|
348
|
+
... z = _jit_trace_end(z)
|
|
349
|
+
... return z
|
|
350
|
+
...
|
|
351
|
+
>>> out = tensor_add(x, y)
|
|
352
|
+
"""
|
|
353
|
+
if _trace_jit_context.compiled:
|
|
354
|
+
output = _trace_jit_context.result
|
|
355
|
+
logger.debug(f'jit trace result: {output}')
|
|
356
|
+
else:
|
|
357
|
+
logger.debug(f'output_args: {output_args}')
|
|
358
|
+
output_args = tuple(_sync_stub_tensor(arg) for arg in output_args)
|
|
359
|
+
file_names, linenos = _get_caller_lines()
|
|
360
|
+
tr.get_instance().end_graph(file_names, linenos, *output_args)
|
|
361
|
+
if _compile_only:
|
|
362
|
+
output = output_args[0] if len(output_args) == 1 else output_args
|
|
363
|
+
else:
|
|
364
|
+
args = _get_args_for_run(_trace_jit_context.args)
|
|
365
|
+
output = tr.get_instance().run_graph(
|
|
366
|
+
_trace_jit_context.phase, args)
|
|
367
|
+
from mindspore.common.api import _convert_python_data
|
|
368
|
+
output = _convert_python_data(output)
|
|
369
|
+
logger.debug(f'jit trace result: {output}')
|
|
370
|
+
logger.debug(
|
|
371
|
+
f'python result: {output_args[0] if len(output_args) == 1 else output_args}')
|
|
372
|
+
_trace_jit_context.phase = ''
|
|
373
|
+
_trace_jit_context.args = None
|
|
374
|
+
set_jit_context(None)
|
|
375
|
+
_trace_jit_context.compiled = False
|
|
376
|
+
global _using_trace
|
|
377
|
+
_using_trace = False
|
|
378
|
+
return output
|
mindspore/common/lazy_inline.py
CHANGED
|
@@ -28,7 +28,7 @@ def lazy_inline(fn=None, attrs=None, policy=None):
|
|
|
28
28
|
will add the parameters of `__init__` according to the `attrs` as the attributes of this cell.
|
|
29
29
|
|
|
30
30
|
For a detailed description of the function, see `Using the lazy_inline decorator
|
|
31
|
-
<https://www.mindspore.cn/
|
|
31
|
+
<https://www.mindspore.cn/tutorials/en/master/compile/
|
|
32
32
|
static_graph_expert_programming.html#using-lazy-inline-decorator>`_ .
|
|
33
33
|
|
|
34
34
|
.. warning::
|
|
@@ -39,7 +39,7 @@ def lazy_inline(fn=None, attrs=None, policy=None):
|
|
|
39
39
|
Args:
|
|
40
40
|
fn (function): `__init__` function of a cell.
|
|
41
41
|
attrs (Union[list[string], string]): The attributes list to add for the cell.
|
|
42
|
-
policy (Union[None, "front"]): The policy of inline. Default is None
|
|
42
|
+
policy (Union[None, "front"], optional): The policy of inline. Default is ``None``.
|
|
43
43
|
|
|
44
44
|
- ``None``: The cell will be compiled to sub graph and will not be inline.
|
|
45
45
|
- ``"front"``: The cell will be compiled to sub graph first and will be inline at front end.
|
mindspore/common/mutable.py
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
from __future__ import absolute_import
|
|
17
17
|
|
|
18
18
|
from mindspore.common.tensor import Tensor
|
|
19
|
-
from mindspore._c_expression import
|
|
19
|
+
from mindspore._c_expression import TensorPy as Tensor_
|
|
20
20
|
from mindspore import log as logger
|
|
21
21
|
|
|
22
22
|
_check_elements_set = set()
|
|
@@ -126,13 +126,14 @@ def mutable(input_data, dynamic_len=False):
|
|
|
126
126
|
When the `input_data` is tuple or list and `dynamic_len` is False, `mutable` will return a constant length tuple
|
|
127
127
|
or list with all mutable elements. If `dynamic_len` is True, the length of the return tuple or list will be dynamic.
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
When a dynamic-length tuple or list returned by `mutable` is used as input to a network
|
|
130
|
+
and the network is called repeatedly, and
|
|
130
131
|
the length of the tuple or list is different for each run, it does not need to be re-compiled.
|
|
131
132
|
|
|
132
133
|
Args:
|
|
133
134
|
input_data (Union[Tensor, scalar, tuple, list, dict]): The input data to be made mutable. If
|
|
134
135
|
'input_data' is list/tuple/dict, the type of each element should also in the valid types.
|
|
135
|
-
dynamic_len (bool): Whether to set the whole sequence to be dynamic length. In graph compilation, if
|
|
136
|
+
dynamic_len (bool, optional): Whether to set the whole sequence to be dynamic length. In graph compilation, if
|
|
136
137
|
`dynamic_len` is ``True`` , the `input_data` must be list or tuple and the elements of `input_data` must
|
|
137
138
|
have the same type and shape. Default: ``False`` .
|
|
138
139
|
|
|
@@ -222,7 +223,7 @@ def mutable(input_data, dynamic_len=False):
|
|
|
222
223
|
We will add set_const_arg=False statement automatically.")
|
|
223
224
|
ret.set_const_arg(False)
|
|
224
225
|
elif isinstance(input_data, Tensor_):
|
|
225
|
-
ret = Tensor(input_data
|
|
226
|
+
ret = Tensor(input_data)
|
|
226
227
|
logger.info("For 'mutable', the Tensor_ in 'input_data' must not be constant. \
|
|
227
228
|
We will add set_const_arg=False statement automatically.")
|
|
228
229
|
ret.set_const_arg(False)
|