mindspore 2.4.10__cp39-cp39-win_amd64.whl → 2.6.0rc1__cp39-cp39-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (577) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +13 -6
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -0
  7. mindspore/_checkparam.py +3 -38
  8. mindspore/_deprecated/__init__.py +17 -0
  9. mindspore/_deprecated/jit.py +198 -0
  10. mindspore/_extends/builtin_operations.py +1 -1
  11. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  12. mindspore/_extends/parse/__init__.py +6 -7
  13. mindspore/_extends/parse/compile_config.py +83 -0
  14. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  16. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  17. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  18. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  19. mindspore/_extends/parse/parser.py +46 -197
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +217 -98
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +11 -5
  27. mindspore/avcodec-59.dll +0 -0
  28. mindspore/avdevice-59.dll +0 -0
  29. mindspore/avfilter-8.dll +0 -0
  30. mindspore/avformat-59.dll +0 -0
  31. mindspore/avutil-57.dll +0 -0
  32. mindspore/boost/__init__.py +2 -2
  33. mindspore/boost/base.py +3 -7
  34. mindspore/boost/boost_cell_wrapper.py +138 -43
  35. mindspore/common/__init__.py +6 -3
  36. mindspore/common/_grad_function.py +56 -0
  37. mindspore/common/_pijit_context.py +14 -5
  38. mindspore/common/_register_for_tensor.py +1 -2
  39. mindspore/common/_stub_tensor.py +30 -14
  40. mindspore/common/_tensor_cpp_method.py +17 -0
  41. mindspore/common/_tensor_docs.py +4760 -0
  42. mindspore/common/api.py +435 -371
  43. mindspore/common/auto_dynamic_shape.py +41 -44
  44. mindspore/common/dtype.py +39 -36
  45. mindspore/common/dump.py +9 -6
  46. mindspore/common/file_system.py +9 -1
  47. mindspore/common/generator.py +2 -0
  48. mindspore/common/hook_handle.py +6 -2
  49. mindspore/common/initializer.py +13 -10
  50. mindspore/common/jit_begin_end.py +94 -0
  51. mindspore/common/jit_config.py +6 -1
  52. mindspore/common/jit_context.py +76 -0
  53. mindspore/common/jit_trace.py +378 -0
  54. mindspore/common/lazy_inline.py +9 -3
  55. mindspore/common/mindir_util.py +10 -2
  56. mindspore/common/mutable.py +5 -4
  57. mindspore/common/parameter.py +135 -52
  58. mindspore/common/seed.py +2 -2
  59. mindspore/common/sparse_tensor.py +23 -17
  60. mindspore/common/tensor.py +951 -1992
  61. mindspore/communication/__init__.py +7 -5
  62. mindspore/communication/_comm_helper.py +52 -2
  63. mindspore/communication/comm_func.py +240 -181
  64. mindspore/communication/management.py +95 -26
  65. mindspore/context.py +314 -566
  66. mindspore/dataset/__init__.py +65 -37
  67. mindspore/dataset/audio/__init__.py +2 -8
  68. mindspore/dataset/audio/transforms.py +3 -17
  69. mindspore/dataset/callback/ds_callback.py +2 -1
  70. mindspore/dataset/core/config.py +87 -6
  71. mindspore/dataset/engine/cache_admin.py +3 -3
  72. mindspore/dataset/engine/cache_client.py +6 -5
  73. mindspore/dataset/engine/datasets.py +292 -267
  74. mindspore/dataset/engine/datasets_audio.py +22 -8
  75. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  76. mindspore/dataset/engine/datasets_text.py +78 -48
  77. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  78. mindspore/dataset/engine/datasets_vision.py +120 -44
  79. mindspore/dataset/engine/iterators.py +283 -63
  80. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  81. mindspore/dataset/engine/obs/util.py +8 -0
  82. mindspore/dataset/engine/queue.py +40 -0
  83. mindspore/dataset/engine/samplers.py +289 -43
  84. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  85. mindspore/dataset/engine/validators.py +53 -11
  86. mindspore/dataset/text/__init__.py +7 -6
  87. mindspore/dataset/text/transforms.py +6 -5
  88. mindspore/dataset/text/utils.py +3 -3
  89. mindspore/dataset/transforms/__init__.py +0 -9
  90. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  91. mindspore/dataset/transforms/transforms.py +31 -14
  92. mindspore/dataset/utils/browse_dataset.py +1 -1
  93. mindspore/dataset/vision/__init__.py +2 -9
  94. mindspore/dataset/vision/transforms.py +202 -158
  95. mindspore/dataset/vision/utils.py +7 -5
  96. mindspore/dataset/vision/validators.py +1 -2
  97. mindspore/device_context/__init__.py +21 -0
  98. mindspore/device_context/ascend/__init__.py +25 -0
  99. mindspore/device_context/ascend/device.py +72 -0
  100. mindspore/device_context/ascend/op_debug.py +153 -0
  101. mindspore/device_context/ascend/op_precision.py +193 -0
  102. mindspore/device_context/ascend/op_tuning.py +123 -0
  103. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  104. mindspore/device_context/cpu/device.py +62 -0
  105. mindspore/device_context/cpu/op_tuning.py +43 -0
  106. mindspore/device_context/gpu/__init__.py +21 -0
  107. mindspore/device_context/gpu/device.py +70 -0
  108. mindspore/device_context/gpu/op_precision.py +67 -0
  109. mindspore/device_context/gpu/op_tuning.py +175 -0
  110. mindspore/device_manager.py +170 -0
  111. mindspore/experimental/es/embedding_service.py +35 -27
  112. mindspore/experimental/llm_boost/__init__.py +1 -0
  113. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  114. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  115. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  116. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  117. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  118. mindspore/experimental/llm_boost/register.py +1 -0
  119. mindspore/experimental/map_parameter.py +4 -4
  120. mindspore/experimental/optim/adadelta.py +6 -6
  121. mindspore/experimental/optim/adagrad.py +4 -4
  122. mindspore/experimental/optim/adam.py +7 -0
  123. mindspore/experimental/optim/adamax.py +4 -4
  124. mindspore/experimental/optim/adamw.py +4 -0
  125. mindspore/experimental/optim/asgd.py +1 -1
  126. mindspore/experimental/optim/lr_scheduler.py +73 -46
  127. mindspore/experimental/optim/radam.py +34 -31
  128. mindspore/experimental/optim/rprop.py +1 -1
  129. mindspore/experimental/optim/sgd.py +1 -1
  130. mindspore/hal/contiguous_tensors_handle.py +6 -10
  131. mindspore/hal/device.py +55 -53
  132. mindspore/hal/event.py +52 -52
  133. mindspore/hal/memory.py +157 -117
  134. mindspore/hal/stream.py +150 -109
  135. mindspore/include/api/context.h +0 -1
  136. mindspore/include/dataset/constants.h +7 -4
  137. mindspore/include/dataset/execute.h +2 -2
  138. mindspore/jpeg62.dll +0 -0
  139. mindspore/log.py +50 -0
  140. mindspore/mindrecord/__init__.py +21 -8
  141. mindspore/mindrecord/config.py +17 -316
  142. mindspore/mindrecord/filereader.py +1 -9
  143. mindspore/mindrecord/filewriter.py +5 -15
  144. mindspore/mindrecord/mindpage.py +1 -9
  145. mindspore/mindspore_backend_common.dll +0 -0
  146. mindspore/mindspore_backend_manager.dll +0 -0
  147. mindspore/mindspore_common.dll +0 -0
  148. mindspore/mindspore_core.dll +0 -0
  149. mindspore/mindspore_dump.dll +0 -0
  150. mindspore/mindspore_frontend.dll +0 -0
  151. mindspore/mindspore_memory_pool.dll +0 -0
  152. mindspore/mindspore_ms_backend.dll +0 -0
  153. mindspore/mindspore_ops.dll +0 -0
  154. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  155. mindspore/mindspore_ops_kernel_common.dll +0 -0
  156. mindspore/mindspore_profiler.dll +0 -0
  157. mindspore/mindspore_pyboost.dll +0 -0
  158. mindspore/mindspore_pynative.dll +0 -0
  159. mindspore/mindspore_res_manager.dll +0 -0
  160. mindspore/mindspore_runtime_pipeline.dll +0 -0
  161. mindspore/mint/__init__.py +796 -759
  162. mindspore/mint/distributed/__init__.py +70 -4
  163. mindspore/mint/distributed/distributed.py +2679 -44
  164. mindspore/mint/linalg/__init__.py +8 -0
  165. mindspore/mint/nn/__init__.py +743 -22
  166. mindspore/mint/nn/functional.py +716 -23
  167. mindspore/mint/nn/layer/__init__.py +21 -4
  168. mindspore/mint/nn/layer/_functions.py +334 -0
  169. mindspore/mint/nn/layer/activation.py +276 -1
  170. mindspore/mint/nn/layer/basic.py +123 -0
  171. mindspore/mint/nn/layer/conv.py +921 -0
  172. mindspore/mint/nn/layer/normalization.py +223 -28
  173. mindspore/mint/nn/layer/padding.py +797 -0
  174. mindspore/mint/nn/layer/pooling.py +235 -0
  175. mindspore/mint/optim/__init__.py +3 -1
  176. mindspore/mint/optim/adam.py +223 -0
  177. mindspore/mint/optim/adamw.py +26 -19
  178. mindspore/mint/optim/sgd.py +171 -0
  179. mindspore/mint/special/__init__.py +2 -1
  180. mindspore/multiprocessing/__init__.py +5 -0
  181. mindspore/nn/__init__.py +4 -1
  182. mindspore/nn/cell.py +1370 -189
  183. mindspore/nn/dynamic_lr.py +2 -1
  184. mindspore/nn/layer/activation.py +29 -27
  185. mindspore/nn/layer/basic.py +51 -35
  186. mindspore/nn/layer/channel_shuffle.py +3 -3
  187. mindspore/nn/layer/container.py +1 -1
  188. mindspore/nn/layer/conv.py +22 -17
  189. mindspore/nn/layer/embedding.py +12 -11
  190. mindspore/nn/layer/normalization.py +56 -49
  191. mindspore/nn/layer/padding.py +4 -3
  192. mindspore/nn/layer/pooling.py +120 -42
  193. mindspore/nn/layer/rnn_cells.py +1 -1
  194. mindspore/nn/layer/rnns.py +2 -1
  195. mindspore/nn/layer/timedistributed.py +5 -5
  196. mindspore/nn/layer/transformer.py +59 -36
  197. mindspore/nn/learning_rate_schedule.py +8 -4
  198. mindspore/nn/loss/loss.py +58 -55
  199. mindspore/nn/optim/ada_grad.py +7 -5
  200. mindspore/nn/optim/adadelta.py +11 -9
  201. mindspore/nn/optim/adafactor.py +1 -1
  202. mindspore/nn/optim/adam.py +17 -13
  203. mindspore/nn/optim/adamax.py +8 -7
  204. mindspore/nn/optim/adasum.py +5 -5
  205. mindspore/nn/optim/asgd.py +1 -1
  206. mindspore/nn/optim/ftrl.py +11 -9
  207. mindspore/nn/optim/lamb.py +1 -1
  208. mindspore/nn/optim/lars.py +1 -4
  209. mindspore/nn/optim/lazyadam.py +12 -10
  210. mindspore/nn/optim/momentum.py +7 -6
  211. mindspore/nn/optim/optimizer.py +3 -3
  212. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  213. mindspore/nn/optim/rmsprop.py +13 -12
  214. mindspore/nn/optim/rprop.py +11 -9
  215. mindspore/nn/optim/sgd.py +9 -6
  216. mindspore/nn/optim/tft_wrapper.py +5 -2
  217. mindspore/nn/optim/thor.py +2 -1
  218. mindspore/nn/probability/bijector/bijector.py +17 -11
  219. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  220. mindspore/nn/probability/bijector/invert.py +2 -2
  221. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  222. mindspore/nn/probability/bijector/softplus.py +3 -2
  223. mindspore/nn/probability/distribution/beta.py +3 -3
  224. mindspore/nn/probability/distribution/categorical.py +1 -1
  225. mindspore/nn/probability/distribution/cauchy.py +4 -2
  226. mindspore/nn/probability/distribution/exponential.py +6 -7
  227. mindspore/nn/probability/distribution/gamma.py +2 -2
  228. mindspore/nn/probability/distribution/gumbel.py +2 -2
  229. mindspore/nn/probability/distribution/half_normal.py +5 -3
  230. mindspore/nn/probability/distribution/logistic.py +5 -3
  231. mindspore/nn/probability/distribution/poisson.py +1 -1
  232. mindspore/nn/probability/distribution/uniform.py +5 -3
  233. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  234. mindspore/nn/reinforcement/tensor_array.py +1 -1
  235. mindspore/nn/utils/init.py +13 -11
  236. mindspore/nn/wrap/__init__.py +6 -6
  237. mindspore/nn/wrap/cell_wrapper.py +181 -122
  238. mindspore/nn/wrap/grad_reducer.py +45 -36
  239. mindspore/nn/wrap/loss_scale.py +6 -7
  240. mindspore/numpy/array_creations.py +63 -65
  241. mindspore/numpy/array_ops.py +149 -144
  242. mindspore/numpy/logic_ops.py +41 -42
  243. mindspore/numpy/math_ops.py +365 -363
  244. mindspore/numpy/utils.py +17 -18
  245. mindspore/numpy/utils_const.py +5 -6
  246. mindspore/opencv_core452.dll +0 -0
  247. mindspore/opencv_imgcodecs452.dll +0 -0
  248. mindspore/opencv_imgproc452.dll +0 -0
  249. mindspore/ops/__init__.py +5 -3
  250. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  251. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  252. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  253. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  254. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  255. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  256. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  257. mindspore/ops/_register_for_op.py +0 -11
  258. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  259. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  260. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  261. mindspore/ops/_vmap/vmap_base.py +0 -2
  262. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  263. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  264. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  265. mindspore/ops/auto_generate/__init__.py +4 -3
  266. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  267. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  268. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  269. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  270. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  271. mindspore/ops/composite/__init__.py +2 -1
  272. mindspore/ops/composite/base.py +20 -25
  273. mindspore/ops/composite/math_ops.py +6 -16
  274. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  275. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  276. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  277. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  278. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  279. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  280. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  281. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  282. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  283. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  284. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  285. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  286. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  287. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  288. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  289. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  290. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  291. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  292. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  293. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  294. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  295. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  297. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  301. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  302. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  304. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  305. mindspore/ops/function/__init__.py +40 -2
  306. mindspore/ops/function/_add_attr_func.py +58 -0
  307. mindspore/ops/function/array_func.py +2089 -2403
  308. mindspore/ops/function/clip_func.py +80 -23
  309. mindspore/ops/function/debug_func.py +57 -57
  310. mindspore/ops/function/grad/__init__.py +1 -0
  311. mindspore/ops/function/grad/grad_func.py +104 -71
  312. mindspore/ops/function/image_func.py +2 -2
  313. mindspore/ops/function/linalg_func.py +47 -78
  314. mindspore/ops/function/math_func.py +4501 -3802
  315. mindspore/ops/function/nn_func.py +1726 -620
  316. mindspore/ops/function/other_func.py +159 -1
  317. mindspore/ops/function/parameter_func.py +18 -84
  318. mindspore/ops/function/random_func.py +440 -387
  319. mindspore/ops/function/reshard_func.py +4 -70
  320. mindspore/ops/function/sparse_func.py +3 -3
  321. mindspore/ops/function/sparse_unary_func.py +6 -6
  322. mindspore/ops/function/spectral_func.py +25 -58
  323. mindspore/ops/function/vmap_func.py +24 -17
  324. mindspore/ops/functional.py +22 -7
  325. mindspore/ops/functional_overload.py +1440 -0
  326. mindspore/ops/op_info_register.py +32 -244
  327. mindspore/ops/operations/__init__.py +13 -7
  328. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  329. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  330. mindspore/ops/operations/_grad_ops.py +2 -43
  331. mindspore/ops/operations/_infer_ops.py +2 -1
  332. mindspore/ops/operations/_inner_ops.py +43 -84
  333. mindspore/ops/operations/_ms_kernel.py +4 -10
  334. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  335. mindspore/ops/operations/_scalar_ops.py +3 -2
  336. mindspore/ops/operations/_sequence_ops.py +1 -1
  337. mindspore/ops/operations/_tensor_array.py +1 -1
  338. mindspore/ops/operations/array_ops.py +81 -324
  339. mindspore/ops/operations/comm_ops.py +154 -108
  340. mindspore/ops/operations/custom_ops.py +232 -78
  341. mindspore/ops/operations/debug_ops.py +153 -59
  342. mindspore/ops/operations/inner_ops.py +7 -5
  343. mindspore/ops/operations/linalg_ops.py +1 -57
  344. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  345. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  346. mindspore/ops/operations/math_ops.py +32 -234
  347. mindspore/ops/operations/nn_ops.py +210 -498
  348. mindspore/ops/operations/other_ops.py +62 -9
  349. mindspore/ops/operations/random_ops.py +13 -7
  350. mindspore/ops/operations/reshard_ops.py +1 -1
  351. mindspore/ops/operations/sparse_ops.py +2 -2
  352. mindspore/ops/primitive.py +66 -53
  353. mindspore/ops/tensor_method.py +1888 -0
  354. mindspore/ops_generate/__init__.py +0 -5
  355. mindspore/ops_generate/aclnn/__init__.py +0 -0
  356. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  357. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  358. mindspore/ops_generate/api/__init__.py +0 -0
  359. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  360. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  361. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  362. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  363. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  364. mindspore/ops_generate/api/gen_api.py +103 -0
  365. mindspore/ops_generate/api/op_api_proto.py +235 -0
  366. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  367. mindspore/ops_generate/common/__init__.py +0 -0
  368. mindspore/ops_generate/common/base_generator.py +11 -0
  369. mindspore/ops_generate/common/gen_constants.py +91 -0
  370. mindspore/ops_generate/common/gen_utils.py +348 -0
  371. mindspore/ops_generate/common/op_proto.py +473 -0
  372. mindspore/ops_generate/common/template.py +523 -0
  373. mindspore/ops_generate/gen_ops.py +22 -1069
  374. mindspore/ops_generate/op_def/__init__.py +0 -0
  375. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  376. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  377. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  378. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  379. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  380. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  381. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  382. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  383. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  384. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  385. mindspore/ops_generate/pyboost/__init__.py +0 -0
  386. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  387. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  388. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  389. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  390. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  391. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  392. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  393. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  394. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  395. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  396. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  397. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  398. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  399. mindspore/ops_generate/resources/__init__.py +0 -0
  400. mindspore/ops_generate/resources/resource_list.py +30 -0
  401. mindspore/ops_generate/resources/resource_loader.py +36 -0
  402. mindspore/ops_generate/resources/resource_manager.py +64 -0
  403. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  404. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  405. mindspore/parallel/__init__.py +7 -3
  406. mindspore/parallel/_auto_parallel_context.py +152 -34
  407. mindspore/parallel/_cell_wrapper.py +130 -15
  408. mindspore/parallel/_parallel_serialization.py +107 -5
  409. mindspore/parallel/_ps_context.py +1 -1
  410. mindspore/parallel/_recovery_context.py +7 -2
  411. mindspore/parallel/_tensor.py +142 -18
  412. mindspore/parallel/_utils.py +199 -23
  413. mindspore/parallel/algo_parameter_config.py +4 -4
  414. mindspore/parallel/auto_parallel.py +732 -0
  415. mindspore/parallel/checkpoint_convert.py +159 -0
  416. mindspore/parallel/checkpoint_transform.py +698 -35
  417. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  418. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  419. mindspore/parallel/cluster/run.py +21 -4
  420. mindspore/parallel/function/__init__.py +24 -0
  421. mindspore/parallel/function/reshard_func.py +259 -0
  422. mindspore/parallel/nn/__init__.py +25 -0
  423. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  424. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  425. mindspore/parallel/parameter_broadcast.py +25 -14
  426. mindspore/parallel/shard.py +137 -58
  427. mindspore/parallel/transform_safetensors.py +363 -305
  428. mindspore/profiler/__init__.py +22 -5
  429. mindspore/profiler/analysis/__init__.py +0 -0
  430. mindspore/profiler/analysis/parser/__init__.py +0 -0
  431. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  432. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  433. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  434. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  435. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  436. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  437. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  438. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  439. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  440. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  441. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  442. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  443. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  444. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  445. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  446. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  447. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  448. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  449. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  450. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  451. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  452. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  453. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  454. mindspore/profiler/analysis/task_manager.py +131 -0
  455. mindspore/profiler/analysis/time_converter.py +84 -0
  456. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  457. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  458. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  459. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  460. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  461. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  462. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  463. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  464. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  465. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  466. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  467. mindspore/profiler/analysis/work_flow.py +73 -0
  468. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  469. mindspore/profiler/common/command_executor.py +90 -0
  470. mindspore/profiler/common/constant.py +186 -3
  471. mindspore/profiler/common/file_manager.py +208 -0
  472. mindspore/profiler/common/log.py +130 -0
  473. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  474. mindspore/profiler/common/path_manager.py +395 -0
  475. mindspore/profiler/common/process_bar.py +168 -0
  476. mindspore/profiler/common/process_pool.py +9 -3
  477. mindspore/profiler/common/profiler_context.py +500 -0
  478. mindspore/profiler/common/profiler_info.py +304 -0
  479. mindspore/profiler/common/profiler_meta_data.py +74 -0
  480. mindspore/profiler/common/profiler_output_path.py +284 -0
  481. mindspore/profiler/common/profiler_parameters.py +251 -0
  482. mindspore/profiler/common/profiler_path_manager.py +179 -0
  483. mindspore/profiler/common/record_function.py +76 -0
  484. mindspore/profiler/common/tlv_decoder.py +76 -0
  485. mindspore/profiler/common/util.py +75 -2
  486. mindspore/profiler/dynamic_profiler.py +341 -75
  487. mindspore/profiler/envprofiler.py +163 -0
  488. mindspore/profiler/experimental_config.py +197 -0
  489. mindspore/profiler/mstx.py +242 -0
  490. mindspore/profiler/platform/__init__.py +21 -0
  491. mindspore/profiler/platform/base_profiler.py +40 -0
  492. mindspore/profiler/platform/cpu_profiler.py +124 -0
  493. mindspore/profiler/platform/gpu_profiler.py +74 -0
  494. mindspore/profiler/platform/npu_profiler.py +335 -0
  495. mindspore/profiler/profiler.py +1073 -90
  496. mindspore/profiler/profiler_action_controller.py +187 -0
  497. mindspore/profiler/profiler_interface.py +118 -0
  498. mindspore/profiler/schedule.py +243 -0
  499. mindspore/rewrite/api/node.py +15 -13
  500. mindspore/rewrite/api/symbol_tree.py +2 -3
  501. mindspore/run_check/_check_version.py +27 -20
  502. mindspore/run_check/run_check.py +1 -1
  503. mindspore/runtime/__init__.py +37 -0
  504. mindspore/runtime/device.py +27 -0
  505. mindspore/runtime/event.py +209 -0
  506. mindspore/runtime/executor.py +177 -0
  507. mindspore/runtime/memory.py +409 -0
  508. mindspore/runtime/stream.py +460 -0
  509. mindspore/runtime/thread_bind_core.py +401 -0
  510. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  511. mindspore/swresample-4.dll +0 -0
  512. mindspore/swscale-6.dll +0 -0
  513. mindspore/tinyxml2.dll +0 -0
  514. mindspore/train/__init__.py +8 -8
  515. mindspore/train/_utils.py +88 -25
  516. mindspore/train/amp.py +9 -5
  517. mindspore/train/callback/__init__.py +2 -2
  518. mindspore/train/callback/_callback.py +2 -16
  519. mindspore/train/callback/_checkpoint.py +53 -55
  520. mindspore/train/callback/_cluster_monitor.py +14 -18
  521. mindspore/train/callback/_early_stop.py +1 -1
  522. mindspore/train/callback/_flops_collector.py +103 -68
  523. mindspore/train/callback/_history.py +8 -5
  524. mindspore/train/callback/_lambda_callback.py +2 -2
  525. mindspore/train/callback/_landscape.py +0 -3
  526. mindspore/train/callback/_loss_monitor.py +2 -1
  527. mindspore/train/callback/_on_request_exit.py +6 -5
  528. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  529. mindspore/train/callback/_summary_collector.py +52 -19
  530. mindspore/train/callback/_time_monitor.py +2 -1
  531. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  532. mindspore/train/data_sink.py +25 -2
  533. mindspore/train/dataset_helper.py +15 -16
  534. mindspore/train/loss_scale_manager.py +8 -7
  535. mindspore/train/metrics/accuracy.py +3 -3
  536. mindspore/train/metrics/confusion_matrix.py +9 -9
  537. mindspore/train/metrics/error.py +3 -3
  538. mindspore/train/metrics/hausdorff_distance.py +4 -4
  539. mindspore/train/metrics/mean_surface_distance.py +3 -3
  540. mindspore/train/metrics/metric.py +0 -12
  541. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  542. mindspore/train/metrics/precision.py +11 -10
  543. mindspore/train/metrics/recall.py +9 -9
  544. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  545. mindspore/train/mind_ir_pb2.py +174 -46
  546. mindspore/train/model.py +184 -113
  547. mindspore/train/serialization.py +622 -978
  548. mindspore/train/summary/_summary_adapter.py +2 -2
  549. mindspore/train/summary/summary_record.py +2 -3
  550. mindspore/train/train_thor/model_thor.py +1 -1
  551. mindspore/turbojpeg.dll +0 -0
  552. mindspore/utils/__init__.py +6 -3
  553. mindspore/utils/dryrun.py +140 -0
  554. mindspore/utils/hooks.py +81 -0
  555. mindspore/utils/runtime_execution_order_check.py +550 -0
  556. mindspore/utils/utils.py +138 -4
  557. mindspore/version.py +1 -1
  558. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  559. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +562 -393
  560. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  561. mindspore/_install_custom.py +0 -43
  562. mindspore/common/_register_for_adapter.py +0 -74
  563. mindspore/common/_tensor_overload.py +0 -139
  564. mindspore/mindspore_np_dtype.dll +0 -0
  565. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  566. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  567. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  568. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  569. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  570. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  571. mindspore/ops_generate/gen_utils.py +0 -209
  572. mindspore/ops_generate/op_proto.py +0 -145
  573. mindspore/ops_generate/template.py +0 -261
  574. mindspore/profiler/envprofiling.py +0 -254
  575. mindspore/profiler/profiling.py +0 -1926
  576. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  577. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -16,6 +16,7 @@
