mindspore 2.4.10__cp311-cp311-win_amd64.whl → 2.6.0__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 +47 -198
  22. mindspore/_extends/parse/resources.py +1 -5
  23. mindspore/_extends/parse/standard_method.py +229 -99
  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 +480 -372
  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 +5 -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 +975 -1981
  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 +324 -573
  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 +183 -117
  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 +209 -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 +179 -120
  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 +798 -761
  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 +933 -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 +1373 -192
  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 +53 -42
  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 +19 -15
  222. mindspore/nn/optim/adamax.py +8 -7
  223. mindspore/nn/optim/adasum.py +5 -5
  224. mindspore/nn/optim/asgd.py +3 -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 +361 -359
  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 +52 -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 +258 -46
  286. mindspore/ops/auto_generate/gen_extend_func.py +757 -185
  287. mindspore/ops/auto_generate/gen_ops_def.py +4197 -2243
  288. mindspore/ops/auto_generate/gen_ops_prim.py +16976 -6055
  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 +4351 -3813
  334. mindspore/ops/function/nn_func.py +1712 -637
  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 +452 -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 +26 -18
  343. mindspore/ops/functional.py +23 -7
  344. mindspore/ops/functional_overload.py +1548 -0
  345. mindspore/ops/op_info_register.py +32 -244
  346. mindspore/ops/operations/__init__.py +23 -15
  347. mindspore/ops/operations/_custom_ops_utils.py +235 -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 +298 -87
  360. mindspore/ops/operations/debug_ops.py +157 -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 +212 -531
  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 +1895 -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 +296 -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 +159 -40
  426. mindspore/parallel/_cell_wrapper.py +132 -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 +700 -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 +258 -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 -59
  446. mindspore/parallel/transform_safetensors.py +364 -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 +109 -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 +416 -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 +96 -27
  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} +228 -108
  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 +269 -136
  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 +552 -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.0.dist-info}/METADATA +3 -3
  584. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/RECORD +587 -418
  585. {mindspore-2.4.10.dist-info → mindspore-2.6.0.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.0.dist-info}/WHEEL +0 -0
  602. {mindspore-2.4.10.dist-info → mindspore-2.6.0.dist-info}/top_level.txt +0 -0
@@ -15,19 +15,24 @@
15
15
  """Built-in iterators"""
16
16
  from abc import abstractmethod
17
17
  from copy import deepcopy
18
+ import atexit
18
19
  import json
19
20
  import os
21
+ import queue
20
22
  import signal
23
+ import threading
21
24
  import weakref
22
25
  from functools import wraps
23
26
  import numpy as np
24
27
 
25
28
  import mindspore._c_dataengine as cde
26
29
  from mindspore.common.tensor import Tensor, np_types
30
+ import mindspore.dataset as ds
27
31
  import mindspore.dataset.engine.offload as offload
28
32
  from mindspore.dataset.core.config import get_debug_mode
29
33
 
30
34
  from mindspore import log as logger
35
+ from ..core.py_util_helpers import ExceptionHandler
31
36
 
32
37
  _ITERATOR_CLEANUP = False
33
38
 
@@ -87,6 +92,126 @@ def _cleanup_the_iterators_if_created(method):
87
92
  return wrapper
88
93
 
89
94
 
