mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0rc1__cp311-cp311-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 (602) 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 +13 -6
  5. mindspore/_c_dataengine.cp311-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp311-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp311-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -0
  9. mindspore/_checkparam.py +3 -38
  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/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  14. mindspore/_extends/parse/__init__.py +6 -7
  15. mindspore/_extends/parse/compile_config.py +83 -0
  16. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  17. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +394 -0
  18. mindspore/_extends/parse/jit_fallback_modules/__init__.py +0 -0
  19. mindspore/_extends/parse/jit_fallback_modules/check_utils.py +123 -0
  20. mindspore/_extends/parse/jit_fallback_modules/third_party_modules.py +50 -0
  21. mindspore/_extends/parse/parser.py +46 -197
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +217 -98
  24. mindspore/_extends/pijit/__init__.py +2 -2
  25. mindspore/_extends/pijit/pijit_func_white_list.py +17 -12
  26. mindspore/_extends/pijit/tensor_func_list.py +27 -0
  27. mindspore/_extends/utils.py +1 -1
  28. mindspore/amp.py +11 -5
  29. mindspore/atlprov.dll +0 -0
  30. mindspore/avcodec-59.dll +0 -0
  31. mindspore/avdevice-59.dll +0 -0
  32. mindspore/avfilter-8.dll +0 -0
  33. mindspore/avformat-59.dll +0 -0
  34. mindspore/avutil-57.dll +0 -0
  35. mindspore/boost/__init__.py +2 -2
  36. mindspore/boost/base.py +3 -7
  37. mindspore/boost/boost_cell_wrapper.py +138 -43
  38. mindspore/c1.dll +0 -0
  39. mindspore/c1xx.dll +0 -0
  40. mindspore/c2.dll +0 -0
  41. mindspore/common/__init__.py +6 -3
  42. mindspore/common/_grad_function.py +56 -0
  43. mindspore/common/_pijit_context.py +14 -5
  44. mindspore/common/_register_for_tensor.py +1 -2
  45. mindspore/common/_stub_tensor.py +30 -14
  46. mindspore/common/_tensor_cpp_method.py +17 -0
  47. mindspore/common/_tensor_docs.py +4760 -0
  48. mindspore/common/api.py +435 -371
  49. mindspore/common/auto_dynamic_shape.py +41 -44
  50. mindspore/common/dtype.py +39 -36
  51. mindspore/common/dump.py +9 -6
  52. mindspore/common/file_system.py +9 -1
  53. mindspore/common/generator.py +2 -0
  54. mindspore/common/hook_handle.py +6 -2
  55. mindspore/common/initializer.py +13 -10
  56. mindspore/common/jit_begin_end.py +94 -0
  57. mindspore/common/jit_config.py +6 -1
  58. mindspore/common/jit_context.py +76 -0
  59. mindspore/common/jit_trace.py +378 -0
  60. mindspore/common/lazy_inline.py +9 -3
  61. mindspore/common/mindir_util.py +10 -2
  62. mindspore/common/mutable.py +5 -4
  63. mindspore/common/parameter.py +135 -52
  64. mindspore/common/seed.py +2 -2
  65. mindspore/common/sparse_tensor.py +23 -17
  66. mindspore/common/tensor.py +951 -1992
  67. mindspore/communication/__init__.py +7 -5
  68. mindspore/communication/_comm_helper.py +52 -2
  69. mindspore/communication/comm_func.py +240 -181
  70. mindspore/communication/management.py +95 -26
  71. mindspore/context.py +314 -566
  72. mindspore/dataset/__init__.py +65 -37
  73. mindspore/dataset/audio/__init__.py +2 -8
  74. mindspore/dataset/audio/transforms.py +3 -17
  75. mindspore/dataset/callback/ds_callback.py +2 -1
  76. mindspore/dataset/core/config.py +87 -6
  77. mindspore/dataset/engine/cache_admin.py +3 -3
  78. mindspore/dataset/engine/cache_client.py +6 -5
  79. mindspore/dataset/engine/datasets.py +292 -267
  80. mindspore/dataset/engine/datasets_audio.py +22 -8
  81. mindspore/dataset/engine/datasets_standard_format.py +46 -27
  82. mindspore/dataset/engine/datasets_text.py +78 -48
  83. mindspore/dataset/engine/datasets_user_defined.py +182 -116
  84. mindspore/dataset/engine/datasets_vision.py +120 -44
  85. mindspore/dataset/engine/iterators.py +283 -63
  86. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +1 -1
  87. mindspore/dataset/engine/obs/util.py +8 -0
  88. mindspore/dataset/engine/queue.py +40 -0
  89. mindspore/dataset/engine/samplers.py +289 -43
  90. mindspore/dataset/engine/serializer_deserializer.py +3 -2
  91. mindspore/dataset/engine/validators.py +53 -11
  92. mindspore/dataset/text/__init__.py +7 -6
  93. mindspore/dataset/text/transforms.py +6 -5
  94. mindspore/dataset/text/utils.py +3 -3
  95. mindspore/dataset/transforms/__init__.py +0 -9
  96. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  97. mindspore/dataset/transforms/transforms.py +31 -14
  98. mindspore/dataset/utils/browse_dataset.py +1 -1
  99. mindspore/dataset/vision/__init__.py +2 -9
  100. mindspore/dataset/vision/transforms.py +202 -158
  101. mindspore/dataset/vision/utils.py +7 -5
  102. mindspore/dataset/vision/validators.py +1 -2
  103. mindspore/device_context/__init__.py +21 -0
  104. mindspore/device_context/ascend/__init__.py +25 -0
  105. mindspore/device_context/ascend/device.py +72 -0
  106. mindspore/device_context/ascend/op_debug.py +153 -0
  107. mindspore/device_context/ascend/op_precision.py +193 -0
  108. mindspore/device_context/ascend/op_tuning.py +123 -0
  109. mindspore/{ops_generate/gen_constants.py → device_context/cpu/__init__.py} +6 -17
  110. mindspore/device_context/cpu/device.py +62 -0
  111. mindspore/device_context/cpu/op_tuning.py +43 -0
  112. mindspore/device_context/gpu/__init__.py +21 -0
  113. mindspore/device_context/gpu/device.py +70 -0
  114. mindspore/device_context/gpu/op_precision.py +67 -0
  115. mindspore/device_context/gpu/op_tuning.py +175 -0
  116. mindspore/device_manager.py +170 -0
  117. mindspore/dnnl.dll +0 -0
  118. mindspore/dpcmi.dll +0 -0
  119. mindspore/experimental/es/embedding_service.py +35 -27
  120. mindspore/experimental/llm_boost/__init__.py +1 -0
  121. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  122. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  123. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  124. mindspore/experimental/llm_boost/atb/boost_base.py +2 -3
  125. mindspore/experimental/llm_boost/atb/llama_boost.py +6 -1
  126. mindspore/experimental/llm_boost/register.py +1 -0
  127. mindspore/experimental/map_parameter.py +4 -4
  128. mindspore/experimental/optim/adadelta.py +6 -6
  129. mindspore/experimental/optim/adagrad.py +4 -4
  130. mindspore/experimental/optim/adam.py +7 -0
  131. mindspore/experimental/optim/adamax.py +4 -4
  132. mindspore/experimental/optim/adamw.py +4 -0
  133. mindspore/experimental/optim/asgd.py +1 -1
  134. mindspore/experimental/optim/lr_scheduler.py +73 -46
  135. mindspore/experimental/optim/radam.py +34 -31
  136. mindspore/experimental/optim/rprop.py +1 -1
  137. mindspore/experimental/optim/sgd.py +1 -1
  138. mindspore/hal/contiguous_tensors_handle.py +6 -10
  139. mindspore/hal/device.py +55 -53
  140. mindspore/hal/event.py +52 -52
  141. mindspore/hal/memory.py +157 -117
  142. mindspore/hal/stream.py +150 -109
  143. mindspore/include/api/context.h +0 -1
  144. mindspore/include/dataset/constants.h +7 -4
  145. mindspore/include/dataset/execute.h +2 -2
  146. mindspore/jpeg62.dll +0 -0
  147. mindspore/log.py +50 -0
  148. mindspore/mindrecord/__init__.py +21 -8
  149. mindspore/mindrecord/config.py +17 -316
  150. mindspore/mindrecord/filereader.py +1 -9
  151. mindspore/mindrecord/filewriter.py +5 -15
  152. mindspore/mindrecord/mindpage.py +1 -9
  153. mindspore/mindspore_backend_common.dll +0 -0
  154. mindspore/mindspore_backend_manager.dll +0 -0
  155. mindspore/mindspore_common.dll +0 -0
  156. mindspore/mindspore_core.dll +0 -0
  157. mindspore/mindspore_dump.dll +0 -0
  158. mindspore/mindspore_frontend.dll +0 -0
  159. mindspore/mindspore_glog.dll +0 -0
  160. mindspore/mindspore_memory_pool.dll +0 -0
  161. mindspore/mindspore_ms_backend.dll +0 -0
  162. mindspore/mindspore_ops.dll +0 -0
  163. mindspore/{mindspore_backend.dll → mindspore_ops_host.dll} +0 -0
  164. mindspore/mindspore_ops_kernel_common.dll +0 -0
  165. mindspore/mindspore_profiler.dll +0 -0
  166. mindspore/mindspore_pyboost.dll +0 -0
  167. mindspore/mindspore_pynative.dll +0 -0
  168. mindspore/mindspore_res_manager.dll +0 -0
  169. mindspore/mindspore_runtime_pipeline.dll +0 -0
  170. mindspore/mint/__init__.py +796 -759
  171. mindspore/mint/distributed/__init__.py +70 -4
  172. mindspore/mint/distributed/distributed.py +2679 -44
  173. mindspore/mint/linalg/__init__.py +8 -0
  174. mindspore/mint/nn/__init__.py +743 -22
  175. mindspore/mint/nn/functional.py +716 -23
  176. mindspore/mint/nn/layer/__init__.py +21 -4
  177. mindspore/mint/nn/layer/_functions.py +334 -0
  178. mindspore/mint/nn/layer/activation.py +276 -1
  179. mindspore/mint/nn/layer/basic.py +123 -0
  180. mindspore/mint/nn/layer/conv.py +921 -0
  181. mindspore/mint/nn/layer/normalization.py +223 -28
  182. mindspore/mint/nn/layer/padding.py +797 -0
  183. mindspore/mint/nn/layer/pooling.py +235 -0
  184. mindspore/mint/optim/__init__.py +3 -1
  185. mindspore/mint/optim/adam.py +223 -0
  186. mindspore/mint/optim/adamw.py +26 -19
  187. mindspore/mint/optim/sgd.py +171 -0
  188. mindspore/mint/special/__init__.py +2 -1
  189. mindspore/msobj140.dll +0 -0
  190. mindspore/mspdb140.dll +0 -0
  191. mindspore/mspdbcore.dll +0 -0
  192. mindspore/mspdbst.dll +0 -0
  193. mindspore/mspft140.dll +0 -0
  194. mindspore/msvcdis140.dll +0 -0
  195. mindspore/msvcp140_1.dll +0 -0
  196. mindspore/msvcp140_2.dll +0 -0
  197. mindspore/msvcp140_atomic_wait.dll +0 -0
  198. mindspore/msvcp140_codecvt_ids.dll +0 -0
  199. mindspore/multiprocessing/__init__.py +5 -0
  200. mindspore/nn/__init__.py +4 -1
  201. mindspore/nn/cell.py +1370 -189
  202. mindspore/nn/dynamic_lr.py +2 -1
  203. mindspore/nn/layer/activation.py +29 -27
  204. mindspore/nn/layer/basic.py +51 -35
  205. mindspore/nn/layer/channel_shuffle.py +3 -3
  206. mindspore/nn/layer/container.py +1 -1
  207. mindspore/nn/layer/conv.py +22 -17
  208. mindspore/nn/layer/embedding.py +12 -11
  209. mindspore/nn/layer/normalization.py +56 -49
  210. mindspore/nn/layer/padding.py +4 -3
  211. mindspore/nn/layer/pooling.py +120 -42
  212. mindspore/nn/layer/rnn_cells.py +1 -1
  213. mindspore/nn/layer/rnns.py +2 -1
  214. mindspore/nn/layer/timedistributed.py +5 -5
  215. mindspore/nn/layer/transformer.py +59 -36
  216. mindspore/nn/learning_rate_schedule.py +8 -4
  217. mindspore/nn/loss/loss.py +58 -55
  218. mindspore/nn/optim/ada_grad.py +7 -5
  219. mindspore/nn/optim/adadelta.py +11 -9
  220. mindspore/nn/optim/adafactor.py +1 -1
  221. mindspore/nn/optim/adam.py +17 -13
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +1 -1
  225. mindspore/nn/optim/ftrl.py +11 -9
  226. mindspore/nn/optim/lamb.py +1 -1
  227. mindspore/nn/optim/lars.py +1 -4
  228. mindspore/nn/optim/lazyadam.py +12 -10
  229. mindspore/nn/optim/momentum.py +7 -6
  230. mindspore/nn/optim/optimizer.py +3 -3
  231. mindspore/nn/optim/proximal_ada_grad.py +12 -10
  232. mindspore/nn/optim/rmsprop.py +13 -12
  233. mindspore/nn/optim/rprop.py +11 -9
  234. mindspore/nn/optim/sgd.py +9 -6
  235. mindspore/nn/optim/tft_wrapper.py +5 -2
  236. mindspore/nn/optim/thor.py +2 -1
  237. mindspore/nn/probability/bijector/bijector.py +17 -11
  238. mindspore/nn/probability/bijector/gumbel_cdf.py +5 -5
  239. mindspore/nn/probability/bijector/invert.py +2 -2
  240. mindspore/nn/probability/bijector/scalar_affine.py +3 -3
  241. mindspore/nn/probability/bijector/softplus.py +3 -2
  242. mindspore/nn/probability/distribution/beta.py +3 -3
  243. mindspore/nn/probability/distribution/categorical.py +1 -1
  244. mindspore/nn/probability/distribution/cauchy.py +4 -2
  245. mindspore/nn/probability/distribution/exponential.py +6 -7
  246. mindspore/nn/probability/distribution/gamma.py +2 -2
  247. mindspore/nn/probability/distribution/gumbel.py +2 -2
  248. mindspore/nn/probability/distribution/half_normal.py +5 -3
  249. mindspore/nn/probability/distribution/logistic.py +5 -3
  250. mindspore/nn/probability/distribution/poisson.py +1 -1
  251. mindspore/nn/probability/distribution/uniform.py +5 -3
  252. mindspore/nn/reinforcement/_tensors_queue.py +1 -1
  253. mindspore/nn/reinforcement/tensor_array.py +1 -1
  254. mindspore/nn/utils/init.py +13 -11
  255. mindspore/nn/wrap/__init__.py +6 -6
  256. mindspore/nn/wrap/cell_wrapper.py +181 -122
  257. mindspore/nn/wrap/grad_reducer.py +45 -36
  258. mindspore/nn/wrap/loss_scale.py +6 -7
  259. mindspore/numpy/array_creations.py +63 -65
  260. mindspore/numpy/array_ops.py +149 -144
  261. mindspore/numpy/logic_ops.py +41 -42
  262. mindspore/numpy/math_ops.py +365 -363
  263. mindspore/numpy/utils.py +17 -18
  264. mindspore/numpy/utils_const.py +5 -6
  265. mindspore/opencv_core452.dll +0 -0
  266. mindspore/opencv_imgcodecs452.dll +0 -0
  267. mindspore/opencv_imgproc452.dll +0 -0
  268. mindspore/ops/__init__.py +5 -3
  269. mindspore/ops/_grad_experimental/grad_comm_ops.py +112 -16
  270. mindspore/ops/_grad_experimental/grad_debug_ops.py +14 -2
  271. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  272. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  273. mindspore/ops/_grad_experimental/taylor_rule.py +29 -0
  274. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  275. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  276. mindspore/ops/_register_for_op.py +0 -11
  277. mindspore/{ops_generate → ops/_utils}/arg_dtype_cast.py +123 -4
  278. mindspore/{ops_generate → ops/_utils}/arg_handler.py +3 -65
  279. mindspore/ops/_vmap/vmap_array_ops.py +27 -25
  280. mindspore/ops/_vmap/vmap_base.py +0 -2
  281. mindspore/ops/_vmap/vmap_grad_nn_ops.py +21 -14
  282. mindspore/ops/_vmap/vmap_math_ops.py +15 -16
  283. mindspore/ops/_vmap/vmap_nn_ops.py +29 -42
  284. mindspore/ops/auto_generate/__init__.py +4 -3
  285. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +236 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +764 -124
  287. mindspore/ops/auto_generate/gen_ops_def.py +4018 -2264
  288. mindspore/ops/auto_generate/gen_ops_prim.py +15463 -5037
  289. mindspore/ops/auto_generate/pyboost_inner_prim.py +221 -87
  290. mindspore/ops/composite/__init__.py +2 -1
  291. mindspore/ops/composite/base.py +20 -25
  292. mindspore/ops/composite/math_ops.py +6 -16
  293. mindspore/ops/composite/multitype_ops/__init__.py +5 -2
  294. mindspore/ops/composite/multitype_ops/_compile_utils.py +228 -30
  295. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +1 -2
  296. mindspore/ops/composite/multitype_ops/add_impl.py +2 -1
  297. mindspore/ops/composite/multitype_ops/bitwise_and_impl.py +2 -1
  298. mindspore/ops/composite/multitype_ops/bitwise_or_impl.py +2 -1
  299. mindspore/ops/composite/multitype_ops/bitwise_xor_impl.py +2 -1
  300. mindspore/ops/composite/multitype_ops/div_impl.py +6 -4
  301. mindspore/ops/composite/multitype_ops/equal_impl.py +4 -3
  302. mindspore/ops/composite/multitype_ops/floordiv_impl.py +2 -1
  303. mindspore/ops/composite/multitype_ops/getitem_impl.py +3 -2
  304. mindspore/ops/composite/multitype_ops/greater_equal_impl.py +4 -3
  305. mindspore/ops/composite/multitype_ops/greater_impl.py +4 -3
  306. mindspore/ops/composite/multitype_ops/in_impl.py +2 -1
  307. mindspore/ops/composite/multitype_ops/invert_impl.py +50 -0
  308. mindspore/ops/composite/multitype_ops/left_shift_impl.py +2 -1
  309. mindspore/ops/composite/multitype_ops/less_equal_impl.py +4 -3
  310. mindspore/ops/composite/multitype_ops/less_impl.py +4 -3
  311. mindspore/ops/composite/multitype_ops/logic_not_impl.py +3 -2
  312. mindspore/ops/composite/multitype_ops/logical_and_impl.py +2 -1
  313. mindspore/ops/composite/multitype_ops/logical_or_impl.py +2 -1
  314. mindspore/ops/composite/multitype_ops/mod_impl.py +2 -1
  315. mindspore/ops/composite/multitype_ops/mul_impl.py +3 -2
  316. mindspore/ops/composite/multitype_ops/negative_impl.py +2 -1
  317. mindspore/ops/composite/multitype_ops/not_equal_impl.py +2 -1
  318. mindspore/ops/composite/multitype_ops/not_in_impl.py +2 -1
  319. mindspore/ops/composite/multitype_ops/ones_like_impl.py +18 -0
  320. mindspore/ops/composite/multitype_ops/pow_impl.py +2 -30
  321. mindspore/ops/composite/multitype_ops/right_shift_impl.py +2 -1
  322. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  323. mindspore/ops/composite/multitype_ops/sub_impl.py +2 -1
  324. mindspore/ops/function/__init__.py +40 -2
  325. mindspore/ops/function/_add_attr_func.py +58 -0
  326. mindspore/ops/function/array_func.py +2089 -2403
  327. mindspore/ops/function/clip_func.py +80 -23
  328. mindspore/ops/function/debug_func.py +57 -57
  329. mindspore/ops/function/grad/__init__.py +1 -0
  330. mindspore/ops/function/grad/grad_func.py +104 -71
  331. mindspore/ops/function/image_func.py +2 -2
  332. mindspore/ops/function/linalg_func.py +47 -78
  333. mindspore/ops/function/math_func.py +4501 -3802
  334. mindspore/ops/function/nn_func.py +1726 -620
  335. mindspore/ops/function/other_func.py +159 -1
  336. mindspore/ops/function/parameter_func.py +18 -84
  337. mindspore/ops/function/random_func.py +440 -387
  338. mindspore/ops/function/reshard_func.py +4 -70
  339. mindspore/ops/function/sparse_func.py +3 -3
  340. mindspore/ops/function/sparse_unary_func.py +6 -6
  341. mindspore/ops/function/spectral_func.py +25 -58
  342. mindspore/ops/function/vmap_func.py +24 -17
  343. mindspore/ops/functional.py +22 -7
  344. mindspore/ops/functional_overload.py +1440 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +13 -7
  347. mindspore/ops/operations/_custom_ops_utils.py +247 -0
  348. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  349. mindspore/ops/operations/_grad_ops.py +2 -43
  350. mindspore/ops/operations/_infer_ops.py +2 -1
  351. mindspore/ops/operations/_inner_ops.py +43 -84
  352. mindspore/ops/operations/_ms_kernel.py +4 -10
  353. mindspore/ops/operations/_rl_inner_ops.py +1 -1
  354. mindspore/ops/operations/_scalar_ops.py +3 -2
  355. mindspore/ops/operations/_sequence_ops.py +1 -1
  356. mindspore/ops/operations/_tensor_array.py +1 -1
  357. mindspore/ops/operations/array_ops.py +81 -324
  358. mindspore/ops/operations/comm_ops.py +154 -108
  359. mindspore/ops/operations/custom_ops.py +232 -78
  360. mindspore/ops/operations/debug_ops.py +153 -59
  361. mindspore/ops/operations/inner_ops.py +7 -5
  362. mindspore/ops/operations/linalg_ops.py +1 -57
  363. mindspore/ops/operations/manually_defined/_inner.py +1 -1
  364. mindspore/ops/operations/manually_defined/ops_def.py +928 -180
  365. mindspore/ops/operations/math_ops.py +32 -234
  366. mindspore/ops/operations/nn_ops.py +210 -498
  367. mindspore/ops/operations/other_ops.py +62 -9
  368. mindspore/ops/operations/random_ops.py +13 -7
  369. mindspore/ops/operations/reshard_ops.py +1 -1
  370. mindspore/ops/operations/sparse_ops.py +2 -2
  371. mindspore/ops/primitive.py +66 -53
  372. mindspore/ops/tensor_method.py +1888 -0
  373. mindspore/ops_generate/__init__.py +0 -5
  374. mindspore/ops_generate/aclnn/__init__.py +0 -0
  375. mindspore/ops_generate/aclnn/aclnn_kernel_register_auto_cc_generator.py +135 -0
  376. mindspore/ops_generate/aclnn/gen_aclnn_implement.py +257 -0
  377. mindspore/ops_generate/api/__init__.py +0 -0
  378. mindspore/ops_generate/api/add_tensor_docs_generator.py +56 -0
  379. mindspore/ops_generate/api/cpp_create_prim_instance_helper_generator.py +105 -0
  380. mindspore/ops_generate/api/functional_map_cpp_generator.py +504 -0
  381. mindspore/ops_generate/api/functional_overload_py_generator.py +112 -0
  382. mindspore/ops_generate/api/functions_cc_generator.py +237 -0
  383. mindspore/ops_generate/api/gen_api.py +103 -0
  384. mindspore/ops_generate/api/op_api_proto.py +235 -0
  385. mindspore/ops_generate/api/tensor_func_reg_cpp_generator.py +461 -0
  386. mindspore/ops_generate/common/__init__.py +0 -0
  387. mindspore/ops_generate/common/base_generator.py +11 -0
  388. mindspore/ops_generate/common/gen_constants.py +91 -0
  389. mindspore/ops_generate/common/gen_utils.py +348 -0
  390. mindspore/ops_generate/common/op_proto.py +473 -0
  391. mindspore/ops_generate/common/template.py +523 -0
  392. mindspore/ops_generate/gen_ops.py +22 -1069
  393. mindspore/ops_generate/op_def/__init__.py +0 -0
  394. mindspore/ops_generate/op_def/gen_op_def.py +90 -0
  395. mindspore/ops_generate/op_def/lite_ops_cpp_generator.py +191 -0
  396. mindspore/ops_generate/op_def/ops_def_cc_generator.py +299 -0
  397. mindspore/ops_generate/op_def/ops_def_h_generator.py +74 -0
  398. mindspore/ops_generate/op_def/ops_name_h_generator.py +83 -0
  399. mindspore/ops_generate/op_def/ops_primitive_h_generator.py +125 -0
  400. mindspore/ops_generate/op_def_py/__init__.py +0 -0
  401. mindspore/ops_generate/op_def_py/gen_op_def_py.py +47 -0
  402. mindspore/ops_generate/op_def_py/op_def_py_generator.py +132 -0
  403. mindspore/ops_generate/op_def_py/op_prim_py_generator.py +489 -0
  404. mindspore/ops_generate/pyboost/__init__.py +0 -0
  405. mindspore/ops_generate/pyboost/auto_grad_impl_cc_generator.py +139 -0
  406. mindspore/ops_generate/pyboost/auto_grad_reg_cc_generator.py +93 -0
  407. mindspore/ops_generate/pyboost/gen_pyboost_func.py +175 -0
  408. mindspore/ops_generate/pyboost/op_template_parser.py +517 -0
  409. mindspore/ops_generate/pyboost/pyboost_functions_cpp_generator.py +407 -0
  410. mindspore/ops_generate/pyboost/pyboost_functions_h_generator.py +100 -0
  411. mindspore/ops_generate/pyboost/pyboost_functions_py_generator.py +148 -0
  412. mindspore/ops_generate/pyboost/pyboost_grad_function_cpp_generator.py +155 -0
  413. mindspore/ops_generate/pyboost/pyboost_inner_prim_generator.py +132 -0
  414. mindspore/ops_generate/pyboost/pyboost_native_grad_functions_generator.py +272 -0
  415. mindspore/ops_generate/pyboost/pyboost_op_cpp_code_generator.py +938 -0
  416. mindspore/ops_generate/pyboost/pyboost_overload_functions_cpp_generator.py +357 -0
  417. mindspore/ops_generate/{pyboost_utils.py → pyboost/pyboost_utils.py} +179 -36
  418. mindspore/ops_generate/resources/__init__.py +0 -0
  419. mindspore/ops_generate/resources/resource_list.py +30 -0
  420. mindspore/ops_generate/resources/resource_loader.py +36 -0
  421. mindspore/ops_generate/resources/resource_manager.py +64 -0
  422. mindspore/ops_generate/resources/yaml_loader.py +88 -0
  423. mindspore/ops_generate/tensor_py_cc_generator.py +122 -0
  424. mindspore/parallel/__init__.py +7 -3
  425. mindspore/parallel/_auto_parallel_context.py +152 -34
  426. mindspore/parallel/_cell_wrapper.py +130 -15
  427. mindspore/parallel/_parallel_serialization.py +107 -5
  428. mindspore/parallel/_ps_context.py +1 -1
  429. mindspore/parallel/_recovery_context.py +7 -2
  430. mindspore/parallel/_tensor.py +142 -18
  431. mindspore/parallel/_utils.py +199 -23
  432. mindspore/parallel/algo_parameter_config.py +4 -4
  433. mindspore/parallel/auto_parallel.py +732 -0
  434. mindspore/parallel/checkpoint_convert.py +159 -0
  435. mindspore/parallel/checkpoint_transform.py +698 -35
  436. mindspore/parallel/cluster/process_entity/_api.py +276 -50
  437. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  438. mindspore/parallel/cluster/run.py +21 -4
  439. mindspore/parallel/function/__init__.py +24 -0
  440. mindspore/parallel/function/reshard_func.py +259 -0
  441. mindspore/parallel/nn/__init__.py +25 -0
  442. mindspore/parallel/nn/parallel_cell_wrapper.py +263 -0
  443. mindspore/parallel/nn/parallel_grad_reducer.py +169 -0
  444. mindspore/parallel/parameter_broadcast.py +25 -14
  445. mindspore/parallel/shard.py +137 -58
  446. mindspore/parallel/transform_safetensors.py +363 -305
  447. mindspore/pgodb140.dll +0 -0
  448. mindspore/pgort140.dll +0 -0
  449. mindspore/profiler/__init__.py +22 -5
  450. mindspore/profiler/analysis/__init__.py +0 -0
  451. mindspore/profiler/analysis/parser/__init__.py +0 -0
  452. mindspore/profiler/analysis/parser/ascend_cann_parser.py +170 -0
  453. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  454. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  455. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  456. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  457. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  458. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +264 -0
  459. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  460. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +106 -0
  461. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  462. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  463. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  464. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  465. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  466. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  467. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  468. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  469. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  470. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  471. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +415 -0
  472. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  473. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  474. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  475. mindspore/profiler/analysis/task_manager.py +131 -0
  476. mindspore/profiler/analysis/time_converter.py +84 -0
  477. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  478. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +372 -0
  479. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  480. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +250 -0
  481. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +320 -0
  482. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +327 -0
  483. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +376 -0
  484. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  485. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  486. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +96 -0
  487. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  488. mindspore/profiler/analysis/work_flow.py +73 -0
  489. mindspore/profiler/common/ascend_msprof_exporter.py +139 -0
  490. mindspore/profiler/common/command_executor.py +90 -0
  491. mindspore/profiler/common/constant.py +186 -3
  492. mindspore/profiler/common/file_manager.py +208 -0
  493. mindspore/profiler/common/log.py +130 -0
  494. mindspore/profiler/common/msprof_cmd_tool.py +221 -0
  495. mindspore/profiler/common/path_manager.py +395 -0
  496. mindspore/profiler/common/process_bar.py +168 -0
  497. mindspore/profiler/common/process_pool.py +9 -3
  498. mindspore/profiler/common/profiler_context.py +500 -0
  499. mindspore/profiler/common/profiler_info.py +304 -0
  500. mindspore/profiler/common/profiler_meta_data.py +74 -0
  501. mindspore/profiler/common/profiler_output_path.py +284 -0
  502. mindspore/profiler/common/profiler_parameters.py +251 -0
  503. mindspore/profiler/common/profiler_path_manager.py +179 -0
  504. mindspore/profiler/common/record_function.py +76 -0
  505. mindspore/profiler/common/tlv_decoder.py +76 -0
  506. mindspore/profiler/common/util.py +75 -2
  507. mindspore/profiler/dynamic_profiler.py +341 -75
  508. mindspore/profiler/envprofiler.py +163 -0
  509. mindspore/profiler/experimental_config.py +197 -0
  510. mindspore/profiler/mstx.py +242 -0
  511. mindspore/profiler/platform/__init__.py +21 -0
  512. mindspore/profiler/platform/base_profiler.py +40 -0
  513. mindspore/profiler/platform/cpu_profiler.py +124 -0
  514. mindspore/profiler/platform/gpu_profiler.py +74 -0
  515. mindspore/profiler/platform/npu_profiler.py +335 -0
  516. mindspore/profiler/profiler.py +1073 -90
  517. mindspore/profiler/profiler_action_controller.py +187 -0
  518. mindspore/profiler/profiler_interface.py +118 -0
  519. mindspore/profiler/schedule.py +243 -0
  520. mindspore/rewrite/api/node.py +15 -13
  521. mindspore/rewrite/api/symbol_tree.py +2 -3
  522. mindspore/run_check/_check_version.py +27 -20
  523. mindspore/run_check/run_check.py +1 -1
  524. mindspore/runtime/__init__.py +37 -0
  525. mindspore/runtime/device.py +27 -0
  526. mindspore/runtime/event.py +209 -0
  527. mindspore/runtime/executor.py +177 -0
  528. mindspore/runtime/memory.py +409 -0
  529. mindspore/runtime/stream.py +460 -0
  530. mindspore/runtime/thread_bind_core.py +401 -0
  531. mindspore/safeguard/rewrite_obfuscation.py +12 -9
  532. mindspore/swresample-4.dll +0 -0
  533. mindspore/swscale-6.dll +0 -0
  534. mindspore/tbbmalloc.dll +0 -0
  535. mindspore/tinyxml2.dll +0 -0
  536. mindspore/train/__init__.py +8 -8
  537. mindspore/train/_utils.py +88 -25
  538. mindspore/train/amp.py +9 -5
  539. mindspore/train/callback/__init__.py +2 -2
  540. mindspore/train/callback/_callback.py +2 -16
  541. mindspore/train/callback/_checkpoint.py +53 -55
  542. mindspore/train/callback/_cluster_monitor.py +14 -18
  543. mindspore/train/callback/_early_stop.py +1 -1
  544. mindspore/train/callback/_flops_collector.py +103 -68
  545. mindspore/train/callback/_history.py +8 -5
  546. mindspore/train/callback/_lambda_callback.py +2 -2
  547. mindspore/train/callback/_landscape.py +0 -3
  548. mindspore/train/callback/_loss_monitor.py +2 -1
  549. mindspore/train/callback/_on_request_exit.py +6 -5
  550. mindspore/train/callback/_reduce_lr_on_plateau.py +11 -6
  551. mindspore/train/callback/_summary_collector.py +52 -19
  552. mindspore/train/callback/_time_monitor.py +2 -1
  553. mindspore/train/callback/{_tft_register.py → _train_fault_tolerance.py} +204 -107
  554. mindspore/train/data_sink.py +25 -2
  555. mindspore/train/dataset_helper.py +15 -16
  556. mindspore/train/loss_scale_manager.py +8 -7
  557. mindspore/train/metrics/accuracy.py +3 -3
  558. mindspore/train/metrics/confusion_matrix.py +9 -9
  559. mindspore/train/metrics/error.py +3 -3
  560. mindspore/train/metrics/hausdorff_distance.py +4 -4
  561. mindspore/train/metrics/mean_surface_distance.py +3 -3
  562. mindspore/train/metrics/metric.py +0 -12
  563. mindspore/train/metrics/occlusion_sensitivity.py +4 -2
  564. mindspore/train/metrics/precision.py +11 -10
  565. mindspore/train/metrics/recall.py +9 -9
  566. mindspore/train/metrics/root_mean_square_surface_distance.py +2 -2
  567. mindspore/train/mind_ir_pb2.py +174 -46
  568. mindspore/train/model.py +184 -113
  569. mindspore/train/serialization.py +622 -978
  570. mindspore/train/summary/_summary_adapter.py +2 -2
  571. mindspore/train/summary/summary_record.py +2 -3
  572. mindspore/train/train_thor/model_thor.py +1 -1
  573. mindspore/turbojpeg.dll +0 -0
  574. mindspore/utils/__init__.py +6 -3
  575. mindspore/utils/dryrun.py +140 -0
  576. mindspore/utils/hooks.py +81 -0
  577. mindspore/utils/runtime_execution_order_check.py +550 -0
  578. mindspore/utils/utils.py +138 -4
  579. mindspore/vcmeta.dll +0 -0
  580. mindspore/vcruntime140.dll +0 -0
  581. mindspore/vcruntime140_1.dll +0 -0
  582. mindspore/version.py +1 -1
  583. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/entry_points.txt +1 -1
  586. mindspore/_install_custom.py +0 -43
  587. mindspore/common/_register_for_adapter.py +0 -74
  588. mindspore/common/_tensor_overload.py +0 -139
  589. mindspore/mindspore_np_dtype.dll +0 -0
  590. mindspore/ops/auto_generate/gen_arg_dtype_cast.py +0 -252
  591. mindspore/ops/auto_generate/gen_arg_handler.py +0 -197
  592. mindspore/ops/operations/_opaque_predicate_registry.py +0 -41
  593. mindspore/ops_generate/gen_aclnn_implement.py +0 -263
  594. mindspore/ops_generate/gen_ops_inner_prim.py +0 -131
  595. mindspore/ops_generate/gen_pyboost_func.py +0 -1052
  596. mindspore/ops_generate/gen_utils.py +0 -209
  597. mindspore/ops_generate/op_proto.py +0 -145
  598. mindspore/ops_generate/template.py +0 -261
  599. mindspore/profiler/envprofiling.py +0 -254
  600. mindspore/profiler/profiling.py +0 -1926
  601. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0rc1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- # Copyright 2020-2023 Huawei Technologies Co., Ltd