16
16
  import os
17
17
  import sys
18
18
  import time
19
+ import stat
19
20
  import json
20
21
  import atexit
21
22
  import struct
@@ -24,11 +25,18 @@ import multiprocessing
24
25
 
25
26
  from mindspore import log as logger
26
27
  from mindspore.train import Callback
27
- from mindspore.profiler import Profiler
28
- from mindspore.profiler import ProfilerLevel
28
+ from mindspore.profiler import Profiler, tensorboard_trace_handler, schedule
29
29
  from mindspore.communication import get_rank
30
30
  from mindspore.profiler.parser.ascend_analysis.file_manager import FileManager
31
31
  from mindspore.profiler.parser.ascend_analysis.path_manager import PathManager
32
+ from mindspore.profiler.profiler_interface import ProfilerInterface
33
+ from mindspore.profiler.common.constant import (
34
+ ProfilerActivity,
35
+ ProfilerLevel,
36
+ AicoreMetrics,
37
+ ExportType,
38
+ )
39
+ from mindspore.profiler.common.util import no_exception_func
32
40
 
33
41
 
34
42
  def get_real_rank():
@@ -48,17 +56,19 @@ class DynamicProfilerArgs:
48
56
  """
49
57
  Data class for dynamic profile config.
50
58
  """
51
- FMT = "iiiiii?????"
59
+ FMT = "i" * 7 + "?" * 6
52
60
  SIZE = struct.calcsize(FMT)