95
+ def __convert_python(obj, to_numpy, _do_copy):
96
+ """
97
+ Attempts to recursively convert a python object to Numpy array(s) or tensor(s).
98
+
99
+ Args:
100
+ obj (any): the python object to be converted
101
+ to_numpy (bool): If True, convert primitive types to NumPy array. If False, convert to Tensor.
102
+ (return the obj if type isn't supported)
103
+ """
104
+ if isinstance(obj, (int, float, bool, str, np.ndarray, np.str_, np.bytes_, *np_types)):
105
+ # error out if array is of unsupported type
106
+ if isinstance(obj, np.ndarray) and obj.dtype not in np_types and obj.dtype.kind not in ('U', 'S'):
107
+ new_line = '\n'
108
+ raise TypeError("A NumPy array of unsupported type detected: {}."
109
+ "\nSupported types are: {}.".format(
110
+ obj.dtype, new_line.join(map(str, (*np_types, np.str_, np.bytes_)))))
111
+ if to_numpy:
112
+ return np.array(obj, copy=_do_copy)
113
+ if _do_copy:
114
+ return Tensor(np.asarray(obj))
115
+ return Tensor.from_numpy(np.asarray(obj))
116
+ if isinstance(obj, dict):
117
+ return {key: __convert_python(val, to_numpy, _do_copy) for key, val in obj.items()}
118
+ if isinstance(obj, tuple):
119
+ return tuple([__convert_python(item, to_numpy, _do_copy) for item in obj])
120
+ if isinstance(obj, list):
121
+ return [__convert_python(item, to_numpy, _do_copy) for item in obj]
122
+ # if we can't convert it to Tensor, return the object as is
123
+ if _do_copy:
124
+ return deepcopy(obj)
125
+ return obj
126
+
127
+
128
+ def _transform_md_to_output(t, _output_numpy, _do_copy):
129
+ if _output_numpy:
130
+ if t.type().is_python():
131
+ return __convert_python(t.as_python(), True, _do_copy)
132
+ return t.as_array()
133
+ return _transform_md_to_tensor(t, _do_copy)
134
+
135
+
136
+ def _transform_md_to_tensor(t, _do_copy):
137
+ if t.type().is_python():
138
+ return __convert_python(t.as_python(), False, _do_copy)
139
+ array = t.as_array()
140
+ if _do_copy:
141
+ return Tensor(array)
142
+ return Tensor.from_numpy(array)
143
+
144
+
145
+ def _transform_tensor_to_output(t, _output_numpy):
146
+ if _output_numpy:
147
+ return t.asnumpy()
148
+ return t
149
+
150
+
151
+ def _convert_tuple_data(queue_in, queue_out, offload_model, _output_numpy, _do_copy, thread_event):
152
+ """
153
+ Convert data on tuple iterator.
154
+ """
155
+ while True:
156
+ try:
157
+ if thread_event.is_set():
158
+ return
159
+ item = queue_in.get(timeout=1)
160
+ if offload_model is None:
161
+ queue_out.put([_transform_md_to_output(t, _output_numpy, _do_copy) for t in item])
162
+ if not item:
163
+ break
164
+ continue
165
+
166
+ data = [_transform_md_to_tensor(t, _do_copy) for t in item]
167
+ if data:
168
+ data = offload.apply_offload_iterators(data, offload_model)
169
+ queue_out.put([_transform_tensor_to_output(t, _output_numpy) for t in data])
170
+ if not item:
171
+ break
172
+ except queue.Empty:
173
+ continue
174
+ except Exception: # pylint: disable=broad-except
175
+ result = ExceptionHandler()
176
+ queue_out.put(result)
177
+ break
178
+ thread_event.set()
179
+
180
+
181
+ def _convert_dict_data(queue_in, queue_out, offload_model, _output_numpy, _do_copy, thread_event, col_names):
182
+ """
183
+ Convert data on dict iterator.
184
+ """
185
+ while True:
186
+ try:
187
+ if thread_event.is_set():
188
+ return
189
+ item = queue_in.get(timeout=1)
190
+ if offload_model is None:
191
+ queue_out.put({k: _transform_md_to_output(t, _output_numpy, _do_copy) for k, t in item})
192
+ if not item:
193
+ break
194
+ continue
195
+ data = [_transform_md_to_tensor(t, _do_copy) for t in item]
196
+ if data:
197
+ data = offload.apply_offload_iterators(data, offload_model)
198
+ # Create output dictionary after offload
199
+ out_data = {}
200
+ for i, col in enumerate(col_names):
201
+ out_data[col] = _transform_tensor_to_output(data[i], _output_numpy)
202
+ data = out_data
203
+ if not item:
204
+ break
205
+ queue_out.put(data)
206
+ except queue.Empty:
207
+ continue
208
+ except Exception: # pylint: disable=broad-except
209
+ result = ExceptionHandler()
210
+ queue_out.put(result)
211
+ break
212
+ thread_event.set()
213
+
214
+
90
215
  class Iterator:
91
216
  """
92
217
  General Iterator over a dataset.
@@ -112,6 +237,8 @@ class Iterator:
112
237
  init_step = dataset.get_init_step()
113
238
  dataset_size = dataset.get_dataset_size()
114
239
  if get_debug_mode():
240
+ if dataset.get_init_step() != 0:
241
+ logger.warning("Dataset init step will be ignored in debug mode.")
115
242
  consumer = cde.PythonPullBasedIteratorConsumer(num_epochs)
116
243
  consumer.Init(self.ir_tree)
117
244
  else:
@@ -134,10 +261,35 @@ class Iterator:
134
261
 
135
262
  ITERATORS_LIST.append(weakref.ref(self))
136
263
  _unset_iterator_cleanup()
264
+ self.parallel_convert = ds.config.get_iterator_mode()["parallel_convert"]
265
+ if self.parallel_convert:
266
+ # The variable "tick" ensures that the thread is only started on the first iteration
267
+ self.tick = True
268
+ self.thread_convert = None
269
+ self.queue_in = queue.Queue(3)
270
+ self.queue_out = queue.Queue(3)
271
+ self.thread_event = None
272
+ self.enable_get_next_data = True
273
+ atexit.register(self.__class__.terminate, weakref.ref(self))
137
274
 
138
275
  def __iter__(self):
139
276
  return self
140
277
 
278
+ @staticmethod
279
+ def terminate(ref):
280
+ """
281
+ Interrupt the convert subthread
282
+ """
283
+ self = ref()
284
+ if self is None:
285
+ return
286
+ if hasattr(self, "parallel_convert"):
287
+ if self.parallel_convert:
288
+ if self.thread_event is not None and self.thread_convert is not None and \
289
+ not self.thread_event.is_set():
290
+ self.thread_event.set()
291
+ self.thread_convert.join()
292
+
141
293
  def stop(self):
142
294
  """
143
295
  Manually terminate Python iterator instead of relying on out of scope destruction.
@@ -165,18 +317,26 @@ class Iterator:
165
317
  self.stop()
166
318
 
167
319
  def __del__(self):
320
+ if hasattr(self, "parallel_convert"):
321
+ if self.parallel_convert:
322
+ if self.thread_event is not None and self.thread_convert is not None and \
323
+ not self.thread_event.is_set():
324
+ self.thread_event.set()
325
+ self.thread_convert.join()
168
326
  self.release()
169
327
 
170
328
  @abstractmethod
171
329
  def _get_next(self):
172
330
  raise RuntimeError("Calling base class Iterator's get_next is invalid.")
173
331
 
174
- def __next__(self):
175
- if not self._runtime_context:
176
- logger.warning("Iterator does not have a running C++ pipeline." +
177
- "It might because Iterator stop() had been called, or C++ pipeline crashed silently.")
178
- raise RuntimeError("Iterator does not have a running C++ pipeline.")
332
+ @abstractmethod
333
+ def _parallel_transformation_iteration(self):
334
+ raise RuntimeError("Calling base class Iterator's parallel_transformation_iteration is invalid.")
179
335
 
336
+ def serial_conversion_iteration(self):
337
+ """
338
+ Fetch data to serial conversion
339
+ """
180
340
  # Note offload is applied inside _get_next() if applicable since get_next converts to output format
181
341
  data = self._get_next()
182
342
  if not data:
@@ -189,6 +349,18 @@ class Iterator:
189
349
 
190
350
  return data
191
351
 
352
+ def __next__(self):
353
+ if not self._runtime_context:
354
+ logger.warning("Iterator does not have a running C++ pipeline." +
355
+ "It might because Iterator stop() had been called, or C++ pipeline crashed silently.")
356
+ raise RuntimeError("Iterator does not have a running C++ pipeline.")
357
+
358
+ from mindspore.profiler import mstx
359
+ range_id = mstx.range_start('dataloader', None)
360
+ out = self._parallel_transformation_iteration() if self.parallel_convert else self.serial_conversion_iteration()
361
+ mstx.range_end(range_id)
362
+ return out
363
+
192
364
  def __deepcopy__(self, memo):
193
365
  return self
194
366
 
@@ -218,58 +390,20 @@ class Iterator:
218
390
  dataset_size (int): The number of steps that one epoch has.
