mindspore 2.6.0rc1__cp310-cp310-win_amd64.whl → 2.7.0rc1__cp310-cp310-win_amd64.whl

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

Potentially problematic release.


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

Files changed (407) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +1 -1
  5. mindspore/_c_dataengine.cp310-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp310-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp310-win_amd64.pyd +0 -0
  8. mindspore/_checkparam.py +40 -9
  9. mindspore/{_deprecated → _extends/optimize}/__init__.py +9 -3
  10. mindspore/_extends/optimize/cell_utils.py +96 -0
  11. mindspore/_extends/parse/__init__.py +2 -2
  12. mindspore/_extends/parse/compile_config.py +44 -22
  13. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +1 -1
  14. mindspore/_extends/parse/parser.py +37 -62
  15. mindspore/_extends/parse/resources.py +39 -0
  16. mindspore/_extends/parse/standard_method.py +43 -13
  17. mindspore/_extends/parse/trope.py +8 -1
  18. mindspore/_extends/pijit/__init__.py +1 -2
  19. mindspore/amp.py +4 -4
  20. mindspore/atlprov.dll +0 -0
  21. mindspore/avcodec-59.dll +0 -0
  22. mindspore/avdevice-59.dll +0 -0
  23. mindspore/avfilter-8.dll +0 -0
  24. mindspore/avformat-59.dll +0 -0
  25. mindspore/avutil-57.dll +0 -0
  26. mindspore/boost/adasum.py +1 -1
  27. mindspore/boost/boost_cell_wrapper.py +4 -4
  28. mindspore/c1.dll +0 -0
  29. mindspore/c1xx.dll +0 -0
  30. mindspore/c2.dll +0 -0
  31. mindspore/common/__init__.py +27 -2
  32. mindspore/common/_grad_function.py +2 -1
  33. mindspore/common/_pijit_context.py +28 -7
  34. mindspore/common/_stub_tensor.py +1 -209
  35. mindspore/common/_tensor_cpp_method.py +1 -1
  36. mindspore/common/_tensor_docs.py +77 -16
  37. mindspore/common/api.py +238 -113
  38. mindspore/common/dtype.py +21 -11
  39. mindspore/common/dump.py +10 -15
  40. mindspore/common/generator.py +5 -3
  41. mindspore/common/hook_handle.py +11 -2
  42. mindspore/common/jit_config.py +1 -1
  43. mindspore/common/jit_trace.py +84 -105
  44. mindspore/common/parameter.py +26 -12
  45. mindspore/common/recompute.py +3 -3
  46. mindspore/common/sparse_tensor.py +0 -3
  47. mindspore/common/symbol.py +0 -1
  48. mindspore/common/tensor.py +81 -81
  49. mindspore/communication/_comm_helper.py +46 -4
  50. mindspore/communication/management.py +79 -7
  51. mindspore/context.py +58 -40
  52. mindspore/dataset/core/config.py +3 -3
  53. mindspore/dataset/engine/datasets.py +20 -7
  54. mindspore/dataset/engine/datasets_user_defined.py +33 -3
  55. mindspore/dataset/engine/iterators.py +2 -2
  56. mindspore/dataset/engine/obs/config_loader.py +2 -2
  57. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +8 -0
  58. mindspore/dataset/transforms/py_transforms.py +7 -3
  59. mindspore/dataset/transforms/transforms.py +7 -3
  60. mindspore/dataset/vision/validators.py +1 -0
  61. mindspore/device_context/ascend/device.py +1 -1
  62. mindspore/device_context/gpu/__init__.py +2 -2
  63. mindspore/device_context/gpu/device.py +1 -1
  64. mindspore/device_context/gpu/op_precision.py +4 -2
  65. mindspore/device_context/gpu/op_tuning.py +6 -3
  66. mindspore/device_manager.py +16 -9
  67. mindspore/dnnl.dll +0 -0
  68. mindspore/dpcmi.dll +0 -0
  69. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +3 -7
  70. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  71. mindspore/experimental/optim/adadelta.py +13 -20
  72. mindspore/experimental/optim/adagrad.py +15 -22
  73. mindspore/experimental/optim/adam.py +17 -24
  74. mindspore/experimental/optim/adamax.py +14 -22
  75. mindspore/experimental/optim/adamw.py +28 -34
  76. mindspore/experimental/optim/asgd.py +15 -25
  77. mindspore/experimental/optim/lr_scheduler.py +27 -45
  78. mindspore/experimental/optim/nadam.py +14 -24
  79. mindspore/experimental/optim/optimizer.py +13 -23
  80. mindspore/experimental/optim/radam.py +18 -24
  81. mindspore/experimental/optim/rmsprop.py +14 -25
  82. mindspore/experimental/optim/rprop.py +15 -26
  83. mindspore/experimental/optim/sgd.py +9 -19
  84. mindspore/hal/__init__.py +4 -4
  85. mindspore/hal/contiguous_tensors_handle.py +2 -2
  86. mindspore/hal/memory.py +27 -7
  87. mindspore/include/api/cell.h +37 -1
  88. mindspore/include/api/delegate.h +10 -0
  89. mindspore/include/api/model.h +3 -0
  90. mindspore/include/api/types.h +2 -2
  91. mindspore/include/c_api/model_c.h +0 -58
  92. mindspore/include/c_api/tensor_c.h +0 -26
  93. mindspore/include/dataset/vision_ascend.h +1 -1
  94. mindspore/jpeg62.dll +0 -0
  95. mindspore/mindrecord/tools/cifar10.py +60 -11
  96. mindspore/mindrecord/tools/cifar10_to_mr.py +5 -0
  97. mindspore/mindspore_backend_common.dll +0 -0
  98. mindspore/mindspore_backend_manager.dll +0 -0
  99. mindspore/mindspore_common.dll +0 -0
  100. mindspore/mindspore_core.dll +0 -0
  101. mindspore/mindspore_cpu_res_manager.dll +0 -0
  102. mindspore/mindspore_dump.dll +0 -0
  103. mindspore/mindspore_frontend.dll +0 -0
  104. mindspore/mindspore_glog.dll +0 -0
  105. mindspore/mindspore_memory_pool.dll +0 -0
  106. mindspore/mindspore_ms_backend.dll +0 -0
  107. mindspore/mindspore_ops.dll +0 -0
  108. mindspore/mindspore_ops_host.dll +0 -0
  109. mindspore/mindspore_ops_kernel_common.dll +0 -0
  110. mindspore/mindspore_profiler.dll +0 -0
  111. mindspore/mindspore_pyboost.dll +0 -0
  112. mindspore/mindspore_pynative.dll +0 -0
  113. mindspore/mindspore_res_manager.dll +0 -0
  114. mindspore/mindspore_runtime_pipeline.dll +0 -0
  115. mindspore/mint/__init__.py +6 -46
  116. mindspore/mint/distributed/__init__.py +1 -0
  117. mindspore/mint/distributed/distributed.py +212 -9
  118. mindspore/mint/nn/__init__.py +1 -1
  119. mindspore/mint/nn/functional.py +53 -6
  120. mindspore/mint/nn/layer/_functions.py +164 -294
  121. mindspore/mint/nn/layer/activation.py +8 -6
  122. mindspore/mint/nn/layer/conv.py +137 -101
  123. mindspore/mint/nn/layer/normalization.py +8 -22
  124. mindspore/mint/optim/adam.py +19 -18
  125. mindspore/mint/optim/adamw.py +14 -8
  126. mindspore/mint/optim/sgd.py +5 -5
  127. mindspore/msobj140.dll +0 -0
  128. mindspore/mspdb140.dll +0 -0
  129. mindspore/mspdbcore.dll +0 -0
  130. mindspore/mspdbst.dll +0 -0
  131. mindspore/mspft140.dll +0 -0
  132. mindspore/msvcdis140.dll +0 -0
  133. mindspore/msvcp140_1.dll +0 -0
  134. mindspore/msvcp140_2.dll +0 -0
  135. mindspore/msvcp140_atomic_wait.dll +0 -0
  136. mindspore/msvcp140_codecvt_ids.dll +0 -0
  137. mindspore/nn/cell.py +328 -502
  138. mindspore/nn/grad/cell_grad.py +11 -12
  139. mindspore/nn/layer/activation.py +32 -34
  140. mindspore/nn/layer/basic.py +67 -64
  141. mindspore/nn/layer/channel_shuffle.py +4 -4
  142. mindspore/nn/layer/combined.py +4 -2
  143. mindspore/nn/layer/conv.py +117 -110
  144. mindspore/nn/layer/dense.py +9 -7
  145. mindspore/nn/layer/embedding.py +50 -52
  146. mindspore/nn/layer/image.py +37 -39
  147. mindspore/nn/layer/math.py +111 -112
  148. mindspore/nn/layer/normalization.py +56 -44
  149. mindspore/nn/layer/pooling.py +58 -63
  150. mindspore/nn/layer/rnn_cells.py +33 -33
  151. mindspore/nn/layer/rnns.py +56 -56
  152. mindspore/nn/layer/thor_layer.py +74 -73
  153. mindspore/nn/layer/transformer.py +11 -1
  154. mindspore/nn/learning_rate_schedule.py +20 -20
  155. mindspore/nn/loss/loss.py +79 -81
  156. mindspore/nn/optim/adam.py +3 -3
  157. mindspore/nn/optim/adasum.py +2 -2
  158. mindspore/nn/optim/asgd.py +2 -0
  159. mindspore/nn/optim/optimizer.py +1 -1
  160. mindspore/nn/optim/thor.py +2 -2
  161. mindspore/nn/probability/distribution/exponential.py +2 -1
  162. mindspore/nn/probability/distribution/poisson.py +2 -1
  163. mindspore/nn/sparse/sparse.py +3 -3
  164. mindspore/nn/wrap/cell_wrapper.py +34 -37
  165. mindspore/nn/wrap/grad_reducer.py +37 -37
  166. mindspore/nn/wrap/loss_scale.py +72 -74
  167. mindspore/numpy/array_creations.py +5 -5
  168. mindspore/numpy/fft.py +1 -1
  169. mindspore/numpy/math_ops.py +5 -5
  170. mindspore/opencv_core452.dll +0 -0
  171. mindspore/opencv_imgcodecs452.dll +0 -0
  172. mindspore/opencv_imgproc452.dll +0 -0
  173. mindspore/ops/_grad_experimental/grad_comm_ops.py +51 -13
  174. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -0
  175. mindspore/ops/_vmap/vmap_array_ops.py +31 -13
  176. mindspore/ops/_vmap/vmap_nn_ops.py +8 -16
  177. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +42 -11
  178. mindspore/ops/auto_generate/gen_extend_func.py +23 -141
  179. mindspore/ops/auto_generate/gen_ops_def.py +727 -321
  180. mindspore/ops/auto_generate/gen_ops_prim.py +1721 -984
  181. mindspore/ops/auto_generate/pyboost_inner_prim.py +31 -1
  182. mindspore/ops/composite/__init__.py +10 -0
  183. mindspore/ops/composite/base.py +8 -4
  184. mindspore/ops/composite/multitype_ops/__init__.py +12 -1
  185. mindspore/ops/composite/multitype_ops/_compile_utils.py +133 -109
  186. mindspore/ops/composite/multitype_ops/add_impl.py +70 -2
  187. mindspore/ops/composite/multitype_ops/div_impl.py +49 -0
  188. mindspore/ops/composite/multitype_ops/floordiv_impl.py +29 -0
  189. mindspore/ops/composite/multitype_ops/getitem_impl.py +11 -0
  190. mindspore/ops/composite/multitype_ops/mod_impl.py +5 -3
  191. mindspore/ops/composite/multitype_ops/mul_impl.py +49 -0
  192. mindspore/ops/composite/multitype_ops/setitem_impl.py +57 -0
  193. mindspore/ops/composite/multitype_ops/sub_impl.py +34 -0
  194. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +14 -0
  195. mindspore/ops/function/__init__.py +3 -1
  196. mindspore/ops/function/_add_attr_func.py +11 -6
  197. mindspore/ops/function/array_func.py +9 -96
  198. mindspore/ops/function/debug_func.py +4 -3
  199. mindspore/ops/function/grad/grad_func.py +1 -1
  200. mindspore/ops/function/math_func.py +33 -540
  201. mindspore/ops/function/nn_func.py +28 -74
  202. mindspore/ops/function/other_func.py +4 -1
  203. mindspore/ops/function/random_func.py +44 -5
  204. mindspore/ops/function/vmap_func.py +2 -1
  205. mindspore/ops/functional.py +2 -3
  206. mindspore/ops/functional_overload.py +571 -6
  207. mindspore/ops/op_info_register.py +21 -0
  208. mindspore/ops/operations/__init__.py +16 -11
  209. mindspore/ops/operations/_custom_ops_utils.py +689 -34
  210. mindspore/ops/operations/_inner_ops.py +3 -6
  211. mindspore/ops/operations/_sequence_ops.py +1 -1
  212. mindspore/ops/operations/array_ops.py +2 -2
  213. mindspore/ops/operations/comm_ops.py +185 -26
  214. mindspore/ops/operations/custom_ops.py +294 -174
  215. mindspore/ops/operations/debug_ops.py +59 -4
  216. mindspore/ops/operations/image_ops.py +13 -13
  217. mindspore/ops/operations/manually_defined/ops_def.py +15 -16
  218. mindspore/ops/operations/math_ops.py +3 -4
  219. mindspore/ops/operations/nn_ops.py +7 -39
  220. mindspore/ops/primitive.py +6 -10
  221. mindspore/ops/tensor_method.py +47 -8
  222. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +1 -1
  223. mindspore/ops_generate/api/functional_map_cpp_generator.py +10 -9
  224. mindspore/ops_generate/api/functions_cc_generator.py +58 -10
  225. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +1 -1
  226. mindspore/ops_generate/common/base_generator.py +14 -0
  227. mindspore/ops_generate/common/gen_constants.py +8 -3
  228. mindspore/ops_generate/common/gen_utils.py +0 -19
  229. mindspore/ops_generate/common/op_proto.py +11 -4
  230. mindspore/ops_generate/common/template.py +88 -11
  231. mindspore/ops_generate/gen_ops.py +1 -1
  232. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +4 -4
  233. mindspore/ops_generate/op_def/ops_def_cc_generator.py +0 -3
  234. mindspore/ops_generate/op_def/ops_name_h_generator.py +0 -3
  235. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +0 -4
  236. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +5 -2
  237. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +49 -8
  238. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +2 -2
  239. mindspore/ops_generate/pyboost/gen_pyboost_func.py +31 -0
  240. mindspore/ops_generate/pyboost/op_template_parser.py +98 -72
  241. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +70 -273
  242. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +14 -6
  243. mindspore/ops_generate/pyboost/pyboost_functions_impl_cpp_generator.py +316 -0
  244. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +1 -1
  245. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +5 -3
  246. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +1 -1
  247. mindspore/ops_generate/pyboost/pyboost_internal_functions_cpp_generator.py +76 -0
  248. mindspore/ops_generate/pyboost/pyboost_internal_functions_h_generator.py +76 -0
  249. mindspore/ops_generate/pyboost/pyboost_internal_kernel_info_adapter_generator.py +125 -0
  250. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +4 -3
  251. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +348 -61
  252. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +1 -1
  253. mindspore/ops_generate/pyboost/pyboost_utils.py +118 -9
  254. mindspore/ops_generate/tensor_py_cc_generator.py +1 -24
  255. mindspore/parallel/_auto_parallel_context.py +11 -8
  256. mindspore/parallel/_cell_wrapper.py +113 -45
  257. mindspore/parallel/_parallel_serialization.py +1 -1
  258. mindspore/parallel/_ps_context.py +4 -6
  259. mindspore/parallel/_tensor.py +167 -12
  260. mindspore/parallel/_transformer/moe.py +1 -1
  261. mindspore/parallel/_transformer/transformer.py +13 -8
  262. mindspore/parallel/auto_parallel.py +14 -7
  263. mindspore/parallel/checkpoint_convert.py +3 -3
  264. mindspore/parallel/checkpoint_transform.py +11 -7
  265. mindspore/parallel/cluster/process_entity/_api.py +84 -48
  266. mindspore/parallel/cluster/process_entity/_utils.py +95 -7
  267. mindspore/parallel/cluster/run.py +43 -4
  268. mindspore/parallel/function/__init__.py +8 -1
  269. mindspore/parallel/function/reshard_func.py +6 -7
  270. mindspore/parallel/nn/__init__.py +15 -2
  271. mindspore/parallel/nn/parallel_cell_wrapper.py +9 -10
  272. mindspore/parallel/nn/parallel_grad_reducer.py +7 -6
  273. mindspore/parallel/shard.py +3 -4
  274. mindspore/parallel/transform_safetensors.py +463 -174
  275. mindspore/pgodb140.dll +0 -0
  276. mindspore/pgort140.dll +0 -0
  277. mindspore/profiler/__init__.py +2 -1
  278. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -7
  279. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +3 -0
  280. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +12 -6
  281. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +3 -3
  282. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  283. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +4 -4
  284. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +3 -3
  285. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +4 -1
  286. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +2 -1
  287. mindspore/profiler/analysis/task_manager.py +1 -1
  288. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +5 -1
  289. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +2 -1
  290. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +42 -22
  291. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +3 -2
  292. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +9 -5
  293. mindspore/profiler/analysis/viewer/ms_operator_details_viewer.py +132 -0
  294. mindspore/profiler/common/constant.py +16 -0
  295. mindspore/profiler/common/profiler_context.py +25 -27
  296. mindspore/profiler/common/profiler_info.py +0 -16
  297. mindspore/profiler/common/profiler_op_analyse.py +235 -0
  298. mindspore/profiler/common/profiler_output_path.py +23 -8
  299. mindspore/profiler/common/profiler_parameters.py +128 -35
  300. mindspore/profiler/dynamic_profile/__init__.py +0 -0
  301. mindspore/profiler/dynamic_profile/dynamic_monitor_proxy.py +39 -0
  302. mindspore/profiler/dynamic_profile/dynamic_profiler_config_context.py +666 -0
  303. mindspore/profiler/dynamic_profile/dynamic_profiler_utils.py +62 -0
  304. mindspore/profiler/dynamic_profiler.py +305 -314
  305. mindspore/profiler/envprofiler.py +12 -7
  306. mindspore/profiler/experimental_config.py +96 -6
  307. mindspore/profiler/mstx.py +33 -12
  308. mindspore/profiler/platform/__init__.py +2 -3
  309. mindspore/profiler/platform/npu_profiler.py +29 -19
  310. mindspore/profiler/profiler.py +35 -19
  311. mindspore/profiler/profiler_action_controller.py +64 -76
  312. mindspore/profiler/schedule.py +10 -4
  313. mindspore/rewrite/common/config.py +1 -0
  314. mindspore/rewrite/common/namer.py +1 -0
  315. mindspore/rewrite/common/namespace.py +1 -0
  316. mindspore/rewrite/node/node.py +31 -11
  317. mindspore/rewrite/parsers/assign_parser.py +1 -1
  318. mindspore/rewrite/symbol_tree/symbol_tree.py +1 -1
  319. mindspore/run_check/_check_version.py +7 -10
  320. mindspore/runtime/__init__.py +5 -5
  321. mindspore/runtime/event.py +10 -4
  322. mindspore/runtime/executor.py +60 -45
  323. mindspore/runtime/memory.py +30 -32
  324. mindspore/runtime/thread_bind_core.py +298 -164
  325. mindspore/safeguard/rewrite_obfuscation.py +12 -13
  326. mindspore/swresample-4.dll +0 -0
  327. mindspore/swscale-6.dll +0 -0
  328. mindspore/tbbmalloc.dll +0 -0
  329. mindspore/tinyxml2.dll +0 -0
  330. mindspore/train/_utils.py +14 -4
  331. mindspore/train/amp.py +43 -20
  332. mindspore/train/callback/__init__.py +5 -5
  333. mindspore/train/callback/_checkpoint.py +3 -6
  334. mindspore/train/callback/_flops_collector.py +1 -1
  335. mindspore/train/callback/_landscape.py +0 -1
  336. mindspore/train/callback/_train_fault_tolerance.py +97 -16
  337. mindspore/train/data_sink.py +11 -2
  338. mindspore/train/dataset_helper.py +9 -0
  339. mindspore/train/model.py +135 -55
  340. mindspore/train/serialization.py +133 -111
  341. mindspore/train/summary/summary_record.py +13 -2
  342. mindspore/turbojpeg.dll +0 -0
  343. mindspore/utils/__init__.py +3 -2
  344. mindspore/utils/dryrun.py +0 -6
  345. mindspore/utils/runtime_execution_order_check.py +163 -77
  346. mindspore/utils/sdc_detect.py +68 -0
  347. mindspore/utils/utils.py +6 -9
  348. mindspore/vcmeta.dll +0 -0
  349. mindspore/vcruntime140.dll +0 -0
  350. mindspore/vcruntime140_1.dll +0 -0
  351. mindspore/version.py +1 -1
  352. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/METADATA +5 -4
  353. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/RECORD +356 -394
  354. mindspore/_deprecated/jit.py +0 -198
  355. mindspore/experimental/es/__init__.py +0 -22
  356. mindspore/experimental/es/embedding_service.py +0 -891
  357. mindspore/experimental/es/embedding_service_layer.py +0 -581
  358. mindspore/profiler/parser/__init__.py +0 -14
  359. mindspore/profiler/parser/aicpu_data_parser.py +0 -272
  360. mindspore/profiler/parser/ascend_analysis/__init__.py +0 -14
  361. mindspore/profiler/parser/ascend_analysis/constant.py +0 -71
  362. mindspore/profiler/parser/ascend_analysis/file_manager.py +0 -180
  363. mindspore/profiler/parser/ascend_analysis/function_event.py +0 -185
  364. mindspore/profiler/parser/ascend_analysis/fwk_cann_parser.py +0 -136
  365. mindspore/profiler/parser/ascend_analysis/fwk_file_parser.py +0 -131
  366. mindspore/profiler/parser/ascend_analysis/msprof_timeline_parser.py +0 -104
  367. mindspore/profiler/parser/ascend_analysis/path_manager.py +0 -313
  368. mindspore/profiler/parser/ascend_analysis/profiler_info_parser.py +0 -123
  369. mindspore/profiler/parser/ascend_analysis/tlv_decoder.py +0 -86
  370. mindspore/profiler/parser/ascend_analysis/trace_event_manager.py +0 -75
  371. mindspore/profiler/parser/ascend_cluster_generator.py +0 -116
  372. mindspore/profiler/parser/ascend_communicate_generator.py +0 -314
  373. mindspore/profiler/parser/ascend_flops_generator.py +0 -116
  374. mindspore/profiler/parser/ascend_fpbp_generator.py +0 -82
  375. mindspore/profiler/parser/ascend_hccl_generator.py +0 -271
  376. mindspore/profiler/parser/ascend_integrate_generator.py +0 -42
  377. mindspore/profiler/parser/ascend_memory_generator.py +0 -185
  378. mindspore/profiler/parser/ascend_msprof_exporter.py +0 -282
  379. mindspore/profiler/parser/ascend_msprof_generator.py +0 -187
  380. mindspore/profiler/parser/ascend_op_generator.py +0 -334
  381. mindspore/profiler/parser/ascend_steptrace_generator.py +0 -94
  382. mindspore/profiler/parser/ascend_timeline_generator.py +0 -545
  383. mindspore/profiler/parser/base_timeline_generator.py +0 -483
  384. mindspore/profiler/parser/container.py +0 -229
  385. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +0 -697
  386. mindspore/profiler/parser/flops_parser.py +0 -531
  387. mindspore/profiler/parser/framework_enum.py +0 -111
  388. mindspore/profiler/parser/framework_parser.py +0 -464
  389. mindspore/profiler/parser/framework_struct.py +0 -61
  390. mindspore/profiler/parser/gpu_analysis/__init__.py +0 -14
  391. mindspore/profiler/parser/gpu_analysis/function_event.py +0 -44
  392. mindspore/profiler/parser/gpu_analysis/fwk_file_parser.py +0 -89
  393. mindspore/profiler/parser/gpu_analysis/profiler_info_parser.py +0 -72
  394. mindspore/profiler/parser/hccl_parser.py +0 -573
  395. mindspore/profiler/parser/hwts_log_parser.py +0 -122
  396. mindspore/profiler/parser/integrator.py +0 -526
  397. mindspore/profiler/parser/memory_usage_parser.py +0 -277
  398. mindspore/profiler/parser/minddata_analyzer.py +0 -800
  399. mindspore/profiler/parser/minddata_parser.py +0 -186
  400. mindspore/profiler/parser/minddata_pipeline_parser.py +0 -299
  401. mindspore/profiler/parser/op_intermediate_parser.py +0 -149
  402. mindspore/profiler/parser/optime_parser.py +0 -250
  403. mindspore/profiler/parser/profiler_info.py +0 -213
  404. mindspore/profiler/parser/step_trace_parser.py +0 -666
  405. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/WHEEL +0 -0
  406. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/entry_points.txt +0 -0
  407. {mindspore-2.6.0rc1.dist-info → mindspore-2.7.0rc1.dist-info}/top_level.txt +0 -0