53
61
 
54
62
  def __init__(self,
55
63
  start_step: int = -1,
56
64
  stop_step: int = -1,
57
- aicore_metrics: int = -1,
58
- profiler_level: int = -1,
59
- profile_framework: int = -1,
65
+ aic_metrics: int = -1,
66
+ profiler_level: int = 0,
60
67
  analyse_mode: int = -1,
61
- profile_communication: bool = False,
68
+ activities: int = 0,
69
+ export_type: int = 0,
70
+ profile_memory: bool = False,
71
+ mstx: bool = False,
62
72
  parallel_strategy: bool = False,
63
73
  with_stack: bool = False,
64
74
  data_simplification: bool = True,
@@ -66,11 +76,13 @@ class DynamicProfilerArgs:
66
76
  **kwargs):
67
77
  self._start_step = start_step
68
78
  self._stop_step = stop_step
69
- self._aicore_metrics = aicore_metrics
79
+ self._aic_metrics = aic_metrics
70
80
  self._profiler_level = profiler_level
71
- self._profile_framework = profile_framework
72
81
  self._analyse_mode = analyse_mode
73
- self._profile_communication = profile_communication
82
+ self._activities = activities
83
+ self._export_type = export_type
84
+ self._profile_memory = profile_memory
85
+ self._mstx = mstx
74
86
  self._parallel_strategy = parallel_strategy
