mindspore 2.5.0__cp310-cp310-win_amd64.whl → 2.6.0__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 (493) 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 +6 -4
  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/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -33
  10. mindspore/_deprecated/__init__.py +17 -0
  11. mindspore/_deprecated/jit.py +198 -0
  12. mindspore/_extends/builtin_operations.py +1 -1
  13. mindspore/_extends/parse/__init__.py +6 -7
  14. mindspore/_extends/parse/compile_config.py +19 -0
  15. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +22 -3
  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 +25 -194
  20. mindspore/_extends/parse/resources.py +1 -5
  21. mindspore/_extends/parse/standard_method.py +109 -75
  22. mindspore/_extends/pijit/__init__.py +2 -2
  23. mindspore/_extends/pijit/pijit_func_white_list.py +16 -11
  24. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  25. mindspore/_extends/utils.py +1 -1
  26. mindspore/amp.py +4 -4
  27. mindspore/atlprov.dll +0 -0
  28. mindspore/avcodec-59.dll +0 -0
  29. mindspore/avdevice-59.dll +0 -0
  30. mindspore/avfilter-8.dll +0 -0
  31. mindspore/avformat-59.dll +0 -0
  32. mindspore/avutil-57.dll +0 -0
  33. mindspore/boost/__init__.py +2 -2
  34. mindspore/boost/base.py +3 -7
  35. mindspore/boost/boost_cell_wrapper.py +2 -2
  36. mindspore/c1.dll +0 -0
  37. mindspore/c1xx.dll +0 -0
  38. mindspore/c2.dll +0 -0
  39. mindspore/common/__init__.py +4 -3
  40. mindspore/common/_grad_function.py +56 -0
  41. mindspore/common/_pijit_context.py +14 -5
  42. mindspore/common/_register_for_tensor.py +1 -1
  43. mindspore/common/_stub_tensor.py +5 -10
  44. mindspore/common/_tensor_cpp_method.py +1 -1
  45. mindspore/common/_tensor_docs.py +2014 -3386
  46. mindspore/common/api.py +386 -355
  47. mindspore/common/auto_dynamic_shape.py +41 -44
  48. mindspore/common/dtype.py +5 -2
  49. mindspore/common/dump.py +7 -5
  50. mindspore/common/file_system.py +3 -0
  51. mindspore/common/generator.py +3 -0
  52. mindspore/common/hook_handle.py +5 -3
  53. mindspore/common/initializer.py +10 -6
  54. mindspore/common/jit_begin_end.py +94 -0
  55. mindspore/common/jit_config.py +6 -1
  56. mindspore/common/jit_context.py +76 -0
  57. mindspore/common/jit_trace.py +378 -0
  58. mindspore/common/lazy_inline.py +2 -2
  59. mindspore/common/mutable.py +5 -4
  60. mindspore/common/parameter.py +106 -39
  61. mindspore/common/seed.py +2 -2
  62. mindspore/common/sparse_tensor.py +23 -17
  63. mindspore/common/tensor.py +332 -714
  64. mindspore/communication/__init__.py +7 -5
  65. mindspore/communication/_comm_helper.py +47 -2
  66. mindspore/communication/comm_func.py +70 -53
  67. mindspore/communication/management.py +83 -17
  68. mindspore/context.py +228 -571
  69. mindspore/dataset/__init__.py +44 -20
  70. mindspore/dataset/audio/__init__.py +2 -8
  71. mindspore/dataset/audio/transforms.py +3 -17
  72. mindspore/dataset/core/config.py +3 -3
  73. mindspore/dataset/engine/cache_client.py +1 -1
  74. mindspore/dataset/engine/datasets.py +102 -120
  75. mindspore/dataset/engine/datasets_audio.py +22 -22
  76. mindspore/dataset/engine/datasets_standard_format.py +43 -24
  77. mindspore/dataset/engine/datasets_text.py +78 -85
  78. mindspore/dataset/engine/datasets_user_defined.py +109 -77
  79. mindspore/dataset/engine/datasets_vision.py +111 -108
  80. mindspore/dataset/engine/iterators.py +5 -3
  81. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  82. mindspore/dataset/engine/samplers.py +279 -57
  83. mindspore/dataset/engine/serializer_deserializer.py +2 -1
  84. mindspore/dataset/engine/validators.py +10 -0
  85. mindspore/dataset/text/__init__.py +7 -6
  86. mindspore/dataset/text/transforms.py +6 -5
  87. mindspore/dataset/text/utils.py +3 -3
  88. mindspore/dataset/transforms/__init__.py +0 -9
  89. mindspore/dataset/transforms/transforms.py +3 -3
  90. mindspore/dataset/utils/browse_dataset.py +1 -1
  91. mindspore/dataset/vision/__init__.py +2 -9
  92. mindspore/dataset/vision/transforms.py +202 -158
  93. mindspore/dataset/vision/utils.py +7 -5
  94. mindspore/device_context/ascend/op_debug.py +60 -1
  95. mindspore/device_context/ascend/op_tuning.py +0 -4
  96. mindspore/device_manager.py +39 -3
  97. mindspore/dnnl.dll +0 -0
  98. mindspore/dpcmi.dll +0 -0
  99. mindspore/experimental/es/embedding_service.py +35 -27
  100. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +0 -2
  101. mindspore/experimental/map_parameter.py +4 -4
  102. mindspore/experimental/optim/adadelta.py +22 -26
  103. mindspore/experimental/optim/adagrad.py +4 -4
  104. mindspore/experimental/optim/adam.py +4 -0
  105. mindspore/experimental/optim/adamax.py +4 -4
  106. mindspore/experimental/optim/adamw.py +4 -0
  107. mindspore/experimental/optim/asgd.py +1 -1
  108. mindspore/experimental/optim/lr_scheduler.py +40 -22
  109. mindspore/experimental/optim/radam.py +5 -5
  110. mindspore/experimental/optim/rprop.py +1 -1
  111. mindspore/experimental/optim/sgd.py +1 -1
  112. mindspore/hal/contiguous_tensors_handle.py +6 -10
  113. mindspore/hal/device.py +55 -81
  114. mindspore/hal/event.py +38 -55
  115. mindspore/hal/memory.py +115 -147
  116. mindspore/hal/stream.py +81 -125
  117. mindspore/include/dataset/constants.h +7 -4
  118. mindspore/include/dataset/execute.h +2 -2
  119. mindspore/jpeg62.dll +0 -0
  120. mindspore/log.py +40 -2
  121. mindspore/mindrecord/__init__.py +20 -7
  122. mindspore/mindspore_backend_common.dll +0 -0
  123. mindspore/mindspore_backend_manager.dll +0 -0
  124. mindspore/mindspore_common.dll +0 -0
  125. mindspore/mindspore_core.dll +0 -0
  126. mindspore/mindspore_dump.dll +0 -0
  127. mindspore/mindspore_frontend.dll +0 -0
  128. mindspore/mindspore_glog.dll +0 -0
  129. mindspore/mindspore_memory_pool.dll +0 -0
  130. mindspore/mindspore_ms_backend.dll +0 -0
  131. mindspore/mindspore_ops.dll +0 -0
  132. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  133. mindspore/mindspore_ops_kernel_common.dll +0 -0
  134. mindspore/mindspore_profiler.dll +0 -0
  135. mindspore/mindspore_pyboost.dll +0 -0
  136. mindspore/mindspore_pynative.dll +0 -0
  137. mindspore/mindspore_res_manager.dll +0 -0
  138. mindspore/mindspore_runtime_pipeline.dll +0 -0
  139. mindspore/mint/__init__.py +133 -702
  140. mindspore/mint/distributed/__init__.py +5 -1
  141. mindspore/mint/distributed/distributed.py +198 -113
  142. mindspore/mint/linalg/__init__.py +2 -0
  143. mindspore/mint/nn/__init__.py +280 -18
  144. mindspore/mint/nn/functional.py +282 -64
  145. mindspore/mint/nn/layer/__init__.py +4 -0
  146. mindspore/mint/nn/layer/_functions.py +7 -3
  147. mindspore/mint/nn/layer/activation.py +120 -13
  148. mindspore/mint/nn/layer/conv.py +234 -28
  149. mindspore/mint/nn/layer/normalization.py +15 -16
  150. mindspore/mint/nn/layer/padding.py +1 -1
  151. mindspore/mint/nn/layer/pooling.py +66 -1
  152. mindspore/mint/optim/__init__.py +2 -1
  153. mindspore/mint/optim/sgd.py +171 -0
  154. mindspore/msobj140.dll +0 -0
  155. mindspore/mspdb140.dll +0 -0
  156. mindspore/mspdbcore.dll +0 -0
  157. mindspore/mspdbst.dll +0 -0
  158. mindspore/mspft140.dll +0 -0
  159. mindspore/msvcdis140.dll +0 -0
  160. mindspore/msvcp140_1.dll +0 -0
  161. mindspore/msvcp140_2.dll +0 -0
  162. mindspore/msvcp140_atomic_wait.dll +0 -0
  163. mindspore/msvcp140_codecvt_ids.dll +0 -0
  164. mindspore/nn/__init__.py +4 -1
  165. mindspore/nn/cell.py +1253 -179
  166. mindspore/nn/layer/activation.py +23 -21
  167. mindspore/nn/layer/basic.py +22 -16
  168. mindspore/nn/layer/container.py +1 -1
  169. mindspore/nn/layer/conv.py +53 -42
  170. mindspore/nn/layer/embedding.py +9 -8
  171. mindspore/nn/layer/normalization.py +48 -42
  172. mindspore/nn/layer/pooling.py +75 -31
  173. mindspore/nn/layer/transformer.py +11 -10
  174. mindspore/nn/learning_rate_schedule.py +4 -2
  175. mindspore/nn/loss/loss.py +27 -19
  176. mindspore/nn/optim/ada_grad.py +6 -5
  177. mindspore/nn/optim/adadelta.py +9 -7
  178. mindspore/nn/optim/adafactor.py +1 -1
  179. mindspore/nn/optim/adam.py +18 -14
  180. mindspore/nn/optim/adamax.py +8 -7
  181. mindspore/nn/optim/adasum.py +5 -5
  182. mindspore/nn/optim/asgd.py +3 -1
  183. mindspore/nn/optim/ftrl.py +11 -9
  184. mindspore/nn/optim/lamb.py +1 -1
  185. mindspore/nn/optim/lazyadam.py +12 -10
  186. mindspore/nn/optim/momentum.py +7 -6
  187. mindspore/nn/optim/optimizer.py +2 -2
  188. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  189. mindspore/nn/optim/rmsprop.py +13 -12
  190. mindspore/nn/optim/rprop.py +9 -7
  191. mindspore/nn/optim/sgd.py +9 -6
  192. mindspore/nn/optim/tft_wrapper.py +5 -2
  193. mindspore/nn/probability/bijector/bijector.py +17 -11
  194. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  195. mindspore/nn/probability/bijector/invert.py +2 -2
  196. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  197. mindspore/nn/probability/bijector/softplus.py +3 -2
  198. mindspore/nn/probability/distribution/beta.py +3 -3
  199. mindspore/nn/probability/distribution/categorical.py +1 -1
  200. mindspore/nn/probability/distribution/cauchy.py +4 -2
  201. mindspore/nn/probability/distribution/exponential.py +6 -7
  202. mindspore/nn/probability/distribution/gamma.py +2 -2
  203. mindspore/nn/probability/distribution/gumbel.py +2 -2
  204. mindspore/nn/probability/distribution/half_normal.py +5 -3
  205. mindspore/nn/probability/distribution/logistic.py +5 -3
  206. mindspore/nn/probability/distribution/poisson.py +1 -1
  207. mindspore/nn/probability/distribution/uniform.py +5 -3
  208. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  209. mindspore/nn/reinforcement/tensor_array.py +1 -1
  210. mindspore/nn/wrap/__init__.py +6 -6
  211. mindspore/nn/wrap/cell_wrapper.py +178 -117
  212. mindspore/nn/wrap/grad_reducer.py +45 -36
  213. mindspore/nn/wrap/loss_scale.py +3 -3
  214. mindspore/numpy/array_creations.py +3 -3
  215. mindspore/numpy/array_ops.py +1 -1
  216. mindspore/numpy/utils.py +1 -2
  217. mindspore/numpy/utils_const.py +1 -2
  218. mindspore/opencv_core452.dll +0 -0
  219. mindspore/opencv_imgcodecs452.dll +0 -0
  220. mindspore/opencv_imgproc452.dll +0 -0
  221. mindspore/ops/__init__.py +3 -2
  222. mindspore/ops/_grad_experimental/grad_comm_ops.py +18 -3
  223. mindspore/ops/_grad_experimental/grad_debug_ops.py +8 -1
  224. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  225. mindspore/ops/_register_for_op.py +0 -11
  226. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  227. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -4
  228. mindspore/ops/_vmap/vmap_array_ops.py +32 -6
  229. mindspore/ops/_vmap/vmap_grad_nn_ops.py +2 -1
  230. mindspore/ops/_vmap/vmap_math_ops.py +4 -7
  231. mindspore/ops/_vmap/vmap_nn_ops.py +9 -8
  232. mindspore/ops/auto_generate/__init__.py +4 -3
  233. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +127 -52
  234. mindspore/ops/auto_generate/gen_extend_func.py +286 -208
  235. mindspore/ops/auto_generate/gen_ops_def.py +2783 -2335
  236. mindspore/ops/auto_generate/gen_ops_prim.py +8992 -2686
  237. mindspore/ops/auto_generate/pyboost_inner_prim.py +106 -76
  238. mindspore/ops/composite/__init__.py +2 -1
  239. mindspore/ops/composite/base.py +19 -24
  240. mindspore/ops/composite/math_ops.py +6 -16
  241. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  242. mindspore/ops/composite/multitype_ops/_compile_utils.py +4 -5
  243. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  244. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  245. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  246. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  247. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  248. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  249. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  250. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  251. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  252. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  253. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  254. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  255. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  256. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  257. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  258. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  259. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  260. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  261. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  262. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  263. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  264. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  265. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  266. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  267. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  268. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -1
  269. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  270. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  271. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  272. mindspore/ops/function/__init__.py +28 -2
  273. mindspore/ops/function/_add_attr_func.py +58 -0
  274. mindspore/ops/function/array_func.py +1631 -2347
  275. mindspore/ops/function/clip_func.py +38 -45
  276. mindspore/ops/function/debug_func.py +36 -44
  277. mindspore/ops/function/grad/__init__.py +1 -0
  278. mindspore/ops/function/grad/grad_func.py +104 -71
  279. mindspore/ops/function/image_func.py +1 -1
  280. mindspore/ops/function/linalg_func.py +46 -78
  281. mindspore/ops/function/math_func.py +3024 -3855
  282. mindspore/ops/function/nn_func.py +678 -274
  283. mindspore/ops/function/other_func.py +159 -1
  284. mindspore/ops/function/parameter_func.py +17 -30
  285. mindspore/ops/function/random_func.py +216 -361
  286. mindspore/ops/function/reshard_func.py +4 -70
  287. mindspore/ops/function/sparse_func.py +3 -3
  288. mindspore/ops/function/sparse_unary_func.py +5 -5
  289. mindspore/ops/function/spectral_func.py +25 -58
  290. mindspore/ops/function/vmap_func.py +26 -18
  291. mindspore/ops/functional.py +8 -5
  292. mindspore/ops/functional_overload.py +655 -4
  293. mindspore/ops/op_info_register.py +32 -244
  294. mindspore/ops/operations/__init__.py +21 -14
  295. mindspore/ops/operations/_custom_ops_utils.py +235 -0
  296. mindspore/ops/operations/_grad_ops.py +1 -10
  297. mindspore/ops/operations/_inner_ops.py +5 -76
  298. mindspore/ops/operations/_ms_kernel.py +4 -10
  299. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  300. mindspore/ops/operations/_scalar_ops.py +3 -2
  301. mindspore/ops/operations/_sequence_ops.py +1 -1
  302. mindspore/ops/operations/_tensor_array.py +1 -1
  303. mindspore/ops/operations/array_ops.py +39 -24
  304. mindspore/ops/operations/comm_ops.py +150 -107
  305. mindspore/ops/operations/custom_ops.py +287 -32
  306. mindspore/ops/operations/debug_ops.py +119 -16
  307. mindspore/ops/operations/inner_ops.py +1 -1
  308. mindspore/ops/operations/linalg_ops.py +1 -58
  309. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  310. mindspore/ops/operations/manually_defined/ops_def.py +746 -79
  311. mindspore/ops/operations/math_ops.py +21 -18
  312. mindspore/ops/operations/nn_ops.py +67 -224
  313. mindspore/ops/operations/other_ops.py +62 -9
  314. mindspore/ops/operations/random_ops.py +13 -7
  315. mindspore/ops/operations/reshard_ops.py +1 -1
  316. mindspore/ops/operations/sparse_ops.py +2 -2
  317. mindspore/ops/primitive.py +43 -32
  318. mindspore/ops/tensor_method.py +243 -17
  319. mindspore/ops_generate/__init__.py +0 -5
  320. mindspore/ops_generate/aclnn/__init__.py +0 -0
  321. mindspore/ops_generate/{aclnn_kernel_register_auto_cc_generator.py → aclnn/aclnn_kernel_register_auto_cc_generator.py} +43 -18
  322. mindspore/ops_generate/{gen_aclnn_implement.py → aclnn/gen_aclnn_implement.py} +49 -51
  323. mindspore/ops_generate/api/__init__.py +0 -0
  324. mindspore/ops_generate/{add_tensor_docs_generator.py → api/add_tensor_docs_generator.py} +9 -7
  325. mindspore/ops_generate/{cpp_create_prim_instance_helper_generator.py → api/cpp_create_prim_instance_helper_generator.py} +6 -9
  326. mindspore/ops_generate/{functional_map_cpp_generator.py → api/functional_map_cpp_generator.py} +25 -12
  327. mindspore/ops_generate/{functional_overload_py_generator.py → api/functional_overload_py_generator.py} +8 -6
  328. mindspore/ops_generate/{functions_cc_generator.py → api/functions_cc_generator.py} +14 -10
  329. mindspore/ops_generate/api/gen_api.py +103 -0
  330. mindspore/ops_generate/{op_api_proto.py → api/op_api_proto.py} +98 -69
  331. mindspore/ops_generate/{tensor_func_reg_cpp_generator.py → api/tensor_func_reg_cpp_generator.py} +82 -43
  332. mindspore/ops_generate/common/__init__.py +0 -0
  333. mindspore/ops_generate/common/gen_constants.py +91 -0
  334. mindspore/ops_generate/{gen_utils.py → common/gen_utils.py} +72 -19
  335. mindspore/ops_generate/{op_proto.py → common/op_proto.py} +64 -1
  336. mindspore/ops_generate/{template.py → common/template.py} +96 -84
  337. mindspore/ops_generate/gen_ops.py +23 -325
  338. mindspore/ops_generate/op_def/__init__.py +0 -0
  339. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  340. mindspore/ops_generate/{lite_ops_cpp_generator.py → op_def/lite_ops_cpp_generator.py} +47 -11
  341. mindspore/ops_generate/{ops_def_cc_generator.py → op_def/ops_def_cc_generator.py} +18 -10
  342. mindspore/ops_generate/{ops_def_h_generator.py → op_def/ops_def_h_generator.py} +5 -5
  343. mindspore/ops_generate/{ops_name_h_generator.py → op_def/ops_name_h_generator.py} +30 -15
  344. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  345. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  346. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  347. mindspore/ops_generate/{op_def_py_generator.py → op_def_py/op_def_py_generator.py} +6 -5
  348. mindspore/ops_generate/{op_prim_py_generator.py → op_def_py/op_prim_py_generator.py} +24 -15
  349. mindspore/ops_generate/pyboost/__init__.py +0 -0
  350. mindspore/ops_generate/{auto_grad_impl_cc_generator.py → pyboost/auto_grad_impl_cc_generator.py} +11 -7
  351. mindspore/ops_generate/{auto_grad_reg_cc_generator.py → pyboost/auto_grad_reg_cc_generator.py} +7 -7
  352. mindspore/ops_generate/{gen_pyboost_func.py → pyboost/gen_pyboost_func.py} +40 -16
  353. mindspore/ops_generate/{op_template_parser.py → pyboost/op_template_parser.py} +105 -24
  354. mindspore/ops_generate/{pyboost_functions_cpp_generator.py → pyboost/pyboost_functions_cpp_generator.py} +55 -18
  355. mindspore/ops_generate/{pyboost_functions_h_generator.py → pyboost/pyboost_functions_h_generator.py} +42 -10
  356. mindspore/ops_generate/{pyboost_functions_py_generator.py → pyboost/pyboost_functions_py_generator.py} +6 -6
  357. mindspore/ops_generate/{pyboost_grad_function_cpp_generator.py → pyboost/pyboost_grad_function_cpp_generator.py} +11 -10
  358. mindspore/ops_generate/{pyboost_inner_prim_generator.py → pyboost/pyboost_inner_prim_generator.py} +8 -7
  359. mindspore/ops_generate/{pyboost_native_grad_functions_generator.py → pyboost/pyboost_native_grad_functions_generator.py} +14 -10
  360. mindspore/ops_generate/{pyboost_op_cpp_code_generator.py → pyboost/pyboost_op_cpp_code_generator.py} +140 -53
  361. mindspore/ops_generate/{pyboost_overload_functions_cpp_generator.py → pyboost/pyboost_overload_functions_cpp_generator.py} +28 -15
  362. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +88 -4
  363. mindspore/ops_generate/resources/__init__.py +0 -0
  364. mindspore/ops_generate/resources/resource_list.py +30 -0
  365. mindspore/ops_generate/resources/resource_loader.py +36 -0
  366. mindspore/ops_generate/resources/resource_manager.py +64 -0
  367. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  368. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  369. mindspore/parallel/__init__.py +6 -2
  370. mindspore/parallel/_auto_parallel_context.py +140 -12
  371. mindspore/parallel/_cell_wrapper.py +132 -15
  372. mindspore/parallel/_parallel_serialization.py +95 -4
  373. mindspore/parallel/_ps_context.py +1 -1
  374. mindspore/parallel/_recovery_context.py +7 -2
  375. mindspore/parallel/_tensor.py +142 -18
  376. mindspore/parallel/_utils.py +198 -25
  377. mindspore/parallel/algo_parameter_config.py +3 -3
  378. mindspore/parallel/auto_parallel.py +732 -0
  379. mindspore/parallel/checkpoint_convert.py +159 -0
  380. mindspore/parallel/checkpoint_transform.py +658 -37
  381. mindspore/parallel/cluster/process_entity/_api.py +151 -19
  382. mindspore/parallel/cluster/run.py +1 -1
  383. mindspore/parallel/function/__init__.py +24 -0
  384. mindspore/parallel/function/reshard_func.py +258 -0
  385. mindspore/parallel/nn/__init__.py +25 -0
  386. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  387. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  388. mindspore/parallel/parameter_broadcast.py +24 -13
  389. mindspore/parallel/shard.py +137 -62
  390. mindspore/parallel/transform_safetensors.py +288 -95
  391. mindspore/pgodb140.dll +0 -0
  392. mindspore/pgort140.dll +0 -0
  393. mindspore/profiler/__init__.py +9 -5
  394. mindspore/profiler/analysis/parser/ascend_cann_parser.py +6 -2
  395. mindspore/profiler/analysis/parser/ms_framework_parser.py +4 -4
  396. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +7 -4
  397. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +25 -0
  398. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +3 -3
  399. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +241 -86
  400. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +41 -2
  401. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +33 -35
  402. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +7 -0
  403. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +8 -3
  404. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +141 -30
  405. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +5 -6
  406. mindspore/profiler/common/ascend_msprof_exporter.py +5 -4
  407. mindspore/profiler/common/constant.py +12 -0
  408. mindspore/profiler/common/msprof_cmd_tool.py +42 -23
  409. mindspore/profiler/common/path_manager.py +24 -0
  410. mindspore/profiler/common/profiler_context.py +26 -2
  411. mindspore/profiler/common/profiler_meta_data.py +74 -0
  412. mindspore/profiler/common/profiler_parameters.py +59 -18
  413. mindspore/profiler/common/profiler_path_manager.py +66 -7
  414. mindspore/profiler/dynamic_profiler.py +112 -79
  415. mindspore/profiler/envprofiler.py +26 -1
  416. mindspore/profiler/experimental_config.py +197 -0
  417. mindspore/profiler/mstx.py +57 -14
  418. mindspore/profiler/platform/npu_profiler.py +33 -7
  419. mindspore/profiler/profiler.py +541 -45
  420. mindspore/profiler/profiler_action_controller.py +1 -1
  421. mindspore/profiler/profiler_interface.py +4 -0
  422. mindspore/profiler/schedule.py +57 -22
  423. mindspore/rewrite/api/node.py +15 -13
  424. mindspore/rewrite/api/symbol_tree.py +1 -1
  425. mindspore/run_check/_check_version.py +25 -14
  426. mindspore/run_check/run_check.py +1 -1
  427. mindspore/runtime/__init__.py +2 -2
  428. mindspore/runtime/executor.py +40 -11
  429. mindspore/runtime/memory.py +37 -13
  430. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  431. mindspore/swresample-4.dll +0 -0
  432. mindspore/swscale-6.dll +0 -0
  433. mindspore/tbbmalloc.dll +0 -0
  434. mindspore/tinyxml2.dll +0 -0
  435. mindspore/train/__init__.py +8 -8
  436. mindspore/train/_utils.py +43 -9
  437. mindspore/train/amp.py +1 -1
  438. mindspore/train/callback/__init__.py +2 -2
  439. mindspore/train/callback/_callback.py +2 -16
  440. mindspore/train/callback/_checkpoint.py +24 -40
  441. mindspore/train/callback/_cluster_monitor.py +14 -18
  442. mindspore/train/callback/_flops_collector.py +2 -3
  443. mindspore/train/callback/_history.py +7 -4
  444. mindspore/train/callback/_lambda_callback.py +2 -2
  445. mindspore/train/callback/_landscape.py +0 -3
  446. mindspore/train/callback/_loss_monitor.py +2 -1
  447. mindspore/train/callback/_on_request_exit.py +6 -5
  448. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  449. mindspore/train/callback/_summary_collector.py +8 -13
  450. mindspore/train/callback/_time_monitor.py +2 -1
  451. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -105
  452. mindspore/train/data_sink.py +25 -2
  453. mindspore/train/dataset_helper.py +4 -5
  454. mindspore/train/loss_scale_manager.py +8 -7
  455. mindspore/train/metrics/accuracy.py +3 -3
  456. mindspore/train/metrics/confusion_matrix.py +9 -9
  457. mindspore/train/metrics/error.py +3 -3
  458. mindspore/train/metrics/hausdorff_distance.py +4 -4
  459. mindspore/train/metrics/mean_surface_distance.py +3 -3
  460. mindspore/train/metrics/metric.py +0 -12
  461. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  462. mindspore/train/metrics/precision.py +8 -6
  463. mindspore/train/metrics/recall.py +9 -9
  464. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  465. mindspore/train/mind_ir_pb2.py +19 -12
  466. mindspore/train/model.py +262 -127
  467. mindspore/train/serialization.py +246 -988
  468. mindspore/train/summary/_summary_adapter.py +2 -2
  469. mindspore/train/summary/summary_record.py +1 -1
  470. mindspore/turbojpeg.dll +0 -0
  471. mindspore/utils/__init__.py +3 -2
  472. mindspore/utils/dryrun.py +4 -2
  473. mindspore/utils/hooks.py +81 -0
  474. mindspore/utils/runtime_execution_order_check.py +2 -0
  475. mindspore/utils/utils.py +138 -4
  476. mindspore/vcmeta.dll +0 -0
  477. mindspore/vcruntime140.dll +0 -0
  478. mindspore/vcruntime140_1.dll +0 -0
  479. mindspore/version.py +1 -1
  480. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/METADATA +2 -1
  481. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/RECORD +485 -440
  482. mindspore/_install_custom.py +0 -43
  483. mindspore/common/_register_for_adapter.py +0 -74
  484. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  485. mindspore/ops/auto_generate/gen_arg_handler.py +0 -136
  486. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  487. mindspore/ops_generate/gen_constants.py +0 -190
  488. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  489. mindspore/ops_generate/ops_primitive_h_generator.py +0 -81
  490. /mindspore/ops_generate/{base_generator.py → common/base_generator.py} +0 -0
  491. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/WHEEL +0 -0
  492. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/entry_points.txt +0 -0
  493. {mindspore-2.5.0.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,263 @@
1
+ # Copyright 2025 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ============================================================================
16
+ """Cell_wrapper."""
17
+ from __future__ import absolute_import
18
+ from __future__ import division
19
+
20
+ from mindspore import nn
21
+ from mindspore.ops import operations as P
22
+ from mindspore.nn.cell import Cell
23
+ from mindspore.nn.wrap.cell_wrapper import _MicroBatch
24
+ from mindspore import log as logger
25
+
26
+
27
+ __all__ = ['PipelineCell', 'Pipeline', 'MicroBatchInterleaved', 'GradAccumulation']
28
+
29
+
30
+ class PipelineCell(Cell):
31
+ """
32
+ Slice MiniBatch into finer-grained MicroBatch for use in pipeline-parallel training.
33
+
34
+ Note:
35
+ micro_size must be greater or equal to pipeline stages.
36
+
37
+ Args:
38
+ network (Cell): The target network to wrap.
39
+ micro_size (int): MicroBatch size.
40
+ stage_config (dict, optional): The stage configuration for each cell's execution in pipeline parallel.
41
+
42
+ Supported Platforms:
43
+ ``Ascend``
44
+
45
+ Examples:
46
+ >>> import mindspore.nn as nn
47
+ >>> # Define the network structure of LeNet5. Refer to
48
+ >>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
49
+ >>> net = LeNet5()
50
+ >>> net = nn.PipelineCell(net, 4, stage_config={"cell_name_0": 0, "cell_name_1": 1})
51
+ """
52
+ def __init__(self, network, micro_size, stage_config=None):
53
+ super(PipelineCell, self).__init__(auto_prefix=False)
54
+ self.network = network
55
+ self.micro_inputs = nn.CellList()
56
+ self.micro_size = micro_size
57
+ self.add_list = []
58
+ if not isinstance(network, Cell):
59
+ raise TypeError("For 'PipelineCell', the argument 'network' must cell type, "
60
+ "but got the type : {}.".format(type(network)))
61
+ if not isinstance(micro_size, int):
62
+ raise TypeError("For 'PipelineCell', the argument 'micro_size' must be integer, "
63
+ "but got the type : {}.".format(type(micro_size)))
64
+ if micro_size <= 0:
65
+ raise ValueError("For 'PipelineCell', the argument 'micro_size' must be large than 0, "
66
+ "but got {}.".format(micro_size))
67
+ for i in range(micro_size):
68
+ micro_input = _MicroBatch(micro_size)
69
+ self.micro_inputs.append(micro_input)
70
+ self.add = P.Add().add_prim_attr("pipeline_end", i)
71
+ self.add_list.append(self.add)
72
+ self._get_attr_from_cell(network)
73
+
74
+ # prase stage_config
75
+ config_dict = {}
76
+ if stage_config is not None:
77
+ for cell_name, stage_num in stage_config.items():
78
+ config_cell_name = cell_name
79
+ config_stage_num = stage_num
80
+ config_dict[config_cell_name] = config_stage_num
81
+
82
+ # set cell.stage_config
83
+ for cell_name, cell in self.network.cells_and_names():
84
+ for config_cell_name, config_stage_num in config_dict.copy().items():
85
+ if not cell_name or not config_cell_name:
86
+ continue
87
+ if cell_name == config_cell_name:
88
+ setattr(cell, "pipeline_stage", config_stage_num)
89
+ del config_dict[config_cell_name]
90
+
91
+ for config_cell_name, config_stage_num in config_dict.copy().items():
92
+ if str(network) == config_cell_name:
93
+ setattr(network, "pipeline_stage", config_stage_num)
94
+ del config_dict[config_cell_name]
95
+
96
+ # if there are any config elements left, print them
97
+ if config_dict:
98
+ for config_cell_name, config_stage_num in config_dict.items():
99
+ logger.error("pipeline_cell stage_config set pipeline_stage fail!")
100
+ logger.warning("config cell name:" + str(config_cell_name) +
101
+ " config stage num:" + str(config_stage_num))
102
+ logger.warning("network:" + str(self.network))
103
+ logger.warning("cell name available:")
104
+ for cell_name, cell in self.network.cells_and_names():
105
+ logger.warning(cell_name)
106
+ raise KeyError("For 'PipelineCell', the argument 'stage_config' : {} is not "
107
+ "found in 'network' : {}".format(config_dict, network))
108
+
109
+ def construct(self, *inputs):
110
+ ret = None
111
+ for i in range(self.micro_size):
112
+ micro_input = self.micro_inputs[i](i, *inputs)
113
+ output = self.network(*micro_input)
114
+ if ret is not None:
115
+ ret = self.add_list[i](ret, output)
116
+ else:
117
+ ret = output
118
+ return ret
119
+
120
+
121
+ class Pipeline(PipelineCell):
122
+ """
123
+ Specify the number of micro_batch for pipeline parallelism and the division rules for stage.
124
+
125
+ Note:
126
+ micro_size must be greater or equal to pipeline stages.
127
+
128
+ Args:
129
+ network (Cell): The target network to wrap.
130
+ micro_size (int): MicroBatch size.
131
+ stage_config (dict, optional): Stage configuration for cell's execution in pipeline parallel. Default ``None``.
132
+
133
+ Raises:
134
+ TypeError: The type of `net` is not cell.
135
+ TypeError: If the type of `micro_size` is not int.
136
+ ValueError: When `micro_size` is 0 or negative value.
137
+ KeyError: `dict` cell name matching exception,
138
+ there are remaining configuration items after traversing all `cell` under the current net.
139
+
140
+ Supported Platforms:
141
+ ``Ascend``
142
+
143
+ Examples:
144
+ >>> from mindspore.parallel.nn import Pipeline
145
+ >>> # Define the network structure of LeNet5. Refer to
146
+ >>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
147
+ >>> net = LeNet5()
148
+ >>> net = Pipeline(net, 4, stage_config={"cell_name_0": 0, "cell_name_1": 1})
149
+ """
150
+
151
+
152
+ class MicroBatchInterleaved(Cell):
153
+ """
154
+ Implement the static graph parallel multi-copy splitting function to enable concurrent computation
155
+ and communication.
156
+ Application scenario: When there is model parallelism in semi-automatic mode
157
+ and network, if the first slice data is calculating forward, the second slice data will execute the
158
+ communication operators at the same time, to achieve the performance acceleration of communication and computing
159
+ concurrency.
160
+
161
+ Args:
162
+ network (Cell): The target network to wrap.
163
+ interleave_num (int, optional): split num of batch size. Default: ``2`` .
164
+
165
+ Inputs:
166
+ tuple[Tensor]. It's the same with the input of the `network` .
167
+
168
+ Outputs:
169
+ The wrapped input. The output of the input `network` should be a Tensor.
170
+
171
+ Supported Platforms:
172
+ ``Ascend``
173
+
174
+ Examples:
175
+ >>> import mindspore.nn as nn
176
+ >>> # Define the network structure of LeNet5. Refer to
177
+ >>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
178
+ >>> net = LeNet5()
179
+ >>> net = nn.MicroBatchInterleaved(net, 2)
180
+ """
181
+ def __init__(self, network, interleave_num=2):
182
+ super(MicroBatchInterleaved, self).__init__(auto_prefix=False)
183
+ if not isinstance(interleave_num, int):
184
+ raise TypeError("For 'MicroBatchInterleaved', the argument 'interleave_num' must be integer, "
185
+ "but got the type : {}.".format(type(interleave_num)))
186
+ if interleave_num <= 0:
187
+ raise ValueError("For 'MicroBatchInterleaved', the argument 'interleave_num' must be large than 0, "
188
+ "but got {}.".format(interleave_num))
189
+ self.network = network
190
+ self.interleave_num = interleave_num
191
+ self.interleave_inputs = nn.CellList()
192
+ self.add = P.Add().add_prim_attr("micro_interleaved_add_flag", True)
193
+ for _ in range(interleave_num):
194
+ interleave_data = _MicroBatch(interleave_num)
195
+ interleave_data.strided_slice.add_prim_attr("strided_slice_flag", True)
196
+ interleave_data.strided_slice.add_prim_attr("interleave_num", interleave_num)
197
+ self.interleave_inputs.append(interleave_data)
198
+ self._get_attr_from_cell(network)
199
+
200
+ def construct(self, *inputs):
201
+ output = 0.0
202
+ for i in range(self.interleave_num):
203
+ interleave_input = self.interleave_inputs[i](i, *inputs)
204
+ output = self.add(output, self.network(*interleave_input))
205
+ return output
206
+
207
+
208
+ class GradAccumulation(Cell):
209
+ """
210
+ Implementation of parallel gradient accumulation for static graphs.
211
+
212
+ Args:
213
+ network (Cell): The target network to wrap.
214
+ micro_size (int): MicroBatch size.
215
+
216
+ Raises:
217
+ TypeError: The type of `network` is not cell.
218
+ TypeError: If the type of `micro_size` is not int.
219
+ ValueError: When `micro_size` is 0 or negative value.
220
+
221
+ Supported Platforms:
222
+ ``Ascend``
223
+
224
+ Examples:
225
+ >>> from mindspore.parallel.nn import GradAccumulation
226
+ >>> # Define the network structure of LeNet5. Refer to
227
+ >>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
228
+ >>> net = LeNet5()
229
+ >>> net = GradAccumulation(net, 4)
230
+ """
231
+ def __init__(self, network, micro_size):
232
+ super(GradAccumulation, self).__init__(auto_prefix=False)
233
+ self.network = network
234
+ self.micro_inputs = nn.CellList()
235
+ self.micro_size = micro_size
236
+ self.add_list = []
237
+ if not isinstance(network, Cell):
238
+ raise TypeError("For 'GradAccumulation', the argument 'network' must cell type, "
239
+ "but got the type : {}.".format(type(network)))
240
+ if not isinstance(micro_size, int):
241
+ raise TypeError("For 'GradAccumulation', the argument 'micro_size' must be integer, "
242
+ "but got the type : {}.".format(type(micro_size)))
243
+ if micro_size <= 0:
244
+ raise ValueError("For 'GradAccumulation', the argument 'micro_size' must be large than 0, "
245
+ "but got {}.".format(micro_size))
246
+ for i in range(micro_size):
247
+ micro_input = _MicroBatch(micro_size)
248
+ micro_input.strided_slice.add_prim_attr("grad_accu_num", micro_size)
249
+ self.micro_inputs.append(micro_input)
250
+ self.add = P.Add().add_prim_attr("forward_end", i)
251
+ self.add_list.append(self.add)
252
+ self._get_attr_from_cell(network)
253
+
254
+ def construct(self, *inputs):
255
+ ret = None
256
+ for i in range(self.micro_size):
257
+ micro_input = self.micro_inputs[i](i, *inputs)
258
+ output = self.network(*micro_input)
259
+ if ret is not None:
260
+ ret = self.add_list[i](ret, output)
261
+ else:
262
+ ret = output
263
+ return ret
@@ -0,0 +1,169 @@
1
+ # Copyright 2025 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """parallel serialization"""
16
+ from __future__ import absolute_import
17
+
18
+ from mindspore import context
19
+ from mindspore.nn.cell import Cell
20
+ from mindspore.ops import functional as F, composite as C, operations as P
21
+ import mindspore.common.dtype as mstype
22
+ from mindspore.common.sparse_tensor import Tensor
23
+ from mindspore.common.api import jit
24
+ from mindspore.common.parameter import Parameter
25
+ from mindspore.nn.layer import Identity
26
+ from mindspore.parallel._utils import _get_enable_parallel_optimizer
27
+
28
+ __all__ = ['PipelineGradReducer']
29
+
30
+
31
+ grad_scale = C.MultitypeFuncGraph("grad_scale")
32
+ shard_grad_scale = C.MultitypeFuncGraph("shard_grad_scale")
33
+ reciprocal = P.Reciprocal()
34
+
35
+
36
+ @grad_scale.register("Tensor", "Tensor", "Tensor")
37
+ def tensor_grad_scale_pipeline(scale, grad, accu_grad):
38
+ accu_grad = F.depend(accu_grad, grad)
39
+ new_grad = accu_grad * reciprocal(scale)
40
+ accu_grad = F.depend(accu_grad, new_grad)
41
+ zeros = F.tensor_mul(accu_grad, 0.0)
42
+ new_grad = F.depend(new_grad, F.assign(accu_grad, zeros))
43
+ return new_grad
44
+
45
+
46
+ @shard_grad_scale.register("Tensor", "Tensor", "Tensor")
47
+ def tensor_shard_grad_scale_pipeline(scale, grad, accu_grad):
48
+ new_grad = grad * reciprocal(scale)
49
+ accu_grad = F.depend(accu_grad, new_grad)
50
+ new_grad = F.depend(new_grad, F.assign(accu_grad, F.zeros_like(accu_grad)))
51
+ return new_grad
52
+
53
+
54
+ class PipelineGradReducer(Cell):
55
+ """
56
+ Functional training scenarios for gradient statute and accumulation of pipeline parallel.
57
+
58
+ Args:
59
+ parameters (list): the parameters to be updated.
60
+ scale_sense (float, optional): the scale sense of the gradient. Default: 1.0.
61
+ opt_shard(bool, optional): if use parallel optimizer, set opt_shard True. Default: ``None``.
62
+
63
+ Raise:
64
+ RuntimeError: If the mode is not graph mode.
65
+
66
+ Supported Platforms:
67
+ ``Ascend`` ``GPU``
68
+
69
+ Examples:
70
+ .. note::
71
+ Before running the following examples, you need to configure the communication environment variables.
72
+
73
+ For the Ascend devices, users need to prepare the rank table, set rank_id and device_id.
74
+ Please see the `rank table Startup
75
+ <https://www.mindspore.cn/tutorials/en/master/parallel/rank_table.html>`_
76
+ for more details.
77
+
78
+ This example should be run with multiple devices.
79
+
80
+ >>> import numpy as np
81
+ >>> import mindspore as ms
82
+ >>> from mindspore import nn, ops, Tensor
83
+ >>> from mindspore.communication import init
84
+ >>>
85
+ >>> ms.set_context(mode=ms.GRAPH_MODE)
86
+ >>> ms.reset_auto_parallel_context()
87
+ >>> init()
88
+ >>> ms.set_seed(1)
89
+ >>>
90
+ >>> class Network(nn.Cell):
91
+ ... def __init__(self, in_features, out_features, sens=1.0):
92
+ ... super().__init__()
93
+ ... self.layer1 = nn.Dense(in_features, 16)
94
+ ... self.relu1 = nn.ReLU()
95
+ ... self.layer2 = nn.Dense(16, 16)
96
+ ... self.relu2 = nn.ReLU()
97
+ ... self.layer3 = nn.Dense(16, out_features)
98
+ ...
99
+ ... def construct(self, x):
100
+ ... x = self.layer1(x)
101
+ ... x = self.relu1(x)
102
+ ... x = self.layer2(x)
103
+ ... x = self.relu2(x)
104
+ ... logits = self.layer3(x)
105
+ ... return logits
106
+ >>>
107
+ >>> size, in_features, out_features = 16, 32, 10
108
+ >>> net = Network(in_features, out_features)
109
+ >>> net.layer1.pipeline_stage = 0
110
+ >>> net.relu1.pipeline_stage = 0
111
+ >>> net.layer2.pipeline_stage = 0
112
+ >>> net.relu2.pipeline_stage = 1
113
+ >>> net.layer3.pipeline_stage = 1
114
+ >>> loss_fn = nn.CrossEntropyLoss()
115
+ >>> optimizer = nn.SGD(net.trainable_params(), 1e-2)
116
+ >>> net_with_loss = nn.Pipeline(nn.WithLossCell(net, loss_fn), 2)
117
+ >>> net_with_loss.set_train()
118
+ >>> def forward_fn(inputs, target):
119
+ ... loss = net_with_loss(inputs, target)
120
+ ... return loss
121
+ >>>
122
+ >>> grad_fn = ops.value_and_grad(forward_fn, None, net_with_loss.trainable_params())
123
+ >>> pp_grad_reducer = nn.PipelineGradReducer(optimizer.parameters)
124
+ >>>
125
+ >>> @ms.jit
126
+ >>> def train_one_step(inputs, target):
127
+ ... loss, grads = grad_fn(inputs, target)
128
+ ... grads = pp_grad_reducer(grads)
129
+ ... optimizer(grads)
130
+ ... return loss, grads
131
+ >>>
132
+ >>> parallel_net = AutoParallel(train_one_step, parallel_mode="semi_auto")
133
+ >>> parallel_net.pipeline(stages=2)
134
+ >>> inputs = Tensor(np.ones([size, in_features]).astype(np.float32))
135
+ >>> label = Tensor(np.ones([size, out_features]).astype(np.float32))
136
+ >>> loss, _ = train_one_step(inputs, label)
137
+ >>> print(loss)
138
+ 46.36721
139
+ """
140
+ def __init__(self, parameters, scale_sense=1.0, opt_shard=None):
141
+ super(PipelineGradReducer, self).__init__(auto_prefix=False)
142
+ self._check_mode()
143
+ self.accu_grads = parameters.clone(prefix="accu_grads", init="zeros")
144
+ self.grad_reducer = Identity()
145
+ self.degree = Tensor(1, mstype.float32)
146
+ self.scale_sense = Parameter(scale_sense, name='scale_sense')
147
+ self.hyper_map = C.HyperMap()
148
+ if opt_shard is None:
149
+ self.opt_shard = _get_enable_parallel_optimizer()
150
+ else:
151
+ self.opt_shard = opt_shard
152
+
153
+ @jit
154
+ def construct(self, grads):
155
+ new_grads = None
156
+ if self.opt_shard:
157
+ grads = self.grad_reducer(grads)
158
+ new_grads = self.hyper_map(F.partial(shard_grad_scale, self.scale_sense * self.degree),
159
+ grads, self.accu_grads)
160
+ else:
161
+ accu_grads = self.grad_reducer(self.accu_grads)
162
+ new_grads = self.hyper_map(F.partial(grad_scale, self.scale_sense * self.degree), grads, accu_grads)
163
+ return new_grads
164
+
165
+ def _check_mode(self):
166
+ """check parallel mode"""
167
+ mode = context.get_context('mode')
168
+ if mode != context.GRAPH_MODE:
169
+ raise RuntimeError(f"PipelineGradReducer only support graph mode, but get {mode}")
@@ -19,7 +19,10 @@ __all__ = ["parameter_broadcast"]
19
19
 
20
20
  import numpy as np
21
21
  import mindspore as ms
22
- from mindspore.communication import get_rank, create_group, get_group_size
22
+ from mindspore.communication import create_group, get_group_size
23
+ from mindspore.parallel._utils import _get_auto_parallel_net, _parallel_mode_map, _check_rank
24
+ # disable pylint too broad Exception
25
+ # pylint: disable=W0212
23
26
 
24
27
 
25
28
  def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
@@ -34,7 +37,8 @@ def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
34
37
  layout (Dict): Parameter layout dictionary. Come from
35
38
  :func:`mindspore.nn.Cell.parameter_layout_dict`
36
39
  or read from file(for example: "strategy.ckpt" saved by using the
37
- `strategy_ckpt_config` parameter of :func:`mindspore.set_auto_parallel_context`).
40
+ `strategy_ckpt_config` parameter of
41
+ :func:`mindspore.parallel.auto_parallel.AutoParallel.save_param_strategy_file` ).
38
42
  The key is param name, the value is the layout of this parameter.