@@ -22,7 +22,8 @@ import socket
22
22
  import psutil
23
23
  import mindspore.log as logger
24
24
  from ._utils import _generate_cmd_args_list, _generate_cmd_args_list_with_core, _generate_url, \
25
- _is_local_ip, _convert_addr_to_ip, _send_scale_num, _get_local_ip
25
+ _is_local_ip, _convert_addr_to_ip, _send_scale_num, _get_local_ip, _generate_auto_bind_core_strategy, \
26
+ _generate_bind_core_strategy
26
27
 
27
28
 
28
29
  class _Node:
@@ -79,11 +80,12 @@ class _ComputeGraphNode(_Node):
79
80
  Worker node for dynamic networking. Inherits from the Node class.
80
81
  """
81
82
 
82
- def __init__(self, worker_num, sched_host, sched_port, timeout, node_id, args_list, output_file,
83
+ def __init__(self, worker_num, sched_host, sched_port, timeout, node_id, node_rank, args_list, output_file,
83
84
  tail_worker_log, join, is_simulation):
84
85
  super().__init__(worker_num, sched_host, sched_port, timeout, args_list, output_file,
85
86
  tail_worker_log, join, is_simulation)
86
87
  self.node_id = node_id
88
+ self.node_rank = node_rank
87
89
 
88
90
  def run(self):
89
91
  """