75
87
  self._with_stack = with_stack
76
88
  self._data_simplification = data_simplification
@@ -78,50 +90,38 @@ class DynamicProfilerArgs:
78
90
  self._check_params_type()
79
91
 
80
92
  def _check_params_type(self):
81
- """ check params type."""
82
- if not isinstance(self._start_step, int):
83
- logger.warning("start_step should be int type, start_step will be reset to -1.")
84
- self._start_step = -1
85
-
86
- if not isinstance(self._stop_step, int):
87
- logger.warning("stop_step should be int type, stop_step will be reset to -1.")
88
- self._stop_step = -1
89
-
90
- if not isinstance(self._aicore_metrics, int):
91
- logger.warning("aicore_metrics should be int type, aicore_metrics will be reset to -1.")
92
- self._aicore_metrics = -1
93
-
94
- if not isinstance(self._profiler_level, int):
95
- logger.warning("profiler_level should be int type, profiler_level will be reset to -1.")
96
- self._profiler_level = -1
97
-
98
- if not isinstance(self._profile_framework, int):
99
- logger.warning("profile_framework should be int type, profile_framework will be reset to -1.")
100
- self._profile_framework = -1
101
-
102
- if not isinstance(self._analyse_mode, int):
103
- logger.warning("analyse_mode should be int type, analyse_mode will be reset to -1.")
104
- self._analyse_mode = -1
105
-
106
- if not isinstance(self._profile_communication, bool):
107
- logger.warning("profile_communication should be bool type, profile_communication will be reset to False.")
108
- self._profile_communication = False
109
-
110
- if not isinstance(self._parallel_strategy, bool):
111
- logger.warning("parallel_strategy should be bool type, parallel_strategy will be reset to False.")
112
- self._parallel_strategy = False
113
-
114
- if not isinstance(self._with_stack, bool):
115
- logger.warning("with_stack should be bool type, with_stack will be reset to False.")
116
- self._with_stack = False
117
-
118
- if not isinstance(self._data_simplification, bool):
119
- logger.warning("data_simplification should be bool type, data_simplification will be reset to True.")
120
- self._data_simplification = True
121
-
122
- if not isinstance(self._is_valid, bool):
123
- logger.warning("is_valid should be bool type, is_valid will be reset to False.")
124
- self._is_valid = False
93
+ """Check and enforce parameter types with lower complexity."""
94
+ # Define a parameter check rule. {Parameter name: (expected type, default value)}
95
+ param_rules = {
96
+ '_start_step': (int, -1),
97
+ '_stop_step': (int, -1),
98
+ '_aic_metrics': (int, -1),
99
+ '_profiler_level': (int, 0),
100
+ '_analyse_mode': (int, -1),
101
+ '_activities': (int, 0),
102
+ '_export_type': (int, 0),
103
+ '_profile_memory': (bool, False),
104
+ '_mstx': (bool, False),
105
+ '_parallel_strategy': (bool, False),
106
+ '_with_stack': (bool, False),
107
+ '_data_simplification': (bool, True),
108
+ '_is_valid': (bool, False)
109
+ }
110
+
111
+ def _is_valid_type(value, expected_type):
112
+ """Helper method for type checking."""
113
+ if expected_type is int and isinstance(value, bool):
114
+ return False
115
+ return isinstance(value, expected_type)
116
+
117
+ for param, (expected_type, default) in param_rules.items():
118
+ value = getattr(self, param)
119
+ if not _is_valid_type(value, expected_type):
120
+ logger.warning(
121
+ f"{param[1:]} should be {expected_type.__name__} type, "
122
+ f"will be reset to {default}."
123
+ )
124
+ setattr(self, param, default)
125
125
 