1
+ # Copyright 2020-2025 Huawei Technologies Co., Ltd
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@ from mindspore import context
21
21
  import mindspore.log as logger
22
22
  from mindspore.parallel._dp_allreduce_fusion import _set_fusion_strategy_by_idx, _set_fusion_strategy_by_size
23
23
  from mindspore.parallel._ps_context import _is_role_pserver
24
+ from mindspore.parallel.shard import Layout
24
25
  from mindspore._c_expression import AutoParallelContext
25
26
  from mindspore._checkparam import args_type_check
26
27
  from mindspore import _checkparam as Validator
@@ -63,6 +64,7 @@ class _ParallelOptimizerConfig:
63
64
  GRADIENT_ACCUMULATION_SHARD = "gradient_accumulation_shard"
64
65
  PARALLEL_OPTIMIZER_THRESHOLD = "parallel_optimizer_threshold"
65
66
  OPTIMIZER_WEIGHT_SHARD_SIZE = "optimizer_weight_shard_size"
67
+ OPTIMIZER_LEVEL = "optimizer_level"
66
68
 
67
69
 
68
70
  class _PipelineConfig:
@@ -77,6 +79,8 @@ class _PipelineScheduler:
77
79
  PIPELINE_1F1B = "1f1b"
78
80
  PIPELINE_GPIPE = "gpipe"
