mindspore 2.5.0__cp310-cp310-win_amd64.whl → 2.6.0rc1__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
- mindspore/Newtonsoft.Json.dll +0 -0
- mindspore/__init__.py +6 -4
- mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
- mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
- mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -0
- mindspore/_checkparam.py +3 -33
- mindspore/_deprecated/__init__.py +17 -0
- mindspore/_deprecated/jit.py +198 -0
- mindspore/_extends/builtin_operations.py +1 -1
- mindspore/_extends/parse/__init__.py +6 -7
- mindspore/_extends/parse/compile_config.py +19 -0
- mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
- mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
- mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
- mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
- mindspore/_extends/parse/parser.py +24 -193
- mindspore/_extends/parse/resources.py +1 -5
- mindspore/_extends/parse/standard_method.py +97 -74
- mindspore/_extends/pijit/__init__.py +2 -2
- mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
- mindspore/_extends/pijit/tensor_func_list.py +27 -0
- mindspore/_extends/utils.py +1 -1
- mindspore/amp.py +4 -4
- mindspore/atlprov.dll +0 -0
- mindspore/avcodec-59.dll +0 -0
- mindspore/avdevice-59.dll +0 -0
- mindspore/avfilter-8.dll +0 -0
- mindspore/avformat-59.dll +0 -0
- mindspore/avutil-57.dll +0 -0
- mindspore/boost/__init__.py +2 -2
- mindspore/boost/base.py +3 -7
- mindspore/boost/boost_cell_wrapper.py +2 -2
- mindspore/c1.dll +0 -0
- mindspore/c1xx.dll +0 -0
- mindspore/c2.dll +0 -0
- mindspore/common/__init__.py +4 -3
- mindspore/common/_grad_function.py +56 -0
- mindspore/common/_pijit_context.py +14 -5
- mindspore/common/_register_for_tensor.py +1 -1
- mindspore/common/_stub_tensor.py +5 -10
- mindspore/common/_tensor_cpp_method.py +1 -1
- mindspore/common/_tensor_docs.py +1915 -3287
- mindspore/common/api.py +341 -354
- mindspore/common/auto_dynamic_shape.py +41 -44
- mindspore/common/dtype.py +5 -2
- mindspore/common/dump.py +7 -5
- mindspore/common/file_system.py +3 -0
- mindspore/common/hook_handle.py +5 -3
- mindspore/common/initializer.py +10 -6
- mindspore/common/jit_begin_end.py +94 -0
- mindspore/common/jit_config.py +6 -1
- mindspore/common/jit_context.py +76 -0
- mindspore/common/jit_trace.py +378 -0
- mindspore/common/lazy_inline.py +2 -2
- mindspore/common/mutable.py +5 -4
- mindspore/common/parameter.py +106 -39
- mindspore/common/seed.py +2 -2
- mindspore/common/sparse_tensor.py +23 -17
- mindspore/common/tensor.py +297 -714
- mindspore/communication/__init__.py +7 -5
- mindspore/communication/_comm_helper.py +47 -2
- mindspore/communication/comm_func.py +70 -53
- mindspore/communication/management.py +83 -17
- mindspore/context.py +214 -560
- mindspore/dataset/__init__.py +44 -20
- mindspore/dataset/audio/__init__.py +2 -8
- mindspore/dataset/audio/transforms.py +3 -17
- mindspore/dataset/core/config.py +3 -3
- mindspore/dataset/engine/cache_client.py +1 -1
- mindspore/dataset/engine/datasets.py +102 -120
- mindspore/dataset/engine/datasets_audio.py +22 -22
- mindspore/dataset/engine/datasets_standard_format.py +43 -24
- mindspore/dataset/engine/datasets_text.py +78 -85
- mindspore/dataset/engine/datasets_user_defined.py +108 -76
- mindspore/dataset/engine/datasets_vision.py +111 -108
- mindspore/dataset/engine/iterators.py +5 -3
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
- mindspore/dataset/engine/samplers.py +279 -57
- mindspore/dataset/engine/serializer_deserializer.py +2 -1
- mindspore/dataset/engine/validators.py +10 -0
- mindspore/dataset/text/__init__.py +7 -6
- mindspore/dataset/text/transforms.py +6 -5
- mindspore/dataset/text/utils.py +3 -3
- mindspore/dataset/transforms/__init__.py +0 -9
- mindspore/dataset/transforms/transforms.py +3 -3
- mindspore/dataset/utils/browse_dataset.py +1 -1
- mindspore/dataset/vision/__init__.py +2 -9
- mindspore/dataset/vision/transforms.py +202 -158
- mindspore/dataset/vision/utils.py +7 -5
- mindspore/device_context/ascend/op_debug.py +60 -1
- mindspore/device_context/ascend/op_tuning.py +0 -4
- mindspore/device_manager.py +39 -3
- mindspore/dnnl.dll +0 -0
- mindspore/dpcmi.dll +0 -0
- mindspore/experimental/es/embedding_service.py +35 -27
- mindspore/experimental/map_parameter.py +4 -4
- mindspore/experimental/optim/adadelta.py +22 -26
- mindspore/experimental/optim/adagrad.py +4 -4
- mindspore/experimental/optim/adam.py +4 -0
- mindspore/experimental/optim/adamax.py +4 -4
- mindspore/experimental/optim/adamw.py +4 -0
- mindspore/experimental/optim/asgd.py +1 -1
- mindspore/experimental/optim/lr_scheduler.py +40 -22
- mindspore/experimental/optim/radam.py +5 -5
- mindspore/experimental/optim/rprop.py +1 -1
- mindspore/experimental/optim/sgd.py +1 -1
- mindspore/hal/contiguous_tensors_handle.py +6 -10
- mindspore/hal/device.py +55 -81
- mindspore/hal/event.py +38 -55
- mindspore/hal/memory.py +93 -144
- mindspore/hal/stream.py +81 -125
- mindspore/include/dataset/constants.h +7 -4
- mindspore/include/dataset/execute.h +2 -2
- mindspore/jpeg62.dll +0 -0
- mindspore/log.py +40 -2
- mindspore/mindrecord/__init__.py +20 -7
- mindspore/mindspore_backend_common.dll +0 -0
- mindspore/mindspore_backend_manager.dll +0 -0
- mindspore/mindspore_common.dll +0 -0
- mindspore/mindspore_core.dll +0 -0
- mindspore/mindspore_dump.dll +0 -0
- mindspore/mindspore_frontend.dll +0 -0
- mindspore/mindspore_glog.dll +0 -0
- mindspore/mindspore_memory_pool.dll +0 -0
- mindspore/mindspore_ms_backend.dll +0 -0
- mindspore/mindspore_ops.dll +0 -0
- mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
- mindspore/mindspore_ops_kernel_common.dll +0 -0
- mindspore/mindspore_profiler.dll +0 -0
- mindspore/mindspore_pyboost.dll +0 -0
- mindspore/mindspore_pynative.dll +0 -0
- mindspore/mindspore_res_manager.dll +0 -0
- mindspore/mindspore_runtime_pipeline.dll +0 -0
- mindspore/mint/__init__.py +131 -700
- mindspore/mint/distributed/__init__.py +5 -1
- mindspore/mint/distributed/distributed.py +194 -109
- mindspore/mint/linalg/__init__.py +2 -0
- mindspore/mint/nn/__init__.py +280 -18
- mindspore/mint/nn/functional.py +282 -64
- mindspore/mint/nn/layer/__init__.py +4 -0
- mindspore/mint/nn/layer/_functions.py +7 -3
- mindspore/mint/nn/layer/activation.py +120 -13
- mindspore/mint/nn/layer/conv.py +218 -24
- mindspore/mint/nn/layer/normalization.py +15 -16
- mindspore/mint/nn/layer/padding.py +1 -1
- mindspore/mint/nn/layer/pooling.py +66 -1
- mindspore/mint/optim/__init__.py +2 -1
- mindspore/mint/optim/sgd.py +171 -0
- mindspore/msobj140.dll +0 -0
- mindspore/mspdb140.dll +0 -0
- mindspore/mspdbcore.dll +0 -0
- mindspore/mspdbst.dll +0 -0
- mindspore/mspft140.dll +0 -0
- mindspore/msvcdis140.dll +0 -0
- mindspore/msvcp140_1.dll +0 -0
- mindspore/msvcp140_2.dll +0 -0
- mindspore/msvcp140_atomic_wait.dll +0 -0
- mindspore/msvcp140_codecvt_ids.dll +0 -0
- mindspore/nn/__init__.py +4 -1
- mindspore/nn/cell.py +1250 -176
- mindspore/nn/layer/activation.py +23 -21
- mindspore/nn/layer/basic.py +22 -16
- mindspore/nn/layer/container.py +1 -1
- mindspore/nn/layer/conv.py +22 -17
- mindspore/nn/layer/embedding.py +9 -8
- mindspore/nn/layer/normalization.py +48 -42
- mindspore/nn/layer/pooling.py +75 -31
- mindspore/nn/layer/transformer.py +11 -10
- mindspore/nn/learning_rate_schedule.py +4 -2
- mindspore/nn/loss/loss.py +27 -19
- mindspore/nn/optim/ada_grad.py +6 -5
- mindspore/nn/optim/adadelta.py +9 -7
- mindspore/nn/optim/adafactor.py +1 -1
- mindspore/nn/optim/adam.py +16 -12
- mindspore/nn/optim/adamax.py +8 -7
- mindspore/nn/optim/adasum.py +5 -5
- mindspore/nn/optim/asgd.py +1 -1
- mindspore/nn/optim/ftrl.py +11 -9
- mindspore/nn/optim/lamb.py +1 -1
- mindspore/nn/optim/lazyadam.py +12 -10
- mindspore/nn/optim/momentum.py +7 -6
- mindspore/nn/optim/optimizer.py +2 -2
- mindspore/nn/optim/proximal_ada_grad.py +12 -10
- mindspore/nn/optim/rmsprop.py +13 -12
- mindspore/nn/optim/rprop.py +9 -7
- mindspore/nn/optim/sgd.py +9 -6
- mindspore/nn/optim/tft_wrapper.py +5 -2
- mindspore/nn/probability/bijector/bijector.py +17 -11
- mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
- mindspore/nn/probability/bijector/invert.py +2 -2
- mindspore/nn/probability/bijector/scalar_affine.py +3 -3
- mindspore/nn/probability/bijector/softplus.py +3 -2
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +1 -1
- mindspore/nn/probability/distribution/cauchy.py +4 -2
- mindspore/nn/probability/distribution/exponential.py +6 -7
- mindspore/nn/probability/distribution/gamma.py +2 -2
- mindspore/nn/probability/distribution/gumbel.py +2 -2
- mindspore/nn/probability/distribution/half_normal.py +5 -3
- mindspore/nn/probability/distribution/logistic.py +5 -3
- mindspore/nn/probability/distribution/poisson.py +1 -1
- mindspore/nn/probability/distribution/uniform.py +5 -3
- mindspore/nn/reinforcement/_tensors_queue.py +1 -1
- mindspore/nn/reinforcement/tensor_array.py +1 -1
- mindspore/nn/wrap/__init__.py +6 -6
- mindspore/nn/wrap/cell_wrapper.py +178 -117
- mindspore/nn/wrap/grad_reducer.py +45 -36
- mindspore/nn/wrap/loss_scale.py +3 -3
- mindspore/numpy/array_creations.py +3 -3
- mindspore/numpy/array_ops.py +1 -1
- mindspore/numpy/math_ops.py +4 -4
- mindspore/numpy/utils.py +1 -2
- mindspore/numpy/utils_const.py +1 -2
- mindspore/opencv_core452.dll +0 -0
- mindspore/opencv_imgcodecs452.dll +0 -0
- mindspore/opencv_imgproc452.dll +0 -0
- mindspore/ops/__init__.py +3 -2
- mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
- mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
- mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
- mindspore/ops/_register_for_op.py +0 -11
- mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
- mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
- mindspore/ops/_vmap/vmap_array_ops.py +7 -6
- mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
- mindspore/ops/_vmap/vmap_math_ops.py +4 -7
- mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
- mindspore/ops/auto_generate/__init__.py +4 -3
- mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +102 -49
- mindspore/ops/auto_generate/gen_extend_func.py +281 -135
- mindspore/ops/auto_generate/gen_ops_def.py +2574 -2326
- mindspore/ops/auto_generate/gen_ops_prim.py +8566 -2755
- mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
- mindspore/ops/composite/__init__.py +2 -1
- mindspore/ops/composite/base.py +19 -24
- mindspore/ops/composite/math_ops.py +6 -16
- mindspore/ops/composite/multitype_ops/__init__.py +5 -2
- mindspore/ops/composite/multitype_ops/_compile_utils.py +2 -3
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
- mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
- mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
- mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
- mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
- mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
- mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
- mindspore/ops/function/__init__.py +28 -2
- mindspore/ops/function/_add_attr_func.py +58 -0
- mindspore/ops/function/array_func.py +1629 -2345
- mindspore/ops/function/clip_func.py +38 -45
- mindspore/ops/function/debug_func.py +36 -44
- mindspore/ops/function/grad/__init__.py +1 -0
- mindspore/ops/function/grad/grad_func.py +104 -71
- mindspore/ops/function/image_func.py +1 -1
- mindspore/ops/function/linalg_func.py +46 -78
- mindspore/ops/function/math_func.py +3035 -3705
- mindspore/ops/function/nn_func.py +676 -241
- mindspore/ops/function/other_func.py +159 -1
- mindspore/ops/function/parameter_func.py +17 -30
- mindspore/ops/function/random_func.py +204 -361
- mindspore/ops/function/reshard_func.py +4 -70
- mindspore/ops/function/sparse_func.py +3 -3
- mindspore/ops/function/sparse_unary_func.py +5 -5
- mindspore/ops/function/spectral_func.py +25 -58
- mindspore/ops/function/vmap_func.py +24 -17
- mindspore/ops/functional.py +6 -4
- mindspore/ops/functional_overload.py +547 -4
- mindspore/ops/op_info_register.py +32 -244
- mindspore/ops/operations/__init__.py +10 -5
- mindspore/ops/operations/_custom_ops_utils.py +247 -0
- mindspore/ops/operations/_grad_ops.py +1 -10
- mindspore/ops/operations/_inner_ops.py +5 -76
- mindspore/ops/operations/_ms_kernel.py +4 -10
- mindspore/ops/operations/_rl_inner_ops.py +1 -1
- mindspore/ops/operations/_scalar_ops.py +3 -2
- mindspore/ops/operations/_sequence_ops.py +1 -1
- mindspore/ops/operations/_tensor_array.py +1 -1
- mindspore/ops/operations/array_ops.py +37 -22
- mindspore/ops/operations/comm_ops.py +150 -107
- mindspore/ops/operations/custom_ops.py +221 -23
- mindspore/ops/operations/debug_ops.py +115 -16
- mindspore/ops/operations/inner_ops.py +1 -1
- mindspore/ops/operations/linalg_ops.py +1 -58
- mindspore/ops/operations/manually_defined/_inner.py +1 -1
- mindspore/ops/operations/manually_defined/ops_def.py +746 -79
- mindspore/ops/operations/math_ops.py +21 -18
- mindspore/ops/operations/nn_ops.py +65 -191
- mindspore/ops/operations/other_ops.py +62 -9
- mindspore/ops/operations/random_ops.py +13 -7
- mindspore/ops/operations/reshard_ops.py +1 -1
- mindspore/ops/operations/sparse_ops.py +2 -2
- mindspore/ops/primitive.py +43 -32
- mindspore/ops/tensor_method.py +232 -13
- mindspore/ops_generate/__init__.py +0 -5
- mindspore/ops_generate/aclnn/__init__.py +0 -0
- mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
- mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
- mindspore/ops_generate/api/__init__.py +0 -0
- mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
- mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
- mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
- mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
- mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
- mindspore/ops_generate/api/gen_api.py +103 -0
- mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
- mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
- mindspore/ops_generate/common/__init__.py +0 -0
- mindspore/ops_generate/common/gen_constants.py +91 -0
- mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
- mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
- mindspore/ops_generate/{template.py → common/template.py} +96 -84
- mindspore/ops_generate/gen_ops.py +23 -325
- mindspore/ops_generate/op_def/__init__.py +0 -0
- mindspore/ops_generate/op_def/gen_op_def.py +90 -0
- mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
- mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -7
- mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
- mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
- mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
- mindspore/ops_generate/op_def_py/__init__.py +0 -0
- mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
- mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
- mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
- mindspore/ops_generate/pyboost/__init__.py +0 -0
- mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
- mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
- mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
- mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
- mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
- mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
- mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
- mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
- mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
- mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
- mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
- mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
- mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
- mindspore/ops_generate/resources/__init__.py +0 -0
- mindspore/ops_generate/resources/resource_list.py +30 -0
- mindspore/ops_generate/resources/resource_loader.py +36 -0
- mindspore/ops_generate/resources/resource_manager.py +64 -0
- mindspore/ops_generate/resources/yaml_loader.py +88 -0
- mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
- mindspore/parallel/__init__.py +6 -2
- mindspore/parallel/_auto_parallel_context.py +133 -6
- mindspore/parallel/_cell_wrapper.py +130 -15
- mindspore/parallel/_parallel_serialization.py +95 -4
- mindspore/parallel/_ps_context.py +1 -1
- mindspore/parallel/_recovery_context.py +7 -2
- mindspore/parallel/_tensor.py +142 -18
- mindspore/parallel/_utils.py +198 -25
- mindspore/parallel/algo_parameter_config.py +3 -3
- mindspore/parallel/auto_parallel.py +732 -0
- mindspore/parallel/checkpoint_convert.py +159 -0
- mindspore/parallel/checkpoint_transform.py +656 -37
- mindspore/parallel/cluster/process_entity/_api.py +151 -19
- mindspore/parallel/cluster/run.py +1 -1
- mindspore/parallel/function/__init__.py +24 -0
- mindspore/parallel/function/reshard_func.py +259 -0
- mindspore/parallel/nn/__init__.py +25 -0
- mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
- mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
- mindspore/parallel/parameter_broadcast.py +24 -13
- mindspore/parallel/shard.py +137 -61
- mindspore/parallel/transform_safetensors.py +287 -95
- mindspore/pgodb140.dll +0 -0
- mindspore/pgort140.dll +0 -0
- mindspore/profiler/__init__.py +9 -5
- mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
- mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
- mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +22 -0
- mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
- mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
- mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
- mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
- mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
- mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
- mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
- mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
- mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
- mindspore/profiler/common/constant.py +12 -0
- mindspore/profiler/common/msprof_cmd_tool.py +42 -23
- mindspore/profiler/common/path_manager.py +24 -0
- mindspore/profiler/common/profiler_context.py +26 -2
- mindspore/profiler/common/profiler_meta_data.py +74 -0
- mindspore/profiler/common/profiler_parameters.py +59 -18
- mindspore/profiler/common/profiler_path_manager.py +66 -7
- mindspore/profiler/dynamic_profiler.py +112 -79
- mindspore/profiler/envprofiler.py +26 -1
- mindspore/profiler/experimental_config.py +197 -0
- mindspore/profiler/mstx.py +57 -14
- mindspore/profiler/platform/npu_profiler.py +33 -7
- mindspore/profiler/profiler.py +541 -45
- mindspore/profiler/profiler_action_controller.py +1 -1
- mindspore/profiler/profiler_interface.py +4 -0
- mindspore/profiler/schedule.py +57 -22
- mindspore/rewrite/api/node.py +15 -13
- mindspore/rewrite/api/symbol_tree.py +1 -1
- mindspore/run_check/_check_version.py +25 -14
- mindspore/run_check/run_check.py +1 -1
- mindspore/runtime/__init__.py +2 -2
- mindspore/runtime/executor.py +40 -11
- mindspore/runtime/memory.py +25 -8
- mindspore/safeguard/rewrite_obfuscation.py +12 -9
- mindspore/swresample-4.dll +0 -0
- mindspore/swscale-6.dll +0 -0
- mindspore/tbbmalloc.dll +0 -0
- mindspore/tinyxml2.dll +0 -0
- mindspore/train/__init__.py +8 -8
- mindspore/train/_utils.py +35 -7
- mindspore/train/amp.py +1 -1
- mindspore/train/callback/__init__.py +2 -2
- mindspore/train/callback/_callback.py +2 -16
- mindspore/train/callback/_checkpoint.py +24 -40
- mindspore/train/callback/_cluster_monitor.py +14 -18
- mindspore/train/callback/_flops_collector.py +2 -3
- mindspore/train/callback/_history.py +7 -4
- mindspore/train/callback/_lambda_callback.py +2 -2
- mindspore/train/callback/_landscape.py +0 -3
- mindspore/train/callback/_loss_monitor.py +2 -1
- mindspore/train/callback/_on_request_exit.py +6 -5
- mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
- mindspore/train/callback/_summary_collector.py +8 -13
- mindspore/train/callback/_time_monitor.py +2 -1
- mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +179 -103
- mindspore/train/data_sink.py +25 -2
- mindspore/train/dataset_helper.py +4 -5
- mindspore/train/loss_scale_manager.py +8 -7
- mindspore/train/metrics/accuracy.py +3 -3
- mindspore/train/metrics/confusion_matrix.py +9 -9
- mindspore/train/metrics/error.py +3 -3
- mindspore/train/metrics/hausdorff_distance.py +4 -4
- mindspore/train/metrics/mean_surface_distance.py +3 -3
- mindspore/train/metrics/metric.py +0 -12
- mindspore/train/metrics/occlusion_sensitivity.py +4 -2
- mindspore/train/metrics/precision.py +8 -6
- mindspore/train/metrics/recall.py +9 -9
- mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
- mindspore/train/mind_ir_pb2.py +19 -12
- mindspore/train/model.py +176 -103
- mindspore/train/serialization.py +246 -988
- mindspore/train/summary/_summary_adapter.py +2 -2
- mindspore/train/summary/summary_record.py +1 -1
- mindspore/turbojpeg.dll +0 -0
- mindspore/utils/__init__.py +3 -2
- mindspore/utils/dryrun.py +4 -2
- mindspore/utils/hooks.py +81 -0
- mindspore/utils/utils.py +138 -4
- mindspore/vcmeta.dll +0 -0
- mindspore/vcruntime140.dll +0 -0
- mindspore/vcruntime140_1.dll +0 -0
- mindspore/version.py +1 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +2 -1
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +483 -438
- mindspore/_install_custom.py +0 -43
- mindspore/common/_register_for_adapter.py +0 -74
- mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
- mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
- mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
- mindspore/ops_generate/gen_constants.py +0 -190
- mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
- mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
- /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +0 -0
- {mindspore-2.5.0.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -22,12 +22,61 @@ Users can also define a custom sampler by extending from the Sampler class.
|
|
|
22
22
|
import copy
|
|
23
23
|
import numbers
|
|
24
24
|
|
|
25
|
+
from enum import Enum
|
|
25
26
|
import numpy as np
|
|
26
27
|
import mindspore._c_dataengine as cde
|
|
27
28
|
import mindspore.dataset as ds
|
|
28
29
|
from ..core import validator_helpers as validator
|
|
29
30
|
|
|
30
31
|
|
|
32
|
+
class Shuffle(str, Enum):
|
|
33
|
+
"""Specify the shuffle mode.
|
|
34
|
+
|
|
35
|
+
- ``Shuffle.FALSE`` : Disable the shuffle.
|
|
36
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
37
|
+
global shuffle is used. When the number of dataset samples is greater than 100 million, partial shuffle is used.
|
|
38
|
+
- ``Shuffle.GLOBAL`` : Shuffle both the files and samples.
|
|
39
|
+
- ``Shuffle.PARTIAL`` : Shuffle data with every 1 million samples
|
|
40
|
+
- ``Shuffle.FILES`` : Shuffle files only.
|
|
41
|
+
- ``Shuffle.INFILE`` : Shuffle data within each file.
|
|
42
|
+
"""
|
|
43
|
+
FALSE: str = "false"
|
|
44
|
+
ADAPTIVE: str = "adaptive"
|
|
45
|
+
GLOBAL: str = "global"
|
|
46
|
+
PARTIAL: str = "partial"
|
|
47
|
+
FILES: str = "files"
|
|
48
|
+
INFILE: str = "infile"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
ShuffleToShuffleMode = {Shuffle.FALSE: cde.ShuffleMode.FALSE,
|
|
52
|
+
Shuffle.ADAPTIVE: cde.ShuffleMode.ADAPTIVE,
|
|
53
|
+
Shuffle.GLOBAL: cde.ShuffleMode.GLOBAL,
|
|
54
|
+
Shuffle.PARTIAL: cde.ShuffleMode.PARTIAL,
|
|
55
|
+
Shuffle.FILES: cde.ShuffleMode.FILES,
|
|
56
|
+
Shuffle.INFILE: cde.ShuffleMode.INFILE}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def shuffle_to_shuffle_mode(shuffle):
|
|
60
|
+
"""
|
|
61
|
+
Shuffle Enum to Shuffle Mode
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
shuffle (Shuffle): shuffle flag to shuffle mode in C layer
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
ShuffleMode, shuffle mode
|
|
68
|
+
"""
|
|
69
|
+
shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
|
|
70
|
+
if not isinstance(shuffle, Shuffle):
|
|
71
|
+
if shuffle is None or shuffle:
|
|
72
|
+
shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
|
|
73
|
+
else:
|
|
74
|
+
shuffle_mode = cde.ShuffleMode.FALSE # No shuffle
|
|
75
|
+
else:
|
|
76
|
+
shuffle_mode = ShuffleToShuffleMode[shuffle]
|
|
77
|
+
return shuffle_mode
|
|
78
|
+
|
|
79
|
+
|
|
31
80
|
def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
32
81
|
"""
|
|
33
82
|
Create sampler based on user input.
|
|
@@ -35,13 +84,16 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
|
35
84
|
Args:
|
|
36
85
|
num_samples (int): Number of samples.
|
|
37
86
|
input_sampler (Union[Iterable, Sampler]): Sampler from user.
|
|
38
|
-
shuffle (
|
|
87
|
+
shuffle (Shuffle): Shuffle is FALSE / ADAPTIVE / GLOBAL / PARTIAL / FILES / INFILE
|
|
39
88
|
num_shards (int): Number of shard for sharding.
|
|
40
89
|
shard_id (int): Shard ID.
|
|
41
90
|
|
|
42
91
|
Returns:
|
|
43
92
|
Sampler, sampler selected based on user input.
|
|
44
93
|
"""
|
|
94
|
+
if input_sampler is None and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL,
|
|
95
|
+
Shuffle.FILES, Shuffle.INFILE):
|
|
96
|
+
raise RuntimeError("The input parameter shuffle: {} is not valid.".format(shuffle))
|
|
45
97
|
|
|
46
98
|
if input_sampler is not None:
|
|
47
99
|
# If the user provided a sampler, then it doesn't matter what the other args are because
|
|
@@ -67,23 +119,14 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
|
|
|
67
119
|
if isinstance(input_sampler, int):
|
|
68
120
|
return SubsetSampler([input_sampler])
|
|
69
121
|
raise TypeError('Unsupported sampler object of type ({})'.format(type(input_sampler)))
|
|
70
|
-
if shuffle is
|
|
71
|
-
if num_shards is not None:
|
|
72
|
-
# If shuffle is not specified, sharding enabled, use distributed random sampler
|
|
73
|
-
shuffle = True
|
|
74
|
-
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
75
|
-
# If shuffle is not specified, sharding disabled, use random sampler
|
|
76
|
-
if num_samples is not None and num_samples != 0:
|
|
77
|
-
return RandomSampler(replacement=True, num_samples=num_samples)
|
|
78
|
-
return RandomSampler(num_samples=num_samples)
|
|
79
|
-
if shuffle is True:
|
|
122
|
+
if shuffle is not Shuffle.FALSE:
|
|
80
123
|
if num_shards is not None:
|
|
81
124
|
# If shuffle enabled, sharding enabled, use distributed random sampler
|
|
82
125
|
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
83
126
|
# If shuffle enabled, sharding disabled, use random sampler
|
|
84
127
|
if num_samples is not None:
|
|
85
|
-
return RandomSampler(replacement=True, num_samples=num_samples)
|
|
86
|
-
return RandomSampler(num_samples=num_samples)
|
|
128
|
+
return RandomSampler(replacement=True, num_samples=num_samples, shuffle=shuffle)
|
|
129
|
+
return RandomSampler(num_samples=num_samples, shuffle=shuffle)
|
|
87
130
|
if num_shards is not None:
|
|
88
131
|
# If shuffle disabled, sharding enabled, use distributed sequential sampler
|
|
89
132
|
return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
|
|
@@ -110,6 +153,10 @@ class BuiltinSampler:
|
|
|
110
153
|
Add a sub-sampler for given sampler. The parent will receive all data from the
|
|
111
154
|
output of sub-sampler sampler and apply its sample logic to return new samples.
|
|
112
155
|
|
|
156
|
+
Note:
|
|
157
|
+
- If a child sampler is added and it has a shuffle option, its value cannot be ``Shuffle.PARTIAL`` .
|
|
158
|
+
Additionally, the parent sampler's shuffle value must be ``Shuffle.GLOBAL`` .
|
|
159
|
+
|
|
113
160
|
Args:
|
|
114
161
|
sampler (Sampler): Object used to choose samples from the dataset. Only builtin
|
|
115
162
|
samplers(:class:`mindspore.dataset.DistributedSampler` ,
|
|
@@ -127,6 +174,15 @@ class BuiltinSampler:
|
|
|
127
174
|
"""
|
|
128
175
|
if self.child_sampler is not None:
|
|
129
176
|
raise RuntimeError("Cannot add child sampler, this sampler already has a child.")
|
|
177
|
+
|
|
178
|
+
if sampler is not None and sampler.get_shuffle_mode() == Shuffle.PARTIAL:
|
|
179
|
+
raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the input sampler "
|
|
180
|
+
"must not be Shuffle.PARTIAL.")
|
|
181
|
+
|
|
182
|
+
if self.get_shuffle_mode() != Shuffle.GLOBAL and self.get_shuffle_mode() != Shuffle.FALSE:
|
|
183
|
+
raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the current sampler "
|
|
184
|
+
"must be Shuffle.FALSE or Shuffle.GLOBAL, but got: {}.".format(self.get_shuffle_mode()))
|
|
185
|
+
|
|
130
186
|
self.child_sampler = sampler
|
|
131
187
|
|
|
132
188
|
def get_child(self):
|
|
@@ -229,6 +285,10 @@ class BuiltinSampler:
|
|
|
229
285
|
|
|
230
286
|
return self.num_samples
|
|
231
287
|
|
|
288
|
+
def get_shuffle_mode(self):
|
|
289
|
+
""" Not implemented. """
|
|
290
|
+
return Shuffle.FALSE
|
|
291
|
+
|
|
232
292
|
|
|
233
293
|
class Sampler(BuiltinSampler):
|
|
234
294
|
"""
|
|
@@ -255,6 +315,8 @@ class Sampler(BuiltinSampler):
|
|
|
255
315
|
self.dataset_size = 0
|
|
256
316
|
self.child_sampler = None
|
|
257
317
|
self.num_samples = num_samples
|
|
318
|
+
if self.num_samples is None and hasattr(self, '__len__'):
|
|
319
|
+
self.num_samples = len(self)
|
|
258
320
|
self.batch_sizes = []
|
|
259
321
|
|
|
260
322
|
def __iter__(self):
|
|
@@ -271,32 +333,30 @@ class Sampler(BuiltinSampler):
|
|
|
271
333
|
|
|
272
334
|
# Initialization handshake callback
|
|
273
335
|
# Do not override this method!
|
|
274
|
-
def _handshake(self, ds_size
|
|
336
|
+
def _handshake(self, ds_size):
|
|
275
337
|
self.dataset_size = ds_size
|
|
276
|
-
self.num_samples = num_samples
|
|
277
338
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
339
|
+
def get_indices(self):
|
|
340
|
+
"""
|
|
341
|
+
Get the indices of the sampler.
|
|
342
|
+
|
|
343
|
+
Do not override this method!
|
|
344
|
+
"""
|
|
283
345
|
ret = []
|
|
284
346
|
batch_sizes = []
|
|
285
|
-
for
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
ret.extend(idx)
|
|
299
|
-
except StopIteration:
|
|
347
|
+
for count, idx in enumerate(self):
|
|
348
|
+
# The idx can be either a number (for sampler) or a list (for batch sampler).
|
|
349
|
+
# If number, we convert it to list first. So they can be handled in the same way.
|
|
350
|
+
if isinstance(idx, numbers.Number):
|
|
351
|
+
idx = [idx]
|
|
352
|
+
# normal sampler does not have batch sizes
|
|
353
|
+
batch_sizes.append(0)
|
|
354
|
+
else:
|
|
355
|
+
# Using extend instead of append will flatten the list, so we need to save the
|
|
356
|
+
# batch size information here.
|
|
357
|
+
batch_sizes.append(len(idx))
|
|
358
|
+
ret.extend(idx)
|
|
359
|
+
if self.num_samples is not None and count + 1 >= self.num_samples:
|
|
300
360
|
break
|
|
301
361
|
self.batch_sizes.append(batch_sizes)
|
|
302
362
|
indices = np.array(ret)
|
|
@@ -345,20 +405,71 @@ class Sampler(BuiltinSampler):
|
|
|
345
405
|
return self.child_sampler.is_sharded()
|
|
346
406
|
|
|
347
407
|
def get_num_samples(self):
|
|
348
|
-
if self.num_samples is None:
|
|
349
|
-
return
|
|
350
|
-
|
|
408
|
+
if self.num_samples is not None:
|
|
409
|
+
return self.num_samples
|
|
410
|
+
# deepcopy self to avoid changing the random state
|
|
411
|
+
fake_sampler = copy.deepcopy(self)
|
|
412
|
+
fake_sampler.get_indices()
|
|
413
|
+
return len(fake_sampler.batch_sizes[-1])
|
|
351
414
|
|
|
352
415
|
|
|
353
416
|
class DistributedSampler(BuiltinSampler):
|
|
354
417
|
"""
|
|
355
418
|
A sampler that accesses a shard of the dataset, it helps divide dataset into multi-subset for distributed training.
|
|
356
419
|
|
|
420
|
+
Note:
|
|
421
|
+
The shuffling modes supported for different datasets are as follows:
|
|
422
|
+
|
|
423
|
+
.. list-table:: List of support for shuffling mode
|
|
424
|
+
:widths: 50 50 50 50
|
|
425
|
+
:header-rows: 1
|
|
426
|
+
|
|
427
|
+
* - Shuffling Mode
|
|
428
|
+
- MindDataset
|
|
429
|
+
- TFRecordDataset
|
|
430
|
+
- Others
|
|
431
|
+
* - ``Shuffle.ADAPTIVE``
|
|
432
|
+
- Supported
|
|
433
|
+
- Not Supported
|
|
434
|
+
- Not Supported
|
|
435
|
+
* - ``Shuffle.GLOBAL``
|
|
436
|
+
- Supported
|
|
437
|
+
- Supported
|
|
438
|
+
- Supported
|
|
439
|
+
* - ``Shuffle.PARTIAL``
|
|
440
|
+
- Supported
|
|
441
|
+
- Not Supported
|
|
442
|
+
- Not Supported
|
|
443
|
+
* - ``Shuffle.FILES``
|
|
444
|
+
- Supported
|
|
445
|
+
- Supported
|
|
446
|
+
- Not Supported
|
|
447
|
+
* - ``Shuffle.INFILE``
|
|
448
|
+
- Supported
|
|
449
|
+
- Not Supported
|
|
450
|
+
- Not Supported
|
|
451
|
+
|
|
357
452
|
Args:
|
|
358
453
|
num_shards (int): Number of shards to divide the dataset into.
|
|
359
454
|
shard_id (int): Shard ID of the current shard, which should within the range of [0, `num_shards` - 1].
|
|
360
|
-
shuffle (bool, optional):
|
|
361
|
-
Default: ``True
|
|
455
|
+
shuffle (Union[bool, Shuffle], optional): Specify the shuffle mode.
|
|
456
|
+
Default: ``True``, performs ``mindspore.dataset.Shuffle.GLOBAL`` . If `shuffle` is ``False`` ,
|
|
457
|
+
no shuffling will be performed.
|
|
458
|
+
There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
|
|
459
|
+
|
|
460
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
461
|
+
``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
|
|
462
|
+
million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
|
|
463
|
+
|
|
464
|
+
- ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
|
|
465
|
+
|
|
466
|
+
- ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
|
|
467
|
+
The memory usage is less than ``Shuffle.GLOBAL`` .
|
|
468
|
+
|
|
469
|
+
- ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
|
|
470
|
+
|
|
471
|
+
- ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
|
|
472
|
+
|
|
362
473
|
num_samples (int, optional): The number of samples to draw. Default: ``None``, which means sample all elements.
|
|
363
474
|
offset(int, optional): The starting shard ID where the elements in the dataset are sent to, which
|
|
364
475
|
should be no more than `num_shards` . This parameter is only valid when a ConcatDataset takes
|
|
@@ -368,7 +479,7 @@ class DistributedSampler(BuiltinSampler):
|
|
|
368
479
|
Raises:
|
|
369
480
|
TypeError: If `num_shards` is not of type int.
|
|
370
481
|
TypeError: If `shard_id` is not of type int.
|
|
371
|
-
TypeError: If `shuffle` is not of type bool.
|
|
482
|
+
TypeError: If `shuffle` is not of type bool or Shuffle.
|
|
372
483
|
TypeError: If `num_samples` is not of type int.
|
|
373
484
|
TypeError: If `offset` is not of type int.
|
|
374
485
|
ValueError: If `num_samples` is a negative value.
|
|
@@ -392,8 +503,9 @@ class DistributedSampler(BuiltinSampler):
|
|
|
392
503
|
if not isinstance(shard_id, int):
|
|
393
504
|
raise TypeError("shard_id must be integer but was: {}.".format(shard_id))
|
|
394
505
|
|
|
395
|
-
if not isinstance(shuffle, bool)
|
|
396
|
-
|
|
506
|
+
if not isinstance(shuffle, bool) and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL,
|
|
507
|
+
Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
|
|
508
|
+
raise TypeError("shuffle must be a boolean value or valid shuffle mode but was: {}.".format(shuffle))
|
|
397
509
|
|
|
398
510
|
if num_samples is not None:
|
|
399
511
|
if not isinstance(num_samples, int):
|
|
@@ -407,7 +519,11 @@ class DistributedSampler(BuiltinSampler):
|
|
|
407
519
|
|
|
408
520
|
self.num_shards = num_shards
|
|
409
521
|
self.shard_id = shard_id
|
|
522
|
+
|
|
523
|
+
if isinstance(shuffle, bool):
|
|
524
|
+
shuffle = Shuffle.GLOBAL if shuffle is True else Shuffle.FALSE
|
|
410
525
|
self.shuffle = shuffle
|
|
526
|
+
|
|
411
527
|
# get seed in distributed scenario
|
|
412
528
|
# Example 1. if user set seeds by ds.config.set_seed(4321), then seed 4321 is used
|
|
413
529
|
# Example 2. if user does not set the seed, then existing or default seed (like 5489) is used
|
|
@@ -419,11 +535,18 @@ class DistributedSampler(BuiltinSampler):
|
|
|
419
535
|
""" Parse the sampler."""
|
|
420
536
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
421
537
|
shuffle = self.shuffle if self.shuffle is not None else True
|
|
538
|
+
|
|
539
|
+
if isinstance(shuffle, bool):
|
|
540
|
+
shuffle = Shuffle.GLOBAL if shuffle else Shuffle.FALSE
|
|
541
|
+
|
|
542
|
+
if shuffle not in (Shuffle.FALSE, Shuffle.GLOBAL):
|
|
543
|
+
raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
|
|
544
|
+
|
|
422
545
|
offset = self.offset if self.offset is not None else -1
|
|
423
546
|
# each time user calls create_dict_iterator() (to do repeat) sampler would get a different seed to shuffle
|
|
424
547
|
self.seed += 1
|
|
425
548
|
c_sampler = cde.DistributedSamplerObj(self.num_shards, self.shard_id,
|
|
426
|
-
shuffle, num_samples, self.seed, offset, True)
|
|
549
|
+
shuffle_to_shuffle_mode(shuffle), num_samples, self.seed, offset, True)
|
|
427
550
|
c_child_sampler = self.parse_child()
|
|
428
551
|
c_sampler.add_child(c_child_sampler)
|
|
429
552
|
return c_sampler
|
|
@@ -432,7 +555,14 @@ class DistributedSampler(BuiltinSampler):
|
|
|
432
555
|
""" Parse the sampler for MindRecord."""
|
|
433
556
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
434
557
|
shuffle = self.shuffle if self.shuffle is not None else True
|
|
435
|
-
|
|
558
|
+
|
|
559
|
+
# convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
|
|
560
|
+
if isinstance(shuffle, bool):
|
|
561
|
+
if shuffle:
|
|
562
|
+
shuffle = Shuffle.ADAPTIVE
|
|
563
|
+
else:
|
|
564
|
+
shuffle = Shuffle.FALSE
|
|
565
|
+
c_sampler = cde.MindrecordDistributedSampler(self.num_shards, self.shard_id, shuffle_to_shuffle_mode(shuffle),
|
|
436
566
|
self.seed, num_samples, self.offset)
|
|
437
567
|
c_child_sampler = self.parse_child_for_minddataset()
|
|
438
568
|
c_sampler.add_child(c_child_sampler)
|
|
@@ -441,7 +571,9 @@ class DistributedSampler(BuiltinSampler):
|
|
|
441
571
|
|
|
442
572
|
def is_shuffled(self):
|
|
443
573
|
if self.child_sampler is None:
|
|
444
|
-
|
|
574
|
+
if self.shuffle == Shuffle.FALSE:
|
|
575
|
+
return False
|
|
576
|
+
return True
|
|
445
577
|
|
|
446
578
|
return self.child_sampler.is_shuffled()
|
|
447
579
|
|
|
@@ -455,6 +587,10 @@ class DistributedSampler(BuiltinSampler):
|
|
|
455
587
|
self.offset = offset
|
|
456
588
|
return self
|
|
457
589
|
|
|
590
|
+
def get_shuffle_mode(self):
|
|
591
|
+
"""Get the shuffle mode"""
|
|
592
|
+
return self.shuffle
|
|
593
|
+
|
|
458
594
|
|
|
459
595
|
class PKSampler(BuiltinSampler):
|
|
460
596
|
"""
|
|
@@ -543,19 +679,72 @@ class PKSampler(BuiltinSampler):
|
|
|
543
679
|
c_sampler.set_num_samples(num_samples)
|
|
544
680
|
return c_sampler
|
|
545
681
|
|
|
682
|
+
def get_shuffle_mode(self):
|
|
683
|
+
"""Get the shuffle mode"""
|
|
684
|
+
return Shuffle.FALSE
|
|
685
|
+
|
|
546
686
|
|
|
547
687
|
class RandomSampler(BuiltinSampler):
|
|
548
688
|
"""
|
|
549
689
|
Samples the elements randomly.
|
|
550
690
|
|
|
691
|
+
Note:
|
|
692
|
+
The shuffling modes supported for different datasets are as follows:
|
|
693
|
+
|
|
694
|
+
.. list-table:: List of support for shuffling mode
|
|
695
|
+
:widths: 50 50 50 50
|
|
696
|
+
:header-rows: 1
|
|
697
|
+
|
|
698
|
+
* - Shuffling Mode
|
|
699
|
+
- MindDataset
|
|
700
|
+
- TFRecordDataset
|
|
701
|
+
- Others
|
|
702
|
+
* - ``Shuffle.ADAPTIVE``
|
|
703
|
+
- Supported
|
|
704
|
+
- Not Supported
|
|
705
|
+
- Not Supported
|
|
706
|
+
* - ``Shuffle.GLOBAL``
|
|
707
|
+
- Supported
|
|
708
|
+
- Supported
|
|
709
|
+
- Supported
|
|
710
|
+
* - ``Shuffle.PARTIAL``
|
|
711
|
+
- Supported
|
|
712
|
+
- Not Supported
|
|
713
|
+
- Not Supported
|
|
714
|
+
* - ``Shuffle.FILES``
|
|
715
|
+
- Supported
|
|
716
|
+
- Supported
|
|
717
|
+
- Not Supported
|
|
718
|
+
* - ``Shuffle.INFILE``
|
|
719
|
+
- Supported
|
|
720
|
+
- Not Supported
|
|
721
|
+
- Not Supported
|
|
722
|
+
|
|
551
723
|
Args:
|
|
552
724
|
replacement (bool, optional): If True, put the sample ID back for the next draw. Default: ``False``.
|
|
553
725
|
num_samples (int, optional): Number of elements to sample. Default: ``None`` , which means sample all elements.
|
|
726
|
+
shuffle (Shuffle, optional): Specify the shuffle mode.
|
|
727
|
+
Default: ``Shuffle.GLOBAL``, Global shuffle of all rows of data in dataset.
|
|
728
|
+
There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
|
|
729
|
+
|
|
730
|
+
- ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
|
|
731
|
+
``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
|
|
732
|
+
million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
|
|
733
|
+
|
|
734
|
+
- ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
|
|
735
|
+
|
|
736
|
+
- ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
|
|
737
|
+
The memory usage is less than ``Shuffle.GLOBAL`` .
|
|
738
|
+
|
|
739
|
+
- ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
|
|
740
|
+
|
|
741
|
+
- ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
|
|
554
742
|
|
|
555
743
|
Raises:
|
|
556
744
|
TypeError: If `replacement` is not of type bool.
|
|
557
745
|
TypeError: If `num_samples` is not of type int.
|
|
558
746
|
ValueError: If `num_samples` is a negative value.
|
|
747
|
+
TypeError: If `shuffle` is not of type Shuffle.
|
|
559
748
|
|
|
560
749
|
Examples:
|
|
561
750
|
>>> import mindspore.dataset as ds
|
|
@@ -566,7 +755,7 @@ class RandomSampler(BuiltinSampler):
|
|
|
566
755
|
... sampler=sampler)
|
|
567
756
|
"""
|
|
568
757
|
|
|
569
|
-
def __init__(self, replacement=False, num_samples=None):
|
|
758
|
+
def __init__(self, replacement=False, num_samples=None, shuffle=Shuffle.GLOBAL):
|
|
570
759
|
if not isinstance(replacement, bool):
|
|
571
760
|
raise TypeError("replacement must be a boolean value but was: {}.".format(replacement))
|
|
572
761
|
|
|
@@ -577,6 +766,10 @@ class RandomSampler(BuiltinSampler):
|
|
|
577
766
|
raise ValueError("num_samples exceeds the boundary between {} and {}(INT64_MAX)!"
|
|
578
767
|
.format(0, validator.INT64_MAX))
|
|
579
768
|
|
|
769
|
+
if shuffle not in (Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
|
|
770
|
+
raise TypeError("shuffle must be valid shuffle mode but was: {}.".format(shuffle))
|
|
771
|
+
self.shuffle = shuffle
|
|
772
|
+
|
|
580
773
|
self.deterministic = False
|
|
581
774
|
self.replacement = replacement
|
|
582
775
|
self.reshuffle_each_epoch = True
|
|
@@ -586,7 +779,11 @@ class RandomSampler(BuiltinSampler):
|
|
|
586
779
|
""" Parse the sampler."""
|
|
587
780
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
588
781
|
replacement = self.replacement if self.replacement is not None else False
|
|
589
|
-
|
|
782
|
+
# convert shuffle=True to Shuffle.GLOBAL, convert shuffle=False to Shuffle.FALSE
|
|
783
|
+
if self.shuffle is not Shuffle.GLOBAL:
|
|
784
|
+
raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
|
|
785
|
+
c_sampler = cde.RandomSamplerObj(replacement, num_samples, self.reshuffle_each_epoch,
|
|
786
|
+
shuffle_to_shuffle_mode(self.shuffle))
|
|
590
787
|
c_child_sampler = self.parse_child()
|
|
591
788
|
c_sampler.add_child(c_child_sampler)
|
|
592
789
|
return c_sampler
|
|
@@ -594,7 +791,15 @@ class RandomSampler(BuiltinSampler):
|
|
|
594
791
|
def parse_for_minddataset(self):
|
|
595
792
|
"""Parse the sampler for MindRecord."""
|
|
596
793
|
num_samples = self.num_samples if self.num_samples is not None else 0
|
|
597
|
-
|
|
794
|
+
shuffle = self.shuffle if self.shuffle is not None else True
|
|
795
|
+
# convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
|
|
796
|
+
if isinstance(shuffle, bool):
|
|
797
|
+
if shuffle:
|
|
798
|
+
shuffle = Shuffle.ADAPTIVE
|
|
799
|
+
else:
|
|
800
|
+
raise RuntimeError("The shuffle: False is invalid for RandomSampler.")
|
|
801
|
+
c_sampler = cde.MindrecordRandomSampler(num_samples, self.replacement, self.reshuffle_each_epoch,
|
|
802
|
+
shuffle_to_shuffle_mode(shuffle))
|
|
598
803
|
c_child_sampler = self.parse_child_for_minddataset()
|
|
599
804
|
c_sampler.add_child(c_child_sampler)
|
|
600
805
|
c_sampler.set_num_samples(num_samples)
|
|
@@ -609,6 +814,10 @@ class RandomSampler(BuiltinSampler):
|
|
|
609
814
|
|
|
610
815
|
return self.child_sampler.is_sharded()
|
|
611
816
|
|
|
817
|
+
def get_shuffle_mode(self):
|
|
818
|
+
"""Get the shuffle mode"""
|
|
819
|
+
return self.shuffle
|
|
820
|
+
|
|
612
821
|
|
|
613
822
|
class SequentialSampler(BuiltinSampler):
|
|
614
823
|
"""
|
|
@@ -678,6 +887,10 @@ class SequentialSampler(BuiltinSampler):
|
|
|
678
887
|
|
|
679
888
|
return self.child_sampler.is_sharded()
|
|
680
889
|
|
|
890
|
+
def get_shuffle_mode(self):
|
|
891
|
+
"""Get the shuffle mode"""
|
|
892
|
+
return Shuffle.FALSE
|
|
893
|
+
|
|
681
894
|
|
|
682
895
|
class SubsetSampler(BuiltinSampler):
|
|
683
896
|
"""
|
|
@@ -767,6 +980,10 @@ class SubsetSampler(BuiltinSampler):
|
|
|
767
980
|
|
|
768
981
|
return min(len(self.indices), num_samples)
|
|
769
982
|
|
|
983
|
+
def get_shuffle_mode(self):
|
|
984
|
+
"""Get the shuffle mode"""
|
|
985
|
+
return Shuffle.FALSE
|
|
986
|
+
|
|
770
987
|
|
|
771
988
|
class SubsetRandomSampler(SubsetSampler):
|
|
772
989
|
"""
|
|
@@ -809,6 +1026,10 @@ class SubsetRandomSampler(SubsetSampler):
|
|
|
809
1026
|
c_sampler.set_num_samples(self.get_num_samples())
|
|
810
1027
|
return c_sampler
|
|
811
1028
|
|
|
1029
|
+
def get_shuffle_mode(self):
|
|
1030
|
+
"""Get the shuffle mode"""
|
|
1031
|
+
return Shuffle.GLOBAL
|
|
1032
|
+
|
|
812
1033
|
|
|
813
1034
|
class IterSampler(Sampler):
|
|
814
1035
|
"""
|
|
@@ -837,12 +1058,8 @@ class IterSampler(Sampler):
|
|
|
837
1058
|
"""
|
|
838
1059
|
|
|
839
1060
|
def __init__(self, sampler, num_samples=None):
|
|
840
|
-
if num_samples is None:
|
|
841
|
-
|
|
842
|
-
num_samples = len(sampler)
|
|
843
|
-
else:
|
|
844
|
-
# counting on a copied sampler to prevent changing the random state of the original one
|
|
845
|
-
num_samples = len(list(copy.deepcopy(sampler)))
|
|
1061
|
+
if num_samples is None and hasattr(sampler, '__len__'):
|
|
1062
|
+
num_samples = len(sampler)
|
|
846
1063
|
super().__init__(num_samples=num_samples)
|
|
847
1064
|
self.sampler = sampler
|
|
848
1065
|
|
|
@@ -856,8 +1073,9 @@ class WeightedRandomSampler(BuiltinSampler):
|
|
|
856
1073
|
|
|
857
1074
|
Args:
|
|
858
1075
|
weights (list[float, int]): A sequence of weights, not necessarily summing up to 1.
|
|
859
|
-
num_samples (int, optional): Number of elements to sample. Default: ``None`` ,
|
|
860
|
-
|
|
1076
|
+
num_samples (int, optional): Number of elements to sample. Default: ``None`` ,
|
|
1077
|
+
which means sample all elements.
|
|
1078
|
+
replacement (bool, optional): If ``True``, put the sample ID back for the next draw. Default: ``True``.
|
|
861
1079
|
|
|
862
1080
|
Raises:
|
|
863
1081
|
TypeError: If elements of `weights` are not of type number.
|
|
@@ -917,3 +1135,7 @@ class WeightedRandomSampler(BuiltinSampler):
|
|
|
917
1135
|
return False
|
|
918
1136
|
|
|
919
1137
|
return self.child_sampler.is_sharded()
|
|
1138
|
+
|
|
1139
|
+
def get_shuffle_mode(self):
|
|
1140
|
+
"""Get the shuffle mode"""
|
|
1141
|
+
return Shuffle.GLOBAL
|
|
@@ -63,7 +63,8 @@ def serialize(dataset, json_filepath=""):
|
|
|
63
63
|
|
|
64
64
|
def deserialize(input_dict=None, json_filepath=None):
|
|
65
65
|
"""
|
|
66
|
-
|
|
66
|
+
Deserialize the data processing pipeline, the api accepts a Python dictionary or
|
|
67
|
+
a JSON file generated by :func:`mindspore.dataset.serialize`.
|
|
67
68
|
|
|
68
69
|
Args:
|
|
69
70
|
input_dict (dict): A Python dictionary containing a serialized dataset graph. Default: ``None``.
|
|
@@ -1133,9 +1133,13 @@ def check_generator_dataset(method):
|
|
|
1133
1133
|
raise ValueError("Neither columns_names nor schema are provided.")
|
|
1134
1134
|
|
|
1135
1135
|
if schema is not None:
|
|
1136
|
+
logger.warning("'schema' is deprecated from version 2.6 and will be removed in a future version.")
|
|
1136
1137
|
if not isinstance(schema, (datasets.Schema, str)):
|
|
1137
1138
|
raise ValueError("schema should be a path to schema file or a schema object.")
|
|
1138
1139
|
|
|
1140
|
+
if param_dict.get('column_types') is not None:
|
|
1141
|
+
logger.warning("'column_types' is deprecated from version 2.6 and will be removed in a future version.")
|
|
1142
|
+
|
|
1139
1143
|
# check optional argument
|
|
1140
1144
|
nreq_param_int = ["max_rowsize", "num_samples", "num_parallel_workers", "num_shards", "shard_id"]
|
|
1141
1145
|
validate_dataset_param_value(nreq_param_int, param_dict, int)
|
|
@@ -1146,6 +1150,7 @@ def check_generator_dataset(method):
|
|
|
1146
1150
|
|
|
1147
1151
|
max_rowsize = param_dict.get("max_rowsize")
|
|
1148
1152
|
if max_rowsize is not None:
|
|
1153
|
+
logger.warning("'max_rowsize' is deprecated from version 2.6 and will be removed in a future version.")
|
|
1149
1154
|
check_value(max_rowsize, [-1, INT32_MAX], "max_rowsize")
|
|
1150
1155
|
|
|
1151
1156
|
num_shards = param_dict.get("num_shards")
|
|
@@ -1345,6 +1350,8 @@ def check_batch(method):
|
|
|
1345
1350
|
check_num_parallel_workers(num_parallel_workers)
|
|
1346
1351
|
type_check(drop_remainder, (bool,), "drop_remainder")
|
|
1347
1352
|
|
|
1353
|
+
if max_rowsize is not None:
|
|
1354
|
+
logger.warning("'max_rowsize' is deprecated from version 2.6 and will be removed in a future version.")
|
|
1348
1355
|
check_max_rowsize(max_rowsize)
|
|
1349
1356
|
|
|
1350
1357
|
if (input_columns is not None) and (per_batch_map is None):
|
|
@@ -1523,6 +1530,9 @@ def check_map(method):
|
|
|
1523
1530
|
check_num_parallel_workers(num_parallel_workers)
|
|
1524
1531
|
type_check(python_multiprocessing, (bool,), "python_multiprocessing")
|
|
1525
1532
|
check_cache_option(cache)
|
|
1533
|
+
|
|
1534
|
+
if max_rowsize is not None:
|
|
1535
|
+
logger.warning("'max_rowsize' is deprecated from version 2.6 and will be removed in a future version.")
|
|
1526
1536
|
check_max_rowsize(max_rowsize)
|
|
1527
1537
|
if offload is not None:
|
|
1528
1538
|
type_check(offload, (bool,), "offload")
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""
|
|
15
|
-
This module is
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
This module is designed for text data augmentation and comprises two submodules: `transforms` and `utils`.
|
|
16
|
+
|
|
17
|
+
`transforms` is a high-performance text data augmentation lib that supports common text data augmentation operations.
|
|
18
|
+
|
|
19
|
+
`utils` provides a collection of utility methods for text processing.
|
|
19
20
|
|
|
20
21
|
Common imported modules in corresponding API examples are as follows:
|
|
21
22
|
|
|
@@ -33,9 +34,9 @@ The data transform operation can be executed in the data processing pipeline or
|
|
|
33
34
|
|
|
34
35
|
- Pipeline mode is generally used to process big datasets. Examples refer to
|
|
35
36
|
`introduction to data processing pipeline <https://www.mindspore.cn/docs/en/master/api_python/
|
|
36
|
-
mindspore.dataset.html#introduction-to-data-processing-pipeline>`_ .
|
|
37
|
+
mindspore.dataset.loading.html#introduction-to-data-processing-pipeline>`_ .
|
|
37
38
|
- Eager mode is more like a function call to process data. Examples refer to
|
|
38
|
-
`Lightweight Data Processing <https://www.mindspore.cn/
|
|
39
|
+
`Lightweight Data Processing <https://www.mindspore.cn/tutorials/en/master/dataset/eager.html>`_ .
|
|
39
40
|
"""
|
|
40
41
|
import platform
|
|
41
42
|
|