mindspore 2.1.0__cp38-none-any.whl → 2.2.0__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.

Files changed (539) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -1
  3. mindspore/_akg/akg/build_module.py +5 -6
  4. mindspore/_akg/akg/composite/build_module.py +49 -16
  5. mindspore/_akg/akg/composite/split_stitch.py +10 -11
  6. mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
  7. mindspore/_akg/akg/tvm/api.py +4 -3
  8. mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
  9. mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
  10. mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
  11. mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
  12. mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
  13. mindspore/_akg/akg/tvm/build_module.py +16 -1
  14. mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
  15. mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
  16. mindspore/_akg/akg/tvm/ir_builder.py +1 -1
  17. mindspore/_akg/akg/tvm/module.py +1 -2
  18. mindspore/_akg/akg/tvm/stmt.py +2 -2
  19. mindspore/_akg/akg/utils/composite_op_helper.py +9 -10
  20. mindspore/_akg/akg/utils/kernel_exec.py +58 -260
  21. mindspore/_akg/akg/utils/result_analysis.py +4 -24
  22. mindspore/_akg/akg/utils/tbe_codegen_utils.py +198 -0
  23. mindspore/_c_dataengine.cpython-38-aarch64-linux-gnu.so +0 -0
  24. mindspore/_c_expression.cpython-38-aarch64-linux-gnu.so +0 -0
  25. mindspore/_c_mindrecord.cpython-38-aarch64-linux-gnu.so +0 -0
  26. mindspore/_check_jit_forbidden_api.py +3 -1
  27. mindspore/_checkparam.py +26 -32
  28. mindspore/_extends/graph_kernel/__init__.py +0 -1
  29. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  30. mindspore/_extends/graph_kernel/splitter.py +1 -9
  31. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  32. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +2 -2
  33. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  34. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  35. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +4 -4
  36. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  37. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  38. mindspore/_extends/parse/__init__.py +12 -15
  39. mindspore/_extends/parse/namespace.py +7 -33
  40. mindspore/_extends/parse/parser.py +61 -71
  41. mindspore/_extends/parse/resources.py +1 -1
  42. mindspore/_extends/parse/standard_method.py +72 -95
  43. mindspore/_extends/parse/trope.py +1 -1
  44. mindspore/_extends/remote/kernel_build_server.py +24 -7
  45. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  46. mindspore/_install_custom.py +43 -0
  47. mindspore/_mindspore_offline_debug.cpython-38-aarch64-linux-gnu.so +0 -0
  48. mindspore/amp.py +47 -11
  49. mindspore/bin/cache_admin +0 -0
  50. mindspore/bin/cache_server +0 -0
  51. mindspore/boost/boost.py +1 -8
  52. mindspore/boost/boost_cell_wrapper.py +3 -2
  53. mindspore/boost/grad_accumulation.py +1 -1
  54. mindspore/boost/group_loss_scale_manager.py +8 -7
  55. mindspore/common/__init__.py +5 -3
  56. mindspore/common/_jit_fallback_utils.py +6 -0
  57. mindspore/common/_register_for_adapter.py +2 -0
  58. mindspore/common/_register_for_tensor.py +2 -2
  59. mindspore/common/_stub_tensor.py +13 -0
  60. mindspore/common/_utils.py +13 -0
  61. mindspore/common/api.py +173 -258
  62. mindspore/common/auto_dynamic_shape.py +498 -0
  63. mindspore/common/dtype.py +18 -11
  64. mindspore/common/dump.py +6 -4
  65. mindspore/common/initializer.py +14 -14
  66. mindspore/common/jit_config.py +33 -15
  67. mindspore/common/lazy_inline.py +126 -7
  68. mindspore/common/mindir_util.py +101 -0
  69. mindspore/common/parameter.py +51 -41
  70. mindspore/common/seed.py +4 -4
  71. mindspore/common/sparse_tensor.py +13 -14
  72. mindspore/common/tensor.py +240 -145
  73. mindspore/communication/__init__.py +7 -4
  74. mindspore/communication/_comm_helper.py +83 -4
  75. mindspore/communication/management.py +152 -84
  76. mindspore/config/op_info.config +13 -2
  77. mindspore/config/super_bar_config.json +4 -2
  78. mindspore/context.py +143 -59
  79. mindspore/dataset/__init__.py +5 -5
  80. mindspore/dataset/audio/__init__.py +2 -2
  81. mindspore/dataset/audio/transforms.py +52 -52
  82. mindspore/dataset/callback/ds_callback.py +16 -2
  83. mindspore/dataset/core/config.py +68 -51
  84. mindspore/dataset/engine/cache_client.py +28 -5
  85. mindspore/dataset/engine/datasets.py +250 -112
  86. mindspore/dataset/engine/datasets_audio.py +43 -211
  87. mindspore/dataset/engine/datasets_standard_format.py +11 -35
  88. mindspore/dataset/engine/datasets_text.py +43 -67
  89. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  90. mindspore/dataset/engine/datasets_vision.py +219 -1029
  91. mindspore/dataset/engine/iterators.py +11 -4
  92. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  93. mindspore/dataset/engine/obs/util.py +3 -0
  94. mindspore/dataset/engine/samplers.py +1 -1
  95. mindspore/dataset/engine/validators.py +19 -5
  96. mindspore/dataset/text/__init__.py +3 -3
  97. mindspore/dataset/text/transforms.py +101 -127
  98. mindspore/dataset/text/utils.py +205 -138
  99. mindspore/dataset/transforms/__init__.py +1 -1
  100. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  101. mindspore/dataset/transforms/transforms.py +95 -40
  102. mindspore/dataset/utils/browse_dataset.py +8 -2
  103. mindspore/dataset/utils/line_reader.py +17 -19
  104. mindspore/dataset/vision/__init__.py +3 -3
  105. mindspore/dataset/vision/c_transforms.py +6 -3
  106. mindspore/dataset/vision/transforms.py +409 -287
  107. mindspore/dataset/vision/utils.py +13 -14
  108. mindspore/dataset/vision/validators.py +11 -1
  109. mindspore/experimental/map_parameter.py +14 -0
  110. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  111. mindspore/{nn/optim_ex → experimental/optim}/adam.py +59 -66
  112. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  113. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  114. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  115. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  116. mindspore/gen_ops.py +273 -0
  117. mindspore/include/OWNERS +0 -1
  118. mindspore/include/api/data_type.h +2 -1
  119. mindspore/include/api/graph.h +0 -15
  120. mindspore/include/api/kernel.h +2 -0
  121. mindspore/include/api/kernel_api.h +37 -12
  122. mindspore/include/api/model.h +0 -14
  123. mindspore/include/api/types.h +37 -4
  124. mindspore/include/c_api/ms/abstract.h +67 -0
  125. mindspore/include/c_api/ms/attribute.h +197 -0
  126. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  127. mindspore/include/c_api/ms/base/macros.h +32 -0
  128. mindspore/include/c_api/ms/base/status.h +33 -0
  129. mindspore/include/c_api/ms/base/types.h +282 -0
  130. mindspore/include/c_api/ms/context.h +102 -0
  131. mindspore/include/c_api/ms/graph.h +160 -0
  132. mindspore/include/c_api/ms/node.h +606 -0
  133. mindspore/include/c_api/ms/tensor.h +161 -0
  134. mindspore/include/c_api/ms/value.h +84 -0
  135. mindspore/include/dataset/constants.h +6 -5
  136. mindspore/include/dataset/execute.h +23 -13
  137. mindspore/include/dataset/text.h +26 -26
  138. mindspore/include/dataset/transforms.h +13 -13
  139. mindspore/include/dataset/vision.h +60 -60
  140. mindspore/include/dataset/vision_ascend.h +5 -6
  141. mindspore/include/dataset/vision_lite.h +17 -17
  142. mindspore/include/mindapi/base/type_id.h +1 -0
  143. mindspore/include/mindapi/base/types.h +1 -0
  144. mindspore/lib/libdnnl.so.2 +0 -0
  145. mindspore/lib/libjemalloc.so.2 +0 -0
  146. mindspore/lib/libmindspore.so +0 -0
  147. mindspore/lib/libmindspore_backend.so +0 -0
  148. mindspore/lib/libmindspore_common.so +0 -0
  149. mindspore/lib/libmindspore_core.so +0 -0
  150. mindspore/lib/libmindspore_glog.so.0 +0 -0
  151. mindspore/lib/libmindspore_gpr.so.15 +0 -0
  152. mindspore/lib/libmindspore_grpc++.so.1 +0 -0
  153. mindspore/lib/libmindspore_grpc.so.15 +0 -0
  154. mindspore/lib/libmindspore_shared_lib.so +0 -0
  155. mindspore/lib/libnnacl.so +0 -0
  156. mindspore/lib/libopencv_core.so.4.5 +0 -0
  157. mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
  158. mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
  159. mindspore/lib/libps_cache.so +0 -0
  160. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
  161. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
  162. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +9000 -0
  163. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
  164. mindspore/lib/plugin/ascend/libakg.so +0 -0
  165. mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
  166. mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
  167. mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
  168. mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
  169. mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
  170. mindspore/lib/plugin/cpu/libakg.so +0 -0
  171. mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
  172. mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
  173. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  174. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  175. mindspore/nn/__init__.py +0 -2
  176. mindspore/nn/cell.py +316 -74
  177. mindspore/nn/dynamic_lr.py +21 -21
  178. mindspore/nn/layer/activation.py +21 -28
  179. mindspore/nn/layer/basic.py +15 -13
  180. mindspore/nn/layer/channel_shuffle.py +1 -1
  181. mindspore/nn/layer/container.py +271 -9
  182. mindspore/nn/layer/conv.py +310 -207
  183. mindspore/nn/layer/dense.py +8 -5
  184. mindspore/nn/layer/embedding.py +33 -27
  185. mindspore/nn/layer/flash_attention.py +82 -41
  186. mindspore/nn/layer/image.py +8 -6
  187. mindspore/nn/layer/math.py +13 -18
  188. mindspore/nn/layer/normalization.py +107 -66
  189. mindspore/nn/layer/padding.py +1 -1
  190. mindspore/nn/layer/pooling.py +131 -109
  191. mindspore/nn/layer/rnn_cells.py +22 -17
  192. mindspore/nn/layer/rnns.py +13 -16
  193. mindspore/nn/layer/thor_layer.py +1 -1
  194. mindspore/nn/layer/transformer.py +221 -154
  195. mindspore/nn/learning_rate_schedule.py +9 -1
  196. mindspore/nn/loss/loss.py +235 -174
  197. mindspore/nn/optim/ada_grad.py +2 -1
  198. mindspore/nn/optim/adadelta.py +1 -0
  199. mindspore/nn/optim/adafactor.py +2 -1
  200. mindspore/nn/optim/adam.py +7 -4
  201. mindspore/nn/optim/adamax.py +3 -2
  202. mindspore/nn/optim/adasum.py +2 -2
  203. mindspore/nn/optim/asgd.py +2 -3
  204. mindspore/nn/optim/ftrl.py +6 -5
  205. mindspore/nn/optim/lamb.py +7 -4
  206. mindspore/nn/optim/lars.py +1 -1
  207. mindspore/nn/optim/lazyadam.py +5 -3
  208. mindspore/nn/optim/momentum.py +2 -1
  209. mindspore/nn/optim/optimizer.py +53 -4
  210. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  211. mindspore/nn/optim/rmsprop.py +4 -3
  212. mindspore/nn/optim/rprop.py +23 -12
  213. mindspore/nn/optim/sgd.py +26 -11
  214. mindspore/nn/optim/thor.py +9 -7
  215. mindspore/nn/probability/bijector/bijector.py +5 -5
  216. mindspore/nn/probability/bijector/power_transform.py +27 -27
  217. mindspore/nn/probability/bijector/softplus.py +3 -3
  218. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  219. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  220. mindspore/nn/probability/distribution/beta.py +3 -3
  221. mindspore/nn/probability/distribution/categorical.py +7 -7
  222. mindspore/nn/probability/distribution/cauchy.py +0 -1
  223. mindspore/nn/probability/distribution/distribution.py +3 -3
  224. mindspore/nn/probability/distribution/gamma.py +3 -3
  225. mindspore/nn/probability/distribution/geometric.py +4 -4
  226. mindspore/nn/probability/distribution/gumbel.py +4 -4
  227. mindspore/nn/probability/distribution/log_normal.py +2 -2
  228. mindspore/nn/probability/distribution/logistic.py +2 -2
  229. mindspore/nn/probability/distribution/poisson.py +4 -4
  230. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  231. mindspore/nn/probability/distribution/uniform.py +6 -6
  232. mindspore/nn/wrap/cell_wrapper.py +78 -34
  233. mindspore/nn/wrap/grad_reducer.py +8 -5
  234. mindspore/nn/wrap/loss_scale.py +105 -42
  235. mindspore/numpy/array_creations.py +1 -2
  236. mindspore/numpy/array_ops.py +3 -2
  237. mindspore/offline_debug/convert_async.py +2 -2
  238. mindspore/ops/_grad_experimental/__init__.py +0 -5
  239. mindspore/ops/_grad_experimental/grad_array_ops.py +1 -2
  240. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  241. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  242. mindspore/ops/_grad_experimental/grad_implementations.py +10 -0
  243. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  244. mindspore/ops/_grad_experimental/grad_math_ops.py +0 -181
  245. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  246. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  247. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
  248. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
  249. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
  250. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
  251. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
  252. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
  253. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  254. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  255. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  256. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  257. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  258. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  259. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  260. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  261. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  262. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  263. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  264. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  265. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  266. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  267. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  268. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  269. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  270. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  271. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  272. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  273. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  274. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  275. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  276. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  277. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  278. mindspore/ops/_primitive_cache.py +1 -1
  279. mindspore/ops/_tracefunc.py +45 -13
  280. mindspore/ops/_utils/utils.py +4 -1
  281. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  282. mindspore/ops/_vmap/vmap_base.py +3 -3
  283. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  284. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  285. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  286. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  287. mindspore/ops/arg_dtype_cast.py +54 -0
  288. mindspore/ops/composite/base.py +37 -10
  289. mindspore/ops/composite/math_ops.py +5 -4
  290. mindspore/ops/composite/multitype_ops/_compile_utils.py +273 -72
  291. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  292. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  293. mindspore/ops/composite/multitype_ops/getitem_impl.py +40 -2
  294. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  295. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  297. mindspore/ops/deprecated.py +304 -0
  298. mindspore/ops/function/__init__.py +4 -1
  299. mindspore/ops/function/array_func.py +167 -189
  300. mindspore/ops/function/clip_func.py +81 -13
  301. mindspore/ops/function/debug_func.py +1 -1
  302. mindspore/ops/function/grad/grad_func.py +18 -8
  303. mindspore/ops/function/image_func.py +10 -4
  304. mindspore/ops/function/linalg_func.py +5 -5
  305. mindspore/ops/function/math_func.py +575 -386
  306. mindspore/ops/function/nn_func.py +470 -251
  307. mindspore/ops/function/random_func.py +86 -56
  308. mindspore/ops/function/sparse_func.py +1 -1
  309. mindspore/ops/function/sparse_unary_func.py +14 -12
  310. mindspore/ops/function/vmap_func.py +6 -5
  311. mindspore/ops/functional.py +15 -10
  312. mindspore/ops/op_info_register.py +235 -19
  313. mindspore/ops/operations/__init__.py +25 -17
  314. mindspore/ops/operations/_grad_ops.py +52 -7
  315. mindspore/ops/operations/_inner_ops.py +213 -12
  316. mindspore/ops/operations/_quant_ops.py +4 -8
  317. mindspore/ops/operations/_sequence_ops.py +42 -0
  318. mindspore/ops/operations/array_ops.py +64 -280
  319. mindspore/ops/operations/comm_ops.py +105 -57
  320. mindspore/ops/operations/custom_ops.py +10 -3
  321. mindspore/ops/operations/debug_ops.py +8 -4
  322. mindspore/ops/operations/image_ops.py +18 -12
  323. mindspore/ops/operations/math_ops.py +185 -138
  324. mindspore/ops/operations/nn_ops.py +716 -492
  325. mindspore/ops/operations/other_ops.py +0 -22
  326. mindspore/ops/operations/random_ops.py +53 -111
  327. mindspore/ops/operations/sparse_ops.py +3 -1
  328. mindspore/ops/primitive.py +24 -18
  329. mindspore/parallel/_auto_parallel_context.py +68 -8
  330. mindspore/parallel/_cost_model_context.py +2 -2
  331. mindspore/parallel/_offload_context.py +17 -3
  332. mindspore/parallel/_parallel_serialization.py +2 -2
  333. mindspore/parallel/_ps_context.py +12 -0
  334. mindspore/parallel/_tensor.py +14 -12
  335. mindspore/parallel/_transformer/layers.py +5 -3
  336. mindspore/parallel/_transformer/loss.py +1 -0
  337. mindspore/parallel/_transformer/moe.py +2 -2
  338. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  339. mindspore/parallel/_transformer/transformer.py +23 -3
  340. mindspore/parallel/_utils.py +11 -7
  341. mindspore/parallel/algo_parameter_config.py +85 -5
  342. mindspore/parallel/checkpoint_transform.py +6 -10
  343. mindspore/parallel/shard.py +4 -4
  344. mindspore/profiler/common/struct_type.py +3 -3
  345. mindspore/profiler/common/util.py +3 -2
  346. mindspore/profiler/envprofiling.py +1 -1
  347. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  348. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  349. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  350. mindspore/profiler/parser/ascend_hccl_generator.py +17 -12
  351. mindspore/profiler/parser/ascend_msprof_exporter.py +104 -252
  352. mindspore/profiler/parser/ascend_msprof_generator.py +8 -8
  353. mindspore/profiler/parser/ascend_op_generator.py +5 -5
  354. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  355. mindspore/profiler/parser/ascend_timeline_generator.py +9 -6
  356. mindspore/profiler/parser/base_timeline_generator.py +9 -7
  357. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +14 -10
  358. mindspore/profiler/parser/flops_parser.py +15 -11
  359. mindspore/profiler/parser/framework_parser.py +37 -21
  360. mindspore/profiler/parser/hccl_parser.py +16 -12
  361. mindspore/profiler/parser/integrator.py +22 -11
  362. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  363. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  364. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  365. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  366. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  367. mindspore/profiler/parser/optime_parser.py +1 -1
  368. mindspore/profiler/parser/profiler_info.py +2 -2
  369. mindspore/profiler/parser/step_trace_parser.py +11 -14
  370. mindspore/profiler/profiling.py +139 -71
  371. mindspore/rewrite/api/node.py +102 -19
  372. mindspore/rewrite/api/node_type.py +5 -1
  373. mindspore/rewrite/api/scoped_value.py +9 -17
  374. mindspore/rewrite/api/symbol_tree.py +131 -47
  375. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  376. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  377. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  378. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  379. mindspore/rewrite/common/rewrite_elog.py +5 -1
  380. mindspore/rewrite/namer.py +33 -24
  381. mindspore/rewrite/namespace.py +14 -5
  382. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  383. mindspore/rewrite/node/call_function.py +79 -0
  384. mindspore/rewrite/node/cell_container.py +135 -0
  385. mindspore/rewrite/node/control_flow.py +88 -0
  386. mindspore/rewrite/{node.py → node/node.py} +273 -234
  387. mindspore/rewrite/node/node_manager.py +254 -0
  388. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  389. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  390. mindspore/rewrite/parsers/assign_parser.py +216 -221
  391. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  392. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  393. mindspore/rewrite/parsers/constant_parser.py +9 -6
  394. mindspore/rewrite/parsers/container_parser.py +9 -7
  395. mindspore/rewrite/parsers/for_parser.py +36 -15
  396. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  397. mindspore/rewrite/parsers/if_parser.py +28 -24
  398. mindspore/rewrite/parsers/module_parser.py +196 -25
  399. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  400. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  401. mindspore/rewrite/parsers/return_parser.py +6 -6
  402. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  403. mindspore/rewrite/sparsify/utils.py +1 -1
  404. mindspore/rewrite/symbol_tree.py +525 -577
  405. mindspore/rewrite/symbol_tree_builder.py +9 -193
  406. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  407. mindspore/run_check/_check_version.py +2 -2
  408. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  409. mindspore/safeguard/rewrite_obfuscation.py +517 -0
  410. mindspore/scipy/linalg.py +1 -1
  411. mindspore/scipy/optimize/minimize.py +7 -3
  412. mindspore/train/_utils.py +7 -3
  413. mindspore/train/amp.py +323 -123
  414. mindspore/train/anf_ir_pb2.py +14 -2
  415. mindspore/train/callback/_backup_and_restore.py +2 -12
  416. mindspore/train/callback/_callback.py +29 -4
  417. mindspore/train/callback/_checkpoint.py +23 -8
  418. mindspore/train/callback/_early_stop.py +2 -2
  419. mindspore/train/callback/_landscape.py +4 -4
  420. mindspore/train/callback/_loss_monitor.py +2 -2
  421. mindspore/train/callback/_on_request_exit.py +2 -2
  422. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  423. mindspore/train/callback/_summary_collector.py +14 -7
  424. mindspore/train/callback/_time_monitor.py +58 -5
  425. mindspore/train/data_sink.py +5 -11
  426. mindspore/train/dataset_helper.py +83 -57
  427. mindspore/train/loss_scale_manager.py +2 -2
  428. mindspore/train/metrics/__init__.py +3 -3
  429. mindspore/train/metrics/cosine_similarity.py +1 -1
  430. mindspore/train/metrics/hausdorff_distance.py +3 -2
  431. mindspore/train/metrics/mean_surface_distance.py +3 -2
  432. mindspore/train/metrics/metric.py +39 -19
  433. mindspore/train/metrics/roc.py +2 -2
  434. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  435. mindspore/train/mind_ir_pb2.py +85 -36
  436. mindspore/train/model.py +185 -45
  437. mindspore/train/serialization.py +390 -150
  438. mindspore/train/summary/_writer_pool.py +3 -2
  439. mindspore/train/summary/summary_record.py +14 -10
  440. mindspore/train/train_thor/convert_utils.py +3 -3
  441. mindspore/train/train_thor/dataset_helper.py +1 -1
  442. mindspore/version.py +1 -1
  443. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/METADATA +6 -7
  444. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/RECORD +447 -507
  445. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/entry_points.txt +0 -1
  446. mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
  447. mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
  448. mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
  449. mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
  450. mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
  451. mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
  452. mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
  453. mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
  454. mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
  455. mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
  456. mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
  457. mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
  458. mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
  459. mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
  460. mindspore/_akg/akg/tvm/rpc/base.py +0 -182
  461. mindspore/_akg/akg/tvm/rpc/client.py +0 -436
  462. mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
  463. mindspore/_akg/akg/tvm/rpc/server.py +0 -413
  464. mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
  465. mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
  466. mindspore/_extends/graph_kernel/expander.py +0 -80
  467. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  468. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  469. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  470. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  471. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  472. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  473. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  474. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  475. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  476. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  477. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  478. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  479. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  480. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  481. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  482. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  483. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  484. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  485. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  486. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  487. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  488. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  489. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  490. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  491. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  492. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  493. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  494. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  495. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  496. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  497. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  498. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  499. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  500. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  501. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  502. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  503. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  504. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  505. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  506. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  507. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  508. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  509. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  510. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  511. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  512. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  513. mindspore/dataset/datapreprocess/__init__.py +0 -20
  514. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  515. mindspore/include/api/net.h +0 -142
  516. mindspore/nn/lr_scheduler.py +0 -262
  517. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  518. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  519. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  520. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  521. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  522. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  523. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  524. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  525. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  526. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  527. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  528. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  529. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  530. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  531. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  532. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  533. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  534. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  535. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  536. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  537. mindspore/rewrite/node_visitor.py +0 -44
  538. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/WHEEL +0 -0
  539. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,7 @@ import os