39
43
  cur_rank (int, optional): current rank id. Default: ``0``.
40
44
  initial_rank (int, optional): Start rank id for each pipeline. Default: ``0``.
@@ -45,6 +49,9 @@ def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
45
49
  ValueError: Parameter name in `layout` can not be found in
46
50
  :func:`mindspore.nn.Cell.parameters_dict`.
47
51
 
52
+ Supported Platforms:
53
+ ``Ascend``
54
+
48
55
  Examples:
49
56
  >>> import os
50
57
  >>> import mindspore as ms
@@ -53,11 +60,11 @@ def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
53
60
  >>> from mindspore.communication import init
54
61
  >>> from mindspore.common.initializer import initializer
55
62
  >>> from mindspore.train import Model
56
- >>> from mindspore.parallel.parameter_broadcast import parameter_broadcast
57
63
  >>> from mindspore.train.serialization import load_checkpoint, load_param_into_net
64
+ >>> from mindspore.parallel.auto_parallel import AutoParallel
65
+ >>> from mindspore.parallel import parameter_broadcast
58
66
  >>> ms.set_context(mode=ms.GRAPH_MODE)
59
67
  >>> ms.runtime.set_memory(max_size="28GB")
60
- >>> ms.set_auto_parallel_context(parallel_mode=ms.ParallelMode.SEMI_AUTO_PARALLEL)
61
68
  >>> init()