79
81
  PIPELINE_SEQPIPE = "seqpipe"
82
+ PIPELINE_SEQVPP = "seqvpp"
83
+ PIPELINE_SEQSMARTVPP = "seqsmartvpp"
80
84
 
81
85
 
82
86
  class _AutoParallelContext:
@@ -100,6 +104,7 @@ class _AutoParallelContext:
100
104
  def __init__(self):
101
105
  self._context_handle = AutoParallelContext.get_instance()
102
106
  self._dataset_strategy_using_str = True
107
+ self._dataset_layout = None
103
108
 
104
109
  def check_context_handle(self):
105
110
  """
@@ -187,6 +192,25 @@ class _AutoParallelContext:
187
192
  self.check_context_handle()
188
193
  return self._context_handle.get_dump_local_norm()
189
194
 
195
+ def set_dump_local_norm_path(self, dump_local_norm_path):
196
+ """
197
+ Set dump local norm path for auto parallel.
198
+
199
+ Args:
200
+ dump_local_norm_path (str): User need to specify the path to save dump files
201
+ if he want to dump local norm. Default: ''
202
+
203
+ Raises:
204
+ KeyError: When the value of dump_local_norm_path is not a str value.
205
+ """
206
+ self.check_context_handle()
207
+ self._context_handle.set_dump_local_norm_path(dump_local_norm_path)
208
+
209
+ def get_dump_local_norm_path(self):
210
+ """Get dump local norm path."""
211
+ self.check_context_handle()
212
+ return self._context_handle.get_dump_local_norm_path()
213
+
190
214
  def set_dump_device_local_norm(self, dump_device_local_norm):
191
215
  """