23
23
  import re
24
24
  import stat
25
25
 
26
+ from mindspore import log as logger
26
27
 
27
28
  def to_int(param, param_name):
28
29
  """
@@ -80,9 +81,9 @@ def fwrite_format(output_data_path, data_source=None, is_print=False, is_start=F
80
81
  if isinstance(raw_data, (list, tuple)):
81
82
  raw_data = map(str, raw_data)
82
83
  raw_data = " ".join(raw_data)
83
- print(raw_data)
84
+ logger.info(raw_data)
84
85
  else:
85
- print(data_source)
86
+ logger.info(data_source)
86
87
 
87
88
 
88
89
  def get_log_slice_id(file_name):
@@ -68,7 +68,7 @@ def construct_profiling_options():
68
68
  logger.error(
69
69
  "The format of MS_PROFILER_OPTIONS is incorrect. "
70
70
  "The MS_PROFILER_OPTIONS parameter configuration may refer to "
71
- "'https://www.mindspore.cn/mindinsight/docs/zh-CN/master/performance_profiling_ascend.html'."
71
+ "'https://www.mindspore.cn/mindinsight/docs/zh-CN/r2.2/performance_profiling_ascend.html'."
72
72
  )
73
73
  return error_config
74
74
  conbine_options = combine_profile_options(profiling_options)
@@ -72,9 +72,11 @@ class DataPreProcessParser:
72
72
  _source_file_target_old = 'DATA_PREPROCESS.dev.AICPU.'
73
73
  _source_file_target = 'DATA_PREPROCESS.AICPU.'
74
74
  _dst_file_title = 'title:DATA_PREPROCESS AICPU'
75
- _dst_file_column_title = ['serial_number', 'node_type_name', 'total_time(ms)',
76
- 'dispatch_time(ms)', 'execution_time(ms)', 'run_start',
77
- 'run_end']
75
+ _dst_file_column_title = [
76
+ 'serial_number', 'node_type_name', 'total_time(ms)',
77
+ 'dispatch_time(ms)', 'execution_time(ms)', 'run_start',
78
+ 'run_end'
79
+ ]
78
80
  _ms_unit = 1000
79
81
  _us_unit = 100 # Convert 10ns to 1us.
80
82
  _task_id_threshold = 65536
@@ -78,7 +78,7 @@ class AscendFlopsGenerator:
78
78
  writer.writerows(self.flops.tolist())
79
79
  except (IOError, OSError) as err:
80
80
  logging.critical('Errot occurred when write flops file: %s', err)
81
- raise ProfilerIOException()
81
+ raise ProfilerIOException() from err
82
82
  if os.path.exists(flops_path):
83
83
  os.chmod(flops_path, stat.S_IREAD | stat.S_IWRITE)
84
84
 
@@ -89,6 +89,6 @@ class AscendFlopsGenerator:
89
89
  json.dump(self.flops_summary, json_file)
90
90
  except (IOError, OSError) as err:
91
91
  logging.critical('Errot occurred when write step trace point info file: %s', err)
92
- raise ProfilerIOException()
92
+ raise ProfilerIOException() from err
93
93
  if os.path.exists(flops_summary_path):
94
94
  os.chmod(flops_summary_path, stat.S_IREAD | stat.S_IWRITE)
@@ -71,6 +71,6 @@ class AscendFPBPGenerator:
71
71
  json.dump(self.points, json_file)
72
72
  except (IOError, OSError) as err:
73
73
  logging.critical('Errot occurred when write step trace point info file: %s', err)
74
- raise ProfilerIOException()
74
+ raise ProfilerIOException() from err
75
75
  if os.path.exists(step_trace_point_info_path):
76
76
  os.chmod(step_trace_point_info_path, stat.S_IREAD | stat.S_IWRITE)
@@ -99,7 +99,7 @@ class AscendHCCLGenerator:
99
99
  @staticmethod
100
100
  def _rdma_analyse(groupby_transport):
101
101
  """rdma analyse"""
102
- thread_groups, _, _, _ = np.unique(groupby_transport['tid'])
102
+ thread_groups = np.unique(groupby_transport['tid'])
103
103
  thread_information = []
104
104
  for thread_index in thread_groups:
105
105
  groupby_thread = groupby_transport[groupby_transport['tid'] == thread_index]
@@ -107,7 +107,7 @@ class AscendHCCLGenerator:
107
107
  rdma_communication_size = 0
108
108
  rdma_communication_wait_time = 0
109
109
  start_index = 0
110
- end_index = groupby_thread.size - 1
110
+ end_index = groupby_thread.size - 2
111
111
  while start_index < end_index:
112
112
  first_task_type = groupby_thread[start_index]['task_type']
113
113
  if first_task_type == 'RDMASend':
@@ -142,7 +142,8 @@ class AscendHCCLGenerator:
142
142
  file_list = find_files(self.root_path, "hccl_*.json")
143
143
 
144
144
  for hccl_file in file_list:
145
- iteration_id = int(hccl_file.split('_')[-1].split(('.'))[0])
145
+ _, relative_path = os.path.split(hccl_file)
146
+ iteration_id = int(relative_path.split('_')[3])
146
147
  with open(hccl_file) as f:
147
148
  _, hccl_detail_data = self._original_data_analyse(json.load(f))
148
149
  raw = self._iteration_analyse(hccl_detail_data, iteration_id)
@@ -173,7 +174,7 @@ class AscendHCCLGenerator:
173
174
  writer.writerows(self.hccl_raw)
174
175
  except (IOError, OSError) as err:
175
176
  logging.critical('Errot occurred when write aicore detail file: %s', err)
176
- raise ProfilerIOException()
177
+ raise ProfilerIOException() from err
177
178
  if os.path.exists(hccl_raw_path):
178
179
  os.chmod(hccl_raw_path, stat.S_IREAD | stat.S_IWRITE)
179
180
 
@@ -206,8 +207,8 @@ class AscendHCCLGenerator:
206
207
  tuple([name, pid, tid, ts, te, dur, ph, task_type, link_info, transport_type, size, -1]))
207
208
  hccl_data = np.array(target_data, dtype=self.hccl_data_df)
208
209
 
209
- hccl_abstract_data = hccl_data[hccl_data['tid'] >= 100]
210
- hccl_detail_data = hccl_data[hccl_data['tid'] < 100]
210
+ hccl_abstract_data = hccl_data[hccl_data['task_type'] == '']
211
+ hccl_detail_data = hccl_data[hccl_data['task_type'] != '']
211
212
 
212
213
  hccl_abstract_data = hccl_abstract_data[np.argsort(hccl_abstract_data['ts'])]
213
214
  hccl_detail_data = hccl_detail_data[np.argsort(hccl_detail_data['ts'])]
@@ -234,7 +235,7 @@ class AscendHCCLGenerator:
234
235
  transport_information = dict()
235
236
  for transport_index in transport_groups:
236
237
  groupby_transport = groupby_link_info[groupby_link_info['transport_type'] == transport_index]
237
- if transport_index == 'SDMA':
238
+ if transport_index == 'SDMA' and groupby_transport.size > 0:
238
239
  groupby_sdma = \
239
240
  groupby_transport[np.isin(groupby_transport['task_type'], ['Memcpy', 'Reduce Inline'])][
240
241
  ['dur', 'size']]
@@ -243,7 +244,7 @@ class AscendHCCLGenerator:
243
244
  sdma_bandwidth = sdma_communication_size / sdma_communication_time * 1e-3 \
244
245
  if sdma_communication_time != 0 else 0
245
246
  transport_information['SDMA'] = [sdma_communication_time, sdma_communication_size, sdma_bandwidth]
246
- elif transport_index == 'RDMA':
247
+ elif transport_index == 'RDMA' and groupby_transport.size > 0:
247
248
  transport_information['RDMA'] = self._rdma_analyse(groupby_transport)
248
249
  link_info_information[link_info_index] = transport_information
249
250
  return link_info_information
@@ -271,13 +272,17 @@ class AscendHCCLGenerator:
271
272
  sdma_communication_size = np.sum(groupby_sdma['size']) * 1e-3
272
273
  sdma_bandwidth = sdma_communication_size / sdma_communication_time * 1e-3 \
273
274
  if sdma_communication_time != 0 else 0
274
- transport_information['SDMA'] = [sdma_communication_time, sdma_communication_size,
275
- sdma_bandwidth]
275
+ transport_information['SDMA'] = [
276
+ sdma_communication_time, sdma_communication_size,
277
+ sdma_bandwidth
278
+ ]
276
279
  elif transport_index == 'RDMA':
277
280
  transport_information['RDMA'] = self._rdma_analyse(groupby_transport)
278
281
  link_info_information[link_info_index] = transport_information
279
282
  communication_cost = np.sum(groupby_tag[groupby_tag['name'] != 'Notify_Wait']['dur'])
280
283
  wait_cost = np.sum(groupby_tag[groupby_tag['name'] == 'Notify_Wait']['dur'])
281
- tag_information[tag_index] = [str(iteration_index), communication_cost, wait_cost,
282
- link_info_information]
284
+ tag_information[tag_index] = [
285
+ str(iteration_index), communication_cost, wait_cost,
286
+ link_info_information
287
+ ]
283
288
  return tag_information
@@ -14,14 +14,12 @@
14
14
  # ============================================================================
15
15
  """msprof PROF data export api file"""
16
16
  import os
17
+ import shutil
18
+ from collections import defaultdict
17
19
  from subprocess import CalledProcessError, TimeoutExpired
18
20
  from subprocess import Popen, PIPE
19
- from typing import List, Optional
20
- import json
21
- from json.decoder import JSONDecodeError
22
21
  import csv
23
- from mindspore import log as logger, context
24
- from mindspore.communication import get_rank
22
+ from mindspore import log as logger
25
23
  from mindspore.profiler.common.util import get_file_path
26
24
 
27
25
 
@@ -30,7 +28,7 @@ class AscendMsprofExporter:
30
28
  msprof exporter. export cann edge profiling data.
31
29
 
32
30
  args:
33
- prof_root_dir: the root path of PROF_* files
31
+ source_path: the root path of PROF_* files
34
32
 
35
33
  files under prof_root_dir is like:
36
34
  profiler/PROF_*/device_{id}/data/xxx
@@ -42,74 +40,37 @@ class AscendMsprofExporter:
42
40
  >> ms_exporter.export(start_time)
43
41
  """