62
69
  >>> ms.set_seed(1)
63
70
  >>> class Network(nn.Cell):
@@ -90,7 +97,8 @@ def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
90
97
  >>> dataset = create_dataset()
91
98
  >>> optim = nn.SGD(net.trainable_params(), 1e-2)
92
99
  >>> loss = nn.CrossEntropyLoss()
93
- >>> model = Model(net, loss_fn=loss, optimizer=optim)
100
+ >>> parallel_net = AutoParallel(net)
101
+ >>> model = Model(parallel_net, loss_fn=loss, optimizer=optim)
94
102
  >>> model.train(1, dataset)
95
103
  >>> ms.save_checkpoint(net, "./simple.ckpt", False)
96
104
  >>> layout = model.train_network.parameter_layout_dict
@@ -104,17 +112,20 @@ def parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
104
112
  ... print("step end, cur step num: ", cb_params.cur_step_num, flush=True)
105
113
  >>> model.train(1, dataset, callbacks=[LossCallBack()])
106
114
  """
107
- if not layout:
115
+ if not layout or get_group_size() <= 1:
108
116
  return
109
117
  from mindspore.train._utils import get_parameter_redundancy, remove_param_redundancy
110
118
  from mindspore.nn.wrap.cell_wrapper import AllreduceGraph
111
- origin_parallel_mode = ms.get_auto_parallel_context("parallel_mode")
112
- if origin_parallel_mode not in ("semi_auto_parallel", "auto_parallel"):
113
- return
114
- if cur_rank != get_rank():
115
- raise ValueError(f"For parameter broadcast, the cur_rank: {cur_rank} is wrong.")
116
- if initial_rank % (get_group_size() / ms.get_auto_parallel_context("pipeline_stages")) != 0:
117
- raise ValueError(f"For parameter broadcast, the initial_rank: {initial_rank} is wrong.")
119
+ origin_parallel_mode = ""
120
+ pipeline_stages = 1
121
+ parallel_net = _get_auto_parallel_net(net)
122
+ if type(parallel_net).__name__ == 'AutoParallel':
123
+ origin_parallel_mode = _parallel_mode_map(parallel_net._parallel_mode)
124
+ pipeline_stages = parallel_net._pipeline_stages
125
+ else:
126
+ origin_parallel_mode = ms.get_auto_parallel_context("parallel_mode")
127
+ pipeline_stages = ms.get_auto_parallel_context("pipeline_stages")
128
+ _check_rank(cur_rank, initial_rank, pipeline_stages)
118
129
  param_redundancy = get_parameter_redundancy(layout, initial_rank)
119
130
  if not param_redundancy:
120
131
  return