126
126
  @property
127
127
  def start_step(self):
@@ -162,7 +162,9 @@ class DynamicProfilerArgs:
162
162
  def args(self):
163
163
  """ get all args in DynamicProfilerArgs."""
164
164
  self._profiler_level = self._convert_profiler_level(self._profiler_level)
165
- self._profile_framework = self._convert_profile_framework(self._profile_framework)
165
+ self._activities = self._convert_activities(self._activities)
166
+ self._aic_metrics = self._convert_aic_metrics(self._aic_metrics)
167
+ self._export_type = self._convert_export_type(self._export_type)
166
168
  not_supported_args = ['_start_step', '_stop_step', '_analyse_mode', '_is_valid']
167
169
  res = {}
168
170
  for key, value in self.__dict__.items():
@@ -193,22 +195,57 @@ class DynamicProfilerArgs:
193
195
 
194
196
  def _convert_profiler_level(self, profiler_level: int) -> ProfilerLevel:
195
197
  """ convert profiler_level to real args in Profiler."""
198
+ if profiler_level == -1:
199
+ return ProfilerLevel.LevelNone
196
200
  if profiler_level == 0:
197
201
  return ProfilerLevel.Level0
198
202
  if profiler_level == 1:
199
203
  return ProfilerLevel.Level1
200
204
  if profiler_level == 2:
201
205
  return ProfilerLevel.Level2