44
42
 
45
- _null_info = ""
46
- _csv_header_model_id = "Model ID"
47
- _csv_header_iter_id = "Iteration ID"
48
- _profiling_prefix = "PROF"
43
+ _hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
44
+ _msprof_cmd = "msprof"
45
+ _ascend_mark = "Ascend"
49
46
  _summary_dir = "summary"
47
+ _timeline_dir = "timeline"
50
48
  _step_trace_mark = "step_trace"
51
49
  _op_summary_mark = "op_summary"
52
50
  _op_statistic_mark = "op_statistic"
53
- _device_mark = "device"
54
- _msprof_cmd = "msprof"
55
- _info_prefix = "info.json"
56
- _start_log = "start_info"
57
- _rank_id_mark = "rank_id"
58
- _dev_info = "DeviceInfo"
59
- _dev_index = 0
60
- _dev_id = "id"
61
- _ascend_mark = "Ascend"
62
- _hiai_msprof_tail = "Ascend/latest/tools/profiler/bin"
63
51
 
64
- def __init__(self, prof_root_dir: str, time_out=3000) -> None:
65
- self._prof_root_dir = prof_root_dir
66
- self._start_time = 0
67
- self._support_step_trace = True
68
- self._prof_paths = []
69
- self._output_path = None
70
- self._device_path = None
71
- self._model_ids = []
72
- self._iter_ids = []
52
+ def __init__(self, source_path, time_out=3000):
73
53
  self._time_out = time_out