219
391
  """
220
392
  self._iterator.Reset(step, dataset_size)
221
-
222
- def __convert_python(self, obj, to_numpy):
223
- """
224
- Attempts to recursively convert a python object to Numpy array(s) or tensor(s).
225
-
226
- Args:
227
- obj (any): the python object to be converted
228
- to_numpy (bool): If True, convert primitive types to NumPy array. If False, convert to Tensor.
229
- (return the obj if type isn't supported)
230
- """
231
- if isinstance(obj, (int, float, bool, str, np.ndarray, np.str_, np.bytes_, *np_types)):
232
- # error out if array is of unsupported type
233
- if isinstance(obj, np.ndarray) and obj.dtype not in np_types and obj.dtype.kind not in ('U', 'S'):
234
- new_line = '\n'
235
- raise TypeError("A NumPy array of unsupported type detected: {}."
236
- "\nSupported types are: {}.".format(
237
- obj.dtype, new_line.join(map(str, (*np_types, np.str_, np.bytes_)))))
238
- if to_numpy:
239
- return np.array(obj, copy=self._do_copy)
240
- if self._do_copy:
241
- return Tensor(np.asarray(obj))
242
- return Tensor.from_numpy(np.asarray(obj))
243
- if isinstance(obj, dict):
244
- return {key: self.__convert_python(val, to_numpy) for key, val in obj.items()}
245
- if isinstance(obj, tuple):
246
- return tuple([self.__convert_python(item, to_numpy) for item in obj])
247
- if isinstance(obj, list):
248
- return [self.__convert_python(item, to_numpy) for item in obj]
249
- # if we can't convert it to Tensor, return the object as is
250
- if self._do_copy:
251
- return deepcopy(obj)
252
- return obj
253
-
254
- def _transform_md_to_output(self, t):
255
- if self._output_numpy:
256
- if t.type().is_python():
257
- return self.__convert_python(t.as_python(), True)
258
- return t.as_array()
259
- return self._transform_md_to_tensor(t)
260
-
261
- def _transform_md_to_tensor(self, t):
262
- if t.type().is_python():
263
- return self.__convert_python(t.as_python(), False)
264
- array = t.as_array()
265
- if self._do_copy:
266
- return Tensor(array)
267
- return Tensor.from_numpy(array)
268
-
269
- def _transform_tensor_to_output(self, t):
270
- if self._output_numpy:
271
- return t.asnumpy()
272
- return t
393
+ if self.parallel_convert:
394
+ while not self.queue_in.empty():
395
+ self.queue_in.get()
396
+ while not self.queue_out.empty():
397
+ self.queue_out.get()
398
+ if self.thread_event is not None:
399
+ if self.thread_event.is_set():
400
+ self.thread_event.clear()
401
+ self.tick = True
402
+ else:
403
+ self.thread_event.set()
404
+ self.thread_convert.join()
405
+ self.tick = True
406
+ self.enable_get_next_data = True
273
407
 
274
408
 
275
409
  class DictIterator(Iterator):
@@ -286,14 +420,15 @@ class DictIterator(Iterator):
286
420
  """
287
421
  try:
288
422
  if self.offload_model is None:
289
- return {k: self._transform_md_to_output(t) for k, t in self._iterator.GetNextAsMap().items()}
290
- data = [self._transform_md_to_tensor(t) for t in self._iterator.GetNextAsList()]
423
+ return {k: _transform_md_to_output(t, self._output_numpy, self._do_copy) for k, t in
424
+ self._iterator.GetNextAsMap().items()}
425
+ data = [_transform_md_to_tensor(t, self._do_copy) for t in self._iterator.GetNextAsList()]
291
426
  if data:
292
427
  data = offload.apply_offload_iterators(data, self.offload_model)
293
428
  # Create output dictionary after offload
294
429
  out_data = {}
295
430
  for i, col in enumerate(self.get_col_names()):
296
- out_data[col] = self._transform_tensor_to_output(data[i])
431
+ out_data[col] = _transform_tensor_to_output(data[i], self._output_numpy)
297
432
  data = out_data
298
433
  return data
299
434
 
@@ -305,6 +440,53 @@ class DictIterator(Iterator):
305
440
  os.kill(os.getpid(), signal.SIGKILL)
306
441
  raise err
307
442
 
443
+ def _parallel_transformation_iteration(self):
444
+ """
445
+ Launch child thread to convert tensor.
446
+ """
447
+ if self.tick:
448
+ self.thread_event = threading.Event()
449
+ self.thread_convert = threading.Thread(target=_convert_dict_data,
450
+ name="Convert_dict_data",
451
+ args=(self.queue_in, self.queue_out, self.offload_model,
452
+ self._output_numpy, self._do_copy, self.thread_event,
453
+ self.get_col_names()),
454
+ daemon=True)
455
+ self.thread_convert.start()
456
+ self.tick = False
457
+ while True:
458
+ if self.thread_event.is_set() and self.queue_out.qsize() == 0:
459
+ self.tick = True
460
+ self.enable_get_next_data = True
461
+ raise StopIteration
462
+ try:
463
+ if not self.queue_in.full() and self.enable_get_next_data:
464
+ if self.offload_model is None:
465
+ item = self._iterator.GetNextAsMap().items()
466
+ if not item:
467
+ self.enable_get_next_data = False
468
+ self.queue_in.put(item)
469
+ else:
470
+ item = self._iterator.GetNextAsList()
471
+ if not item:
472
+ self.enable_get_next_data = False
473
+ self.queue_in.put(item)
474
+ data = self.queue_out.get(timeout=0.00001)
475
+ if not data:
476
+ continue
477
+ if isinstance(data, ExceptionHandler):
478
+ if data.except_msg.find("Out of memory") >= 0 or data.except_msg.find("MemoryError") >= 0:
479
+ logger.critical("Memory error occurred, process will exit.")
480
+ os.kill(os.getpid(), signal.SIGKILL)
481
+ data.reraise()
482
+ return data
483
+ except queue.Empty:
484
+ continue
485
+ except Exception as err_info:
486
+ self.thread_event.set()
487
+ self.thread_convert.join()
488
+ raise err_info
489
+
308
490
 
309
491
  class TupleIterator(Iterator):
310
492
  """
@@ -327,11 +509,49 @@ class TupleIterator(Iterator):
327
509
  """
328
510
 
329
511
  if self.offload_model is None:
330
- return [self._transform_md_to_output(t) for t in self._iterator.GetNextAsList()]
331
- data = [self._transform_md_to_tensor(t) for t in self._iterator.GetNextAsList()]
512
+ return [_transform_md_to_output(t, self._output_numpy, self._do_copy) for t in
513
+ self._iterator.GetNextAsList()]
514
+ data = [_transform_md_to_tensor(t, self._do_copy) for t in self._iterator.GetNextAsList()]
332
515
  if data:
333
516
  data = offload.apply_offload_iterators(data, self.offload_model)
334
- return [self._transform_tensor_to_output(t) for t in data]
517
+ return [_transform_tensor_to_output(t, self._output_numpy) for t in data]
518
+
519
+ def _parallel_transformation_iteration(self):
520
+ """
521
+ Launch child thread to convert tensor.
522
+ """
523
+ if self.tick:
524
+ self.thread_event = threading.Event()
525
+ self.thread_convert = threading.Thread(target=_convert_tuple_data,
526
+ name="Convert_tuple_data",
527
+ args=(self.queue_in, self.queue_out, self.offload_model,
528
+ self._output_numpy, self._do_copy, self.thread_event),
529
+ daemon=True)
530
+ self.thread_convert.start()
531
+ self.tick = False
532
+ while True:
533
+ if self.thread_event.is_set() and self.queue_out.qsize() == 0:
534
+ self.tick = True
535
+ self.enable_get_next_data = True
536
+ raise StopIteration
537
+ try:
538
+ if not self.queue_in.full() and self.enable_get_next_data:
539
+ item = self._iterator.GetNextAsList()
540
+ if not item:
541
+ self.enable_get_next_data = False
542
+ self.queue_in.put(item)
543
+ data = self.queue_out.get(timeout=0.00001)
544
+ if not data:
545
+ continue
546
+ if isinstance(data, ExceptionHandler):
547
+ data.reraise()
548
+ return data
549
+ except queue.Empty:
550
+ continue
551
+ except Exception as err_info:
552
+ self.thread_event.set()
553
+ self.thread_convert.join()
554
+ raise err_info
335
555
 
336
556
 
337
557
  class DummyIterator:
@@ -29,7 +29,7 @@ import sys
29
29
  import time
30
30
 
31
31
  from mindspore import log as logger
32
- from ..datasets import Shuffle
32
+ from ..samplers import Shuffle
33
33
  from ...core.config import set_seed
34
34
 
35
35
 
@@ -42,6 +42,14 @@ obsClient = ObsClient(
42
42
  def get_used_disk_per():
43
43
  """ Get the disk usage of working directory."""
44
44
 
45
+ if os.path.exists(config.WORKING_PATH) and not os.access(config.WORKING_PATH, os.R_OK | os.W_OK | os.X_OK):
46
+ err_msg =\
47
+ "Permission denied:'{}'. Suggestion: " \
48
+ "1) It is recommended to manually create the {} directory and add read/write permissions to it. " \
49
+ "2) If you can't create, we suggest you download MindRecord manually and "\
50
+ "read it using the MindDataset interface.".format(config.WORKING_PATH, config.WORKING_PATH)
51
+ raise RuntimeError(err_msg)
52
+
45
53
  if not os.path.exists(config.WORKING_PATH):
46
54
  try:
47
55
  os.makedirs(config.WORKING_PATH)
@@ -24,6 +24,7 @@ import platform
24
24
  import queue
25
25
  import types
26
26
 
27
+ import dill
27
28
  import numpy as np
28
29
 
29
30
  from mindspore import log as logger
@@ -71,6 +72,9 @@ class _SharedQueue(multiprocessing.queues.Queue):
71
72
  # reading a buffer and also have a full queue of buffers in the meta-data queue
72
73
  self.num_seg = size + 2
73
74
 
75
+ self.dynamic_shm = True
76
+ self.fd_list = []
77
+ self.seg_size = 0
74
78
  if platform.system().lower() != 'windows' and max_rowsize == -1:
75
79
  self.dynamic_shm = True
76
80
  self.fd_list = []
@@ -89,6 +93,42 @@ class _SharedQueue(multiprocessing.queues.Queue):
89
93
  else:
90
94
  self.shm_list.append(shared_array)
91
95
 
96
+ def __getstate__(self):
97
+ copy_out = dill.dumps(self.copy_out)
98
+ min_shared_mem = dill.dumps(self.min_shared_mem)
99
+ data_immediate = dill.dumps(self.data_immediate)
100
+ data_shared = dill.dumps(self.data_shared)
101
+ # cannot dill 'mmap.mmap' object : self.count
102
+ print_error = dill.dumps(self.print_error)
103
+ shm_list = dill.dumps(self.shm_list)
104
+ seg_pos = dill.dumps(self.seg_pos)
105
+ num_seg = dill.dumps(self.num_seg)
106
+ dynamic_shm = dill.dumps(self.dynamic_shm)
107
+ fd_list = dill.dumps(self.fd_list)
108
+ seg_size = dill.dumps(self.seg_size)
109
+ # multiprocessing attribute
110
+ _closed = dill.dumps(self._closed)
111
+ super_variable = super().__getstate__()
112
+ return (copy_out, min_shared_mem, data_immediate, data_shared, print_error, shm_list,
113
+ seg_pos, num_seg, dynamic_shm, fd_list, seg_size, _closed, super_variable)
114
+
115
+ def __setstate__(self, state):
116
+ copy_out, min_shared_mem, data_immediate, data_shared, print_error, shm_list, \
117
+ seg_pos, num_seg, dynamic_shm, fd_list, seg_size, _closed, super_variable = state
118
+ self.copy_out = dill.loads(copy_out)
119
+ self.min_shared_mem = dill.loads(min_shared_mem)
120
+ self.data_immediate = dill.loads(data_immediate)
121
+ self.data_shared = dill.loads(data_shared)
122
+ self.print_error = dill.loads(print_error)
123
+ self.shm_list = dill.loads(shm_list)
124
+ self.seg_pos = dill.loads(seg_pos)
125
+ self.num_seg = dill.loads(num_seg)
126
+ self.dynamic_shm = dill.loads(dynamic_shm)
127
+ self.fd_list = dill.loads(fd_list)
128
+ self.seg_size = dill.loads(seg_size)
129
+ self._closed = dill.loads(_closed)
130
+ super().__setstate__(super_variable)
131
+
92
132
  def put_until(self, data, timeout=None, exit_signal=None):
93
133
  """Put data into the queue. Block until timeout is reached or exit_signal is set."""
94
134
  while True: