mindspore 2.1.0__cp38-none-any.whl → 2.2.11__cp38-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mindspore might be problematic. Click here for more details.
- mindspore/.commit_id +1 -1
- mindspore/__init__.py +4 -1
- mindspore/_akg/akg/build_module.py +5 -6
- mindspore/_akg/akg/composite/build_module.py +139 -22
- mindspore/_akg/akg/composite/split_stitch.py +10 -11
- mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
- mindspore/_akg/akg/tvm/api.py +4 -3
- mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
- mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
- mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
- mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
- mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
- mindspore/_akg/akg/tvm/build_module.py +16 -1
- mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
- mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
- mindspore/_akg/akg/tvm/ir_builder.py +1 -1
- mindspore/_akg/akg/tvm/module.py +1 -2
- mindspore/_akg/akg/tvm/stmt.py +2 -2
- mindspore/_akg/akg/utils/ascend_profilier/cann_file_parser.py +76 -0
- mindspore/_akg/akg/utils/ascend_profilier/file_manager.py +56 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_bean.py +23 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_headers.py +8 -0
- mindspore/_akg/akg/utils/ascend_profilier/op_summary_parser.py +42 -0
- mindspore/_akg/akg/utils/ascend_profilier/path_manager.py +65 -0
- mindspore/_akg/akg/utils/composite_op_helper.py +16 -12
- mindspore/_akg/akg/utils/dump_ascend_meta.py +22 -3
- mindspore/_akg/akg/utils/kernel_exec.py +98 -274
- mindspore/_akg/akg/utils/result_analysis.py +4 -24
- mindspore/_akg/akg/utils/tbe_codegen_utils.py +219 -0
- mindspore/_akg/akg/utils/util.py +56 -1
- mindspore/_c_dataengine.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_c_expression.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_c_mindrecord.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/_check_jit_forbidden_api.py +3 -1
- mindspore/_checkparam.py +23 -29
- mindspore/_extends/graph_kernel/__init__.py +0 -1
- mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
- mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
- mindspore/_extends/graph_kernel/splitter.py +4 -11
- mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
- mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
- mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
- mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
- mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
- mindspore/_extends/parse/__init__.py +13 -15
- mindspore/_extends/parse/namespace.py +7 -33
- mindspore/_extends/parse/parser.py +67 -72
- mindspore/_extends/parse/resources.py +1 -1
- mindspore/_extends/parse/standard_method.py +86 -106
- mindspore/_extends/parse/trope.py +1 -1
- mindspore/_extends/remote/kernel_build_server.py +25 -7
- mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
- mindspore/_install_custom.py +43 -0
- mindspore/_mindspore_offline_debug.cpython-38-aarch64-linux-gnu.so +0 -0
- mindspore/amp.py +47 -11
- mindspore/bin/cache_admin +0 -0
- mindspore/bin/cache_server +0 -0
- mindspore/boost/boost.py +1 -8
- mindspore/boost/boost_cell_wrapper.py +3 -2
- mindspore/boost/grad_accumulation.py +1 -1
- mindspore/boost/group_loss_scale_manager.py +8 -7
- mindspore/common/__init__.py +5 -3
- mindspore/common/_jit_fallback_utils.py +6 -0
- mindspore/common/_register_for_adapter.py +2 -0
- mindspore/common/_register_for_tensor.py +2 -2
- mindspore/common/_stub_tensor.py +13 -0
- mindspore/common/_utils.py +29 -0
- mindspore/common/api.py +174 -259
- mindspore/common/auto_dynamic_shape.py +494 -0
- mindspore/common/dtype.py +18 -11
- mindspore/common/dump.py +6 -4
- mindspore/common/initializer.py +14 -14
- mindspore/common/jit_config.py +33 -15
- mindspore/common/lazy_inline.py +126 -7
- mindspore/common/mindir_util.py +101 -0
- mindspore/common/parameter.py +51 -41
- mindspore/common/seed.py +4 -4
- mindspore/common/sparse_tensor.py +13 -14
- mindspore/common/tensor.py +243 -165
- mindspore/communication/__init__.py +7 -4
- mindspore/communication/_comm_helper.py +83 -4
- mindspore/communication/management.py +152 -84
- mindspore/config/op_info.config +14 -3
- mindspore/config/super_bar_config.json +4 -2
- mindspore/context.py +152 -61
- mindspore/dataset/__init__.py +5 -5
- mindspore/dataset/audio/__init__.py +2 -2
- mindspore/dataset/audio/transforms.py +52 -52
- mindspore/dataset/callback/ds_callback.py +16 -2
- mindspore/dataset/core/config.py +68 -51
- mindspore/dataset/engine/cache_client.py +33 -7
- mindspore/dataset/engine/datasets.py +250 -112
- mindspore/dataset/engine/datasets_audio.py +43 -211
- mindspore/dataset/engine/datasets_standard_format.py +16 -35
- mindspore/dataset/engine/datasets_text.py +43 -67
- mindspore/dataset/engine/datasets_user_defined.py +86 -100
- mindspore/dataset/engine/datasets_vision.py +219 -1029
- mindspore/dataset/engine/iterators.py +11 -4
- mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
- mindspore/dataset/engine/obs/util.py +3 -0
- mindspore/dataset/engine/samplers.py +1 -1
- mindspore/dataset/engine/validators.py +19 -5
- mindspore/dataset/text/__init__.py +3 -3
- mindspore/dataset/text/transforms.py +101 -127
- mindspore/dataset/text/utils.py +205 -138
- mindspore/dataset/transforms/__init__.py +1 -1
- mindspore/dataset/transforms/py_transforms_util.py +40 -12
- mindspore/dataset/transforms/transforms.py +95 -40
- mindspore/dataset/utils/browse_dataset.py +8 -2
- mindspore/dataset/utils/line_reader.py +17 -19
- mindspore/dataset/vision/__init__.py +3 -3
- mindspore/dataset/vision/c_transforms.py +6 -3
- mindspore/dataset/vision/transforms.py +409 -287
- mindspore/dataset/vision/utils.py +13 -14
- mindspore/dataset/vision/validators.py +11 -1
- mindspore/experimental/map_parameter.py +14 -0
- mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
- mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
- mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
- mindspore/experimental/optim/lr_scheduler.py +1427 -0
- mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
- mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
- mindspore/gen_ops.py +273 -0
- mindspore/include/OWNERS +0 -1
- mindspore/include/api/data_type.h +2 -1
- mindspore/include/api/graph.h +0 -15
- mindspore/include/api/kernel.h +2 -0
- mindspore/include/api/kernel_api.h +37 -12
- mindspore/include/api/model.h +17 -14
- mindspore/include/api/status.h +8 -3
- mindspore/include/api/types.h +37 -4
- mindspore/include/c_api/ms/abstract.h +67 -0
- mindspore/include/c_api/ms/attribute.h +197 -0
- mindspore/include/c_api/ms/base/handle_types.h +43 -0
- mindspore/include/c_api/ms/base/macros.h +32 -0
- mindspore/include/c_api/ms/base/status.h +33 -0
- mindspore/include/c_api/ms/base/types.h +282 -0
- mindspore/include/c_api/ms/context.h +102 -0
- mindspore/include/c_api/ms/graph.h +160 -0
- mindspore/include/c_api/ms/node.h +606 -0
- mindspore/include/c_api/ms/tensor.h +161 -0
- mindspore/include/c_api/ms/value.h +84 -0
- mindspore/include/dataset/constants.h +6 -5
- mindspore/include/dataset/execute.h +23 -13
- mindspore/include/dataset/text.h +26 -26
- mindspore/include/dataset/transforms.h +13 -13
- mindspore/include/dataset/vision.h +60 -60
- mindspore/include/dataset/vision_ascend.h +5 -6
- mindspore/include/dataset/vision_lite.h +17 -17
- mindspore/include/mindapi/base/type_id.h +1 -0
- mindspore/include/mindapi/base/types.h +1 -0
- mindspore/lib/libdnnl.so.2 +0 -0
- mindspore/lib/libjemalloc.so.2 +0 -0
- mindspore/lib/libmindspore.so +0 -0
- mindspore/lib/libmindspore_backend.so +0 -0
- mindspore/lib/libmindspore_common.so +0 -0
- mindspore/lib/libmindspore_core.so +0 -0
- mindspore/lib/libmindspore_glog.so.0 +0 -0
- mindspore/lib/libmindspore_gpr.so.15 +0 -0
- mindspore/lib/libmindspore_grpc++.so.1 +0 -0
- mindspore/lib/libmindspore_grpc.so.15 +0 -0
- mindspore/lib/libmindspore_shared_lib.so +0 -0
- mindspore/lib/libnnacl.so +0 -0
- mindspore/lib/libopencv_core.so.4.5 +0 -0
- mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
- mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
- mindspore/lib/libps_cache.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310/aic-ascend310-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend310p/aic-ascend310p-ops-info.json +123 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910/aic-ascend910-ops-info.json +158 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/config/ascend910b/aic-ascend910b-ops-info.json +37 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/ai_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_dsl.py +46 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/add_tik.py +51 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/kv_cache_mgr.py +241 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_impl/vector_core/tbe/custom_aicore_ops_impl/matmul_tik.py +212 -0
- mindspore/lib/plugin/ascend/custom_aicore_ops/op_proto/libop_proto.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +8998 -0
- mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
- mindspore/lib/plugin/ascend/libakg.so +0 -0
- mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
- mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
- mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
- mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
- mindspore/lib/plugin/cpu/libakg.so +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
- mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
- mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
- mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
- mindspore/nn/__init__.py +0 -2
- mindspore/nn/cell.py +313 -74
- mindspore/nn/dynamic_lr.py +21 -21
- mindspore/nn/layer/activation.py +22 -30
- mindspore/nn/layer/basic.py +15 -13
- mindspore/nn/layer/channel_shuffle.py +1 -1
- mindspore/nn/layer/container.py +271 -9
- mindspore/nn/layer/conv.py +323 -204
- mindspore/nn/layer/dense.py +8 -5
- mindspore/nn/layer/embedding.py +33 -27
- mindspore/nn/layer/flash_attention.py +61 -95
- mindspore/nn/layer/image.py +8 -6
- mindspore/nn/layer/math.py +16 -25
- mindspore/nn/layer/normalization.py +107 -66
- mindspore/nn/layer/padding.py +1 -1
- mindspore/nn/layer/pooling.py +131 -109
- mindspore/nn/layer/rnn_cells.py +27 -22
- mindspore/nn/layer/rnns.py +13 -16
- mindspore/nn/layer/thor_layer.py +1 -1
- mindspore/nn/layer/transformer.py +221 -154
- mindspore/nn/learning_rate_schedule.py +9 -1
- mindspore/nn/loss/loss.py +235 -174
- mindspore/nn/optim/ada_grad.py +2 -1
- mindspore/nn/optim/adadelta.py +1 -0
- mindspore/nn/optim/adafactor.py +2 -1
- mindspore/nn/optim/adam.py +7 -4
- mindspore/nn/optim/adamax.py +3 -2
- mindspore/nn/optim/adasum.py +2 -2
- mindspore/nn/optim/asgd.py +2 -3
- mindspore/nn/optim/ftrl.py +6 -5
- mindspore/nn/optim/lamb.py +7 -4
- mindspore/nn/optim/lars.py +1 -1
- mindspore/nn/optim/lazyadam.py +5 -3
- mindspore/nn/optim/momentum.py +2 -1
- mindspore/nn/optim/optimizer.py +53 -4
- mindspore/nn/optim/proximal_ada_grad.py +3 -4
- mindspore/nn/optim/rmsprop.py +4 -3
- mindspore/nn/optim/rprop.py +23 -12
- mindspore/nn/optim/sgd.py +26 -11
- mindspore/nn/optim/thor.py +9 -7
- mindspore/nn/probability/bijector/bijector.py +5 -5
- mindspore/nn/probability/bijector/power_transform.py +27 -27
- mindspore/nn/probability/bijector/softplus.py +3 -3
- mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
- mindspore/nn/probability/distribution/bernoulli.py +5 -5
- mindspore/nn/probability/distribution/beta.py +3 -3
- mindspore/nn/probability/distribution/categorical.py +7 -7
- mindspore/nn/probability/distribution/cauchy.py +0 -1
- mindspore/nn/probability/distribution/distribution.py +3 -3
- mindspore/nn/probability/distribution/gamma.py +3 -3
- mindspore/nn/probability/distribution/geometric.py +4 -4
- mindspore/nn/probability/distribution/gumbel.py +4 -4
- mindspore/nn/probability/distribution/log_normal.py +2 -2
- mindspore/nn/probability/distribution/logistic.py +2 -2
- mindspore/nn/probability/distribution/poisson.py +4 -4
- mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
- mindspore/nn/probability/distribution/uniform.py +6 -6
- mindspore/nn/wrap/__init__.py +4 -2
- mindspore/nn/wrap/cell_wrapper.py +87 -34
- mindspore/nn/wrap/grad_reducer.py +8 -5
- mindspore/nn/wrap/loss_scale.py +105 -42
- mindspore/numpy/array_creations.py +1 -2
- mindspore/numpy/array_ops.py +3 -2
- mindspore/numpy/utils_const.py +5 -5
- mindspore/offline_debug/convert_async.py +2 -2
- mindspore/ops/_grad_experimental/__init__.py +0 -5
- mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
- mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
- mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
- mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
- mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
- mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
- mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
- mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
- mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
- mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
- mindspore/ops/_op_impl/aicpu/add.py +3 -3
- mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
- mindspore/ops/_op_impl/{_custom_op/flash_attention/constants.py → aicpu/eps.py} +18 -27
- mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
- mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +21 -2
- mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
- mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
- mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
- mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
- mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
- mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
- mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
- mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
- mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
- mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
- mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
- mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
- mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
- mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
- mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
- mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
- mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
- mindspore/ops/_op_impl/tbe/__init__.py +4 -4
- mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
- mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
- mindspore/ops/_primitive_cache.py +1 -1
- mindspore/ops/_tracefunc.py +45 -13
- mindspore/ops/_utils/utils.py +6 -1
- mindspore/ops/_vmap/vmap_array_ops.py +3 -3
- mindspore/ops/_vmap/vmap_base.py +3 -3
- mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
- mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
- mindspore/ops/_vmap/vmap_math_ops.py +5 -2
- mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
- mindspore/ops/arg_dtype_cast.py +54 -0
- mindspore/ops/composite/base.py +37 -10
- mindspore/ops/composite/math_ops.py +5 -4
- mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
- mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
- mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
- mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
- mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
- mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
- mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
- mindspore/ops/deprecated.py +304 -0
- mindspore/ops/function/__init__.py +4 -1
- mindspore/ops/function/array_func.py +174 -193
- mindspore/ops/function/clip_func.py +81 -13
- mindspore/ops/function/debug_func.py +1 -1
- mindspore/ops/function/grad/grad_func.py +18 -9
- mindspore/ops/function/image_func.py +10 -4
- mindspore/ops/function/linalg_func.py +5 -5
- mindspore/ops/function/math_func.py +575 -386
- mindspore/ops/function/nn_func.py +568 -260
- mindspore/ops/function/random_func.py +88 -57
- mindspore/ops/function/sparse_func.py +1 -1
- mindspore/ops/function/sparse_unary_func.py +14 -12
- mindspore/ops/function/vmap_func.py +6 -5
- mindspore/ops/functional.py +15 -10
- mindspore/ops/op_info_register.py +244 -25
- mindspore/ops/operations/__init__.py +31 -19
- mindspore/ops/operations/_grad_ops.py +71 -7
- mindspore/ops/operations/_inner_ops.py +350 -17
- mindspore/ops/operations/_quant_ops.py +4 -8
- mindspore/ops/operations/_sequence_ops.py +42 -0
- mindspore/ops/operations/array_ops.py +68 -282
- mindspore/ops/operations/comm_ops.py +107 -59
- mindspore/ops/operations/custom_ops.py +94 -70
- mindspore/ops/operations/debug_ops.py +8 -4
- mindspore/ops/operations/image_ops.py +18 -12
- mindspore/ops/operations/inner_ops.py +26 -3
- mindspore/ops/operations/math_ops.py +192 -144
- mindspore/ops/operations/nn_ops.py +857 -489
- mindspore/ops/operations/other_ops.py +0 -22
- mindspore/ops/operations/random_ops.py +53 -111
- mindspore/ops/operations/sparse_ops.py +3 -1
- mindspore/ops/primitive.py +24 -18
- mindspore/parallel/_auto_parallel_context.py +68 -8
- mindspore/parallel/_cost_model_context.py +2 -2
- mindspore/parallel/_offload_context.py +17 -3
- mindspore/parallel/_parallel_serialization.py +12 -5
- mindspore/parallel/_ps_context.py +12 -0
- mindspore/parallel/_tensor.py +18 -13
- mindspore/parallel/_transformer/layers.py +5 -3
- mindspore/parallel/_transformer/loss.py +1 -0
- mindspore/parallel/_transformer/moe.py +2 -2
- mindspore/parallel/_transformer/op_parallel_config.py +12 -1
- mindspore/parallel/_transformer/transformer.py +23 -3
- mindspore/parallel/_utils.py +11 -7
- mindspore/parallel/algo_parameter_config.py +85 -5
- mindspore/parallel/checkpoint_transform.py +19 -12
- mindspore/parallel/shard.py +21 -14
- mindspore/profiler/common/struct_type.py +3 -3
- mindspore/profiler/common/util.py +4 -2
- mindspore/profiler/envprofiling.py +1 -1
- mindspore/profiler/parser/aicpu_data_parser.py +5 -3
- mindspore/profiler/parser/ascend_flops_generator.py +2 -2
- mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
- mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
- mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
- mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
- mindspore/profiler/parser/ascend_op_generator.py +6 -6
- mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
- mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
- mindspore/profiler/parser/base_timeline_generator.py +10 -8
- mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
- mindspore/profiler/parser/flops_parser.py +15 -11
- mindspore/profiler/parser/framework_parser.py +38 -22
- mindspore/profiler/parser/hccl_parser.py +16 -12
- mindspore/profiler/parser/integrator.py +22 -11
- mindspore/profiler/parser/memory_usage_parser.py +2 -2
- mindspore/profiler/parser/minddata_analyzer.py +12 -14
- mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
- mindspore/profiler/parser/msadvisor_parser.py +8 -4
- mindspore/profiler/parser/op_intermediate_parser.py +5 -2
- mindspore/profiler/parser/optime_parser.py +1 -1
- mindspore/profiler/parser/profiler_info.py +21 -2
- mindspore/profiler/parser/step_trace_parser.py +11 -14
- mindspore/profiler/profiling.py +179 -89
- mindspore/rewrite/api/node.py +102 -19
- mindspore/rewrite/api/node_type.py +5 -1
- mindspore/rewrite/api/pattern_engine.py +1 -1
- mindspore/rewrite/api/scoped_value.py +9 -17
- mindspore/rewrite/api/symbol_tree.py +131 -47
- mindspore/rewrite/ast_helpers/__init__.py +2 -1
- mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
- mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
- mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
- mindspore/rewrite/common/rewrite_elog.py +5 -1
- mindspore/rewrite/namer.py +33 -24
- mindspore/rewrite/namespace.py +14 -5
- mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
- mindspore/rewrite/node/call_function.py +79 -0
- mindspore/rewrite/node/cell_container.py +135 -0
- mindspore/rewrite/node/control_flow.py +88 -0
- mindspore/rewrite/{node.py → node/node.py} +273 -234
- mindspore/rewrite/node/node_manager.py +254 -0
- mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
- mindspore/rewrite/parsers/arguments_parser.py +22 -21
- mindspore/rewrite/parsers/assign_parser.py +216 -221
- mindspore/rewrite/parsers/attribute_parser.py +9 -7
- mindspore/rewrite/parsers/class_def_parser.py +174 -113
- mindspore/rewrite/parsers/constant_parser.py +9 -6
- mindspore/rewrite/parsers/container_parser.py +9 -7
- mindspore/rewrite/parsers/for_parser.py +42 -21
- mindspore/rewrite/parsers/function_def_parser.py +24 -16
- mindspore/rewrite/parsers/if_parser.py +28 -24
- mindspore/rewrite/parsers/module_parser.py +196 -25
- mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
- mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
- mindspore/rewrite/parsers/return_parser.py +6 -6
- mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
- mindspore/rewrite/sparsify/utils.py +1 -1
- mindspore/rewrite/symbol_tree.py +523 -578
- mindspore/rewrite/symbol_tree_builder.py +9 -193
- mindspore/rewrite/symbol_tree_dumper.py +2 -2
- mindspore/run_check/_check_version.py +6 -4
- mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
- mindspore/safeguard/rewrite_obfuscation.py +541 -0
- mindspore/scipy/linalg.py +1 -1
- mindspore/scipy/ops.py +55 -5
- mindspore/scipy/optimize/__init__.py +3 -2
- mindspore/scipy/optimize/linear_sum_assignment.py +38 -33
- mindspore/scipy/optimize/minimize.py +7 -3
- mindspore/train/_utils.py +7 -3
- mindspore/train/amp.py +323 -123
- mindspore/train/anf_ir_pb2.py +14 -2
- mindspore/train/callback/_backup_and_restore.py +2 -12
- mindspore/train/callback/_callback.py +29 -4
- mindspore/train/callback/_checkpoint.py +23 -8
- mindspore/train/callback/_early_stop.py +2 -2
- mindspore/train/callback/_landscape.py +4 -4
- mindspore/train/callback/_loss_monitor.py +2 -2
- mindspore/train/callback/_on_request_exit.py +2 -2
- mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
- mindspore/train/callback/_summary_collector.py +15 -8
- mindspore/train/callback/_time_monitor.py +58 -5
- mindspore/train/data_sink.py +5 -11
- mindspore/train/dataset_helper.py +84 -57
- mindspore/train/loss_scale_manager.py +2 -2
- mindspore/train/metrics/__init__.py +3 -3
- mindspore/train/metrics/cosine_similarity.py +1 -1
- mindspore/train/metrics/hausdorff_distance.py +3 -2
- mindspore/train/metrics/mean_surface_distance.py +3 -2
- mindspore/train/metrics/metric.py +39 -19
- mindspore/train/metrics/roc.py +2 -2
- mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
- mindspore/train/mind_ir_pb2.py +85 -36
- mindspore/train/model.py +187 -47
- mindspore/train/serialization.py +487 -161
- mindspore/train/summary/_summary_adapter.py +1 -1
- mindspore/train/summary/_writer_pool.py +3 -2
- mindspore/train/summary/summary_record.py +37 -17
- mindspore/train/train_thor/convert_utils.py +3 -3
- mindspore/train/train_thor/dataset_helper.py +1 -1
- mindspore/version.py +1 -1
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/METADATA +8 -8
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/RECORD +477 -528
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/entry_points.txt +0 -1
- mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
- mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
- mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
- mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
- mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
- mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
- mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
- mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
- mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
- mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
- mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
- mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
- mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
- mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
- mindspore/_akg/akg/tvm/rpc/base.py +0 -182
- mindspore/_akg/akg/tvm/rpc/client.py +0 -436
- mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
- mindspore/_akg/akg/tvm/rpc/server.py +0 -413
- mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
- mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
- mindspore/_extends/graph_kernel/expander.py +0 -80
- mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
- mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
- mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
- mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
- mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
- mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
- mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
- mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
- mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
- mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
- mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
- mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
- mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
- mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
- mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
- mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
- mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
- mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
- mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
- mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
- mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
- mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
- mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
- mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
- mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
- mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
- mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
- mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
- mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
- mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
- mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
- mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
- mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
- mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
- mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
- mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
- mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
- mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
- mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
- mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
- mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
- mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
- mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
- mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
- mindspore/dataset/datapreprocess/__init__.py +0 -20
- mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
- mindspore/include/api/net.h +0 -142
- mindspore/nn/lr_scheduler.py +0 -262
- mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
- mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
- mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
- mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
- mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
- mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +0 -350
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +0 -409
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +0 -578
- mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +0 -199
- mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +0 -446
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/__init__.py +0 -0
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/sparse_tiling.py +0 -45
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/strategy.py +0 -67
- mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +0 -62
- mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
- mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
- mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
- mindspore/rewrite/node_visitor.py +0 -44
- /mindspore/{ops/_op_impl/_custom_op/flash_attention → _akg/akg/utils/ascend_profilier}/__init__.py +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/WHEEL +0 -0
- {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,494 @@
|
|
|
1
|
+
# This is the Python adaptation and derivative work of Myia (https://github.com/mila-iqia/myia/).
|
|
2
|
+
#
|
|
3
|
+
# Copyright 2020-2023 Huawei Technologies Co., Ltd
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
# ============================================================================
|
|
17
|
+
"""Providing auto dynamic shape interface methods."""
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
from mindspore import log as logger
|
|
21
|
+
from mindspore._c_expression import GraphExecutor_, Tensor
|
|
22
|
+
from mindspore.common._utils import is_shape_unknown, is_dim_unknown
|
|
23
|
+
from mindspore.common.parameter import Parameter
|
|
24
|
+
|
|
25
|
+
SHAPE_DIM_ANY = -1
|
|
26
|
+
SHAPE_RANK_ANY = -2
|
|
27
|
+
|
|
28
|
+
auto_dynamic_shepe_dict = {}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class _AutoDynamicShapeManager:
|
|
32
|
+
"""
|
|
33
|
+
Represents a function to manage auto identify dynamic shape.
|
|
34
|
+
"""
|
|
35
|
+
def __init__(self):
|
|
36
|
+
self.real_shape_cache = []
|
|
37
|
+
self.generalize_shape_cache = []
|
|
38
|
+
self.real_phase_and_compile_args_dict = {}
|
|
39
|
+
self.generalize_phase_and_compile_args_dict = {}
|
|
40
|
+
self._graph_executor = GraphExecutor_.get_instance()
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def __del__(self):
|
|
44
|
+
self.real_shape_cache = []
|
|
45
|
+
self.generalize_shape_cache = []
|
|
46
|
+
self.real_phase_and_compile_args_dict = {}
|
|
47
|
+
self.generalize_phase_and_compile_args_dict = {}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
@staticmethod
|
|
51
|
+
def is_tensor_equal(input_elem, cache_elem):
|
|
52
|
+
"""check two tensor or param is equal"""
|
|
53
|
+
if input_elem.shape == cache_elem.shape and input_elem.dtype == cache_elem.dtype:
|
|
54
|
+
return True
|
|
55
|
+
return False
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@staticmethod
|
|
59
|
+
def _get_input_generalize_number(arg_list, is_shape_input):
|
|
60
|
+
"""check two tensor or param is equal"""
|
|
61
|
+
count = 0
|
|
62
|
+
if is_shape_input:
|
|
63
|
+
for arg in arg_list:
|
|
64
|
+
if is_shape_unknown(arg):
|
|
65
|
+
count = count + 1
|
|
66
|
+
else:
|
|
67
|
+
for arg in arg_list:
|
|
68
|
+
if isinstance(arg, Tensor) and is_shape_unknown(arg.shape):
|
|
69
|
+
count = count + 1
|
|
70
|
+
return count
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def get_real_shape_cache_number(self):
|
|
74
|
+
"""get real shape cache number"""
|
|
75
|
+
return len(self.real_shape_cache)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def get_real_shape_cache(self):
|
|
79
|
+
"""get real shape cache"""
|
|
80
|
+
return self.real_shape_cache
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def get_generalize_shape_cache_number(self):
|
|
84
|
+
"""get generalize shape cache number"""
|
|
85
|
+
return len(self.generalize_shape_cache)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def get_generalize_shape_cache(self):
|
|
89
|
+
"""get generalize shape cache"""
|
|
90
|
+
return self.generalize_shape_cache
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def get_cache_by_type(self, cache_type):
|
|
94
|
+
"""get cache by type"""
|
|
95
|
+
if cache_type == "real":
|
|
96
|
+
shape_cache = self.real_shape_cache
|
|
97
|
+
else:
|
|
98
|
+
shape_cache = self.generalize_shape_cache
|
|
99
|
+
|
|
100
|
+
return shape_cache
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_compile_args_shape_without_sink(self, input_args, res_shape):
|
|
104
|
+
"""get compile args shape with out sink mode"""
|
|
105
|
+
for arg in input_args:
|
|
106
|
+
if isinstance(arg, Tensor):
|
|
107
|
+
res_shape.append(arg.shape)
|
|
108
|
+
elif isinstance(arg, (int, float)):
|
|
109
|
+
res_shape.append([])
|
|
110
|
+
elif isinstance(arg, (tuple, list)):
|
|
111
|
+
tmp_shape = []
|
|
112
|
+
self.get_compile_args_shape_without_sink(arg, tmp_shape)
|
|
113
|
+
res_shape.append(tmp_shape)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def get_compile_args_shape(self, input_args, is_sink_mode):
|
|
117
|
+
"""get compile args shape"""
|
|
118
|
+
if is_sink_mode:
|
|
119
|
+
return input_args
|
|
120
|
+
|
|
121
|
+
res_shape = []
|
|
122
|
+
self.get_compile_args_shape_without_sink(input_args, res_shape)
|
|
123
|
+
return res_shape
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def find_compile_args_in_shape_cache(self, input_args, cache_type):
|
|
127
|
+
"""find compile args in real or generalize shape cache"""
|
|
128
|
+
shape_cache = self.get_cache_by_type(cache_type)
|
|
129
|
+
for cache_args in shape_cache:
|
|
130
|
+
res = self._compare_input_args_and_cache_args(input_args, cache_args)
|
|
131
|
+
if res:
|
|
132
|
+
return True
|
|
133
|
+
return False
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
def update_phase_and_compile_args(self, compile_args, phase, save_cache_number, is_sink_mode, aux=None):
|
|
137
|
+
"""update compile args and phase"""
|
|
138
|
+
|
|
139
|
+
if phase in self.real_phase_and_compile_args_dict:
|
|
140
|
+
logger.debug(f'phase=%r is in real phase and compile args dict.', phase)
|
|
141
|
+
return
|
|
142
|
+
|
|
143
|
+
if phase in self.generalize_phase_and_compile_args_dict:
|
|
144
|
+
logger.debug(f'phase=%r is in generalize phase and compile args dict.', phase)
|
|
145
|
+
return
|
|
146
|
+
|
|
147
|
+
if len(self.real_shape_cache) < 2:
|
|
148
|
+
logger.debug(f'The real shape cache number is {len(self.real_shape_cache)}, is less than 2,'
|
|
149
|
+
f'phase=%r should be saved in real shape cache.', phase)
|
|
150
|
+
self.real_phase_and_compile_args_dict[phase] = compile_args
|
|
151
|
+
self.real_shape_cache.append(compile_args)
|
|
152
|
+
return
|
|
153
|
+
|
|
154
|
+
max_save_cache_number = save_cache_number - 2
|
|
155
|
+
|
|
156
|
+
if len(self.generalize_phase_and_compile_args_dict) >= max_save_cache_number:
|
|
157
|
+
# step1: find delete phase
|
|
158
|
+
phase_list = list(self.generalize_phase_and_compile_args_dict.keys())
|
|
159
|
+
delete_phase = phase_list[0]
|
|
160
|
+
delete_compile_args = self.generalize_phase_and_compile_args_dict.get(delete_phase)
|
|
161
|
+
|
|
162
|
+
# step2: delete phase cache
|
|
163
|
+
if is_sink_mode:
|
|
164
|
+
if hasattr(aux, '__network_manage__') and delete_phase in aux.__network_manage__:
|
|
165
|
+
del aux.__network_manage__[delete_phase]
|
|
166
|
+
del self.generalize_phase_and_compile_args_dict[delete_phase]
|
|
167
|
+
else:
|
|
168
|
+
delete_cache = set()
|
|
169
|
+
delete_cache.add(delete_phase)
|
|
170
|
+
self._graph_executor.del_net_res(None, delete_cache)
|
|
171
|
+
del self.generalize_phase_and_compile_args_dict[delete_phase]
|
|
172
|
+
|
|
173
|
+
# step3: delete compile args
|
|
174
|
+
self.generalize_shape_cache.remove(delete_compile_args)
|
|
175
|
+
|
|
176
|
+
# step3 save phase and compile args into cache
|
|
177
|
+
logger.info(f'The generalize shape cache number is {len(self.generalize_shape_cache)}, is less than '
|
|
178
|
+
f'{max_save_cache_number}, phase=%r should be saved in generalize shape cache.', phase)
|
|
179
|
+
self.generalize_phase_and_compile_args_dict[phase] = compile_args
|
|
180
|
+
self.generalize_shape_cache.append(compile_args)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def _compare_input_args_and_cache_args(self, input_args, cache_args):
|
|
184
|
+
"""compare input args and cache args"""
|
|
185
|
+
for (input, cache) in zip(input_args, cache_args):
|
|
186
|
+
if isinstance(input, Tensor) and isinstance(cache, Tensor):
|
|
187
|
+
if not self.is_tensor_equal(input, cache):
|
|
188
|
+
return False
|
|
189
|
+
elif isinstance(input, int) and isinstance(cache, int):
|
|
190
|
+
if input != cache:
|
|
191
|
+
return False
|
|
192
|
+
elif isinstance(input, (tuple, list)) and isinstance(cache, (tuple, list)):
|
|
193
|
+
if not self._compare_input_args_and_cache_args(input, cache):
|
|
194
|
+
return False
|
|
195
|
+
return True
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class _AutoIdentifyDynamicShape:
|
|
199
|
+
"""
|
|
200
|
+
Represents a function auto identify dynamic shape.
|
|
201
|
+
"""
|
|
202
|
+
def __init__(self):
|
|
203
|
+
self.all_shape_cache = {}
|
|
204
|
+
self.is_sink_mode = False
|
|
205
|
+
self.is_enable_auto_dynamic_shape = True
|
|
206
|
+
self.save_cache_number = 3
|
|
207
|
+
self.enable_auto_identify = os.getenv('MS_AUTO_DYNAMIC_SHAPE_ENABLE')
|
|
208
|
+
self.auto_dynamic_shape_manager = _AutoDynamicShapeManager()
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def __del__(self):
|
|
212
|
+
self.all_shape_cache = {}
|
|
213
|
+
self.is_sink_mode = False
|
|
214
|
+
self.is_enable_auto_dynamic_shape = True
|
|
215
|
+
self.save_cache_number = 3
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def _check_input_args_number(self, args_list):
|
|
219
|
+
"""check input arg number"""
|
|
220
|
+
if self.auto_dynamic_shape_manager.get_real_shape_cache_number() > 0:
|
|
221
|
+
first_real_cache = self.auto_dynamic_shape_manager.get_real_shape_cache()[0]
|
|
222
|
+
if len(first_real_cache) != len(args_list):
|
|
223
|
+
return False
|
|
224
|
+
return True
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
def _check_input_tensor_type(self, args_list, cache_list):
|
|
228
|
+
"""check input args type"""
|
|
229
|
+
for (arg, cache) in zip(args_list, cache_list):
|
|
230
|
+
if isinstance(arg, Tensor) and isinstance(cache, Tensor):
|
|
231
|
+
if arg.dtype != cache.dtype:
|
|
232
|
+
logger.debug((f'input tensor type = {arg.dtype}, cache tensor type = {cache.dtype}, '
|
|
233
|
+
f'tensor types are not same.'))
|
|
234
|
+
return False
|
|
235
|
+
elif isinstance(arg, (tuple, list)) and isinstance(cache, (tuple, list)):
|
|
236
|
+
res = self._check_input_tensor_type(arg, cache)
|
|
237
|
+
if not res:
|
|
238
|
+
return False
|
|
239
|
+
elif (isinstance(arg, int) and isinstance(cache, int)) or \
|
|
240
|
+
(isinstance(arg, float) and isinstance(cache, float)):
|
|
241
|
+
if arg != cache:
|
|
242
|
+
return False
|
|
243
|
+
elif isinstance(arg, Tensor) and not isinstance(cache, Tensor):
|
|
244
|
+
return False
|
|
245
|
+
elif isinstance(arg, (int, float)) and not isinstance(cache, (int, float)):
|
|
246
|
+
return False
|
|
247
|
+
elif isinstance(arg, (tuple, list)) and not isinstance(cache, (tuple, list)):
|
|
248
|
+
return False
|
|
249
|
+
return True
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def _check_input_number_and_type(self, args_list):
|
|
253
|
+
"""check input number and type"""
|
|
254
|
+
res = self._check_input_args_number(args_list)
|
|
255
|
+
if not res:
|
|
256
|
+
return False
|
|
257
|
+
|
|
258
|
+
if self.auto_dynamic_shape_manager.get_real_shape_cache_number() > 0:
|
|
259
|
+
cache_list = self.auto_dynamic_shape_manager.get_real_shape_cache()[0]
|
|
260
|
+
res = self._check_input_tensor_type(args_list, cache_list)
|
|
261
|
+
if not res:
|
|
262
|
+
return False
|
|
263
|
+
return True
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
def _is_enable_auto_dynamic_shape(self, args_list, is_sink_mode):
|
|
267
|
+
"""is enable auto identify shape"""
|
|
268
|
+
if not is_sink_mode and not args_list:
|
|
269
|
+
return False
|
|
270
|
+
|
|
271
|
+
if not self.enable_auto_identify:
|
|
272
|
+
self.enable_auto_identify = "0"
|
|
273
|
+
|
|
274
|
+
if self.enable_auto_identify == "0":
|
|
275
|
+
return False
|
|
276
|
+
|
|
277
|
+
for elem in args_list:
|
|
278
|
+
if elem is None:
|
|
279
|
+
continue
|
|
280
|
+
if not isinstance(elem, (list, tuple, Tensor, int, float)):
|
|
281
|
+
return False
|
|
282
|
+
if isinstance(elem, Tensor) and (is_shape_unknown(elem.shape) or (not elem.shape)):
|
|
283
|
+
return False
|
|
284
|
+
if not is_sink_mode and isinstance(elem, (list, tuple)):
|
|
285
|
+
return self._is_enable_auto_dynamic_shape(elem, is_sink_mode)
|
|
286
|
+
return True
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
@staticmethod
|
|
290
|
+
def _do_generalize_in_sink(arg, cache, input_index, cache_index, cache_type):
|
|
291
|
+
"""do generalize in sink, input rank must be 2"""
|
|
292
|
+
if not arg:
|
|
293
|
+
raise ValueError("In sink mode, cell input can not be scalar.")
|
|
294
|
+
|
|
295
|
+
if arg == cache:
|
|
296
|
+
return cache
|
|
297
|
+
|
|
298
|
+
shape_value = []
|
|
299
|
+
if len(arg) != len(cache):
|
|
300
|
+
shape_value.append(SHAPE_RANK_ANY)
|
|
301
|
+
else:
|
|
302
|
+
for _ in arg:
|
|
303
|
+
shape_value.append(SHAPE_DIM_ANY)
|
|
304
|
+
logger.info((f'In the {cache_type} cache[{cache_index}], the {input_index}th input tensor shape is {arg},'
|
|
305
|
+
f'cache shape is {cache}, not equal, need generalize to {shape_value}.'))
|
|
306
|
+
return shape_value
|
|
307
|
+
|
|
308
|
+
def update_phase_and_compile_args(self, args, phase, is_sink_mode, aux=None):
|
|
309
|
+
"""save compile args and phase into dict"""
|
|
310
|
+
if not self.is_enable_auto_dynamic_shape:
|
|
311
|
+
return
|
|
312
|
+
self.auto_dynamic_shape_manager.update_phase_and_compile_args(args, phase, self.save_cache_number,
|
|
313
|
+
is_sink_mode, aux)
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def _generate_with_generalize_shape(self, generalize_shape_args, is_sink_mode, args_list):
|
|
317
|
+
"""generate with generalize_shape """
|
|
318
|
+
new_generalize_shape, can_generalize = self._do_generalize_shape("generalize", generalize_shape_args,
|
|
319
|
+
is_sink_mode)
|
|
320
|
+
if not can_generalize:
|
|
321
|
+
return args_list
|
|
322
|
+
|
|
323
|
+
res_shape = self.auto_dynamic_shape_manager.get_compile_args_shape(new_generalize_shape, is_sink_mode)
|
|
324
|
+
logger.info((f'generalize with generalize shape cache, compile args shape = {res_shape}'))
|
|
325
|
+
return new_generalize_shape
|
|
326
|
+
|
|
327
|
+
def auto_dynamic_generate_compile_args(self, args_list, is_sink_mode):
|
|
328
|
+
"""generate compile args in auto dynamic shape"""
|
|
329
|
+
if not self._check_input_number_and_type(args_list) or \
|
|
330
|
+
not self._is_enable_auto_dynamic_shape(args_list, is_sink_mode):
|
|
331
|
+
self.is_enable_auto_dynamic_shape = False
|
|
332
|
+
return args_list
|
|
333
|
+
self.is_sink_mode = is_sink_mode
|
|
334
|
+
|
|
335
|
+
res_shape = self.auto_dynamic_shape_manager.get_compile_args_shape(args_list, is_sink_mode)
|
|
336
|
+
logger.debug((f'input args list shape = {res_shape}.'))
|
|
337
|
+
|
|
338
|
+
# step1: find cache in real_shape_cache.
|
|
339
|
+
if self._check_real_shape_cache(res_shape, args_list):
|
|
340
|
+
return args_list
|
|
341
|
+
|
|
342
|
+
# step2: if can not find cache in real_shape_cache, then generate it
|
|
343
|
+
generalize_shape_args, can_generalize = self._do_generalize_shape("real", args_list, is_sink_mode)
|
|
344
|
+
if not can_generalize:
|
|
345
|
+
return args_list
|
|
346
|
+
|
|
347
|
+
if self.auto_dynamic_shape_manager.get_generalize_shape_cache_number() == 0:
|
|
348
|
+
res_shape = self.auto_dynamic_shape_manager.get_compile_args_shape(generalize_shape_args, is_sink_mode)
|
|
349
|
+
logger.info((f'generalize shape cache cap is smaller than 1, compile args shape = {res_shape}.'))
|
|
350
|
+
return generalize_shape_args
|
|
351
|
+
|
|
352
|
+
# step3: find generalize_shape in generalize_shape_cache
|
|
353
|
+
is_generalize_shape_exist = \
|
|
354
|
+
self.auto_dynamic_shape_manager.find_compile_args_in_shape_cache(generalize_shape_args, "generalize")
|
|
355
|
+
|
|
356
|
+
# step 4: if can not find cache in generalize_shape_cache, then generate it again
|
|
357
|
+
if not is_generalize_shape_exist:
|
|
358
|
+
return self._generate_with_generalize_shape(generalize_shape_args, is_sink_mode, args_list)
|
|
359
|
+
|
|
360
|
+
res_shape = self.auto_dynamic_shape_manager.get_compile_args_shape(generalize_shape_args, is_sink_mode)
|
|
361
|
+
logger.debug((f'find compile args in generalize shape cache, compile args shape={res_shape}'))
|
|
362
|
+
return generalize_shape_args
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
def _cal_unknown_shape_count(self, generalize_shape_args, is_sink_mode):
|
|
366
|
+
"""generalize shape by compare with real shape cache, and return the least generalize input."""
|
|
367
|
+
unknown_shape_count = 0
|
|
368
|
+
unknown_rank_count = 0
|
|
369
|
+
for elem in generalize_shape_args:
|
|
370
|
+
if isinstance(elem, (list, tuple)):
|
|
371
|
+
rank_count, shape_count = self._cal_unknown_shape_count(elem, is_sink_mode)
|
|
372
|
+
unknown_rank_count = unknown_rank_count + rank_count
|
|
373
|
+
unknown_shape_count = unknown_shape_count + shape_count
|
|
374
|
+
if isinstance(elem, Tensor):
|
|
375
|
+
if is_shape_unknown(elem.shape):
|
|
376
|
+
unknown_shape_count = unknown_shape_count + 1
|
|
377
|
+
if is_dim_unknown(elem.shape):
|
|
378
|
+
unknown_rank_count = unknown_rank_count + 1
|
|
379
|
+
if is_sink_mode and isinstance(elem, int):
|
|
380
|
+
if elem == SHAPE_DIM_ANY:
|
|
381
|
+
unknown_shape_count = unknown_shape_count + 1
|
|
382
|
+
if elem == SHAPE_RANK_ANY:
|
|
383
|
+
unknown_rank_count = unknown_rank_count + 1
|
|
384
|
+
return unknown_rank_count, unknown_shape_count
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
def _do_generalize_one_input_shape(self, input_args, cache_args, cache_type, index, is_sink_mode):
|
|
388
|
+
"""do generalize shape one input by cache"""
|
|
389
|
+
def generalize_tensor(arg, cache, i):
|
|
390
|
+
if self.auto_dynamic_shape_manager.is_tensor_equal(arg, cache):
|
|
391
|
+
return arg
|
|
392
|
+
|
|
393
|
+
shape_value = []
|
|
394
|
+
if len(arg.shape) != len(cache.shape):
|
|
395
|
+
shape_value.append(SHAPE_RANK_ANY)
|
|
396
|
+
else:
|
|
397
|
+
shape_value = [SHAPE_DIM_ANY for _ in range(len(arg.shape))]
|
|
398
|
+
shape_tuple = tuple(shape_value)
|
|
399
|
+
logger.info((f'In the {cache_type} cache[{index}], the {i}th input tensor shape is {arg.shape},'
|
|
400
|
+
f'cache shape is {cache.shape}, not equal, need generalize to {shape_tuple}.'))
|
|
401
|
+
return Tensor(shape=shape_tuple, dtype=arg.dtype)
|
|
402
|
+
|
|
403
|
+
def generalize_sequence(arg, cache, i):
|
|
404
|
+
if is_sink_mode:
|
|
405
|
+
# when is_sink_mode=True, input must be the shape of Tensor.
|
|
406
|
+
res = self._do_generalize_in_sink(arg, cache, i, index, cache_type)
|
|
407
|
+
return res
|
|
408
|
+
|
|
409
|
+
res = self._do_generalize_one_input_shape(arg, cache, cache_type, index, is_sink_mode)
|
|
410
|
+
return res
|
|
411
|
+
|
|
412
|
+
generalize_one_shape = []
|
|
413
|
+
for i, (arg, cache) in enumerate(zip(input_args, cache_args)):
|
|
414
|
+
if isinstance(arg, Parameter) and isinstance(cache, Parameter):
|
|
415
|
+
if self.auto_dynamic_shape_manager.is_tensor_equal(arg, cache):
|
|
416
|
+
generalize_one_shape.append(arg)
|
|
417
|
+
continue
|
|
418
|
+
|
|
419
|
+
logger.info("In auto dynamic shape mode, parameter must be equal, it can not be generalize.")
|
|
420
|
+
return input_args, False
|
|
421
|
+
|
|
422
|
+
if isinstance(arg, Tensor) and isinstance(cache, Tensor):
|
|
423
|
+
res = generalize_tensor(arg, cache, i)
|
|
424
|
+
generalize_one_shape.append(res)
|
|
425
|
+
elif isinstance(arg, (tuple, list)) and isinstance(cache, (tuple, list)):
|
|
426
|
+
res = generalize_sequence(arg, cache, i)
|
|
427
|
+
generalize_one_shape.append(res)
|
|
428
|
+
elif isinstance(arg, int) and isinstance(cache, int):
|
|
429
|
+
# when is_sink_mode=False, the input must may be scalar, or the value of list/tuple.
|
|
430
|
+
# is_sink_mode can not be True
|
|
431
|
+
if arg == cache:
|
|
432
|
+
generalize_one_shape.append(arg)
|
|
433
|
+
else:
|
|
434
|
+
logger.info("In auto dynamic shape mode, scalar/tuple/list must be equal, it can not be " \
|
|
435
|
+
"generalize.")
|
|
436
|
+
return input_args, False
|
|
437
|
+
elif arg is None and cache is None:
|
|
438
|
+
generalize_one_shape.append(arg)
|
|
439
|
+
|
|
440
|
+
return generalize_one_shape, True
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
def _do_generalize_shape(self, cache_type, input_args, is_sink_mode):
|
|
445
|
+
"""do generalize shape by cache"""
|
|
446
|
+
shape_cache = self.auto_dynamic_shape_manager.get_cache_by_type(cache_type)
|
|
447
|
+
all_generalize_shape_args = []
|
|
448
|
+
for index, cache_args in enumerate(shape_cache):
|
|
449
|
+
generalize_shape, can_generalize = self._do_generalize_one_input_shape(input_args, cache_args, cache_type,
|
|
450
|
+
index, is_sink_mode)
|
|
451
|
+
if not can_generalize:
|
|
452
|
+
return generalize_shape, False
|
|
453
|
+
all_generalize_shape_args.append(tuple(generalize_shape))
|
|
454
|
+
|
|
455
|
+
unknown_shape_dict = {}
|
|
456
|
+
for generalize_shape_args in all_generalize_shape_args:
|
|
457
|
+
unknown_rank_count, unknown_shape_count = self._cal_unknown_shape_count(generalize_shape_args, is_sink_mode)
|
|
458
|
+
unknown_count = (unknown_rank_count, unknown_shape_count)
|
|
459
|
+
if unknown_count not in unknown_shape_dict:
|
|
460
|
+
unknown_shape_dict[unknown_count] = generalize_shape_args
|
|
461
|
+
|
|
462
|
+
keys = list(unknown_shape_dict.keys())
|
|
463
|
+
keys.sort(key=lambda x: (x[0], x[1]))
|
|
464
|
+
return unknown_shape_dict.get(keys[0]), True
|
|
465
|
+
|
|
466
|
+
_auto_dynamic_shape = _AutoIdentifyDynamicShape()
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
def get_auto_dynamic_shape_args(compile_args, key_id):
|
|
470
|
+
"""get auto dynamic shape args."""
|
|
471
|
+
if key_id not in auto_dynamic_shepe_dict:
|
|
472
|
+
auto_dynamic_shepe_dict[key_id] = _AutoIdentifyDynamicShape()
|
|
473
|
+
compile_args = auto_dynamic_shepe_dict[key_id].auto_dynamic_generate_compile_args(compile_args, False)
|
|
474
|
+
return compile_args
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
def update_auto_dynamic_shape_phase(compile_args, key_id, phase):
|
|
478
|
+
"""update auto dynamic shape phase."""
|
|
479
|
+
if key_id in auto_dynamic_shepe_dict:
|
|
480
|
+
auto_dynamic_shepe_dict[key_id].update_phase_and_compile_args(compile_args, phase, False)
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
def get_auto_dynamic_shape_args_with_check_input_signature(compile_args, key_id, input_signature):
|
|
484
|
+
"""get auto dynamic shape args."""
|
|
485
|
+
if input_signature is None:
|
|
486
|
+
return get_auto_dynamic_shape_args(compile_args, key_id)
|
|
487
|
+
return compile_args
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
def update_auto_dynamic_shape_phase_with_check_input_signature(compile_args, key_id, phase, input_signature):
|
|
491
|
+
"""update auto dynamic shape phase."""
|
|
492
|
+
if input_signature is None:
|
|
493
|
+
if key_id in auto_dynamic_shepe_dict:
|
|
494
|
+
auto_dynamic_shepe_dict[key_id].update_phase_and_compile_args(compile_args, phase, False)
|
mindspore/common/dtype.py
CHANGED
|
@@ -42,7 +42,8 @@ __dtype__ = [
|
|
|
42
42
|
"string", "type_none",
|
|
43
43
|
"TensorType", "_null",
|
|
44
44
|
"Type", "Int",
|
|
45
|
-
"complex64", "complex128"
|
|
45
|
+
"complex64", "complex128",
|
|
46
|
+
"bfloat16"
|
|
46
47
|
]
|
|
47
48
|
|
|
48
49
|
__method__ = [
|
|
@@ -81,6 +82,7 @@ float32 = typing.Float(32)
|
|
|
81
82
|
single = float32
|
|
82
83
|
float64 = typing.Float(64)
|
|
83
84
|
double = float64
|
|
85
|
+
bfloat16 = typing.BFloat(16)
|
|
84
86
|
complex64 = typing.Complex(64)
|
|
85
87
|
complex128 = typing.Complex(128)
|
|
86
88
|
|
|
@@ -136,6 +138,7 @@ number_type = (int8,
|
|
|
136
138
|
float16,
|
|
137
139
|
float32,
|
|
138
140
|
float64,
|
|
141
|
+
bfloat16,
|
|
139
142
|
complex64,
|
|
140
143
|
complex128,)
|
|
141
144
|
|
|
@@ -144,9 +147,9 @@ uint_type = (uint8, uint16, uint32, uint64,)
|
|
|
144
147
|
float_type = (float16, float32, float64,)
|
|
145
148
|
signed_type = (int8, byte, int16, short, int32, intc, int64,
|
|
146
149
|
intp, float16, half, float32, single, float64,
|
|
147
|
-
double, complex64, complex128)
|
|
150
|
+
double, bfloat16, complex64, complex128)
|
|
148
151
|
complex_type = (complex64, complex128,)
|
|
149
|
-
all_types = (bool_, int8, uint8, int16, int32, int64, float16, float32, float64, complex64, complex128)
|
|
152
|
+
all_types = (bool_, int8, uint8, int16, int32, int64, float16, float32, float64, bfloat16, complex64, complex128)
|
|
150
153
|
implicit_conversion_seq = {t: idx for idx, t in enumerate(all_types)}
|
|
151
154
|
|
|
152
155
|
_simple_types = {
|
|
@@ -189,8 +192,9 @@ def pytype_to_dtype(obj):
|
|
|
189
192
|
|
|
190
193
|
Examples:
|
|
191
194
|
>>> import mindspore as ms
|
|
192
|
-
>>> ms.
|
|
193
|
-
|
|
195
|
+
>>> out = ms.pytype_to_dtype(bool)
|
|
196
|
+
>>> print(out)
|
|
197
|
+
Bool
|
|
194
198
|
"""
|
|
195
199
|
|
|
196
200
|
if isinstance(obj, np.dtype):
|
|
@@ -240,11 +244,11 @@ def get_py_obj_dtype(obj):
|
|
|
240
244
|
|
|
241
245
|
|
|
242
246
|
def dtype_to_nptype(type_):
|
|
243
|
-
"""
|
|
247
|
+
r"""
|
|
244
248
|
Convert MindSpore dtype to numpy data type.
|
|
245
249
|
|
|
246
250
|
Args:
|
|
247
|
-
|
|
251
|
+
type\_ (:class:`mindspore.dtype`): MindSpore's dtype.
|
|
248
252
|
|
|
249
253
|
Returns:
|
|
250
254
|
The data type of numpy.
|
|
@@ -270,22 +274,24 @@ def dtype_to_nptype(type_):
|
|
|
270
274
|
float64: np.float64,
|
|
271
275
|
complex64: np.complex64,
|
|
272
276
|
complex128: np.complex128,
|
|
277
|
+
bfloat16: np.float32,
|
|
273
278
|
}[type_]
|
|
274
279
|
|
|
275
280
|
|
|
276
281
|
def dtype_to_pytype(type_):
|
|
277
|
-
"""
|
|
282
|
+
r"""
|
|
278
283
|
Convert MindSpore dtype to python data type.
|
|
279
284
|
|
|
280
285
|
Args:
|
|
281
|
-
|
|
286
|
+
type\_ (:class:`mindspore.dtype`): MindSpore's dtype.
|
|
282
287
|
|
|
283
288
|
Returns:
|
|
284
289
|
Type of python.
|
|
285
290
|
|
|
286
291
|
Examples:
|
|
287
292
|
>>> import mindspore as ms
|
|
288
|
-
>>> ms.
|
|
293
|
+
>>> out = ms.dtype_to_pytype(ms.bool_)
|
|
294
|
+
>>> print(out)
|
|
289
295
|
<class 'bool'>
|
|
290
296
|
"""
|
|
291
297
|
|
|
@@ -304,6 +310,7 @@ def dtype_to_pytype(type_):
|
|
|
304
310
|
float16: float,
|
|
305
311
|
float32: float,
|
|
306
312
|
float64: float,
|
|
313
|
+
bfloat16: float,
|
|
307
314
|
list_: list,
|
|
308
315
|
tuple_: tuple,
|
|
309
316
|
string: str,
|
|
@@ -341,7 +348,7 @@ class QuantDtype(enum.Enum):
|
|
|
341
348
|
"""
|
|
342
349
|
An enum for quant datatype, contains `INT1` ~ `INT16`, `UINT1` ~ `UINT16`.
|
|
343
350
|
|
|
344
|
-
`QuantDtype` is defined in `dtype.py <https://gitee.com/mindspore/mindspore/
|
|
351
|
+
`QuantDtype` is defined in `dtype.py <https://gitee.com/mindspore/mindspore/tree/r2.2/mindspore/python/mindspore/
|
|
345
352
|
common/dtype.py>`_, use command below to import:
|
|
346
353
|
|
|
347
354
|
.. code-block::
|
mindspore/common/dump.py
CHANGED
|
@@ -27,7 +27,7 @@ def set_dump(target, enabled=True):
|
|
|
27
27
|
`target` should be an instance of :class:`mindspore.nn.Cell` or :class:`mindspore.ops.Primitive` .
|
|
28
28
|
Please note that this API takes effect only when Asynchronous Dump is enabled and the `dump_mode`
|
|
29
29
|
field in dump config file is ``"2"`` . See the `dump document <https://www.mindspore.cn/tutorials/
|
|
30
|
-
experts/en/r2.
|
|
30
|
+
experts/en/r2.2/debug/dump.html>`_ for details. The default enabled status for
|
|
31
31
|
a :class:`mindspore.nn.Cell` or :class:`mindspore.ops.Primitive` is False.
|
|
32
32
|
|
|
33
33
|
.. warning::
|
|
@@ -57,9 +57,11 @@ def set_dump(target, enabled=True):
|
|
|
57
57
|
``Ascend``
|
|
58
58
|
|
|
59
59
|
Examples:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
.. note::
|
|
61
|
+
Please set environment variable `MINDSPORE_DUMP_CONFIG` to the dump config file and set `dump_mode` field
|
|
62
|
+
in dump config file to 2 before running this example.
|
|
63
|
+
See `dump document <https://www.mindspore.cn/tutorials/experts/en/r2.2/debug/dump.html>`_ for details.
|
|
64
|
+
|
|
63
65
|
>>> import numpy as np
|
|
64
66
|
>>> import mindspore as ms
|
|
65
67
|
>>> import mindspore.nn as nn
|