@@ -95,6 +97,8 @@ class _ComputeGraphNode(_Node):
95
97
  super().run()
96
98
  if self.node_id is not None:
97
99
  os.environ["MS_NODE_ID"] = str(self.node_id)
100
+ if self.node_rank is not None:
101
+ os.environ["MS_NODE_RANK"] = str(self.node_rank)
98
102
  # If simulation level is set, environment variable 'MS_ROLE' will not be set.
99
103
  if not self.is_simulation:
100
104
  os.environ["MS_ROLE"] = "MS_WORKER"
@@ -119,6 +123,9 @@ class _ComputeGraphNode(_Node):
119
123
  return subprocess.Popen(['/usr/bin/tail', '-f', self.output_file])
120
124
 
121
125
  def enable_tail_worker_log(self):
126
+ """
127
+ Get valid rank ID for tailing the corresponding worker log.
128
+ """
122
129
  tail_worker_log_list = []
123
130
  if self.tail_worker_log != "-1":
124
131
  tail_worker_log_list.extend([int(num) for num in self.tail_worker_log.split(',')])
@@ -169,7 +176,7 @@ class _ProcessManager:
169
176
 
170
177
  self.sim_level = args.sim_level
171
178
  self.sim_rank_id = args.sim_rank_id
172
- self.is_simulation = (self.sim_level != -1)
179
+ self.is_simulation = self.sim_level != -1
173
180
  if self.is_simulation:
174
181
  os.environ["MS_SIMULATION_LEVEL"] = str(self.sim_level)
175
182
  elif os.getenv("MS_SIMULATION_LEVEL"):
@@ -205,15 +212,24 @@ class _ProcessManager:
205
212
  finally:
206
213
  os.umask(origin_mask)
207
214
 
215
+ self.device_to_cpu_map = {}
216
+ if self.bind_core is True:
217
+ self.device_to_cpu_map = _generate_auto_bind_core_strategy(self.local_worker_num)
218
+
208
219
  self.proc_rank_map = {}
209
220
  self.enable_mindx = False
221
+ self._check_taskd()
222
+
223
+ def _check_taskd(self):
224
+ """check if enable taskd."""
210
225
  tft_env = os.getenv("MS_ENABLE_TFT", "")
211
- if ("TTP:1" in tft_env) or ("UCE:1" in tft_env) or ("ARF:1" in tft_env):
226
+ if any(v in tft_env for v in ('TTP:1', 'UCE:1', 'ARF:1', 'TSP:1', 'RSC:1', 'HCCE:1')):
212
227
  try:
213
228
  from taskd.python.framework.agent.ms_mgr.msrun_plugin import MSRunPlugin
214
229
  self.msmgr = MSRunPlugin()
215
230
  self.msmgr.register_callbacks("KILL_WORKER", self.kill_workers)
216
231
  self.msmgr.register_callbacks("START_ALL_WORKER", self.start_all_workers)
232
+ self.msmgr.register_callbacks("START_WORKER_LIST", self.start_worker_list)
217
233
  self.msmgr.register_callbacks("MONITOR", self.monitor_rank_status)
