mindspore 2.4.10__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 +13 -6
- 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 -38
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +83 -0
- mindspore/_extends/parse/deprecated/__init__.py +0 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
- 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 +46 -197
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +217 -98
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +11 -5
- 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 +138 -43
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +6 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -2
- mindspore/common/_stub_tensor.py +30 -14
- mindspore/common/_tensor_cpp_method.py +17 -0
- mindspore/common/_tensor_docs.py +4760 -0
- mindspore/common/api.py +435 -371
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +39 -36
- mindspore/common/dump.py +9 -6
- mindspore/common/file_system.py +9 -1
- mindspore/common/generator.py +2 -0
- mindspore/common/hook_handle.py +6 -2
- mindspore/common/initializer.py +13 -10
- 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 +9 -3
- mindspore/common/mindir_util.py +10 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +135 -52
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +951 -1992
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +52 -2
- mindspore/communication/comm_func.py +240 -181
- mindspore/communication/management.py +95 -26
- mindspore/context.py +314 -566
- mindspore/dataset/__init__.py +65 -37
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/callback/ds_callback.py +2 -1
- mindspore/dataset/core/config.py +87 -6
- mindspore/dataset/engine/cache_admin.py +3 -3
- mindspore/dataset/engine/cache_client.py +6 -5
- mindspore/dataset/engine/datasets.py +292 -267
- mindspore/dataset/engine/datasets_audio.py +22 -8
- mindspore/dataset/engine/datasets_standard_format.py +46 -27
- mindspore/dataset/engine/datasets_text.py +78 -48
- mindspore/dataset/engine/datasets_user_defined.py +182 -116
- mindspore/dataset/engine/datasets_vision.py +120 -44
- mindspore/dataset/engine/iterators.py +283 -63
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/obs/util.py +8 -0
- mindspore/dataset/engine/queue.py +40 -0
- mindspore/dataset/engine/samplers.py +289 -43
- mindspore/dataset/engine/serializer_deserializer.py +3 -2
- mindspore/dataset/engine/validators.py +53 -11
- 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/py_transforms_util.py +17 -0
- mindspore/dataset/transforms/transforms.py +31 -14
- 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/dataset/vision/validators.py +1 -2
- mindspore/device_context/__init__.py +21 -0
- mindspore/device_context/ascend/__init__.py +25 -0
- mindspore/device_context/ascend/device.py +72 -0
- mindspore/device_context/ascend/op_debug.py +153 -0
- mindspore/device_context/ascend/op_precision.py +193 -0
- mindspore/device_context/ascend/op_tuning.py +123 -0
- mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
- mindspore/device_context/cpu/device.py +62 -0
- mindspore/device_context/cpu/op_tuning.py +43 -0
- mindspore/device_context/gpu/__init__.py +21 -0
- mindspore/device_context/gpu/device.py +70 -0
- mindspore/device_context/gpu/op_precision.py +67 -0
- mindspore/device_context/gpu/op_tuning.py +175 -0
- mindspore/device_manager.py +170 -0
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/llm_boost/__init__.py +1 -0
- mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
- mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
- mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
- mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
- mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
- mindspore/experimental/llm_boost/register.py +1 -0
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +6 -6
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +7 -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 +73 -46
- mindspore/experimental/optim/radam.py +34 -31
- 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 -53
- mindspore/hal/event.py +52 -52
- mindspore/hal/memory.py +157 -117
- mindspore/hal/stream.py +150 -109
- mindspore/include/api/context.h +0 -1
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +50 -0
- mindspore/mindrecord/__init__.py +21 -8
- mindspore/mindrecord/config.py +17 -316
- mindspore/mindrecord/filereader.py +1 -9
- mindspore/mindrecord/filewriter.py +5 -15
- mindspore/mindrecord/mindpage.py +1 -9
- 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 +796 -759
- mindspore/mint/distributed/__init__.py +70 -4
- mindspore/mint/distributed/distributed.py +2679 -44
- mindspore/mint/linalg/__init__.py +8 -0
- mindspore/mint/nn/__init__.py +743 -22
- mindspore/mint/nn/functional.py +716 -23
- mindspore/mint/nn/layer/__init__.py +21 -4
- mindspore/mint/nn/layer/_functions.py +334 -0
- mindspore/mint/nn/layer/activation.py +276 -1
- mindspore/mint/nn/layer/basic.py +123 -0
- mindspore/mint/nn/layer/conv.py +921 -0
- mindspore/mint/nn/layer/normalization.py +223 -28
- mindspore/mint/nn/layer/padding.py +797 -0
- mindspore/mint/nn/layer/pooling.py +235 -0
- mindspore/mint/optim/__init__.py +3 -1
- mindspore/mint/optim/adam.py +223 -0
- mindspore/mint/optim/adamw.py +26 -19
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/mint/special/__init__.py +2 -1
- 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/multiprocessing/__init__.py +5 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1370 -189
- mindspore/nn/dynamic_lr.py +2 -1
- mindspore/nn/layer/activation.py +29 -27
- mindspore/nn/layer/basic.py +51 -35
- mindspore/nn/layer/channel_shuffle.py +3 -3
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +12 -11
- mindspore/nn/layer/normalization.py +56 -49
- mindspore/nn/layer/padding.py +4 -3
- mindspore/nn/layer/pooling.py +120 -42
- mindspore/nn/layer/rnn_cells.py +1 -1
- mindspore/nn/layer/rnns.py +2 -1
- mindspore/nn/layer/timedistributed.py +5 -5
- mindspore/nn/layer/transformer.py +59 -36
- mindspore/nn/learning_rate_schedule.py +8 -4
- mindspore/nn/loss/loss.py +58 -55
- mindspore/nn/optim/ada_grad.py +7 -5
- mindspore/nn/optim/adadelta.py +11 -9
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +17 -13
- 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/lars.py +1 -4
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +3 -3
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +11 -9
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/optim/thor.py +2 -1
- 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/utils/init.py +13 -11
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +181 -122
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +6 -7
- mindspore/numpy/array_creations.py +63 -65
- mindspore/numpy/array_ops.py +149 -144
- mindspore/numpy/logic_ops.py +41 -42
- mindspore/numpy/math_ops.py +365 -363
- mindspore/numpy/utils.py +17 -18
- mindspore/numpy/utils_const.py +5 -6
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +5 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
- mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
- mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
- mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_op_impl/cpu/__init__.py +1 -0
- mindspore/ops/_op_impl/cpu/raise_op.py +28 -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 -65
- mindspore/ops/_vmap/vmap_array_ops.py +27 -25
- mindspore/ops/_vmap/vmap_base.py +0 -2
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
- mindspore/ops/_vmap/vmap_math_ops.py +15 -16
- mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
- mindspore/ops/auto_generate/gen_extend_func.py +764 -124
- mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
- mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
- mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +20 -25
- 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 +228 -30
- 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 -30
- 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 +40 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +2089 -2403
- mindspore/ops/function/clip_func.py +80 -23
- mindspore/ops/function/debug_func.py +57 -57
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +2 -2
- mindspore/ops/function/linalg_func.py +47 -78
- mindspore/ops/function/math_func.py +4501 -3802
- mindspore/ops/function/nn_func.py +1726 -620
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +18 -84
- mindspore/ops/function/random_func.py +440 -387
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +6 -6
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +22 -7
- mindspore/ops/functional_overload.py +1440 -0
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +13 -7
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_embedding_cache_ops.py +4 -4
- mindspore/ops/operations/_grad_ops.py +2 -43
- mindspore/ops/operations/_infer_ops.py +2 -1
- mindspore/ops/operations/_inner_ops.py +43 -84
- 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 +81 -324
- mindspore/ops/operations/comm_ops.py +154 -108
- mindspore/ops/operations/custom_ops.py +232 -78
- mindspore/ops/operations/debug_ops.py +153 -59
- mindspore/ops/operations/inner_ops.py +7 -5
- mindspore/ops/operations/linalg_ops.py +1 -57
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +928 -180
- mindspore/ops/operations/math_ops.py +32 -234
- mindspore/ops/operations/nn_ops.py +210 -498
- 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 +66 -53
- mindspore/ops/tensor_method.py +1888 -0
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
- mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
- mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
- mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
- mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
- mindspore/ops_generate/api/functions_cc_generator.py +237 -0
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/api/op_api_proto.py +235 -0
- mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/base_generator.py +11 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/common/gen_utils.py +348 -0
- mindspore/ops_generate/common/op_proto.py +473 -0
- mindspore/ops_generate/common/template.py +523 -0
- mindspore/ops_generate/gen_ops.py +22 -1069
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
- mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
- mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
- mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
- 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/op_def_py_generator.py +132 -0
- mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
- mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
- mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
- mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
- mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
- mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
- mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
- mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
- mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
- mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
- mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
- mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
- 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 +7 -3
- mindspore/parallel/_auto_parallel_context.py +152 -34
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +107 -5
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +199 -23
- mindspore/parallel/algo_parameter_config.py +4 -4
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +698 -35
- mindspore/parallel/cluster/process_entity/_api.py +276 -50
- mindspore/parallel/cluster/process_entity/_utils.py +41 -6
- mindspore/parallel/cluster/run.py +21 -4
- 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 +25 -14
- mindspore/parallel/shard.py +137 -58
- mindspore/parallel/transform_safetensors.py +363 -305
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +22 -5
- mindspore/profiler/analysis/__init__.py +0 -0
- mindspore/profiler/analysis/parser/__init__.py +0 -0
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
- mindspore/profiler/analysis/parser/base_parser.py +158 -0
- mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
- mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
- mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
- mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
- mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
- mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
- mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
- mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
- mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
- mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
- mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
- mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
- mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
- mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
- mindspore/profiler/analysis/task_manager.py +131 -0
- mindspore/profiler/analysis/time_converter.py +84 -0
- mindspore/profiler/analysis/viewer/__init__.py +0 -0
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
- mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
- mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
- mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
- mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
- mindspore/profiler/analysis/work_flow.py +73 -0
- mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
- mindspore/profiler/common/command_executor.py +90 -0
- mindspore/profiler/common/constant.py +186 -3
- mindspore/profiler/common/file_manager.py +208 -0
- mindspore/profiler/common/log.py +130 -0
- mindspore/profiler/common/msprof_cmd_tool.py +221 -0
- mindspore/profiler/common/path_manager.py +395 -0
- mindspore/profiler/common/process_bar.py +168 -0
- mindspore/profiler/common/process_pool.py +9 -3
- mindspore/profiler/common/profiler_context.py +500 -0
- mindspore/profiler/common/profiler_info.py +304 -0
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_output_path.py +284 -0
- mindspore/profiler/common/profiler_parameters.py +251 -0
- mindspore/profiler/common/profiler_path_manager.py +179 -0
- mindspore/profiler/common/record_function.py +76 -0
- mindspore/profiler/common/tlv_decoder.py +76 -0
- mindspore/profiler/common/util.py +75 -2
- mindspore/profiler/dynamic_profiler.py +341 -75
- mindspore/profiler/envprofiler.py +163 -0
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +242 -0
- mindspore/profiler/platform/__init__.py +21 -0
- mindspore/profiler/platform/base_profiler.py +40 -0
- mindspore/profiler/platform/cpu_profiler.py +124 -0
- mindspore/profiler/platform/gpu_profiler.py +74 -0
- mindspore/profiler/platform/npu_profiler.py +335 -0
- mindspore/profiler/profiler.py +1073 -90
- mindspore/profiler/profiler_action_controller.py +187 -0
- mindspore/profiler/profiler_interface.py +118 -0
- mindspore/profiler/schedule.py +243 -0
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +2 -3
- mindspore/run_check/_check_version.py +27 -20
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +37 -0
- mindspore/runtime/device.py +27 -0
- mindspore/runtime/event.py +209 -0
- mindspore/runtime/executor.py +177 -0
- mindspore/runtime/memory.py +409 -0
- mindspore/runtime/stream.py +460 -0
- mindspore/runtime/thread_bind_core.py +401 -0
- 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 +88 -25
- mindspore/train/amp.py +9 -5
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +53 -55
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_early_stop.py +1 -1
- mindspore/train/callback/_flops_collector.py +103 -68
- mindspore/train/callback/_history.py +8 -5
- 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 +52 -19
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +15 -16
- 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 +11 -10
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +174 -46
- mindspore/train/model.py +184 -113
- mindspore/train/serialization.py +622 -978
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +2 -3
- mindspore/train/train_thor/model_thor.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +6 -3
- mindspore/utils/dryrun.py +140 -0
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/runtime_execution_order_check.py +550 -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.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/common/_tensor_overload.py +0 -139
- mindspore/mindspore_np_dtype.dll +0 -0
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_aclnn_implement.py +0 -263
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/gen_pyboost_func.py +0 -1052
- mindspore/ops_generate/gen_utils.py +0 -209
- mindspore/ops_generate/op_proto.py +0 -145
- mindspore/ops_generate/template.py +0 -261
- mindspore/profiler/envprofiling.py +0 -254
- mindspore/profiler/profiling.py +0 -1926
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# Copyright 2023 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
|
+
"""Defines parameter operators with functional form."""
|
|
16
|
+
import mindspore as ms
|
|
17
|
+
from mindspore import context, ops
|
|
18
|
+
from mindspore import log as logger
|
|
19
|
+
from mindspore.ops import operations as P
|
|
20
|
+
from mindspore.ops._primitive_cache import _get_cache_prim
|
|
21
|
+
from mindspore.common.tensor import Tensor
|
|
22
|
+
from mindspore.communication.management import get_group_size, get_rank
|
|
23
|
+
from mindspore.parallel.shard import Layout, _DistributedTensorInfo
|
|
24
|
+
from mindspore.parallel._auto_parallel_context import _get_all_auto_parallel_context, _recover_auto_parallel_context
|
|
25
|
+
from mindspore.ops.primitive import constexpr
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
REDIST_CELL_CACHE = {}
|
|
29
|
+
COMM_TENSOR_CELL_CACHE = {}
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@constexpr
|
|
33
|
+
def group_size():
|
|
34
|
+
""" Return the device number in the Cell's construct method. """
|
|
35
|
+
return get_group_size()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# pylint: disable=W0212
|
|
39
|
+
def reshard(tensor, layout):
|
|
40
|
+
r"""
|
|
41
|
+
Converting a tensor from one distributed arrangement to another distributed arrangement.
|
|
42
|
+
The given layout must be type mindspore.parallel.Layout,
|
|
43
|
+
can check :class:`mindspore.parallel.Layout` for reference.
|
|
44
|
+
|
|
45
|
+
Note:
|
|
46
|
+
- In the Graph mode, this function can set the sharding propagation strategy of a tensor.
|
|
47
|
+
For those tensor do not manually be set, their strategies are decided by the sharding
|
|
48
|
+
strategy propagation algorithm automatically.
|
|
49
|
+
- In PyNative mode, you can use this method to arrange tensors in a cell (that is, cells
|
|
50
|
+
that use Cell.shard/F.shard in PyNative mode) that is executed in parallel in graph mode.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
tensor (Tensor): The tensor to be set the sharding strategy.
|
|
54
|
+
layout (Layout): The layout to shard the tensor precisely, including the device
|
|
55
|
+
arrangement (device_matrix) and the alias for the device matrix
|
|
56
|
+
(alias_name).
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
Tensor. The mathematically equivalent of the input tensor.
|
|
60
|
+
|
|
61
|
+
Raises:
|
|
62
|
+
TypeError: Reshard takes in Tensor type as the first input param, but got: `type(tensor)`.
|
|
63
|
+
TypeError: Reshard only support type mindspore.parallel.Layout but got: `type(layout)`.
|
|
64
|
+
|
|
65
|
+
Supported Platforms:
|
|
66
|
+
``Ascend``
|
|
67
|
+
|
|
68
|
+
Examples:
|
|
69
|
+
.. note::
|
|
70
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
71
|
+
|
|
72
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
73
|
+
without any third-party or configuration file dependencies.
|
|
74
|
+
Please see the `msrun start-up
|
|
75
|
+
<https://www.mindspore.cn/tutorials/en/master/parallel/msrun_launcher.html>`_
|
|
76
|
+
for more details.
|
|
77
|
+
|
|
78
|
+
This example should be run with 8 devices.
|
|
79
|
+
|
|
80
|
+
>>> import numpy as np
|
|
81
|
+
>>> import mindspore as ms
|
|
82
|
+
>>> from mindspore import ops, nn, Tensor, context, Layout
|
|
83
|
+
>>> from mindspore.parallel.function import reshard
|
|
84
|
+
>>> from mindspore.nn.utils import no_init_parameters
|
|
85
|
+
>>> from mindspore.parallel.auto_parallel import AutoParallel
|
|
86
|
+
>>> from mindspore.communication import init
|
|
87
|
+
>>> context.set_context(mode=ms.GRAPH_MODE)
|
|
88
|
+
>>> init()
|
|
89
|
+
>>> class Network(nn.Cell):
|
|
90
|
+
... def __init__(self):
|
|
91
|
+
... super().__init__()
|
|
92
|
+
... self.matmul = ops.MatMul()
|
|
93
|
+
... self.relu = ops.ReLU()
|
|
94
|
+
... def construct(self, x, layout):
|
|
95
|
+
... x = self.relu(x)
|
|
96
|
+
... x_reshard = reshard(x, layout)
|
|
97
|
+
... y = Tensor(np.ones(shape=(128, 128)), dtype=ms.float32)
|
|
98
|
+
... x = self.matmul(x_reshard, y)
|
|
99
|
+
... return x
|
|
100
|
+
>>> layout = Layout((4, 2), ("dp", "mp"))
|
|
101
|
+
>>> input_layout = layout("dp", "mp")
|
|
102
|
+
>>> with no_init_parameters():
|
|
103
|
+
... net = Network()
|
|
104
|
+
>>> parallel_net = AutoParallel(net, parallel_mode='sharding_propagation')
|
|
105
|
+
>>> tensor = Tensor(np.ones(shape=(128, 128)), dtype=ms.float32)
|
|
106
|
+
>>> out = parallel_net(tensor, input_layout)
|
|
107
|
+
"""
|
|
108
|
+
if group_size() == 1:
|
|
109
|
+
return tensor
|
|
110
|
+
if not isinstance(tensor, Tensor):
|
|
111
|
+
raise TypeError(f"Reshard takes in Tensor type as the first input param, but got: {type(tensor)}.")
|
|
112
|
+
if not isinstance(layout, Layout):
|
|
113
|
+
raise TypeError(f"Reshard only support type mindspore.parallel.Layout, but got: {type(layout)}.")
|
|
114
|
+
|
|
115
|
+
def layout_to_tuple(layout):
|
|
116
|
+
layout_dict = layout.to_dict()
|
|
117
|
+
tensor_map = layout_dict["tensor_map"]
|
|
118
|
+
device_matrix_rev = layout_dict["device_matrix"][::-1]
|
|
119
|
+
axis_stgy = ()
|
|
120
|
+
for ind in tensor_map:
|
|
121
|
+
if ind == -1:
|
|
122
|
+
axis_stgy += (1,)
|
|
123
|
+
else:
|
|
124
|
+
axis_stgy += (device_matrix_rev[ind],)
|
|
125
|
+
return axis_stgy
|
|
126
|
+
|
|
127
|
+
in_strategy = layout_to_tuple(layout)
|
|
128
|
+
_reshard = _get_cache_prim(P.Reshard)(in_layout=(layout,), out_layout=(layout,), in_strategy=(in_strategy,))
|
|
129
|
+
return _reshard(tensor)
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def _redistribute(tensor, dst_dtensor_info):
|
|
133
|
+
"""
|
|
134
|
+
Redistribute the tensor from the source sharding strategy to the destination sharding strategy.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
tensor (Tensor): The source tensor.
|
|
138
|
+
dst_dtensor_info (_DistributedTensorInfo): The destination sharding strategy.
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
Tensor, value is same as the source tensor, but the sharding strategy is the destination sharding strategy.
|
|
142
|
+
|
|
143
|
+
Supported Platforms:
|
|
144
|
+
``Ascend``
|
|
145
|
+
|
|
146
|
+
Examples:
|
|
147
|
+
.. note::
|
|
148
|
+
Before running the following examples, you need to configure the communication environment variables.
|
|
149
|
+
|
|
150
|
+
For Ascend/GPU/CPU devices, it is recommended to use the msrun startup method
|
|
151
|
+
without any third-party or configuration file dependencies.
|
|
152
|
+
Please see the `msrun start up
|
|
153
|
+
<https://www.mindspore.cn/tutorials/en/master/parallel/msrun_launcher.html>`_
|
|
154
|
+
for more details.
|
|
155
|
+
|
|
156
|
+
This example should be run with 2 devices.
|
|
157
|
+
|
|
158
|
+
>>> import numpy as np
|
|
159
|
+
>>> from mindspore.communication import init
|
|
160
|
+
>>> from mindspore import Tensor, Layout, _DistributedTensorInfo
|
|
161
|
+
>>>
|
|
162
|
+
>>> init()
|
|
163
|
+
>>> layout = Layout((2, 1), ("dp", "mp"))
|
|
164
|
+
>>> src_layout = layout("dp", "mp")
|
|
165
|
+
>>> distributed_info = _DistributedTensorInfo(src_layout)
|
|
166
|
+
>>> x = Tensor(np.ones([2, 2]).astype(np.float32))
|
|
167
|
+
>>> out = x.redistribute(distributed_info)
|
|
168
|
+
>>> print(out)
|
|
169
|
+
[[1. 1.]]
|
|
170
|
+
"""
|
|
171
|
+
from mindspore.parallel._cell_wrapper import RedistributionCell, _insert_virtual_pp_dim
|
|
172
|
+
if not isinstance(dst_dtensor_info, _DistributedTensorInfo):
|
|
173
|
+
raise TypeError(
|
|
174
|
+
"dst_dtensor_info should be _DistributedTensorInfo type, but got {}".format(type(dst_dtensor_info)))
|
|
175
|
+
run_mode = context.get_context("mode")
|
|
176
|
+
context.set_context(mode=context.GRAPH_MODE)
|
|
177
|
+
og_auto_parallel_context, pp_config = _get_all_auto_parallel_context()
|
|
178
|
+
context.reset_auto_parallel_context()
|
|
179
|
+
tensor_data = tensor
|
|
180
|
+
all_reduce_data = False
|
|
181
|
+
# If src_pp_stages is less than or equal to dst_pp_stages, the parameters of each pp stage of src can be
|
|
182
|
+
# directly swapped to the corresponding card of dst
|
|
183
|
+
# rank0 01 11 01
|
|
184
|
+
# rank1 02 12 02
|
|
185
|
+
# pp1 ------> pp2
|
|
186
|
+
# rank2 03 13 11
|
|
187
|
+
# rank3 04 14 12
|
|
188
|
+
# if dtensor info is None, return the all 1 strategy as from dtensor info
|
|
189
|
+
if tensor._dtensor_info is None:
|
|
190
|
+
all_dev_num = get_group_size()
|
|
191
|
+
dev_mat = Layout((all_dev_num,), ("replica",))
|
|
192
|
+
tensor_map = ["None"] * len(tensor.shape)
|
|
193
|
+
layout = dev_mat(*tensor_map)
|
|
194
|
+
tensor._dtensor_info = _DistributedTensorInfo(layout)
|
|
195
|
+
src_layout_info = tensor._dtensor_info.layout.to_dict()
|
|
196
|
+
dst_layout_info = dst_dtensor_info.layout.to_dict()
|
|
197
|
+
if len(tensor._dtensor_info.layout.to_dict()["rank_list"]) < len(dst_dtensor_info.layout.to_dict()["rank_list"]):
|
|
198
|
+
# If src_pp_stages is greater than dst_pp_stages, the weights of the corresponding cards need to
|
|
199
|
+
# be communicated via AllReduce to swap. Need to communicate src rank0's 01 to src rank2,
|
|
200
|
+
# so that rank2 holds param0's data. Similarly, communicate rank1's 02 to rank3
|
|
201
|
+
# rank0 01 01 11
|
|
202
|
+
# rank1 02 02 12
|
|
203
|
+
# pp2 -------> pp1
|
|
204
|
+
# rank2 11 03 13
|
|
205
|
+
# rank3 12 04 14
|
|
206
|
+
from mindspore.parallel._cell_wrapper import CommTensorDataForPP
|
|
207
|
+
if get_rank() in dst_dtensor_info.layout.to_dict()["rank_list"]:
|
|
208
|
+
comm_tensor_cache_key = (
|
|
209
|
+
f"{src_layout_info['device_matrix']}, {src_layout_info['tensor_map']}, {src_layout_info['rank_list']}"
|
|
210
|
+
f" -> "
|
|
211
|
+
f"{dst_layout_info['device_matrix']}, {dst_layout_info['tensor_map']}, {dst_layout_info['rank_list']}")
|
|
212
|
+
global COMM_TENSOR_CELL_CACHE
|
|
213
|
+
if comm_tensor_cache_key not in COMM_TENSOR_CELL_CACHE:
|
|
214
|
+
comm_tensor_data_func = CommTensorDataForPP(tensor._dtensor_info, dst_dtensor_info)
|
|
215
|
+
COMM_TENSOR_CELL_CACHE[comm_tensor_cache_key] = comm_tensor_data_func
|
|
216
|
+
logger.debug(f"comm_tensor_cache_key is {comm_tensor_cache_key}, not match cache")
|
|
217
|
+
else:
|
|
218
|
+
comm_tensor_data_func = COMM_TENSOR_CELL_CACHE[comm_tensor_cache_key]
|
|
219
|
+
logger.debug(f"comm_tensor_cache_key is {comm_tensor_cache_key}, match cache")
|
|
220
|
+
if not comm_tensor_data_func._current_rank_has_data:
|
|
221
|
+
new_tensor_shape = tuple([tensor_data.shape[i] // tensor._dtensor_info.sharding_strategy[i]
|
|
222
|
+
for i in range(len(tensor.shape))])
|
|
223
|
+
tensor_data = comm_tensor_data_func.comm_data(ops.zeros(new_tensor_shape, tensor.dtype))
|
|
224
|
+
else:
|
|
225
|
+
tensor_data = comm_tensor_data_func.comm_data(tensor)
|
|
226
|
+
all_reduce_data = True
|
|
227
|
+
ms.communication.comm_func.barrier()
|
|
228
|
+
if src_layout_info['device_matrix'] == dst_layout_info['device_matrix'] and src_layout_info['tensor_map'] == \
|
|
229
|
+
dst_layout_info['tensor_map']:
|
|
230
|
+
return tensor_data
|
|
231
|
+
dataset_strategy = (_insert_virtual_pp_dim(tensor._dtensor_info.layout),)
|
|
232
|
+
if get_rank() not in tensor._dtensor_info.layout.to_dict()["rank_list"] and not all_reduce_data:
|
|
233
|
+
dataset_strategy = "full_batch"
|
|
234
|
+
context.set_auto_parallel_context(dataset_strategy=dataset_strategy,
|
|
235
|
+
parallel_mode="semi_auto_parallel", device_num=get_group_size())
|
|
236
|
+
global REDIST_CELL_CACHE
|
|
237
|
+
redist_cache_key = (f"{src_layout_info['device_matrix']}, {src_layout_info['tensor_map']} -> "
|
|
238
|
+
f"{dst_layout_info['device_matrix']}, {dst_layout_info['tensor_map']}")
|
|
239
|
+
if redist_cache_key in REDIST_CELL_CACHE.keys():
|
|
240
|
+
logger.debug(f"redist_cache_key is {redist_cache_key}, match cache")
|
|
241
|
+
redist_func = REDIST_CELL_CACHE[redist_cache_key]
|
|
242
|
+
else:
|
|
243
|
+
logger.debug(f"redist_cache_key is {redist_cache_key}, not match cache")
|
|
244
|
+
redist_func = RedistributionCell(tensor._dtensor_info.layout, dst_dtensor_info.layout)
|
|
245
|
+
REDIST_CELL_CACHE[redist_cache_key] = redist_func
|
|
246
|
+
redist_func.set_train(True)
|
|
247
|
+
redist_tensor_data = redist_func(tensor_data)
|
|
248
|
+
context.reset_auto_parallel_context()
|
|
249
|
+
_recover_auto_parallel_context(og_auto_parallel_context, pp_config)
|
|
250
|
+
context.set_context(mode=run_mode)
|
|
251
|
+
redist_tensor_data._dtensor_info = dst_dtensor_info
|
|
252
|
+
return redist_tensor_data
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
__all__ = [
|
|
256
|
+
'reshard'
|
|
257
|
+
]
|
|
258
|
+
|
|
259
|
+
__all__.sort()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Copyright 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
|
+
"""
|
|
16
|
+
Interfaces for parallel-related functionality
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import absolute_import
|
|
19
|
+
|
|
20
|
+
from mindspore.parallel.nn.parallel_grad_reducer import PipelineGradReducer
|
|
21
|
+
from mindspore.parallel.nn.parallel_cell_wrapper import PipelineCell, Pipeline, MicroBatchInterleaved, GradAccumulation
|
|
22
|
+
|
|
23
|
+
__all__ = []
|
|
24
|
+
__all__.extend(parallel_grad_reducer.__all__)
|
|
25
|
+
__all__.extend(parallel_cell_wrapper.__all__)
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Copyright 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
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ============================================================================
|
|
16
|
+
"""Cell_wrapper."""
|
|
17
|
+
from __future__ import absolute_import
|
|
18
|
+
from __future__ import division
|
|
19
|
+
|
|
20
|
+
from mindspore import nn
|
|
21
|
+
from mindspore.ops import operations as P
|
|
22
|
+
from mindspore.nn.cell import Cell
|
|
23
|
+
from mindspore.nn.wrap.cell_wrapper import _MicroBatch
|
|
24
|
+
from mindspore import log as logger
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__all__ = ['PipelineCell', 'Pipeline', 'MicroBatchInterleaved', 'GradAccumulation']
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class PipelineCell(Cell):
|
|
31
|
+
"""
|
|
32
|
+
Slice MiniBatch into finer-grained MicroBatch for use in pipeline-parallel training.
|
|
33
|
+
|
|
34
|
+
Note:
|
|
35
|
+
micro_size must be greater or equal to pipeline stages.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
network (Cell): The target network to wrap.
|
|
39
|
+
micro_size (int): MicroBatch size.
|
|
40
|
+
stage_config (dict, optional): The stage configuration for each cell's execution in pipeline parallel.
|
|
41
|
+
|
|
42
|
+
Supported Platforms:
|
|
43
|
+
``Ascend``
|
|
44
|
+
|
|
45
|
+
Examples:
|
|
46
|
+
>>> import mindspore.nn as nn
|
|
47
|
+
>>> # Define the network structure of LeNet5. Refer to
|
|
48
|
+
>>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
|
|
49
|
+
>>> net = LeNet5()
|
|
50
|
+
>>> net = nn.PipelineCell(net, 4, stage_config={"cell_name_0": 0, "cell_name_1": 1})
|
|
51
|
+
"""
|
|
52
|
+
def __init__(self, network, micro_size, stage_config=None):
|
|
53
|
+
super(PipelineCell, self).__init__(auto_prefix=False)
|
|
54
|
+
self.network = network
|
|
55
|
+
self.micro_inputs = nn.CellList()
|
|
56
|
+
self.micro_size = micro_size
|
|
57
|
+
self.add_list = []
|
|
58
|
+
if not isinstance(network, Cell):
|
|
59
|
+
raise TypeError("For 'PipelineCell', the argument 'network' must cell type, "
|
|
60
|
+
"but got the type : {}.".format(type(network)))
|
|
61
|
+
if not isinstance(micro_size, int):
|
|
62
|
+
raise TypeError("For 'PipelineCell', the argument 'micro_size' must be integer, "
|
|
63
|
+
"but got the type : {}.".format(type(micro_size)))
|
|
64
|
+
if micro_size <= 0:
|
|
65
|
+
raise ValueError("For 'PipelineCell', the argument 'micro_size' must be large than 0, "
|
|
66
|
+
"but got {}.".format(micro_size))
|
|
67
|
+
for i in range(micro_size):
|
|
68
|
+
micro_input = _MicroBatch(micro_size)
|
|
69
|
+
self.micro_inputs.append(micro_input)
|
|
70
|
+
self.add = P.Add().add_prim_attr("pipeline_end", i)
|
|
71
|
+
self.add_list.append(self.add)
|
|
72
|
+
self._get_attr_from_cell(network)
|
|
73
|
+
|
|
74
|
+
# prase stage_config
|
|
75
|
+
config_dict = {}
|
|
76
|
+
if stage_config is not None:
|
|
77
|
+
for cell_name, stage_num in stage_config.items():
|
|
78
|
+
config_cell_name = cell_name
|
|
79
|
+
config_stage_num = stage_num
|
|
80
|
+
config_dict[config_cell_name] = config_stage_num
|
|
81
|
+
|
|
82
|
+
# set cell.stage_config
|
|
83
|
+
for cell_name, cell in self.network.cells_and_names():
|
|
84
|
+
for config_cell_name, config_stage_num in config_dict.copy().items():
|
|
85
|
+
if not cell_name or not config_cell_name:
|
|
86
|
+
continue
|
|
87
|
+
if cell_name == config_cell_name:
|
|
88
|
+
setattr(cell, "pipeline_stage", config_stage_num)
|
|
89
|
+
del config_dict[config_cell_name]
|
|
90
|
+
|
|
91
|
+
for config_cell_name, config_stage_num in config_dict.copy().items():
|
|
92
|
+
if str(network) == config_cell_name:
|
|
93
|
+
setattr(network, "pipeline_stage", config_stage_num)
|
|
94
|
+
del config_dict[config_cell_name]
|
|
95
|
+
|
|
96
|
+
# if there are any config elements left, print them
|
|
97
|
+
if config_dict:
|
|
98
|
+
for config_cell_name, config_stage_num in config_dict.items():
|
|
99
|
+
logger.error("pipeline_cell stage_config set pipeline_stage fail!")
|
|
100
|
+
logger.warning("config cell name:" + str(config_cell_name) +
|
|
101
|
+
" config stage num:" + str(config_stage_num))
|
|
102
|
+
logger.warning("network:" + str(self.network))
|
|
103
|
+
logger.warning("cell name available:")
|
|
104
|
+
for cell_name, cell in self.network.cells_and_names():
|
|
105
|
+
logger.warning(cell_name)
|
|
106
|
+
raise KeyError("For 'PipelineCell', the argument 'stage_config' : {} is not "
|
|
107
|
+
"found in 'network' : {}".format(config_dict, network))
|
|
108
|
+
|
|
109
|
+
def construct(self, *inputs):
|
|
110
|
+
ret = None
|
|
111
|
+
for i in range(self.micro_size):
|
|
112
|
+
micro_input = self.micro_inputs[i](i, *inputs)
|
|
113
|
+
output = self.network(*micro_input)
|
|
114
|
+
if ret is not None:
|
|
115
|
+
ret = self.add_list[i](ret, output)
|
|
116
|
+
else:
|
|
117
|
+
ret = output
|
|
118
|
+
return ret
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class Pipeline(PipelineCell):
|
|
122
|
+
"""
|
|
123
|
+
Specify the number of micro_batch for pipeline parallelism and the division rules for stage.
|
|
124
|
+
|
|
125
|
+
Note:
|
|
126
|
+
micro_size must be greater or equal to pipeline stages.
|
|
127
|
+
|
|
128
|
+
Args:
|
|
129
|
+
network (Cell): The target network to wrap.
|
|
130
|
+
micro_size (int): MicroBatch size.
|
|
131
|
+
stage_config (dict, optional): Stage configuration for cell's execution in pipeline parallel. Default ``None``.
|
|
132
|
+
|
|
133
|
+
Raises:
|
|
134
|
+
TypeError: The type of `net` is not cell.
|
|
135
|
+
TypeError: If the type of `micro_size` is not int.
|
|
136
|
+
ValueError: When `micro_size` is 0 or negative value.
|
|
137
|
+
KeyError: `dict` cell name matching exception,
|
|
138
|
+
there are remaining configuration items after traversing all `cell` under the current net.
|
|
139
|
+
|
|
140
|
+
Supported Platforms:
|
|
141
|
+
``Ascend``
|
|
142
|
+
|
|
143
|
+
Examples:
|
|
144
|
+
>>> from mindspore.parallel.nn import Pipeline
|
|
145
|
+
>>> # Define the network structure of LeNet5. Refer to
|
|
146
|
+
>>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
|
|
147
|
+
>>> net = LeNet5()
|
|
148
|
+
>>> net = Pipeline(net, 4, stage_config={"cell_name_0": 0, "cell_name_1": 1})
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class MicroBatchInterleaved(Cell):
|
|
153
|
+
"""
|
|
154
|
+
Implement the static graph parallel multi-copy splitting function to enable concurrent computation
|
|
155
|
+
and communication.
|
|
156
|
+
Application scenario: When there is model parallelism in semi-automatic mode
|
|
157
|
+
and network, if the first slice data is calculating forward, the second slice data will execute the
|
|
158
|
+
communication operators at the same time, to achieve the performance acceleration of communication and computing
|
|
159
|
+
concurrency.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
network (Cell): The target network to wrap.
|
|
163
|
+
interleave_num (int, optional): split num of batch size. Default: ``2`` .
|
|
164
|
+
|
|
165
|
+
Inputs:
|
|
166
|
+
tuple[Tensor]. It's the same with the input of the `network` .
|
|
167
|
+
|
|
168
|
+
Outputs:
|
|
169
|
+
The wrapped input. The output of the input `network` should be a Tensor.
|
|
170
|
+
|
|
171
|
+
Supported Platforms:
|
|
172
|
+
``Ascend``
|
|
173
|
+
|
|
174
|
+
Examples:
|
|
175
|
+
>>> import mindspore.nn as nn
|
|
176
|
+
>>> # Define the network structure of LeNet5. Refer to
|
|
177
|
+
>>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
|
|
178
|
+
>>> net = LeNet5()
|
|
179
|
+
>>> net = nn.MicroBatchInterleaved(net, 2)
|
|
180
|
+
"""
|
|
181
|
+
def __init__(self, network, interleave_num=2):
|
|
182
|
+
super(MicroBatchInterleaved, self).__init__(auto_prefix=False)
|
|
183
|
+
if not isinstance(interleave_num, int):
|
|
184
|
+
raise TypeError("For 'MicroBatchInterleaved', the argument 'interleave_num' must be integer, "
|
|
185
|
+
"but got the type : {}.".format(type(interleave_num)))
|
|
186
|
+
if interleave_num <= 0:
|
|
187
|
+
raise ValueError("For 'MicroBatchInterleaved', the argument 'interleave_num' must be large than 0, "
|
|
188
|
+
"but got {}.".format(interleave_num))
|
|
189
|
+
self.network = network
|
|
190
|
+
self.interleave_num = interleave_num
|
|
191
|
+
self.interleave_inputs = nn.CellList()
|
|
192
|
+
self.add = P.Add().add_prim_attr("micro_interleaved_add_flag", True)
|
|
193
|
+
for _ in range(interleave_num):
|
|
194
|
+
interleave_data = _MicroBatch(interleave_num)
|
|
195
|
+
interleave_data.strided_slice.add_prim_attr("strided_slice_flag", True)
|
|
196
|
+
interleave_data.strided_slice.add_prim_attr("interleave_num", interleave_num)
|
|
197
|
+
self.interleave_inputs.append(interleave_data)
|
|
198
|
+
self._get_attr_from_cell(network)
|
|
199
|
+
|
|
200
|
+
def construct(self, *inputs):
|
|
201
|
+
output = 0.0
|
|
202
|
+
for i in range(self.interleave_num):
|
|
203
|
+
interleave_input = self.interleave_inputs[i](i, *inputs)
|
|
204
|
+
output = self.add(output, self.network(*interleave_input))
|
|
205
|
+
return output
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
class GradAccumulation(Cell):
|
|
209
|
+
"""
|
|
210
|
+
Implementation of parallel gradient accumulation for static graphs.
|
|
211
|
+
|
|
212
|
+
Args:
|
|
213
|
+
network (Cell): The target network to wrap.
|
|
214
|
+
micro_size (int): MicroBatch size.
|
|
215
|
+
|
|
216
|
+
Raises:
|
|
217
|
+
TypeError: The type of `network` is not cell.
|
|
218
|
+
TypeError: If the type of `micro_size` is not int.
|
|
219
|
+
ValueError: When `micro_size` is 0 or negative value.
|
|
220
|
+
|
|
221
|
+
Supported Platforms:
|
|
222
|
+
``Ascend``
|
|
223
|
+
|
|
224
|
+
Examples:
|
|
225
|
+
>>> from mindspore.parallel.nn import GradAccumulation
|
|
226
|
+
>>> # Define the network structure of LeNet5. Refer to
|
|
227
|
+
>>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
|
|
228
|
+
>>> net = LeNet5()
|
|
229
|
+
>>> net = GradAccumulation(net, 4)
|
|
230
|
+
"""
|
|
231
|
+
def __init__(self, network, micro_size):
|
|
232
|
+
super(GradAccumulation, self).__init__(auto_prefix=False)
|
|
233
|
+
self.network = network
|
|
234
|
+
self.micro_inputs = nn.CellList()
|
|
235
|
+
self.micro_size = micro_size
|
|
236
|
+
self.add_list = []
|
|
237
|
+
if not isinstance(network, Cell):
|
|
238
|
+
raise TypeError("For 'GradAccumulation', the argument 'network' must cell type, "
|
|
239
|
+
"but got the type : {}.".format(type(network)))
|
|
240
|
+
if not isinstance(micro_size, int):
|
|
241
|
+
raise TypeError("For 'GradAccumulation', the argument 'micro_size' must be integer, "
|
|
242
|
+
"but got the type : {}.".format(type(micro_size)))
|
|
243
|
+
if micro_size <= 0:
|
|
244
|
+
raise ValueError("For 'GradAccumulation', the argument 'micro_size' must be large than 0, "
|
|
245
|
+
"but got {}.".format(micro_size))
|
|
246
|
+
for i in range(micro_size):
|
|
247
|
+
micro_input = _MicroBatch(micro_size)
|
|
248
|
+
micro_input.strided_slice.add_prim_attr("grad_accu_num", micro_size)
|
|
249
|
+
self.micro_inputs.append(micro_input)
|
|
250
|
+
self.add = P.Add().add_prim_attr("forward_end", i)
|
|
251
|
+
self.add_list.append(self.add)
|
|
252
|
+
self._get_attr_from_cell(network)
|
|
253
|
+
|
|
254
|
+
def construct(self, *inputs):
|
|
255
|
+
ret = None
|
|
256
|
+
for i in range(self.micro_size):
|
|
257
|
+
micro_input = self.micro_inputs[i](i, *inputs)
|
|
258
|
+
output = self.network(*micro_input)
|
|
259
|
+
if ret is not None:
|
|
260
|
+
ret = self.add_list[i](ret, output)
|
|
261
|
+
else:
|
|
262
|
+
ret = output
|
|
263
|
+
return ret
|