74
- self._check_msprof_env()
54
+ self.source_path = source_path
55
+ self.prof_root_dir = os.path.abspath(os.path.join(self.source_path, os.path.pardir))
75
56
 
76
- @staticmethod
77
- def _check_readable(file_path: str):
78
- """Check whether the file is readable"""
79
- if not os.access(file_path, os.R_OK):
80
- msg = "The file {} is not readable.".format(file_path)
81
- raise PermissionError(msg)
82
-
83
- @staticmethod
84
- def _parse_start_info(input_file: str):
85
- """Get profiler start time from start info file."""
86
- start_time = -1
87
- try:
88
- with open(input_file, "r") as f:
89
- start_time = json.load(f).get("collectionTimeBegin")
90
- except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
91
- logger.warning(err)
92
- return int(start_time)
57
+ self._check_msprof_env()
93
58
 
94
- def export(self, start_time=0, time_out=3000, support_step_trace=True):
59
+ def export(self, model_iteration_dict=None):
95
60
  """start_time is the time to collect PROF data"""
96
- self._start_time = start_time
97
- self._time_out = time_out
98
- self._support_step_trace = support_step_trace
99
- self._init_output_path()
100
- if not self._output_path:
101
- raise FileNotFoundError("Do not found valid profiling directory")
102
- trace_file = self._get_device_trace_file(self._output_path, self._device_path)
103
- if trace_file:
104
- self._export_whole_prof(self._output_path, trace_file)
105
- self._check_export_files(self._device_path, trace_file)
106
-
107
- def get_job_dir(self):
108
- """Return matched PROF directory path. Call this function after exporting profiling data."""
109
- return self._output_path
110
-
111
- def _run_cmd(self, cmd: List[str], raise_error=True):
112
- """run msprof tool shell command"""
61
+
62
+ if not model_iteration_dict:
63
+ model_iteration_dict = self._generate_step_trace(self.prof_root_dir, self.source_path)
64
+
65
+ if model_iteration_dict:
66
+ for model_id, value in model_iteration_dict.items():
67
+ for iteration_id in value:
68
+ msprof_export_cmd = self._msprof_command_generator(self.prof_root_dir, model_id, iteration_id)
69
+ self._run_cmd(msprof_export_cmd)
70
+ self._check_export_files(self.source_path, model_iteration_dict)
71
+
72
+ def _run_cmd(self, cmd, raise_error=True):
73
+ """run shell command"""
113
74
  try:
114
75
  proc = Popen(cmd, stdout=PIPE, stderr=PIPE, text=True)
115
76
  except (FileNotFoundError, PermissionError, CalledProcessError) as exc:
@@ -119,119 +80,26 @@ class AscendMsprofExporter:
119
80
  except TimeoutExpired:
120
81
  proc.kill()
121
82
  msg = "The possible cause is that too much data is collected " \
122
- "and the export time is too long."
83
+ "and the export time is too long."
123
84
  logger.error(msg)
124
85
  raise TimeoutError(msg)
125
86
  logger.info(outs)
126
- if raise_error and errs != self._null_info:
87
+ if raise_error and errs != "":
127
88
  raise RuntimeError(errs)
128
89
  return outs
129
90
 
130
- def _export_helper(self, output, model_id=None, iter_id=None):
91
+ def _msprof_command_generator(self, output, model_id=None, iter_id=None):
131
92
  """msprof export helper"""
132
93
  export_cmd = [self._msprof_cmd, "--export=on", "--output={}".format(output)]
133
- if model_id:
94
+ if isinstance(model_id, int) and model_id >= 0:
134
95
  export_cmd.append("--model-id={}".format(model_id))
135
- if iter_id:
96
+ if isinstance(iter_id, int) and iter_id >= 0:
136
97
  export_cmd.append("--iteration-id={}".format(iter_id))