218
234
  self.enable_mindx = True
219
235
  os.environ["MS_ENABLE_RECOVERY"] = str(1)
@@ -261,6 +277,45 @@ class _ProcessManager:
261
277
  self.is_simulation)
262
278
  self.msn_process = msn.run()
263
279
 
280
+ def _start_single_worker(self, local_rank):
281
+ """
282
+ Start worker processor
283
+
284
+ Args:
285
+ local_rank: local rank id.
286
+ """
287
+ os.environ["DEVICE_ID"] = str(local_rank)
288
+ node_id, log_name = self._get_node_id_and_log_path(local_rank)
289
+ if node_id is None:
290
+ logger.warning(f"Rank ids will be assigned automatically, "
291
+ "please use 'grep -rn 'rank id:' command to check each worker log's rank id.")
292
+ else:
293
+ # If node_id is generated in '_get_node_id_and_log_path' method, export 'RANK_ID' environment variable.
294
+ # This is for rank_table method's compatibility consideration.
295
+ os.environ["RANK_ID"] = str(node_id)
296
+ print(f"Start worker process with rank id:{node_id}, log file:{log_name}. "
297
+ f"Environment variable [RANK_ID={node_id}] is exported.", flush=True)
298
+ if self.is_simulation and (self.sim_rank_id != -1):
299
+ # Reset RANK_ID env to sim_rank_id if sim_rank_id is set.
300
+ os.environ["RANK_ID"] = str(self.sim_rank_id)
301
+ logger.warning(f"In dryrun case, RANK_ID is assigned to {self.sim_rank_id}.")
302
+
303
+ if self.bind_core:
304
+ affinity_cpu_str = _generate_bind_core_strategy(local_rank, self.device_to_cpu_map, self.bind_core)
305
+ if affinity_cpu_str is not None:
306
+ cmd = _generate_cmd_args_list_with_core(self.cmd, self.cmd_args, affinity_cpu_str)
307
+ else:
308
+ cmd = _generate_cmd_args_list(self.cmd, self.cmd_args)
309
+ else:
310
+ cmd = _generate_cmd_args_list(self.cmd, self.cmd_args)
311
+ cgn = _ComputeGraphNode(self.worker_num, self.master_addr, self.master_port, self.cluster_time_out,
312
+ node_id, self.node_rank, cmd, log_name, self.tail_worker_log, self.join,
313
+ self.is_simulation)
314
+ process, tail_process = cgn.run()
315
+ self.cgn_processes.append(process)
316
+ self.tail_cgn_processes.append(tail_process)
317
+ self.proc_rank_map[local_rank] = process
318
+
264
319
  def start_workers(self):
265
320
  """
266
321
  Starts the worker nodes.
@@ -275,40 +330,8 @@ class _ProcessManager:
275
330
  "'rank_id' of each process will be assigned after cluster is successfully built.\n"
276
331
  "You can access 'RANK_ID' environment variable after calling "
277
332
  "'mindspore.communication.init()'")
278
-
279
333
  for i in range(self.local_worker_num):
280
- os.environ["DEVICE_ID"] = str(i)
281
- node_id, log_name = self._get_node_id_and_log_path(i)
282
- if node_id is None:
283
- logger.warning(f"Rank ids will be assigned automatically, "
284
- "please use 'grep -rn 'rank id:' command to check each worker log's rank id.")
285
- else:
286
- # If node_id is generated in '_get_node_id_and_log_path' method, export 'RANK_ID' environment variable.
287
- # This is for rank_table method's compatibility consideration.
288
- os.environ["RANK_ID"] = str(node_id)
289
- print(f"Start worker process with rank id:{node_id}, log file:{log_name}. "
290
- f"Environment variable [RANK_ID={node_id}] is exported.", flush=True)
291
- if self.is_simulation and (self.sim_rank_id != -1):
292
- # Reset RANK_ID env to sim_rank_id if sim_rank_id is set.
293
- os.environ["RANK_ID"] = str(self.sim_rank_id)
294
- logger.warning(f"In dryrun case, RANK_ID is assigned to {self.sim_rank_id}.")
295
-
296
- if self.bind_core:
297
- cpu_num = subprocess.getoutput("cat /proc/cpuinfo|grep processor|wc -l")
298
- if not cpu_num.isdigit():
299
- raise RuntimeError(f"Got cpu number from '/proc/cpuinfo' is {cpu_num}, failed to bind core.")
300
- avg = int(cpu_num) // self.local_worker_num
301
- cpu_start = avg * i
302
- cpu_end = cpu_start + avg - 1
303
- cmd = _generate_cmd_args_list_with_core(self.cmd, self.cmd_args, cpu_start, cpu_end)
304
- else:
305
- cmd = _generate_cmd_args_list(self.cmd, self.cmd_args)
306
- cgn = _ComputeGraphNode(self.worker_num, self.master_addr, self.master_port, self.cluster_time_out,
307
- node_id, cmd, log_name, self.tail_worker_log, self.join, self.is_simulation)
308
- process, tail_process = cgn.run()
309
- self.cgn_processes.append(process)
310
- self.tail_cgn_processes.append(tail_process)
311
- self.proc_rank_map[i] = process
334
+ self._start_single_worker(i)
312
335
 
313
336
  def join_processes(self):
314
337
  """
@@ -334,7 +357,7 @@ class _ProcessManager:
334
357
  continue
335
358
  elif ret_code != 0:
336
359
  has_exception = True
337
- logger.error(f"Worker process {p.pid} exit with exception.")
360
+ logger.error(f"Worker process {p.pid} exit with exception. Error code: {ret_code}.")
338
361
  break
339
362
  else:
340
363
  success_cgn_processes.add(p)
@@ -420,14 +443,9 @@ class _ProcessManager:
420
443
  Args:
421
444
  NA.