192
216
  Set dump device local norm for auto parallel.
@@ -195,7 +219,7 @@ class _AutoParallelContext:
195
219
  dump_device_local_norm (bool): User need to specify if he want to dump device local norm. Default: False
196
220
 
197
221
  Raises:
198
- ValueError: If the dump_device_local_norm in not a bool value.
222
+ ValueError: If the dump_device_local_norm is not a bool value.
199
223
  """
200
224
  self.check_context_handle()
201
225
  self._context_handle.set_dump_device_local_norm(dump_device_local_norm)
@@ -422,6 +446,9 @@ class _AutoParallelContext:
422
446
  raise ValueError("The context configuration parameter 'parallel_mode' only support 'stand_alone', "
423
447
  "'data_parallel', 'hybrid_parallel', 'semi_auto_parallel' and 'auto_parallel', "
424
448
  "but got the value : {}.".format(parallel_mode))
449
+ if run_mode == context.ParallelMode.DATA_PARALLEL and self.get_enable_parallel_optimizer():
450
+ logger.warning("'enable_parallel_optimizer' is not suggested in 'data_parallel' mode, "
451
+ "consider using 'semi_auto_parallel' or 'auto_parallel' mode.")
425
452
 
426
453
  def get_parallel_mode(self):
427
454
  """Get parallel mode."""
@@ -566,6 +593,9 @@ class _AutoParallelContext:
566
593
  if not isinstance(dataset_strategy, tuple):
567
594
  raise TypeError("For 'set_auto_parallel_context', the argument 'dataset_strategy' "
568
595
  "must be str or tuple type, but got the type : {}.".format(type(dataset_strategy)))
596
+ if dataset_strategy and isinstance(dataset_strategy[0], Layout):
597
+ self._set_dataset_strategy_layout(dataset_strategy)
598
+ return
569
599
  for ele in dataset_strategy:
570
600
  if not isinstance(ele, tuple):
571
601
  raise TypeError("For 'set_auto_parallel_context', the element of argument "
@@ -580,8 +610,36 @@ class _AutoParallelContext:
580
610
  self._dataset_strategy_using_str = False
581
611
  self._context_handle.set_dataset_strategy(dataset_strategy)
582
612
 
613
+ def _set_dataset_strategy_layout(self, dataset_strategy):
614
+ """set dataset layout to c++ by using pybind."""
615
+ dataset_devmat = []
616
+ dataset_tensormap = []
617
+ dataset_alias_name = []
618
+ self._dataset_layout = dataset_strategy
619
+ for ele in dataset_strategy:
620
+ if not isinstance(ele, Layout):
621
+ raise TypeError(f"All the dataset_strategy elements should be Layout, but got {type(ele)}")
622
+ layout_to_dict = ele.to_dict()
623
+ dataset_devmat.append(layout_to_dict["device_matrix"])
624
+ dataset_alias_name.append(layout_to_dict["alias_name"])
625
+ if layout_to_dict["interleaved_parallel"]:
626
+ raise ValueError("For dataset_strategy, layout does not support interleaved_parallel")
627
+ tensor_map = []
628
+ for value in layout_to_dict["tensor_map"]:
629
+ if isinstance(value, tuple):
630
+ tensor_map.append(value)
631
+ elif isinstance(value, int):
632
+ tensor_map.append((value,))
633
+ else:
634
+ raise TypeError(f"value in tensor map must be tuple or int, but got {type(value)}")
635
+ dataset_tensormap.append(tuple(tensor_map))
636
+ self._context_handle.set_dataset_layout(dataset_devmat, dataset_tensormap, dataset_alias_name)
637
+
638
+
583
639
  def get_dataset_strategy(self):
584
640
  """Get dataset sharding strategy."""
641
+ if self._dataset_layout is not None:
642
+ return self._dataset_layout
585
643
  self.check_context_handle()
586
644
  if self._dataset_strategy_using_str:
587
645
  if self._context_handle.get_full_batch():
@@ -869,6 +927,9 @@ class _AutoParallelContext:
869
927
  "the argument 'enable_parallel_optimizer' must be bool, but got the type : {}."
870
928
  .format(type(enable_parallel_optimizer)))
871
929
  self._context_handle.set_enable_parallel_optimizer(enable_parallel_optimizer)
930
+ if enable_parallel_optimizer and self.get_parallel_mode() == context.ParallelMode.DATA_PARALLEL:
931
+ logger.warning("'enable_parallel_optimizer' is not suggested in 'data_parallel' mode, "
932
+ "consider using 'semi_auto_parallel' or 'auto_parallel' mode.")
872
933
 
873
934
  def set_force_fp32_communication(self, force_fp32_communication):
874
935
  """