137
- _ = self._run_cmd(export_cmd)
138
-
139
- def _get_model_iter_ids(self, trace_file: str):
140
- """Read the step_trace file and get all the model_ids and iteration_ids"""
141
- if self._model_ids and self._iter_ids:
142
- return
143
- self._check_readable(trace_file)
144
- with open(trace_file, "r") as f:
145
- reader = csv.reader(f)
146
- for idx, row in enumerate(reader):
147
- if idx == 0:
148
- model_idx = row.index(self._csv_header_model_id)
149
- iter_idx = row.index(self._csv_header_iter_id)
150
- else:
151
- self._model_ids.append(int(row[model_idx]))
152
- self._iter_ids.append(int(row[iter_idx]))
153
-
154
- def _check_export_files(self, device_path: str, trace_file: Optional[str]):
155
- """Check the existence of op_summary & op_statistic files."""
156
- summary_path = os.path.join(device_path, self._summary_dir)
157
- if not os.path.isdir(summary_path):
158
- raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
159
-
160
- sumary_filess = os.listdir(summary_path)
161
- op_summary = set()
162
- op_statistic = set()
163
-
164
- for summary_file in sumary_filess:
165
- if summary_file.startswith(self._op_summary_mark):
166
- op_summary.add(summary_file)
167
- elif summary_file.startswith(self._op_statistic_mark):
168
- op_statistic.add(summary_file)
169
-
170
- if not op_summary:
171
- raise RuntimeError("The op_summary file was not found, " \
172
- "perhaps the original data was not collected.")
173
- if not op_statistic:
174
- raise RuntimeError("The op_statistics file was not found, " \
175
- "perhaps the original data was not collected.")
176
-
177
- if not trace_file:
178
- return
179
-
180
- dev_id = context.get_context("device_id")
181
- self._get_model_iter_ids(trace_file)
182
-
183
- for model_id, iter_id in zip(self._model_ids, self._iter_ids):
184
- tag = "_{}_{}_{}.csv".format(dev_id, model_id, iter_id)
185
- op_sum_file = self._op_summary_mark + tag
186
- op_sta_file = self._op_statistic_mark + tag
187
- if op_sum_file not in op_summary:
188
- logger.warning("[Profiler]The file {} was not found, " \
189
- "perhaps the original data was not collected.".format(op_sum_file))
190
- if op_sta_file not in op_statistic:
191
- logger.warning("[Profiler]The file {} was not found, " \
192
- "perhaps the original data was not collected.".format(op_sta_file))
193
-
194
- logger.info("Finish checking files.")
195
-
196
- def _export_whole_prof(self, prof: str, trace_file: str):
197
- """export all the data under PROF directory"""
198
- self._get_model_iter_ids(trace_file)
199
-
200
- for model_id, iter_id in zip(self._model_ids, self._iter_ids):
201
- self._export_helper(prof, model_id, iter_id)
202
-
203
- def _get_device_trace_file(self, prof_path: str, device_path: str):
204
- """search the step trace csv file under device directory"""
205
-
206
- summary_path = os.path.join(device_path, self._summary_dir)
207
-
208
- if not os.path.exists(summary_path):
209
- self._export_helper(output=prof_path)
210
-
211
- if not os.path.isdir(summary_path):
212
- msg = "Path {} is not a existing directory. Make sure there is " \
213
- "valid profiling data directory!".format(summary_path)
214
- raise FileNotFoundError(msg)
215
-
216
- step_trace_file = get_file_path(summary_path, self._step_trace_mark)
217
-
218
- if not step_trace_file and self._support_step_trace:
219
- msg = "Do not found step trace csv file in {}.".format(self._output_path)
220
- raise FileNotFoundError(msg)
221
-
222
- return step_trace_file
98
+ return export_cmd
223
99
 