422
445
  """
423
- for p in self.cgn_processes:
424
- if p.poll() is None:
425
- p.kill()
446
+ self.kill_worker_processes()
447
+ self.kill_tail_log_processes()
426
448
  self.cgn_processes.clear()
427
-
428
- for p in self.tail_cgn_processes:
429
- if p is not None:
430
- p.kill()
431
449
  self.tail_cgn_processes.clear()
432
450
 
433
451
  def kill_single_worker(self, pid):
@@ -441,7 +459,7 @@ class _ProcessManager:
441
459
  for i in range(len(self.cgn_processes)):
442
460
  p = self.cgn_processes[i]
443
461
  if p.pid == pid and p.poll() is None:
444
- p.kill()
462
+ os.killpg(os.getpgid(p.pid), signal.SIGKILL)
445
463
  del self.cgn_processes[i]
446
464
  tail_p = self.tail_cgn_processes[i]
447
465
  if tail_p is not None:
@@ -499,7 +517,8 @@ class _ProcessManager:
499
517
  p_status = p.poll()
500
518
  if (not psutil.pid_exists(p.pid)) and (p_status != 0):
501
519
  p_status = 300
502
- return {"pid": p.pid, "status": p_status, "global_rank": global_rank_id}
520
+ return {"pid": p.pid, "status": p_status, "global_rank": global_rank_id, "local_rank": rank_id,
521
+ "node_id": self.node_rank}
503
522
  except KeyError:
504
523
  logger.info(f"Process rank {rank_id} has not been initialized.")
505
524
  return {"pid": None, "status": 200, "global_rank": global_rank_id}
@@ -519,7 +538,24 @@ class _ProcessManager:
519
538
  self.start_workers()
520
539
  worker_status = self.monitor_rank_status([-1])
521
540
  for i in range(self.local_worker_num):
522
- if worker_status[i]["status"] != None: # pylint: disable=singleton-comparison
541
+ if worker_status[i]["status"] is not None:
542
+ return 1
543
+ return 0
544
+
545
+ def start_worker_list(self, rank_ids):
546
+ """
547
+ Start worker processor by rank list.
548
+
549
+ Args:
550
+ rank_ids: worker process's local rank list, which is also device_id.
551
+ """
552
+ if not isinstance(rank_ids, list):
553
+ raise TypeError(f"The type of 'rank_ids' must be a list, but got:{rank_ids}")
554
+ for idx in rank_ids:
555
+ self._start_single_worker(idx)
556
+ worker_status = self.monitor_rank_status(rank_ids)
557
+ for i in rank_ids:
558
+ if worker_status[i]["status"] is not None:
523
559
  return 1
524
560
  return 0
525
561
 
@@ -18,6 +18,8 @@ import json
18
18
  import socket
19
19
  import ipaddress
20
20
  import mindspore.log as logger
21
+ from mindspore.runtime.thread_bind_core import _get_physical_device_id, _get_cpu_available, \
22
+ _auto_generate_strategy, _equal_distribution_strategy
21
23
 
22
24
  CURRENT_IP = None
23
25
 
@@ -45,19 +47,19 @@ def _generate_cmd_args_list(cmd, cmd_args):
45
47
  return [cmd] + cmd_args
46
48
 
47
49
 
48
- def _generate_cmd_args_list_with_core(cmd, cmd_args, cpu_start, cpu_end):
50
+ def _generate_cmd_args_list_with_core(cmd, cmd_args, affinity_cpu_str):
49
51
  """
50
52
  Generates arguments list for 'Popen'. It consists of a binary file name and subsequential arguments.
51
53
  """
52
54
  # Bind cpu cores to this process.
53
- taskset_args = ['taskset'] + ['-c'] + [str(cpu_start) + '-' + str(cpu_end)]
55
+ taskset_args = ['taskset'] + ['-c'] + [affinity_cpu_str]
54
56
  final_cmd = []
55
57
  if cmd not in ['python', 'pytest', 'python3']:
56
58
  # If user don't set binary file name, defaulty use 'python' to launch the job.
57
59
  final_cmd = taskset_args + ['python'] + [cmd] + cmd_args
58
60
  else:
59
61
  final_cmd = taskset_args + [cmd] + cmd_args
60
- logger.info(f"Launch process with command: {' '.join(final_cmd)}")
62
+ logger.warning(f"Launch process with command: {' '.join(final_cmd)}")
61
63
  return final_cmd
62
64
 
63
65
 
@@ -83,8 +85,8 @@ def _get_local_ip(ip_address):
83
85
  CURRENT_IP = s.getsockname()[0]
84
86
  s.close()
85
87
  except Exception as e:
86
- raise RuntimeError(f"Get local ip failed: {e}. Please check whether an accessible address "
87
- "is input by '--master_address'.")
88
+ raise RuntimeError("Get local ip has failed. Please verify that the accessible address has been "
89
+ "specified in the '--master_address' parameter") from e
88
90
  return CURRENT_IP
89
91
 
90
92
 
@@ -124,8 +126,8 @@ def _convert_addr_to_ip(master_addr):
124
126
  logger.info(f"Convert input host name:{master_addr} to ip address:{ip_address}.")
125
127
  return ip_address
126
128
  except socket.gaierror as e:
127
- raise RuntimeError(f"DNS resolution failed: {e}. Please check whether a correct host name "
128
- "is input by '--master_address'.")
129
+ raise RuntimeError("DNS resolution has failed. Please verify that the correct hostname has been "
130
+ "specified in the '--master_address' parameter") from e
129
131
 
130
132
 
131
133
  def _send_scale_num(url, scale_num):
@@ -134,3 +136,89 @@ def _send_scale_num(url, scale_num):
134
136
 
135
137
  """
136
138
  return ""
139
+
140
+
141
+ def _parse_global_device_to_cpu_map(local_rank_id, physical_device_id, device_to_cpu_map):
142
+ """
143
+ Parse the global device_to_cpu_map and return a cpu list for assigned local_rank_id.
144
+
145
+ """
146
+ input_device_id = int(list(device_to_cpu_map.keys())[local_rank_id].replace("device", ""))
147
+ if physical_device_id != input_device_id:
148
+ return ""
149
+ affinity_cpu_list = list(device_to_cpu_map.values())[local_rank_id]
150
+ affinity_cpu_str = ",".join(affinity_cpu_list)
151
+ return affinity_cpu_str
152
+
153
+
154
+ def _generate_auto_bind_core_strategy(local_worker_num):
155
+ """
156
+ Get device to core range assigned for the all processes.
157
+
158
+ """
159
+ simulation_level = os.getenv("MS_SIMULATION_LEVEL", "").strip()
160
+
161
+ try:
162
+ available_cpus = _get_cpu_available()
163
+ except RuntimeError as e:
164
+ logger.warning(f"Failed to acquire available cpu info, error: {e} Will not launch process with taskset.")
165
+ return {}
166
+
167
+ if not simulation_level:
168
+ device_to_cpu_map = _auto_generate_strategy(local_worker_num, available_cpus)
169
+ else:
170
+ device_to_cpu_map = _equal_distribution_strategy(local_worker_num, available_cpus)
171
+
172
+ return device_to_cpu_map
173
+
174
+
175
+ def ranges_to_str(num_list):
176
+ """
177
+ Convert a num list to a range string.
178
+
179
+ """
180
+ ranges = []
181
+ start = num_list[0]
182
+ for i in range(1, len(num_list)):
183
+ if num_list[i] != num_list[i-1] + 1:
184
+ ranges.append((start, num_list[i-1]))
185
+ start = num_list[i]
186
+ ranges.append((start, num_list[-1]))
187
+
188
+ parts = []
189
+ for start, end in ranges:
190
+ if start == end:
191
+ parts.append(str(start))
192
+ else:
193
+ parts.append(f"{start}-{end}")
194
+ return ",".join(parts)
195
+
196
+
197
+ def _generate_bind_core_strategy(local_rank_id, device_to_cpu_map, arg_bind_core):
198
+ """
199
+ Get device to core range assigned for the all processes.
200
+
201
+ """
202
+ affinity_cpu_str = ""
203
+ cpu_list_for_device = []
204
+ simulation_level = os.getenv("MS_SIMULATION_LEVEL", "").strip()
205
+
206
+ try:
207
+ physical_device_id = _get_physical_device_id(local_rank_id, simulation_level)
208
+ except RuntimeError as e:
209
+ logger.warning(f"Failed to acquire device id, error: {e} Will not launch process with taskset.")
210
+ return None
211
+
212
+ if isinstance(arg_bind_core, dict):
213
+ affinity_cpu_str = _parse_global_device_to_cpu_map(local_rank_id, physical_device_id, arg_bind_core)
214
+ if not affinity_cpu_str:
215
+ logger.warning(f"Failed to find physical_device_id[{physical_device_id}] for "
216
+ f"process[{local_rank_id}]. Will not launch process with taskset.")
217
+ return None
218
+ elif arg_bind_core is True:
219
+ cpu_list_for_device = device_to_cpu_map.get(physical_device_id, [])
220
+ if not cpu_list_for_device:
221
+ return None
222
+ os.environ["MSRUN_CPU_LIST"] = str(cpu_list_for_device)
223
+ affinity_cpu_str = ranges_to_str(cpu_list_for_device)
224
+ return affinity_cpu_str
@@ -14,9 +14,47 @@
14
14
  # ============================================================================