@@ -899,7 +960,7 @@ class _AutoParallelContext:
899
960
 
900
961
  - pipeline_interleave(bool): Setting true enable interleave scheduler for pipeline parallelism. This
901
962
  scheduler requires more memory but less bubble.
902
- - pipeline_scheduler(string): There are two choices, "1f1b" and "gpipe". default is "1f1b"
963
+ - pipeline_scheduler(str): There are two choices, "1f1b" and "gpipe". default is "1f1b"
903
964
 
904
965
  - 1f1b: It requires less memory and bubble ratio, for it run backward pass when corresponding forward pass
905
966
  finished.
@@ -935,7 +996,9 @@ class _AutoParallelContext:
935
996
 
936
997
  Validator.check_string(pipeline_config[pp_scheduler], [_PipelineScheduler.PIPELINE_1F1B,
937
998
  _PipelineScheduler.PIPELINE_GPIPE,
938
- _PipelineScheduler.PIPELINE_SEQPIPE])
999
+ _PipelineScheduler.PIPELINE_SEQPIPE,
1000
+ _PipelineScheduler.PIPELINE_SEQVPP,
1001
+ _PipelineScheduler.PIPELINE_SEQSMARTVPP])
939
1002
  if not pipeline_config[pp_interleave] and pipeline_config[pp_scheduler] != _PipelineScheduler.PIPELINE_1F1B:
940
1003
  raise ValueError(f"When pipeline_interleave is False, {pp_scheduler} is not supported")
941
1004
 
@@ -984,10 +1047,12 @@ class _AutoParallelContext:
984
1047
  grad_shard_name = _ParallelOptimizerConfig.GRADIENT_ACCUMULATION_SHARD
985
1048
  threshold_name = _ParallelOptimizerConfig.PARALLEL_OPTIMIZER_THRESHOLD
986
1049
  optimizer_weight_shard_size_name = _ParallelOptimizerConfig.OPTIMIZER_WEIGHT_SHARD_SIZE
1050
+ optimizer_level_name = _ParallelOptimizerConfig.OPTIMIZER_LEVEL
987
1051
 
988
1052
  for config_name in parallel_optimizer_config:
989
1053
  unknown_config = []
990
- if config_name not in [grad_shard_name, threshold_name, optimizer_weight_shard_size_name]:
1054
+ if config_name not in [grad_shard_name, threshold_name, optimizer_weight_shard_size_name,
1055
+ optimizer_level_name]:
991
1056
  unknown_config.append(config_name)
992
1057
 
993
1058
  if unknown_config:
@@ -998,6 +1063,10 @@ class _AutoParallelContext:
998
1063
  parallel_optimizer_config[grad_shard_name], grad_shard_name, grad_shard_name)
999
1064
  self._context_handle.set_grad_accumulation_shard(
1000
1065
  parallel_optimizer_config[grad_shard_name])
1066
+ if optimizer_level_name in parallel_optimizer_config \
1067
+ and parallel_optimizer_config[optimizer_level_name] != "level2":
1068
+ raise ValueError(f"The optimizer_level is set as {parallel_optimizer_config[optimizer_level_name]}, "
1069
+ "thus cannot set grad_accumulation_shard as True.")
1001
1070
 
1002
1071
  if threshold_name in parallel_optimizer_config:
1003
1072
  Validator.check_non_negative_int(
@@ -1010,6 +1079,20 @@ class _AutoParallelContext:
1010
1079
  Validator.check_positive_int(value)
1011
1080
  self.set_optimizer_weight_shard_size(value)
1012
1081
 
1082
+ if optimizer_level_name in parallel_optimizer_config:
1083
+ optimizer_level = parallel_optimizer_config[optimizer_level_name]
1084
+ if optimizer_level not in ["level1", "level2", "level3"]:
1085
+ raise ValueError("Optimizer level should in ['level1', 'level2', 'level3'], but got {}"
1086
+ .format(optimizer_level))
1087
+
1088
+ if self._context_handle.get_grad_accumulation_shard() and optimizer_level != "level2":
1089
+ raise ValueError("The grad_accumulation shard is set, thus cannot set optimizer_level != 'level2'")
1090
+ if optimizer_level == "level2":
1091
+ self._context_handle.set_grad_accumulation_shard(True)
1092
+ if optimizer_level == "level3":
1093
+ self._context_handle.set_zero3(True)
1094
+ self._context_handle.set_grad_accumulation_shard(False)
1095
+
1013
1096
  def get_grad_accumulation_shard(self):
1014
1097
  """Get grad accumulation shard."""
1015
1098
  self.check_context_handle()
@@ -1089,13 +1172,6 @@ class _AutoParallelContext:
1089
1172
  self.check_context_handle()
1090
1173
  return self._context_handle.get_optimizer_weight_shard_size()
1091
1174
 
1092
- def set_ops_strategy_json_config(self, type, path, mode):
1093
- """
1094
- Set configuration of saving ops strategy in file .json.
1095
- """
1096
- self.check_context_handle()
1097
- self._context_handle.set_ops_strategy_json_config(type, path, mode)
1098
-
1099
1175
  def set_optimizer_weight_shard_aggregated_save(self, optimizer_weight_shard_aggregated_save):
1100
1176
  """
1101
1177
  Set optimizer_weight_shard_aggregated_save.
@@ -1124,6 +1200,7 @@ class _AutoParallelContext:
1124
1200
  self.check_context_handle()
1125
1201
  self._context_handle.reset()
1126
1202
  _ParallelFusionConfig.reset()
1203
+ self._dataset_layout = None
1127
1204
 
1128
1205
  def _check_and_default_group(self, group):
1129
1206
  """Validate the given group, if group is empty, returns a default fusion group"""
@@ -1233,30 +1310,35 @@ class _AutoParallelContext:
1233
1310
  self.set_enable_all_gather_fusion(openstate)
1234
1311
  self.set_enable_reduce_scatter_fusion(openstate)
1235
1312
 
1313
+ def set_auto_parallel_new_interface(self, auto_parallel_new_interface):
1314
+ """
1315
+ Set AutoParallel(cell) new interface flag.
1236
1316
 
1237
- def _set_ops_strategy_json_config(type="SAVE", path="", mode="all"):
1238
- """
1239
- Set strategy json configuration.
1317
+ Args:
1318
+ auto_parallel_new_interface (bool): Mark whether to use the new interface.
1319
+ """
1320
+ self.check_context_handle()
1321
+ self._context_handle.set_auto_parallel_new_interface(auto_parallel_new_interface)
1240
1322
 
1241
- Args:
1242
- type (str): The parameter for choosing save or load .json file.
1243
- path (str): Path to save or load parallel strategy json.
1244
- mode (str): The parameter for choosing save all or important operators.
1323
+ def get_auto_parallel_new_interface(self):
1324
+ """Get auto_parallel_new_interface."""
1325
+ self.check_context_handle()
1326
+ return self._context_handle.get_auto_parallel_new_interface()
1245
1327
 
1246
- Raises:
1247
- KeyError: When type is not 'SAVE' or 'LOAD'.
1248
- KeyError: When mode is not 'all' or 'principal'.
1249
- """
1250
- dir_path = os.path.dirname(path)
1251
- if dir_path and not os.path.exists(dir_path):
1252
- os.makedirs(dir_path, mode=0o700, exist_ok=True)
1253
- check_type = ["SAVE", "LOAD"]
1254
- check_mode = ["all", "principal"]
1255
- if type in check_type and mode in check_mode:
1256
- auto_parallel_context().set_ops_strategy_json_config(type, path, mode)
1257
- else:
1258
- raise KeyError("Type must be 'SAVE' or 'LOAD' and mode must be 'all' or 'principal'")
1328
+ def set_init_param_in_compile(self, init_param_in_compile):
1329
+ """
1330
+ Set flag marking whether to init parameters in compiling process.
1331
+
1332
+ Args:
1333
+ init_param_in_compile (bool): Mark whether to init parameters in compiling process.
1334
+ """
1335
+ self.check_context_handle()
1336
+ self._context_handle.set_init_param_in_compile(init_param_in_compile)
1259
1337
 
1338
+ def get_init_param_in_compile(self):
1339
+ """Get init_param_in_compile."""
1340
+ self.check_context_handle()
1341
+ return self._context_handle.get_init_param_in_compile()
1260
1342
 
1261
1343
  _AUTO_PARALLEL_CONTEXT = None
1262
1344
 
@@ -1307,7 +1389,11 @@ _set_auto_parallel_context_func_map = {
1307
1389
  "strategy_ckpt_config": auto_parallel_context().set_strategy_ckpt_config,
1308
1390
  "comm_fusion": auto_parallel_context().set_comm_fusion,
1309
1391
  "dump_local_norm": auto_parallel_context().set_dump_local_norm,
1310
- "dump_device_local_norm": auto_parallel_context().set_dump_device_local_norm}
1392
+ "dump_local_norm_path": auto_parallel_context().set_dump_local_norm_path,
1393
+ "dump_device_local_norm": auto_parallel_context().set_dump_device_local_norm,
1394
+ "auto_parallel_new_interface": auto_parallel_context().set_auto_parallel_new_interface,
1395
+ "init_param_in_compile": auto_parallel_context().set_init_param_in_compile}
1396
+
1311
1397
 
1312
1398
  _get_auto_parallel_context_func_map = {
1313
1399
  "device_num": auto_parallel_context().get_device_num,
@@ -1341,7 +1427,10 @@ _get_auto_parallel_context_func_map = {
1341
1427
  "strategy_ckpt_config": auto_parallel_context().get_strategy_ckpt_config,
1342
1428
  "full_batch_is_set": auto_parallel_context().get_full_batch_is_set,
1343
1429
  "dump_local_norm": auto_parallel_context().get_dump_local_norm,
1344
- "dump_device_local_norm": auto_parallel_context().get_dump_device_local_norm}
1430
+ "dump_local_norm_path": auto_parallel_context().get_dump_local_norm_path,
1431
+ "dump_device_local_norm": auto_parallel_context().get_dump_device_local_norm,
1432
+ "auto_parallel_new_interface": auto_parallel_context().get_auto_parallel_new_interface,
1433
+ "init_param_in_compile": auto_parallel_context().get_init_param_in_compile}
1345
1434
 
1346
1435
 
1347
1436
  @args_type_check(device_num=int, global_rank=int, gradients_mean=bool, gradient_fp32_sync=bool,
@@ -1452,6 +1541,8 @@ def _set_auto_parallel_context(**kwargs):
1452
1541
  - reducescatter: If communication fusion type is `reducescatter`. The `mode` contains: `auto`
1453
1542
  and `size`. Config is same as `allgather`.
1454
1543
 
1544
+
1545
+
1455
1546
  Raises:
1456
1547
  ValueError: If input key is not attribute in auto parallel context.
1457
1548
  """
@@ -1481,6 +1572,33 @@ def _get_auto_parallel_context(attr_key):
1481
1572
  return get_func()
1482
1573
 
1483
1574
 
1575
+ def _get_all_auto_parallel_context():
1576
+ """get auto parallel context before reset"""
1577
+ _auto_paralell_context_value_map = {}
1578
+ _pipeline_config = {}
1579
+ for key, value in _get_auto_parallel_context_func_map.items():
1580
+ if key == "pipeline_interleave":
1581
+ _pipeline_config[key] = value()
1582
+ elif key == "pipeline_scheduler":
1583
+ _pipeline_config[key] = value()
1584
+ else:
1585
+ _auto_paralell_context_value_map[key] = value()
1586
+ return _auto_paralell_context_value_map, _pipeline_config
1587
+
1588
+
1589
+ def _recover_auto_parallel_context(context_value_map, pp_config):
1590
+ """set auto parallel context after transformation"""
1591
+ # set the same auto parallel context after transform
1592
+ from mindspore.context import reset_auto_parallel_context
1593
+ reset_auto_parallel_context()
1594
+ for key, value in context_value_map.items():
1595
+ # list is empty or full_batch_is_set is not needed to set
1596
+ if (isinstance(value, list) and not value) or (key == "full_batch_is_set"):
1597
+ continue
1598
+ _set_auto_parallel_context_func_map[key](value)
1599
+ _set_auto_parallel_context_func_map["pipeline_config"](pp_config)
1600
+
1601
+
1484
1602
  def _reset_auto_parallel_context():
1485
1603
  """
1486
1604
  Reset auto parallel context attributes to the default values:
@@ -18,17 +18,20 @@ from __future__ import division
18
18
 
19
19
  import numpy as np
20
20
 
21
+ import mindspore.log as logger
21
22
  from mindspore import context
22
23
  from mindspore.nn.cell import Cell
23
24
  from mindspore.ops import operations as P
24
25
  from mindspore.ops.operations.comm_ops import AllGather
25
- from mindspore.communication import GlobalComm
26
+ from mindspore.communication import GlobalComm, get_rank
26
27
  from mindspore.common import jit
27
- from mindspore.communication import create_group, destroy_group
28
+ from mindspore.communication import create_group, destroy_group, get_group_size
28
29
  from mindspore.communication._comm_helper import _get_group_map
29
30
  from mindspore.train._utils import get_parameter_redundancy, remove_param_redundancy
31
+ from mindspore.parallel.shard import Layout
30
32
 
31
33
  _ALLGATHER_CELL = None
34
+ ALLREDUCE_GROUP_LIST = []
32
35
 
33
36
 
34
37
  class AllGatherCell(Cell):
@@ -134,7 +137,7 @@ def _restore_parallel_context(origin_parallel_mode, origin_dataset_strategy):
134
137
 
135
138
  def _get_group_name(group_map, group):
136
139
  """get group name"""
137
- group_name = str(group)
140
+ group_name = "remove_redundancy" + str(group)
138
141
  is_manual_communication_group = True
139
142
  if group_map:
140
143
  for name, rank_list in group_map.items():
@@ -142,20 +145,37 @@ def _get_group_name(group_map, group):
142
145
  group_name = name
143
146
  is_manual_communication_group = False
144
147
  break
145
- if is_manual_communication_group:
146
- create_group(str(group), list(group))
147
148
  return group_name, is_manual_communication_group
148
149
 
149
150
 
150
- def _single_parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
151
+ def _get_param_redundancy_reversed(param_redundancy, cur_rank):
152
+ """Generate the reverse mapping of parameter redundancy based on the current rank."""
153
+ param_redundancy_reversed = {}
154
+ for key, redundancy in param_redundancy.items():
155
+ for item in redundancy:
156
+ if len(item) == 1:
157
+ continue
158
+ if cur_rank in item:
159
+ param_redundancy_reversed.setdefault(item, []).append(key)
160
+ return param_redundancy_reversed
161
+
162
+
163
+ def _remove_param_not_load(param_name, param_not_load):
164
+ """Remove param_name from param_not_load."""
165
+ if param_not_load is not None and param_name in param_not_load:
166
+ param_not_load.remove(param_name)
167
+
168
+
169
+ def _single_parameter_broadcast(net, layout, param_not_load=None):
151
170
  """
152
171
  Broadcast single parameter to other rank in data parallel dimension.
153
172
  """
154
173
  from mindspore import Tensor
155
174
  origin_parallel_mode = context.get_auto_parallel_context("parallel_mode")
156
175
  origin_dataset_strategy = context.get_auto_parallel_context("dataset_strategy")
176
+ cur_rank = get_rank()
157
177
  if layout:
158
- param_redundancy = get_parameter_redundancy(layout, initial_rank)
178
+ param_redundancy = get_parameter_redundancy(layout)
159
179
  else:
160
180
  param_redundancy = get_parameter_redundancy(net)
161
181
  if not param_redundancy:
@@ -163,33 +183,128 @@ def _single_parameter_broadcast(net, layout, cur_rank=0, initial_rank=0):
163
183
  single_params = remove_param_redundancy(param_redundancy)
164
184
  if not single_params:
165
185
  return
166
- param_redundancy_reversed = {}
167
- for key, redundancy in param_redundancy.items():
168
- for item in redundancy:
169
- if len(item) == 1:
170
- continue
171
- if cur_rank in item:
172
- param_redundancy_reversed.setdefault(item, []).append(key)
186
+ param_redundancy_reversed = _get_param_redundancy_reversed(param_redundancy, cur_rank)
173
187
  if not param_redundancy_reversed or cur_rank not in single_params:
174
188
  return
175
189
  net_param_dict = net.parameters_dict()
176
190
  _chang_parallel_context(origin_dataset_strategy)
177
191
  group_map = _get_group_map()
192
+ if group_map:
193
+ group_map = {key: group_map[key] for key in sorted(group_map.keys())}
178
194
  for group, params in param_redundancy_reversed.items():
179
195
  group_name, is_manual_communication_group = _get_group_name(group_map, group)
180
196
  allreduce_input = []
181
197
  for param in params:
182
198
  if param not in net_param_dict:
183
199
  continue
200
+ if param.startswith("accu_grads") or param.endswith("expert_load"):
201
+ continue
184
202
  real_param = net_param_dict[param]
203
+ _remove_param_not_load(real_param.name, param_not_load)
185
204
  if param not in single_params[cur_rank]:
186
205
  real_param.set_data(Tensor(np.zeros(real_param.shape), dtype=real_param.dtype), real_param.sliced)
187
206
  allreduce_input.append(real_param)
188
207
  if not allreduce_input:
189
208
  continue
209
+ if is_manual_communication_group:
210
+ create_group(group_name, list(group))
211
+ allreduce_input.sort(key=lambda param: (str(param.shape), str(param.dtype)))
190
212
  communicator = SingleCommunicator(group_name)
191
213
  for real_param in allreduce_input:
192
- real_param.set_data(communicator(real_param), real_param.sliced)
214
+ real_param.set_data(communicator(Tensor(real_param)), real_param.sliced)
193
215
  if is_manual_communication_group:
194
216
  destroy_group(group_name)
195
217
  _restore_parallel_context(origin_parallel_mode, origin_dataset_strategy)
218
+
219
+
220
+ def _insert_virtual_pp_dim(layout):
221
+ """insert virtual pp dim in device matrix and create new layout"""
222
+ if len(layout.to_dict()["rank_list"]) == get_group_size():
223
+ return layout
224
+ remain_pp = get_group_size() // len(layout.to_dict()["rank_list"])
225
+ layout_info = layout.to_dict()
226
+ device_matrix = layout_info["device_matrix"]
227
+ tensor_map = layout_info["tensor_map"]
228
+ alias_name = layout_info["alias_name"]
229
+ new_devmat = Layout((remain_pp,) + device_matrix, ("remain_pp",) + alias_name)
230
+ tensor_map_alias_name = []
231
+ for val in tensor_map:
232
+ sub_alias_name = []
233
+ if isinstance(val, tuple):
234
+ for sub_val in val:
235
+ if sub_val == -1:
236
+ sub_alias_name.append("None")
237
+ else:
238
+ sub_alias_name.append(alias_name[len(device_matrix) - sub_val - 1])
239
+ tensor_map_alias_name.append(tuple(sub_alias_name))
240
+ else:
241
+ if val == -1:
242
+ tensor_map_alias_name.append("None")
243
+ else:
244
+ tensor_map_alias_name.append(alias_name[len(device_matrix) - val - 1])
245
+ new_layout = new_devmat(*tensor_map_alias_name)
246
+ return new_layout
247
+
248
+
249
+ class CommTensorDataForPP(Cell):
250
+ """Communicate tensor data for pipeline parallel scenario."""
251
+
252
+ def __init__(self, src_dtensor_info, dst_dtensor_info):
253
+ super().__init__()
254
+ self.zeros = P.Zeros()
255
+
256
+ self._current_rank_id = get_rank()
257
+ self._from_dev_num_in_stage = len(src_dtensor_info.layout.to_dict()["rank_list"])
258
+ self._from_rank_id = src_dtensor_info.layout.to_dict()["rank_list"]
259
+ self._current_rank_has_data = self._current_rank_id in src_dtensor_info.layout.to_dict()["rank_list"]
260
+ self._diff_rank_id = [
261
+ rank_id for rank_id in dst_dtensor_info.layout.to_dict()["rank_list"] if rank_id not in self._from_rank_id]
262
+ self.all_reduce = P.AllReduce(group=self._create_all_reduce_group())
263
+
264
+ def comm_data(self, comm_data):
265
+ """communicate data"""
266
+ out_tensor = self.all_reduce(comm_data)
267
+ return out_tensor
268
+
269
+ def _create_all_reduce_group(self):
270
+ """create all reduce group"""
271
+ global ALLREDUCE_GROUP_LIST
272
+ current_rank_stage_id = self._current_rank_id // self._from_dev_num_in_stage
273
+ end_stage = self._from_dev_num_in_stage * (current_rank_stage_id + 1)
274
+ rank_pos_in_stage = [rank_id for rank_id in range(self._from_dev_num_in_stage * current_rank_stage_id,
275
+ end_stage)].index(self._current_rank_id)
276
+ all_reduce_rank_list = [self._from_rank_id[rank_pos_in_stage]]
277
+ while rank_pos_in_stage < len(self._diff_rank_id):
278
+ all_reduce_rank_list.append(self._diff_rank_id[rank_pos_in_stage])
279
+ rank_pos_in_stage += self._from_dev_num_in_stage
280
+ all_reduce_rank_list.sort()
281
+ str_rank_list = '-'.join([str(rank) for rank in all_reduce_rank_list])
282
+ all_reduce_group = f"pp_allreduce_group-{str_rank_list}"
283
+ if all_reduce_group in ALLREDUCE_GROUP_LIST:
284
+ return all_reduce_group
285
+ ALLREDUCE_GROUP_LIST.append(all_reduce_group)
286
+ create_group(all_reduce_group, all_reduce_rank_list)
287
+ logger.debug(f"Create group {all_reduce_group} for tensor data communication.")
288
+ return all_reduce_group
289
+
290
+
291
+ class RedistributionCell(Cell):
292
+ """Redistribute src_layout to dst_layout"""
293
+
294
+ def __init__(self, src_layout, dst_layout):
295
+ super().__init__()
296
+ if src_layout is None or dst_layout is None:
297
+ raise ValueError("src_layout and dst_layout should not be None.")
298
+ self._total_dev_num = get_group_size()
299
+ src_layout = _insert_virtual_pp_dim(src_layout)
300
+ dst_layout = _insert_virtual_pp_dim(dst_layout)
301
+ self.src_identity = P.Identity().shard(in_strategy=(src_layout,), out_strategy=(src_layout,))
302
+ self.src_identity.add_prim_attr("self_define_shard", True)
303
+ self.dst_identity = P.Identity().shard(in_strategy=(dst_layout,), out_strategy=(dst_layout,))
304
+ self.dst_identity.add_prim_attr("self_define_shard", True)
305
+
306
+ def construct(self, input_tensor):
307
+ """run redistribution"""
308
+ src_tensor = self.src_identity(input_tensor)
309
+ dst_tensor = self.dst_identity(src_tensor)
310
+ return dst_tensor