224
100
  def _check_msprof_env(self):
225
101
  """Check the existence of msprof binary tool"""
226
- msprof_cmd = ["which", self._msprof_cmd]
227
- outs = self._run_cmd(msprof_cmd, raise_error=False)
228
- if outs != self._null_info:
229
- return
230
- logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
231
- self._search_and_add()
232
102
 
233
- def _search_and_add(self):
234
- """Search msprof and add it to PATH"""
235
103
  def _check_msprof(temp_path: str):
236
104
  if not os.path.isdir(temp_path):
237
105
  return False
@@ -240,6 +108,12 @@ class AscendMsprofExporter:
240
108
  return True
241
109
  return False
242
110
 
111
+ msprof_cmd = ["which", self._msprof_cmd]
112
+ outs = self._run_cmd(msprof_cmd, raise_error=False)
113
+ if outs != "":
114
+ return
115
+ logger.warning("[Profiler]The msprof command was not found. Searching from environment variables...")
116
+
243
117
  msprof_path = None
244
118
  envs = os.environ
245
119
  if envs.get("ASCEND_TOOLKIT_HOME"):
@@ -252,8 +126,7 @@ class AscendMsprofExporter:
252
126
  for path in path_list:
253
127
  if self._ascend_mark in path:
254
128
  prefix = path.split(self._ascend_mark)[0]
255
- tail = self._hiai_msprof_tail
256
- temp_path = os.path.join(prefix, tail)
129
+ temp_path = os.path.join(prefix, self._hiai_msprof_tail)
257
130
  if _check_msprof(temp_path):
258
131
  msprof_path = temp_path
259
132
  break
@@ -264,98 +137,77 @@ class AscendMsprofExporter:
264
137
 
265
138
  logger.info("The msprof command has been added to the path!")
266
139
 
267
- def _init_output_path(self):
268
- """find all the directories start with PROF"""
269
- self._prof_paths = []
140
+ def _generate_step_trace(self, prof_path, device_path):
141
+ """"generate model_id iteration_id dict"""
270
142
 
271
- if not os.path.isdir(self._prof_root_dir):
272
- msg = "Path {} is not an existing directory.".format(self._prof_root_dir)
273
- raise RuntimeError(msg)
143
+ summary_path = os.path.join(device_path, self._summary_dir)
144
+ timeline_path = os.path.join(device_path, self._timeline_dir)
274
145
 
275
- for loc_root, loc_dirs, _ in os.walk(self._prof_root_dir):
276
- for loc_dir in loc_dirs:
277
- if loc_dir.startswith(self._profiling_prefix):
278
- self._prof_paths.append(os.path.join(loc_root, loc_dir))
146
+ msprof_export_cmd = self._msprof_command_generator(prof_path)
147
+ self._run_cmd(msprof_export_cmd)
279
148
 
280
- if not self._prof_paths:
281
- msg = "Do not found profiling data. Make sure there are directories start with PROF."
149
+ if not os.path.isdir(summary_path):
150
+ msg = "Path {} is not a existing directory. Make sure there is " \
151
+ "valid profiling data directory!".format(summary_path)
282
152
  raise FileNotFoundError(msg)
283
153
 
284
- # consider there may exists old PROF data, new PROF data have higher priority.
285
- self._prof_paths.sort() # sort by created time
286
-
287
- device_path = self._search_by_rank_id(self._prof_paths)
288
- if device_path:
289
- dev_par = os.path.join(device_path, os.path.pardir)
290
- abs_dev_par = os.path.abspath(dev_par)
291
- self._output_path = abs_dev_par
292
- self._device_path = device_path
293
-
294
- def _search_by_rank_id(self, prof_paths: str):
295
- """search valid device path through rank_id"""
296
- device_paths = []
297
-
298
- for prof_path in prof_paths:
299
- if not os.path.isdir(prof_path):
300
- continue
301
- devices = os.listdir(prof_path)
302
- for device in devices:
303
- if not device.startswith(self._device_mark):
304
- continue
305
- dev_path = os.path.join(prof_path, device)
306
- device_paths.append(dev_path)
307
-
308
- # search by rank id
309
- find_device_path = None
310
- rank_id = None
311
- device_id = context.get_context("device_id")
154
+ step_trace_file = get_file_path(summary_path, self._step_trace_mark)
312
155
 