15
15
  """Entrypoint of ms_run"""
16
16
  import ast
17
- from argparse import REMAINDER, ArgumentParser
17
+ import re
18
+ import json
19
+ from argparse import REMAINDER, ArgumentParser, ArgumentTypeError
18
20
  from .process_entity import _ProcessManager
19
21
 
22
+
23
+ def parse_and_validate_bind_core(value):
24
+ """
25
+ Parse input argument of --bind_core.
26
+
27
+ """
28
+ if value.lower() == "true":
29
+ return True
30
+ if value.lower() == "false":
31
+ return False
32
+
33
+ try:
34
+ value_dict = json.loads(value)
35
+ except json.JSONDecodeError as e:
36
+ raise ArgumentTypeError("Failed to parse JSON into a dictionary") from e
37
+
38
+ if isinstance(value_dict, dict):
39
+ range_pattern = re.compile(r'^\d+-\d+$')
40
+ for device_id, affinity_cpu_list in value_dict.items():
41
+ if not re.fullmatch(r"device\d+", device_id):
42
+ raise ArgumentTypeError(f"Key '{device_id}' must be in format 'deviceX' (X ≥ 0).")
43
+ if not isinstance(affinity_cpu_list, list):
44
+ raise ArgumentTypeError(f"Value for '{device_id}':{affinity_cpu_list} should be a list, "
45
+ f"but got {type(affinity_cpu_list)}.")
46
+
47
+ for cpu_range in affinity_cpu_list:
48
+ if not isinstance(cpu_range, str):
49
+ raise ArgumentTypeError(f"CPU range '{cpu_range}' in '{affinity_cpu_list}' should be a string.")
50
+ if not range_pattern.match(cpu_range):
51
+ raise ArgumentTypeError(f"CPU range '{cpu_range}' in '{affinity_cpu_list}' should be "
52
+ "in format 'cpuidX-cpuidY'.")
53
+ return value_dict
54
+
55
+ raise ArgumentTypeError(f"Type of {value} should be bool or dict, but got {type(value)}.")
56
+
57
+
20
58
  def get_args():
21
59
  """
22
60
  Parses and retrieves command-line arguments.
@@ -77,9 +115,10 @@ def get_args():
77
115
  parser.add_argument(
78
116
  "--bind_core",
79
117
  default=False,
80
- type=ast.literal_eval,
81
- choices=[True, False],
82
- help="specifies whether msrun should bind cpu cores to spawned processes."
118
+ type=parse_and_validate_bind_core,
119
+ help="specifies whether msrun should bind CPU cores to spawned processes. "
120
+ "If set to True, msrun will bind core based on the environment automatically, "
121
+ "and if passed a dict, msrun will bind core based on this dict information."
83
122
  )
84
123
  parser.add_argument(
85
124
  "--sim_level",
@@ -16,8 +16,15 @@
16
16
  """
17
17
  Parallel function operator
18
18
  """
19
+ from __future__ import absolute_import
19
20
 
20
- from mindspore.parallel.function.reshard_func import reshard
21
+ from . import (
22
+ reshard_func
23
+ )
24
+
25
+ from .reshard_func import (
26
+ reshard
27
+ )
21
28
 
22
29
  __all__ = []
23
30
  __all__.extend(reshard_func.__all__)
@@ -13,7 +13,6 @@
13
13
  # limitations under the License.
14
14
  # ============================================================================
15
15
  """Defines parameter operators with functional form."""
16
- import mindspore as ms
17
16
  from mindspore import context, ops
18
17
  from mindspore import log as logger
19
18
  from mindspore.ops import operations as P
@@ -59,8 +58,8 @@ def reshard(tensor, layout):
59
58
  Tensor. The mathematically equivalent of the input tensor.
60
59
 
61
60
  Raises:
62
- TypeError: Reshard takes in Tensor type as the first input param, but got: `type(tensor)`.
63
- TypeError: Reshard only support type mindspore.parallel.Layout but got: `type(layout)`.
61
+ TypeError: If the type of input param `tensor` is not mindspore.Tensor.
62
+ TypeError: If the type of input param `layout` is not mindspore.parallel.Layout.
64
63
 
65
64
  Supported Platforms:
66
65
  ``Ascend``
@@ -220,11 +219,11 @@ def _redistribute(tensor, dst_dtensor_info):
220
219
  if not comm_tensor_data_func._current_rank_has_data:
221
220
  new_tensor_shape = tuple([tensor_data.shape[i] // tensor._dtensor_info.sharding_strategy[i]
222
221
  for i in range(len(tensor.shape))])
223
- tensor_data = comm_tensor_data_func.comm_data(ops.zeros(new_tensor_shape, tensor.dtype))
222
+ tensor_data = ops.zeros(new_tensor_shape, tensor.dtype)
223
+ _ = comm_tensor_data_func.comm_data(tensor_data)
224
224
  else:
225
- tensor_data = comm_tensor_data_func.comm_data(tensor)
225
+ _ = comm_tensor_data_func.comm_data(tensor_data)
226
226
  all_reduce_data = True
227
- ms.communication.comm_func.barrier()
228
227
  if src_layout_info['device_matrix'] == dst_layout_info['device_matrix'] and src_layout_info['tensor_map'] == \
229
228
  dst_layout_info['tensor_map']:
230
229
  return tensor_data
@@ -236,7 +235,7 @@ def _redistribute(tensor, dst_dtensor_info):
236
235
  global REDIST_CELL_CACHE
237
236
  redist_cache_key = (f"{src_layout_info['device_matrix']}, {src_layout_info['tensor_map']} -> "
238
237
  f"{dst_layout_info['device_matrix']}, {dst_layout_info['tensor_map']}")
239
- if redist_cache_key in REDIST_CELL_CACHE.keys():
238
+ if redist_cache_key in REDIST_CELL_CACHE:
240
239
  logger.debug(f"redist_cache_key is {redist_cache_key}, match cache")
241
240
  redist_func = REDIST_CELL_CACHE[redist_cache_key]
242
241
  else:
@@ -17,8 +17,21 @@ Interfaces for parallel-related functionality
17
17
  """
18
18
  from __future__ import absolute_import
19
19
 
20
- from mindspore.parallel.nn.parallel_grad_reducer import PipelineGradReducer
21
- from mindspore.parallel.nn.parallel_cell_wrapper import PipelineCell, Pipeline, MicroBatchInterleaved, GradAccumulation
20
+ from . import (
21
+ parallel_grad_reducer,
22
+ parallel_cell_wrapper
23
+ )
24
+
25
+ from .parallel_grad_reducer import (
26
+ PipelineGradReducer
27
+ )
28
+
29
+ from .parallel_cell_wrapper import (
30
+ PipelineCell,
31
+ Pipeline,
32
+ MicroBatchInterleaved,
33
+ GradAccumulation
34
+ )
22
35
 
23
36
  __all__ = []
24
37
  __all__.extend(parallel_grad_reducer.__all__)
@@ -17,6 +17,8 @@
17
17
  from __future__ import absolute_import
18
18
  from __future__ import division
19
19
 
20
+ __all__ = ['PipelineCell', 'Pipeline', 'MicroBatchInterleaved', 'GradAccumulation']
21
+
20
22
  from mindspore import nn
21
23
  from mindspore.ops import operations as P
22
24
  from mindspore.nn.cell import Cell
@@ -24,9 +26,6 @@ from mindspore.nn.wrap.cell_wrapper import _MicroBatch
24
26
  from mindspore import log as logger
25
27
 
26
28
 
27
- __all__ = ['PipelineCell', 'Pipeline', 'MicroBatchInterleaved', 'GradAccumulation']
28
-
29
-
30
29
  class PipelineCell(Cell):
31
30
  """
32
31
  Slice MiniBatch into finer-grained MicroBatch for use in pipeline-parallel training.
@@ -101,15 +100,15 @@ class PipelineCell(Cell):
101
100
  " config stage num:" + str(config_stage_num))
102
101
  logger.warning("network:" + str(self.network))
103
102
  logger.warning("cell name available:")
104
- for cell_name, cell in self.network.cells_and_names():
103
+ for cell_name, _ in self.network.cells_and_names():
105
104
  logger.warning(cell_name)
106
105
  raise KeyError("For 'PipelineCell', the argument 'stage_config' : {} is not "
107
106
  "found in 'network' : {}".format(config_dict, network))
108
107
 
109
- def construct(self, *inputs):
108
+ def construct(self, *args, **kwargs):
110
109
  ret = None
111
110
  for i in range(self.micro_size):
112
- micro_input = self.micro_inputs[i](i, *inputs)
111
+ micro_input = self.micro_inputs[i](i, *args, **kwargs)
113
112
  output = self.network(*micro_input)
114
113
  if ret is not None:
115
114
  ret = self.add_list[i](ret, output)
@@ -197,10 +196,10 @@ class MicroBatchInterleaved(Cell):
197
196
  self.interleave_inputs.append(interleave_data)
198
197
  self._get_attr_from_cell(network)
199
198
 
200
- def construct(self, *inputs):
199
+ def construct(self, *args, **kwargs):
201
200
  output = 0.0
202
201
  for i in range(self.interleave_num):
203
- interleave_input = self.interleave_inputs[i](i, *inputs)
202
+ interleave_input = self.interleave_inputs[i](i, *args, **kwargs)
204
203
  output = self.add(output, self.network(*interleave_input))
205
204
  return output
206
205
 
@@ -251,10 +250,10 @@ class GradAccumulation(Cell):
251
250
  self.add_list.append(self.add)
252
251
  self._get_attr_from_cell(network)
253
252
 
254
- def construct(self, *inputs):
253
+ def construct(self, *args, **kwargs):
255
254
  ret = None
256
255
  for i in range(self.micro_size):
257
- micro_input = self.micro_inputs[i](i, *inputs)
256
+ micro_input = self.micro_inputs[i](i, *args, **kwargs)
258
257
  output = self.network(*micro_input)
259
258
  if ret is not None:
260
259
  ret = self.add_list[i](ret, output)
@@ -15,6 +15,8 @@
15
15
  """parallel serialization"""
16
16
  from __future__ import absolute_import
17
17
 
18
+ __all__ = ['PipelineGradReducer']
19
+
18
20
  from mindspore import context
19
21
  from mindspore.nn.cell import Cell
20
22
  from mindspore.ops import functional as F, composite as C, operations as P
@@ -25,8 +27,6 @@ from mindspore.common.parameter import Parameter
25
27
  from mindspore.nn.layer import Identity
26
28
  from mindspore.parallel._utils import _get_enable_parallel_optimizer
27
29
 
28
- __all__ = ['PipelineGradReducer']
29
-
30
30
 
31
31
  grad_scale = C.MultitypeFuncGraph("grad_scale")
32
32
  shard_grad_scale = C.MultitypeFuncGraph("shard_grad_scale")
@@ -81,6 +81,7 @@ class PipelineGradReducer(Cell):
81
81
  >>> import mindspore as ms
82
82
  >>> from mindspore import nn, ops, Tensor
83
83
  >>> from mindspore.communication import init
84
+ >>> from mindspore.parallel.auto_parallel import AutoParallel
84
85
  >>>
85
86
  >>> ms.set_context(mode=ms.GRAPH_MODE)
86
87
  >>> ms.reset_auto_parallel_context()
@@ -113,7 +114,7 @@ class PipelineGradReducer(Cell):
113
114
  >>> net.layer3.pipeline_stage = 1
114
115
  >>> loss_fn = nn.CrossEntropyLoss()
115
116
  >>> optimizer = nn.SGD(net.trainable_params(), 1e-2)
116
- >>> net_with_loss = nn.Pipeline(nn.WithLossCell(net, loss_fn), 2)
117
+ >>> net_with_loss = nn.PipelineCell(nn.WithLossCell(net, loss_fn), 2)
117
118
  >>> net_with_loss.set_train()
118
119
  >>> def forward_fn(inputs, target):
119
120
  ... loss = net_with_loss(inputs, target)
@@ -135,7 +136,7 @@ class PipelineGradReducer(Cell):
135
136
  >>> label = Tensor(np.ones([size, out_features]).astype(np.float32))
136
137
  >>> loss, _ = train_one_step(inputs, label)
137
138
  >>> print(loss)
138
- 46.36721
139
+ 46.304886
139
140
  """
140
141
  def __init__(self, parameters, scale_sense=1.0, opt_shard=None):
141
142
  super(PipelineGradReducer, self).__init__(auto_prefix=False)
@@ -151,10 +152,10 @@ class PipelineGradReducer(Cell):
151
152
  self.opt_shard = opt_shard
152
153
 
153
154
  @jit
154
- def construct(self, grads):
155
+ def construct(self, *args, **kwargs):
155
156
  new_grads = None
156
157
  if self.opt_shard:
157
- grads = self.grad_reducer(grads)
158
+ grads = self.grad_reducer(*args, **kwargs)
158
159
  new_grads = self.hyper_map(F.partial(shard_grad_scale, self.scale_sense * self.degree),
159
160
  grads, self.accu_grads)
160
161
  else:
@@ -121,8 +121,7 @@ class Layout:
121
121
  >>> layout0 = layout("dp", "mp")
122
122
  >>> print(layout0.to_dict())
123
123
  {"device_matrix": (2, 2, 2), "tensor_map": (2, 0), "interleaved_parallel": False,
124
- 'alias_name': {'dp', 'sp', 'mp'}, "rank_list": [0, 1, 2, 3, 4, 1, 6, 7]}
125
- >>> # Total device num is 4, but split the tensor in local device into two copies.
124
+ 'alias_name': {'dp', 'sp', 'mp'}, "rank_list": [0, 1, 2, 3, 4, 5, 6, 7]}
126
125
  >>> layout = Layout((2, 2, 2), ("dp", "sp", "interleaved_parallel"))
127
126
  >>> layout1 = layout(("dp", "interleaved_parallel"), "sp")
128
127
  """
@@ -408,8 +407,8 @@ def shard(fn, in_strategy, out_strategy=None, parameter_plan=None, device="Ascen
408
407
  The parallel strategies of remaining operators are derived from the strategy specified by the input and output.
409
408
 
410
409
  Note:
411
- - If shard is called, the parallel mode in `set_auto_parallel_context` (parallel_mode) will be set to
412
- "auto_parallel" and the search mode (search_mode) to "sharding_propagation".
410
+ - It is valid only in semi auto parallel or auto parallel mode.
411
+ In other parallel modes, strategies set here will be ignored.
413
412
  - If the input contain Parameter, its strategy should be set in `in_strategy`.
414
413
  - This method currently does not support dynamic shapes.
415
414