202
- return None
203
-
204
- def _convert_profile_framework(self, profile_framework: int) -> str:
205
- """ convert profile_framework to real args in Profiler."""
206
- if profile_framework == 0:
207
- return "time"
208
- if profile_framework == 1:
209
- return "all"
210
- return None
211
-
206
+ return ProfilerLevel.Level0
207
+
208
+ def _convert_activities(self, activities: int) -> ProfilerLevel:
209
+ """ convert activities to real args in Profiler."""
210
+ if activities == 0:
211
+ return [ProfilerActivity.CPU, ProfilerActivity.NPU]
212
+ if activities == 1:
213
+ return [ProfilerActivity.CPU]
214
+ if activities == 2:
215
+ return [ProfilerActivity.NPU]
216
+ return [ProfilerActivity.CPU, ProfilerActivity.NPU]
217
+
218
+ def _convert_aic_metrics(self, aic_metrics: int) -> AicoreMetrics:
219
+ """ convert aic_metrics to real args in Profiler."""
220
+ if aic_metrics == -1:
221
+ return AicoreMetrics.AiCoreNone
222
+ if aic_metrics == 0:
223
+ return AicoreMetrics.PipeUtilization
224
+ if aic_metrics == 1:
225
+ return AicoreMetrics.ArithmeticUtilization
226
+ if aic_metrics == 2:
227
+ return AicoreMetrics.Memory
228
+ if aic_metrics == 3:
229
+ return AicoreMetrics.MemoryL0
230
+ if aic_metrics == 4:
231
+ return AicoreMetrics.MemoryUB
232
+ if aic_metrics == 5:
233
+ return AicoreMetrics.ResourceConflictRatio
234
+ if aic_metrics == 6:
235
+ return AicoreMetrics.L2Cache
236
+ if aic_metrics == 7:
237
+ return AicoreMetrics.MemoryAccess
238
+ return AicoreMetrics.AiCoreNone
239
+
240
+ def _convert_export_type(self, export_type: int) -> ExportType:
241
+ """ convert export_type to real args in Profiler."""
242
+ if export_type == 0:
243
+ return [ExportType.Text]
244
+ if export_type == 1:
245
+ return [ExportType.Db]
246
+ if export_type == 2:
247
+ return [ExportType.Text, ExportType.Db]
248
+ return [ExportType.Text]
212
249
 
213
250
  class DynamicProfilerMonitorBase(Callback):
214
251
  """
@@ -240,12 +277,17 @@ class DynamicProfilerMonitorBase(Callback):
240
277
  self._last_stop_step = None
241
278
  self._is_create_process = None
242
279
  self._is_started = False
280
+ self._start_step = -1
281
+ self._stop_step = -1
282
+ self._step_num = 0
243
283
 
284
+ self._check_shm_for_killed()
244
285
  self._init_cfg_json()
245
286
  self._create_shm()
246
287
  self._create_process()
247
288
  atexit.register(self._clean_resource)
248
289
 
290
+ @no_exception_func()
249
291
  def step_begin(self, run_context):
250
292
  """
251
293
  Start profile at the begin of step.
@@ -277,7 +319,8 @@ class DynamicProfilerMonitorBase(Callback):
277
319
  if self._profiler is None:
278
320
  prof_path = os.path.join(self._output_path, f"rank{self._rank_id}_start{start_step}_stop{stop_step}")
279
321
  PathManager.check_input_directory_path(prof_path)
280
- self._profiler = Profiler(output_path=prof_path, start_profile=False, **prof_args.args)
322
+ self._profiler = Profiler(on_trace_ready=tensorboard_trace_handler(dir_name=prof_path),
323
+ start_profile=False, **prof_args.args)
281
324
  print_msg(f"Rank {self._rank_id} create output path {prof_path}")
282
325
 
283
326
  self._profiler.start()
@@ -287,6 +330,7 @@ class DynamicProfilerMonitorBase(Callback):
287
330
  print_msg(f"Rank {self._rank_id} Dynamic profiler start at step {start_step}, "
288
331
  f"will stop at step {stop_step}")
289
332
 
333
+ @no_exception_func()
290
334
  def step_end(self, run_context):
291
335
  """
292
336
  Stop profile at the end of step.
@@ -312,11 +356,140 @@ class DynamicProfilerMonitorBase(Callback):
312
356
  if prof_args.analyse_mode:
313
357
  self._profiler.analyse(mode=prof_args.analyse_mode)
314
358
  else:
315
- self._profiler._ascend_profiler.finalize()
359
+ ProfilerInterface.finalize()
360
+ ProfilerInterface.clear()
316
361
  self._profiler = None
317
362
  self._is_started = False
318
363
  print_msg(f"Rank {self._rank_id} Dynamic profiler stop at step {step_num}")
319
364
 
365
+ @no_exception_func()
366
+ def step(self):
367
+ """
368
+ Used for Ascend, distinguish step collection and parsing performance data by dynamic profiler.
369
+
370
+ Raises:
371
+ RuntimeError: If the 'start_step' parameter setting is greater than the 'stop_step' parameter setting.
372
+
373
+ Examples:
374
+ >>> import json
375
+ >>> import os
376
+ >>> import numpy as np
377
+ >>>
378
+ >>> import mindspore
379
+ >>> import mindspore.dataset as ds
380
+ >>> from mindspore import context, nn
381
+ >>> from mindspore.profiler import DynamicProfilerMonitor
382
+ >>>
383
+ >>>
384
+ >>> class Net(nn.Cell):
385
+ ... def __init__(self):
386
+ ... super(Net, self).__init__()
387
+ ... self.fc = nn.Dense(2, 2)
388
+ ...
389
+ ... def construct(self, x):
390
+ ... return self.fc(x)
391
+ >>>
392
+ >>> def generator_net():
393
+ ... for _ in range(2):
394
+ ... yield np.ones([2, 2]).astype(np.float32), np.ones([2]).astype(np.int32)
395
+ >>>
396
+ >>> def train(test_net):
397
+ ... optimizer = nn.Momentum(test_net.trainable_params(), 1, 0.9)
398
+ ... loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
399
+ ... data = ds.GeneratorDataset(generator_net(), ["data", "label"])
400
+ ... model = mindspore.train.Model(test_net, loss, optimizer)
401
+ ... model.train(1, data)
402
+ >>>
403
+ >>> def change_cfg_json(json_path):
404
+ ... with open(json_path, 'r', encoding='utf-8') as file:
405
+ ... data = json.load(file)
406
+ ...
407
+ ... data['start_step'] = 6
408
+ ... data['stop_step'] = 7
409
+ ...
410
+ ... with open(json_path, 'w', encoding='utf-8') as file:
411
+ ... json.dump(data, file, ensure_ascii=False, indent=4)
412
+ >>>
413
+ >>> if __name__ == '__main__':
414
+ ... # set json configuration file
415
+ ... context.set_context(mode=mindspore.PYNATIVE_MODE)
416
+ ... mindspore.set_device("Ascend")
417
+ ... data_cfg = {
418
+ ... "start_step": 2,
419
+ ... "stop_step": 5,
420
+ ... "aic_metrics": -1,
421
+ ... "profiler_level": 0,
422
+ ... "activities": 0,
423
+ ... "export_type": 0,
424
+ ... "profile_memory": False,
425
+ ... "mstx": False,
426
+ ... "analyse_mode": 0,
427
+ ... "parallel_strategy": False,
428
+ ... "with_stack": False,
429
+ ... "data_simplification": True,
430
+ ... }
431
+ ... output_path = "./cfg_path"
432
+ ... cfg_path = os.path.join(output_path, "profiler_config.json")
433
+ ... os.makedirs(output_path, exist_ok=True)
434
+ ... # set cfg file
435
+ ... with open(cfg_path, 'w') as f:
436
+ ... json.dump(data_cfg, f, indent=4)
437
+ ... # cfg_path contains the json configuration file path, and output_path is the output path
438
+ ... dp = DynamicProfilerMonitor(cfg_path=output_path, output_path=output_path)
439
+ ... STEP_NUM = 15
440
+ ... # Define a network of training models
441
+ ... net = Net()
442
+ ... for i in range(STEP_NUM):
443
+ ... print(f"step {i}")
444
+ ... train(net)
445
+ ... # Modify the configuration file after step 7. For example, change start_step to 8 and stop_step to 10
446
+ ... if i == 5:
447
+ ... # Modify parameters in the JSON file
448
+ ... change_cfg_json(os.path.join(output_path, "profiler_config.json"))
449
+ ... # Call step collection
450
+ ... dp.step()
451
+ """
452
+
453
+ self._step_num += 1
454
+ prof_args = self._get_prof_args()
455
+
456
+ if not prof_args.is_valid:
457
+ logger.error("Dynamic profile json is not valid, please check the json file.")
458
+ return
459
+
460
+ if prof_args.start_step == -1 or prof_args.stop_step == -1:
461
+ return
462
+
463
+ # Skips the number of steps less than start_step
464
+ if self._step_num < prof_args.start_step:
465
+ return
466
+
467
+ if self._start_step != prof_args.start_step or self._stop_step != prof_args.stop_step:
468
+ # Update new start_step and stop_step
469
+ self._start_step = prof_args.start_step
470
+ self._stop_step = prof_args.stop_step
471
+ if self._start_step >= 0 and 0 <= self._start_step <= self._stop_step:
472
+ prof_path = os.path.join(self._output_path,
473
+ f"rank{self._rank_id}_start{self._start_step}_stop{self._stop_step}")
474
+ print_msg(f"Rank {self._rank_id} create output path {prof_path}")
475
+ print_msg(f"Rank {self._rank_id} Dynamic profile start at step {self._start_step}, "
476
+ f"will stop at step {self._stop_step}")
477
+ self._profiler = Profiler(schedule=schedule(wait=0, warmup=0,
478
+ active=self._stop_step - self._start_step + 1,
479
+ repeat=1,
480
+ skip_first=1),
481
+ on_trace_ready=tensorboard_trace_handler(dir_name=prof_path),
482
+ **prof_args.args)
483
+ else:
484
+ self._profiler = None
485
+ logger.error("Rank %d Dynamic profile start at step %d and stop at step %d in config_json must be "
486
+ "greater than or equal to 0, and stop step should not be less than start step",
487
+ self._rank_id, self._start_step, self._stop_step)
488
+
489
+ if self._profiler:
490
+ self._profiler.step()
491
+
492
+ @no_exception_func()
320
493
  def on_train_end(self, run_context):
321
494
  """
322
495
  Callback on trian end
@@ -357,6 +530,7 @@ class DynamicProfilerMonitorBase(Callback):
357
530
 
358
531
  return start_step, stop_step
359
532
 
533
+ @no_exception_func()
360
534
  def _init_cfg_json(self):
361
535
  """Init config json file"""
362
536
  if self._rank_id == 0:
@@ -372,6 +546,7 @@ class DynamicProfilerMonitorBase(Callback):
372
546
  """Create a json monitor process based on whether the SharedMemory is successfully created"""
373
547
  logger.error("Dynamic profiler _create_shm is not implemented")
374
548
 
549
+ @no_exception_func()
375
550
  def _create_process(self):
376
551
  """Create json monitor process, one process will be created at one worker"""
377
552
  if self._is_create_process:
@@ -385,18 +560,57 @@ class DynamicProfilerMonitorBase(Callback):
385
560
  self._process = None
386
561
  logger.info("Rank %d no need to create process.", self._rank_id)
387
562
 
563
+ @no_exception_func()
564
+ def _check_shm_for_killed(self):
565
+ """
566
+ User killed process shm can not clean normally, so check this when create shm.
567
+ """
568
+ if sys.version_info >= (3, 8):
569
+ shm_path = os.path.join("/dev/shm", self._shm_name)
570
+ else:
571
+ shm_path = self._shm_path
572
+
573
+ if not os.path.exists(shm_path):
574
+ return
575
+
576
+ MAX_TIME_DIFF = 30 # seconds
577
+ time_shm = os.stat(shm_path).st_ctime
578
+ cur_proc_time = self._get_pid_st_ctime(os.getpid())
579
+
580
+ if cur_proc_time and abs(cur_proc_time - time_shm) > MAX_TIME_DIFF:
581
+ raise RuntimeError("There maybe exist share memory before this task, if you kill last task, "
582
+ "dynamic profiler will not valid, please remove %s, and retry." % shm_path)
583
+
584
+ def _get_pid_st_ctime(self, pid):
585
+ """Get pid st_ctime"""
586
+ try:
587
+ fd = os.open("/proc/" + str(pid), os.O_RDONLY, stat.S_IRUSR | stat.S_IRGRP)
588
+ stat_ino = os.fstat(fd)
589
+ os.close(fd)
590
+ create_time = stat_ino.st_ctime
591
+ return create_time
592
+ except FileNotFoundError:
593
+ logger.error("Process with PID %d does not exist.", pid)
594
+ except PermissionError:
595
+ logger.error("Permission denied when accessing PID %d.", pid)
596
+ except Exception as ex: # pylint: disable=W0703
597
+ logger.error("An error occurred while getting creation time for PID %d: %s", pid, str(ex))
598
+
388
599
 
389
600
  if sys.version_info >= (3, 8):
601
+ @no_exception_func()
390
602
  def write_bytes(shm, byte_data):
391
603
  """Write bytes to shared memory"""
392
604
  shm.buf[:DynamicProfilerArgs.SIZE] = byte_data
393
605
  else:
606
+ @no_exception_func()
394
607
  def write_bytes(shm, byte_data):
395
608
  """Write bytes to shared memory"""
396
609
  shm.seek(0)
397
610
  shm.write(byte_data)
398
611
 
399
612
 
613
+ @no_exception_func()
400
614
  def worker_func(loop_flag, poll_interval, shm, cfg_path):
401
615
  """ Json monitor process worker function python version >= 3.8"""
402
616
  last_file_t = None
@@ -430,15 +644,55 @@ if sys.version_info >= (3, 8):
430
644
  from multiprocessing import shared_memory
431
645
  from unittest.mock import patch
432
646
 
647
+
433
648
  class DynamicProfilerMonitor(DynamicProfilerMonitorBase):
434
649
  r"""
435
650
  This class to enable the dynamic profile monitoring of MindSpore neural networks.
436
651
 
437
652
  Args:
438
- cfg_path (str): Dynamic profile json config file directory. The requirement is a shared path
439
- that can be accessed by all nodes.
440
- output_path (str, optional): Output data path. Default: ``"./dyn_profile_data"`` .
441
- poll_interval (int, optional): The polling period of the monitoring process, in seconds.
653
+ cfg_path (str): (Ascend only) Dynamic profile json config file directory. The requirement is a shared path
654
+ that can be accessed by all nodes. The parameters of the json configuration file are as follows:
655
+
656
+ - start_step (int, required) - Sets the step number at which the Profiler starts collecting data.
657
+ It is a relative value, with the first step of training being 1. The default value is -1, indicating
658
+ that data collection will not start during the entire training process.
659
+ - stop_step (int, required) - Sets the step number at which the Profiler stops collecting data. It is
660
+ a relative value, with the first step of training being 1. The stop_step must be greater than or
661
+ equal to start_step. The default value is -1, indicating that data collection will not start during
662
+ the entire training process.
663
+ - aic_metrics (int, optional) - The range of values corresponds to the Profiler. The default value -1
664
+ indicates that AI Core utilization is not collected, and 0 indicates PipeUtilization, 1 indicates
665
+ ArithmeticUtilization, 2 stands for Memory, 3 stands for MemoryL0, 4 stands for MemoryUB, 5 indicates
666
+ ResourceConflictRatio, 6 indicates L2Cache, 7 indicates MemoryAccess.
667
+ - profiler_level (int, optional) - Sets the level of performance data collection, where -1 represents
668
+ ProfilerLevel.LevelNone, 0 represents ProfilerLevel.Level0, 1 represents ProfilerLevel.Level1, and
669
+ 2 represents ProfilerLevel.Level2. The default value is 0, indicating the ProfilerLevel.Level0
670
+ collection level.
671
+ - activities (int, optional) - Sets the devices for performance data collection, where 0 represents
672
+ CPU+NPU, 1 represents CPU, and 2 represents NPU. The default value is 0, indicating the collection
673
+ of CPU+NPU performance data.
674
+ - export_type (int, optional) - Sets the data type to export, where 0 represents text, 1 represents db,
675
+ and 2 represents text and db. The default value is 0, indicating only export text type data.
676
+ - profile_memory (bool, optional) - Set whether to collect memory performance data, true indicates that
677
+ memory performance data is collected, false indicates that memory performance data is not collected.
678
+ The default value is false, indicating that memory performance data is not collected.
679
+ - mstx (bool, optional) - Set whether to enable mstx, true indicates that mstx is enabled, false
680
+ indicates that mstx is disabled. The default value is false, indicating that mstx is not enabled.
681
+ - analyse_mode (int, optional) - Sets the mode for online analysis, corresponding to the analyse_mode
682
+ parameter of the mindspore.Profiler.analyse interface, where 0 represents "sync" and 1 represents
683
+ "async". The default value is -1, indicating that online analysis is not used.
684
+ - parallel_strategy (bool, optional) - Sets whether to collect parallel strategy performance data,
685
+ where true means to collect and false means not to collect. The default value is false, indicating
686
+ that parallel strategy performance data is not collected.
687
+ - with_stack (bool, optional) - Sets whether to collect call stack information, where true means to
688
+ collect and false means not to collect. The default value is false, indicating that call stack
689
+ information is not collected.
690
+ - data_simplification (bool, optional) - Sets whether to enable data simplification, where true means
691
+ to enable and false means not to enable. The default value is true, indicating that data
692
+ simplification is enabled.
693
+
694
+ output_path (str, optional): (Ascend only) Output data path. Default: ``"./dyn_profile_data"`` .
695
+ poll_interval (int, optional): (Ascend only) The polling period of the monitoring process, in seconds.
442
696
  Default value: ``2``.
443
697
 
444
698
  Raises:
@@ -488,12 +742,14 @@ if sys.version_info >= (3, 8):
488
742
  """ Get prof_args py38"""
489
743
  return DynamicProfilerArgs.from_bytes(self._shm.buf[:DynamicProfilerArgs.SIZE])
490
744
 
745
+ @no_exception_func()
491
746
  def _clean_resource(self):
492
747
  """Clean resource py38"""
493
748
  # stop profiler when stop_step over all train step
494
749
  if self._profiler:
495
750
  self._profiler.stop()
496
- self._profiler._ascend_profiler.finalize()
751
+ ProfilerInterface.finalize()
752
+ ProfilerInterface.clear()
497
753
  self._profiler = None
498
754
  logger.warning("Rank %d Dynamic profiler stop at end of training", self._rank_id)
499
755
 
@@ -505,7 +761,7 @@ if sys.version_info >= (3, 8):
505
761
  logger.info("Rank %s process stop", self._rank_id)
506
762
 
507
763
  # clear shared memory
508
- if self._shm:
764
+ if self._shm and self._is_create_process:
509
765
  try:
510
766
  self._shm.close()
511
767
  self._shm.unlink()
@@ -514,6 +770,7 @@ if sys.version_info >= (3, 8):
514
770
  logger.warning("Rank %s unlink shm failed, may be removed", self._rank_id)
515
771
  self._shm = None
516
772
 
773
+ @no_exception_func()
517
774
  def _create_shm(self):
518
775
  """Create a json monitor process based on whether the SharedMemory is successfully created py38"""
519
776
  try_times = 10
@@ -542,13 +799,19 @@ if sys.version_info >= (3, 8):
542
799
  logger.warning("Rank %d shared memory create failed, "
543
800
  "retry times = %d.", self._rank_id, try_times)
544
801
  time.sleep(random.uniform(0, 0.02)) # sleep 0 ~ 20 ms
802
+ except Exception as e: # pylint: disable=W0703
803
+ # shm open failed because of other process create shm not finished
804
+ try_times -= 1
805
+ logger.warning("Rank %d shared memory open failed, error: %s, retry times = %d",
806
+ self._rank_id, str(e), try_times)
807
+ time.sleep(random.uniform(0, 0.02)) # sleep 0 ~ 20 ms
545
808
 
546
809
  if try_times <= 0:
547
810
  raise RuntimeError(f"Rank {self._rank_id} failed to create shared memory.")
548
811
 
549
812
  else:
550
813
  import mmap
551
- import stat
814
+
552
815
 
553
816
  class DynamicProfilerMonitor(DynamicProfilerMonitorBase):
554
817
  r"""
@@ -617,12 +880,14 @@ else:
617
880
  self._shm.seek(0)
618
881
  return DynamicProfilerArgs.from_bytes(self._shm.read(DynamicProfilerArgs.SIZE))
619
882
 
883
+ @no_exception_func()
620
884
  def _clean_resource(self):
621
885
  """Clean resource py37"""
622
886
  # stop profiler when stop_step over all train step
623
887
  if self._profiler:
624
888
  self._profiler.stop()
625
- self._profiler._ascend_profiler.finalize()
889
+ ProfilerInterface.finalize()
890
+ ProfilerInterface.clear()
626
891
  self._profiler = None
627
892
  logger.warning("Rank %d Dynamic profiler stop at end of training", self._rank_id)
628
893
 
@@ -647,6 +912,7 @@ else:
647
912
  logger.warning("Rank %s unlink shm failed, may be removed", self._rank_id)
648
913
  self._shm = None
649
914
 
915
+ @no_exception_func()
650
916
  def _create_shm(self):
651
917
  """Create a json monitor process based on whether the SharedMemory is successfully created py37"""
652
918