313
- try:
314
- rank_id = get_rank()
315
- except RuntimeError:
316
- logger.warning("[Profiler]Do not get rank_id in the environment variable, use device_id instead.")
317
-
318
- for dev_path in device_paths:
319
- if not os.path.isdir(dev_path):
320
- continue
321
- start_log = get_file_path(dev_path, self._start_log)
322
- if not start_log:
323
- continue
324
- start_time = self._parse_start_info(start_log)
325
- if start_time < self._start_time:
326
- continue
327
- info_json = get_file_path(dev_path, self._info_prefix)
328
- if not info_json:
329
- continue
330
- temp_rank_id, temp_dev_id = self._parse_info_json(info_json)
331
- if rank_id is not None and rank_id == temp_rank_id:
332
- find_device_path = dev_path
333
- break
334
- if (rank_id is None or temp_rank_id == -1) and device_id == temp_dev_id:
335
- find_device_path = dev_path
336
-
337
- return find_device_path
338
-
339
- def _parse_info_json(self, info_file: str):
340
- """get rank_id from info.json.{device_id} file"""
341
- rank_id = -1
342
- dev_id = -1
343
- info_dict = {}
344
- try:
345
- with open(info_file, "r") as f:
346
- info_dict = json.load(f)
347
- except (JSONDecodeError, FileNotFoundError, TypeError, PermissionError) as err:
348
- logger.warning(err)
349
- if info_dict.get(self._rank_id_mark) is None:
350
- msg = "[Profiler]There is no rank_id key in file {}".format(info_file)
351
- logger.warning(msg)
352
- else:
353
- rank_id = info_dict.get(self._rank_id_mark)
156
+ if not step_trace_file:
157
+ logger.info("Do not found step trace csv file in {} .".format(summary_path))
158
+ return None
159
+
160
+ step_trace = defaultdict(list)
161
+ with open(step_trace_file, newline='', mode='r') as csvfile:
162
+ reader = csv.reader(csvfile, delimiter=',', quotechar='"')
163
+ header = next(reader)
164
+ for index, value in enumerate(header):
165
+ if value == 'Model ID':
166
+ Model_ID = index
167
+ if value == 'Iteration ID':
168
+ Iteration_ID = index
169
+ for row in reader:
170
+ step_trace[int(row[Model_ID])].append(int(row[Iteration_ID]))
171
+
172
+ if os.path.isdir(summary_path):
173
+ shutil.rmtree(summary_path)
174
+ if os.path.isdir(timeline_path):
175
+ shutil.rmtree(timeline_path)
176
+
177
+ return step_trace
178
+
179
+ def _check_export_files(self, source_path, step_trace):
180
+ """Check the existence of op_summary & op_statistic files."""
181
+ summary_path = os.path.join(source_path, self._summary_dir)
182
+ if not os.path.isdir(summary_path):
183
+ raise RuntimeError("Path {} is not a existing directory.".format(summary_path))
184
+ summary_file_list = os.listdir(summary_path)
185
+ op_summary = set()
186
+ op_statistic = set()
354
187
 
355
- if not info_dict.get(self._dev_info):
356
- return rank_id, dev_id
188
+ for summary_file in summary_file_list:
189
+ if summary_file.startswith(self._op_summary_mark):
190
+ op_summary.add(summary_file)
191
+ elif summary_file.startswith(self._op_statistic_mark):
192
+ op_statistic.add(summary_file)
357
193
 
358
- dev_info = info_dict.get(self._dev_info)
359
- dev_id = dev_info[self._dev_index].get(self._dev_id, -1)
194
+ if not op_summary:
195
+ raise RuntimeError("The op_summary file was not found, perhaps the original data was not collected.")
196
+ if not op_statistic:
197
+ raise RuntimeError("The op_statistics file was not found, perhaps the original data was not collected.")
198
+
199
+ device_id = source_path.split('_')[-1].replace("/", "")
200
+
201
+ for model_id, value in step_trace.items():
202
+ for iteration_id in value:
203
+ tag = f"_{device_id}_{model_id}_{iteration_id}.csv"
204
+ op_summary_file_name = self._op_summary_mark + tag
205
+ op_statistic_file = self._op_statistic_mark + tag
206
+ if op_summary_file_name not in op_summary:
207
+ logger.warning("[Profiler]The file {} was not found, " \
208
+ "perhaps the original data was not collected.".format(op_summary_file_name))
209
+ if op_statistic_file not in op_statistic:
210
+ logger.warning("[Profiler]The file {} was not found, " \
211
+ "perhaps the original data was not collected.".format(op_statistic_file))
360
212
 
361
- return rank_id, dev_id
213
+ logger.info("Finish checking files.")
@@ -37,7 +37,7 @@ class AscendMsprofDataGenerator:
37
37
  'Op Name': {'index': self.invalid_index, 'dtype': ('Op Name', object)},
38
38
  'OP Type': {'index': self.invalid_index, 'dtype': ('Op Type', object)},
39
39
  'Task Type': {'index': self.invalid_index, 'dtype': ('Task Type', object)},
40
- 'Task Start Time': {'index': self.invalid_index, 'dtype': ('Task Start Time', float)},
40
+ 'Task Start Time(us)': {'index': self.invalid_index, 'dtype': ('Task Start Time', float)},
41
41
  'Task Duration(us)': {'index': self.invalid_index, 'dtype': ('Task Duration', float)},
42
42
  'Task Wait Time(us)': {'index': self.invalid_index, 'dtype': ('Task Wait Time', float)},
43
43
  'Input Shapes': {'index': self.invalid_index, 'dtype': ('Input Shapes', object)},
@@ -61,9 +61,9 @@ class AscendMsprofDataGenerator:
61
61
 
62
62
  self.steptrace_name = {
63
63
  'Iteration ID': {'index': self.invalid_index, 'dtype': ('Iteration ID', int)},
64
- 'FP Start': {'index': self.invalid_index, 'dtype': ('FP Start', float)},
65
- 'BP End': {'index': self.invalid_index, 'dtype': ('BP End', float)},
66
- 'Iteration End': {'index': self.invalid_index, 'dtype': ('Iteration End', float)},
64
+ 'FP Start(us)': {'index': self.invalid_index, 'dtype': ('FP Start', float)},
65
+ 'BP End(us)': {'index': self.invalid_index, 'dtype': ('BP End', float)},
66
+ 'Iteration End(us)': {'index': self.invalid_index, 'dtype': ('Iteration End', float)},
67
67
  'Iteration Time(us)': {'index': self.invalid_index, 'dtype': ('Iteration Time', float)},
68
68
  'FP to BP Time(us)': {'index': self.invalid_index, 'dtype': ('FP to BP Time', float)},
69
69
  'Iteration Refresh(us)': {'index': self.invalid_index, 'dtype': ('Iteration Refresh', float)},
@@ -126,7 +126,7 @@ class AscendMsprofDataGenerator:
126
126
  op_summary_dt = np.dtype([value['dtype'] for value in self.op_summary_name.values()])
127
127
 
128
128
  self.op_summary = np.array(op_summary, dtype=op_summary_dt)
129
- self.op_summary['Task Start Time'] = self.op_summary['Task Start Time'] * 1e-6
129
+ self.op_summary['Task Start Time'] = self.op_summary['Task Start Time'] * 1e-3
130
130
  self.op_summary['Task Duration'] = self.op_summary['Task Duration'] * 1e-3
131
131
  self.op_summary['Task Wait Time'] = self.op_summary['Task Wait Time'] * 1e-3
132
132
 
@@ -171,15 +171,15 @@ class AscendMsprofDataGenerator:
171
171
 
172
172
  index = len(self.steptrace_name)
173
173
  for name in hccl_data:
174
+ if index >= len(header):
175
+ break
174
176
  name = f"stream_{name['Stream ID']}_{name['Task ID']}_{name['Op Name']}"
175
177
  self.steptrace_name[name] = {'index': index, 'dtype': (name, float)}
176
178
  index += 1
177
179
  self.steptrace_name[f'{name} duration'] = {'index': index, 'dtype': (f'{name} duration', float)}
178
180
  index += 1
179
- if index >= len(header)-1:
180
- break
181
181
 
182
- for i in range(index, len(header), 2):
182
+ for i in range(len(self.steptrace_name), len(header), 2):
183
183
  name = f'hccl_{i}'
184
184
  self.steptrace_name[name] = {'index': i, 'dtype': (name, float)}
185
185
  self.steptrace_name[f'{name} duration'] = {'index': i+1, 'dtype': (f'{name} duration', float)}