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
@@ -19,13 +19,64 @@ SequentialSampler, SubsetRandomSampler, and WeightedRandomSampler.
19
19
  Users can also define a custom sampler by extending from the Sampler class.
20
20
  """
21
21
 
22
+ import copy
22
23
  import numbers
24
+
25
+ from enum import Enum
23
26
  import numpy as np
24
27
  import mindspore._c_dataengine as cde
25
28
  import mindspore.dataset as ds
26
29
  from ..core import validator_helpers as validator
27
30
 
28
31
 
32
+ class Shuffle(str, Enum):
33
+ """Specify the shuffle mode.
34
+
35
+ - ``Shuffle.FALSE`` : Disable the shuffle.
36
+ - ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
37
+ global shuffle is used. When the number of dataset samples is greater than 100 million, partial shuffle is used.
38
+ - ``Shuffle.GLOBAL`` : Shuffle both the files and samples.
39
+ - ``Shuffle.PARTIAL`` : Shuffle data with every 1 million samples
40
+ - ``Shuffle.FILES`` : Shuffle files only.
41
+ - ``Shuffle.INFILE`` : Shuffle data within each file.
42
+ """
43
+ FALSE: str = "false"
44
+ ADAPTIVE: str = "adaptive"
45
+ GLOBAL: str = "global"
46
+ PARTIAL: str = "partial"
47
+ FILES: str = "files"
48
+ INFILE: str = "infile"
49
+
50
+
51
+ ShuffleToShuffleMode = {Shuffle.FALSE: cde.ShuffleMode.FALSE,
52
+ Shuffle.ADAPTIVE: cde.ShuffleMode.ADAPTIVE,
53
+ Shuffle.GLOBAL: cde.ShuffleMode.GLOBAL,
54
+ Shuffle.PARTIAL: cde.ShuffleMode.PARTIAL,
55
+ Shuffle.FILES: cde.ShuffleMode.FILES,
56
+ Shuffle.INFILE: cde.ShuffleMode.INFILE}
57
+
58
+
59
+ def shuffle_to_shuffle_mode(shuffle):
60
+ """
61
+ Shuffle Enum to Shuffle Mode
62
+
63
+ Args:
64
+ shuffle (Shuffle): shuffle flag to shuffle mode in C layer
65
+
66
+ Returns:
67
+ ShuffleMode, shuffle mode
68
+ """
69
+ shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
70
+ if not isinstance(shuffle, Shuffle):
71
+ if shuffle is None or shuffle:
72
+ shuffle_mode = cde.ShuffleMode.GLOBAL # Global shuffle
73
+ else:
74
+ shuffle_mode = cde.ShuffleMode.FALSE # No shuffle
75
+ else:
76
+ shuffle_mode = ShuffleToShuffleMode[shuffle]
77
+ return shuffle_mode
78
+
79
+
29
80
  def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
30
81
  """
31
82
  Create sampler based on user input.
@@ -33,13 +84,16 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
33
84
  Args:
34
85
  num_samples (int): Number of samples.
35
86
  input_sampler (Union[Iterable, Sampler]): Sampler from user.
36
- shuffle (bool): Shuffle.
87
+ shuffle (Shuffle): Shuffle is FALSE / ADAPTIVE / GLOBAL / PARTIAL / FILES / INFILE
37
88
  num_shards (int): Number of shard for sharding.
38
89
  shard_id (int): Shard ID.
39
90
 
40
91
  Returns:
41
92
  Sampler, sampler selected based on user input.
42
93
  """
94
+ if input_sampler is None and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL,
95
+ Shuffle.FILES, Shuffle.INFILE):
96
+ raise RuntimeError("The input parameter shuffle: {} is not valid.".format(shuffle))
43
97
 
44
98
  if input_sampler is not None:
45
99
  # If the user provided a sampler, then it doesn't matter what the other args are because
@@ -65,23 +119,14 @@ def select_sampler(num_samples, input_sampler, shuffle, num_shards, shard_id):
65
119
  if isinstance(input_sampler, int):
66
120
  return SubsetSampler([input_sampler])
67
121
  raise TypeError('Unsupported sampler object of type ({})'.format(type(input_sampler)))
68
- if shuffle is None:
69
- if num_shards is not None:
70
- # If shuffle is not specified, sharding enabled, use distributed random sampler
71
- shuffle = True
72
- return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
73
- # If shuffle is not specified, sharding disabled, use random sampler
74
- if num_samples is not None and num_samples != 0:
75
- return RandomSampler(replacement=True, num_samples=num_samples)
76
- return RandomSampler(num_samples=num_samples)
77
- if shuffle is True:
122
+ if shuffle is not Shuffle.FALSE:
78
123
  if num_shards is not None:
79
124
  # If shuffle enabled, sharding enabled, use distributed random sampler
80
125
  return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
81
126
  # If shuffle enabled, sharding disabled, use random sampler
82
127
  if num_samples is not None:
83
- return RandomSampler(replacement=True, num_samples=num_samples)
84
- return RandomSampler(num_samples=num_samples)
128
+ return RandomSampler(replacement=True, num_samples=num_samples, shuffle=shuffle)
129
+ return RandomSampler(num_samples=num_samples, shuffle=shuffle)
85
130
  if num_shards is not None:
86
131
  # If shuffle disabled, sharding enabled, use distributed sequential sampler
87
132
  return DistributedSampler(num_shards, shard_id, shuffle=shuffle, num_samples=num_samples)
@@ -108,6 +153,10 @@ class BuiltinSampler:
108
153
  Add a sub-sampler for given sampler. The parent will receive all data from the
109
154
  output of sub-sampler sampler and apply its sample logic to return new samples.
110
155
 
156
+ Note:
157
+ - If a child sampler is added and it has a shuffle option, its value cannot be ``Shuffle.PARTIAL`` .
158
+ Additionally, the parent sampler's shuffle value must be ``Shuffle.GLOBAL`` .
159
+
111
160
  Args:
112
161
  sampler (Sampler): Object used to choose samples from the dataset. Only builtin
113
162
  samplers(:class:`mindspore.dataset.DistributedSampler` ,
@@ -125,6 +174,15 @@ class BuiltinSampler:
125
174
  """
126
175
  if self.child_sampler is not None:
127
176
  raise RuntimeError("Cannot add child sampler, this sampler already has a child.")
177
+
178
+ if sampler is not None and sampler.get_shuffle_mode() == Shuffle.PARTIAL:
179
+ raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the input sampler "
180
+ "must not be Shuffle.PARTIAL.")
181
+
182
+ if self.get_shuffle_mode() != Shuffle.GLOBAL and self.get_shuffle_mode() != Shuffle.FALSE:
183
+ raise RuntimeError("When multiple samplers are used, ensure that the shuffle of the current sampler "
184
+ "must be Shuffle.FALSE or Shuffle.GLOBAL, but got: {}.".format(self.get_shuffle_mode()))
185
+
128
186
  self.child_sampler = sampler
129
187
 
130
188
  def get_child(self):
@@ -227,6 +285,10 @@ class BuiltinSampler:
227
285
 
228
286
  return self.num_samples
229
287
 
288
+ def get_shuffle_mode(self):
289
+ """ Not implemented. """
290
+ return Shuffle.FALSE
291
+
230
292
 
231
293
  class Sampler(BuiltinSampler):
232
294
  """
@@ -253,6 +315,9 @@ class Sampler(BuiltinSampler):
253
315
  self.dataset_size = 0
254
316
  self.child_sampler = None
255
317
  self.num_samples = num_samples
318
+ if self.num_samples is None and hasattr(self, '__len__'):
319
+ self.num_samples = len(self)
320
+ self.batch_sizes = []
256
321
 
257
322
  def __iter__(self):
258
323
  """
@@ -268,27 +333,42 @@ class Sampler(BuiltinSampler):
268
333
 
269
334
  # Initialization handshake callback
270
335
  # Do not override this method!
271
- def _handshake(self, ds_size, num_samples):
336
+ def _handshake(self, ds_size):
272
337
  self.dataset_size = ds_size
273
- self.num_samples = num_samples
274
338
 
275
- # Indices fetcher
276
- # Do not override this method!
277
- # pylint: disable=missing-docstring
278
- def _get_indices(self):
279
- sampler_iter = iter(self)
339
+ def get_indices(self):
340
+ """
341
+ Get the indices of the sampler.
342
+
343
+ Do not override this method!
344
+ """
280
345
  ret = []
281
- for _ in range(self.num_samples):
282
- try:
283
- idx = next(sampler_iter)
284
- ret.append(idx)
285
- except StopIteration:
346
+ batch_sizes = []
347
+ for count, idx in enumerate(self):
348
+ # The idx can be either a number (for sampler) or a list (for batch sampler).
349
+ # If number, we convert it to list first. So they can be handled in the same way.
350
+ if isinstance(idx, numbers.Number):
351
+ idx = [idx]
352
+ # normal sampler does not have batch sizes
353
+ batch_sizes.append(0)
354
+ else:
355
+ # Using extend instead of append will flatten the list, so we need to save the
356
+ # batch size information here.
357
+ batch_sizes.append(len(idx))
358
+ ret.extend(idx)
359
+ if self.num_samples is not None and count + 1 >= self.num_samples:
286
360
  break
361
+ self.batch_sizes.append(batch_sizes)
287
362
  indices = np.array(ret)
288
363
  if indices.dtype == object:
289
364
  raise RuntimeError("Fetched indices can not be converted to a valid ndarray.")
290
365
  return indices
291
366
 
367
+ def _get_batch_sizes(self):
368
+ if not self.batch_sizes:
369
+ return []
370
+ return self.batch_sizes.pop(0)
371
+
292
372
  # Instance fetcher
293
373
  # Do not override this method!
294
374
  def parse(self):
@@ -325,20 +405,71 @@ class Sampler(BuiltinSampler):
325
405
  return self.child_sampler.is_sharded()
326
406
 
327
407
  def get_num_samples(self):
328
- if self.num_samples is None:
329
- return None
330
- return self._get_indices().size
408
+ if self.num_samples is not None:
409
+ return self.num_samples
410
+ # deepcopy self to avoid changing the random state
411
+ fake_sampler = copy.deepcopy(self)
412
+ fake_sampler.get_indices()
413
+ return len(fake_sampler.batch_sizes[-1])
331
414
 
332
415
 
333
416
  class DistributedSampler(BuiltinSampler):
334
417
  """
335
418
  A sampler that accesses a shard of the dataset, it helps divide dataset into multi-subset for distributed training.
336
419
 
420
+ Note:
421
+ The shuffling modes supported for different datasets are as follows:
422
+
423
+ .. list-table:: List of support for shuffling mode
424
+ :widths: 50 50 50 50
425
+ :header-rows: 1
426
+
427
+ * - Shuffling Mode
428
+ - MindDataset
429
+ - TFRecordDataset
430
+ - Others
431
+ * - ``Shuffle.ADAPTIVE``
432
+ - Supported
433
+ - Not Supported
434
+ - Not Supported
435
+ * - ``Shuffle.GLOBAL``
436
+ - Supported
437
+ - Supported
438
+ - Supported
439
+ * - ``Shuffle.PARTIAL``
440
+ - Supported
441
+ - Not Supported
442
+ - Not Supported
443
+ * - ``Shuffle.FILES``
444
+ - Supported
445
+ - Supported
446
+ - Not Supported
447
+ * - ``Shuffle.INFILE``
448
+ - Supported
449
+ - Not Supported
450
+ - Not Supported
451
+
337
452
  Args:
338
453
  num_shards (int): Number of shards to divide the dataset into.
339
454
  shard_id (int): Shard ID of the current shard, which should within the range of [0, `num_shards` - 1].
340
- shuffle (bool, optional): If True, the indices are shuffled, otherwise it will not be shuffled.
341
- Default: ``True``.
455
+ shuffle (Union[bool, Shuffle], optional): Specify the shuffle mode.
456
+ Default: ``True``, performs ``mindspore.dataset.Shuffle.GLOBAL`` . If `shuffle` is ``False`` ,
457
+ no shuffling will be performed.
458
+ There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
459
+
460
+ - ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
461
+ ``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
462
+ million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
463
+
464
+ - ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
465
+
466
+ - ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
467
+ The memory usage is less than ``Shuffle.GLOBAL`` .
468
+
469
+ - ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
470
+
471
+ - ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
472
+
342
473
  num_samples (int, optional): The number of samples to draw. Default: ``None``, which means sample all elements.
343
474
  offset(int, optional): The starting shard ID where the elements in the dataset are sent to, which
344
475
  should be no more than `num_shards` . This parameter is only valid when a ConcatDataset takes
@@ -348,7 +479,7 @@ class DistributedSampler(BuiltinSampler):
348
479
  Raises:
349
480
  TypeError: If `num_shards` is not of type int.
350
481
  TypeError: If `shard_id` is not of type int.
351
- TypeError: If `shuffle` is not of type bool.
482
+ TypeError: If `shuffle` is not of type bool or Shuffle.
352
483
  TypeError: If `num_samples` is not of type int.
353
484
  TypeError: If `offset` is not of type int.
354
485
  ValueError: If `num_samples` is a negative value.
@@ -372,8 +503,9 @@ class DistributedSampler(BuiltinSampler):
372
503
  if not isinstance(shard_id, int):
373
504
  raise TypeError("shard_id must be integer but was: {}.".format(shard_id))
374
505
 
375
- if not isinstance(shuffle, bool):
376
- raise TypeError("shuffle must be a boolean value but was: {}.".format(shuffle))
506
+ if not isinstance(shuffle, bool) and shuffle not in (Shuffle.FALSE, Shuffle.ADAPTIVE, Shuffle.GLOBAL,
507
+ Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
508
+ raise TypeError("shuffle must be a boolean value or valid shuffle mode but was: {}.".format(shuffle))
377
509
 
378
510
  if num_samples is not None:
379
511
  if not isinstance(num_samples, int):
@@ -387,7 +519,11 @@ class DistributedSampler(BuiltinSampler):
387
519
 
388
520
  self.num_shards = num_shards
389
521
  self.shard_id = shard_id
522
+
523
+ if isinstance(shuffle, bool):
524
+ shuffle = Shuffle.GLOBAL if shuffle is True else Shuffle.FALSE
390
525
  self.shuffle = shuffle
526
+
391
527
  # get seed in distributed scenario
392
528
  # Example 1. if user set seeds by ds.config.set_seed(4321), then seed 4321 is used
393
529
  # Example 2. if user does not set the seed, then existing or default seed (like 5489) is used
@@ -399,11 +535,18 @@ class DistributedSampler(BuiltinSampler):
399
535
  """ Parse the sampler."""
400
536
  num_samples = self.num_samples if self.num_samples is not None else 0
401
537
  shuffle = self.shuffle if self.shuffle is not None else True
538
+
539
+ if isinstance(shuffle, bool):
540
+ shuffle = Shuffle.GLOBAL if shuffle else Shuffle.FALSE
541
+
542
+ if shuffle not in (Shuffle.FALSE, Shuffle.GLOBAL):
543
+ raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
544
+
402
545
  offset = self.offset if self.offset is not None else -1
403
546
  # each time user calls create_dict_iterator() (to do repeat) sampler would get a different seed to shuffle
404
547
  self.seed += 1
405
548
  c_sampler = cde.DistributedSamplerObj(self.num_shards, self.shard_id,
406
- shuffle, num_samples, self.seed, offset, True)
549
+ shuffle_to_shuffle_mode(shuffle), num_samples, self.seed, offset, True)
407
550
  c_child_sampler = self.parse_child()
408
551
  c_sampler.add_child(c_child_sampler)
409
552
  return c_sampler
@@ -412,7 +555,14 @@ class DistributedSampler(BuiltinSampler):
412
555
  """ Parse the sampler for MindRecord."""
413
556
  num_samples = self.num_samples if self.num_samples is not None else 0
414
557
  shuffle = self.shuffle if self.shuffle is not None else True
415
- c_sampler = cde.MindrecordDistributedSampler(self.num_shards, self.shard_id, shuffle,
558
+
559
+ # convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
560
+ if isinstance(shuffle, bool):
561
+ if shuffle:
562
+ shuffle = Shuffle.ADAPTIVE
563
+ else:
564
+ shuffle = Shuffle.FALSE
565
+ c_sampler = cde.MindrecordDistributedSampler(self.num_shards, self.shard_id, shuffle_to_shuffle_mode(shuffle),
416
566
  self.seed, num_samples, self.offset)
417
567
  c_child_sampler = self.parse_child_for_minddataset()
418
568
  c_sampler.add_child(c_child_sampler)
@@ -421,7 +571,9 @@ class DistributedSampler(BuiltinSampler):
421
571
 
422
572
  def is_shuffled(self):
423
573
  if self.child_sampler is None:
424
- return self.shuffle
574
+ if self.shuffle == Shuffle.FALSE:
575
+ return False
576
+ return True
425
577
 
426
578
  return self.child_sampler.is_shuffled()
427
579
 
@@ -435,6 +587,10 @@ class DistributedSampler(BuiltinSampler):
435
587
  self.offset = offset
436
588
  return self
437
589
 
590
+ def get_shuffle_mode(self):
591
+ """Get the shuffle mode"""
592
+ return self.shuffle
593
+
438
594
 
439
595
  class PKSampler(BuiltinSampler):
440
596
  """
@@ -523,19 +679,72 @@ class PKSampler(BuiltinSampler):
523
679
  c_sampler.set_num_samples(num_samples)
524
680
  return c_sampler
525
681
 
682
+ def get_shuffle_mode(self):
683
+ """Get the shuffle mode"""
684
+ return Shuffle.FALSE
685
+
526
686
 
527
687
  class RandomSampler(BuiltinSampler):
528
688
  """
529
689
  Samples the elements randomly.
530
690
 
691
+ Note:
692
+ The shuffling modes supported for different datasets are as follows:
693
+
694
+ .. list-table:: List of support for shuffling mode
695
+ :widths: 50 50 50 50
696
+ :header-rows: 1
697
+
698
+ * - Shuffling Mode
699
+ - MindDataset
700
+ - TFRecordDataset
701
+ - Others
702
+ * - ``Shuffle.ADAPTIVE``
703
+ - Supported
704
+ - Not Supported
705
+ - Not Supported
706
+ * - ``Shuffle.GLOBAL``
707
+ - Supported
708
+ - Supported
709
+ - Supported
710
+ * - ``Shuffle.PARTIAL``
711
+ - Supported
712
+ - Not Supported
713
+ - Not Supported
714
+ * - ``Shuffle.FILES``
715
+ - Supported
716
+ - Supported
717
+ - Not Supported
718
+ * - ``Shuffle.INFILE``
719
+ - Supported
720
+ - Not Supported
721
+ - Not Supported
722
+
531
723
  Args:
532
724
  replacement (bool, optional): If True, put the sample ID back for the next draw. Default: ``False``.
533
725
  num_samples (int, optional): Number of elements to sample. Default: ``None`` , which means sample all elements.
726
+ shuffle (Shuffle, optional): Specify the shuffle mode.
727
+ Default: ``Shuffle.GLOBAL``, Global shuffle of all rows of data in dataset.
728
+ There are several levels of shuffling, desired shuffle enum defined by :class:`mindspore.dataset.Shuffle` .
729
+
730
+ - ``Shuffle.ADAPTIVE`` : When the number of dataset samples is less than or equal to 100 million,
731
+ ``Shuffle.GLOBAL`` is used. When the number of dataset samples is greater than 100
732
+ million, ``Shuffle.PARTIAL`` is used. The shuffle is performed once every 1 million samples.
733
+
734
+ - ``Shuffle.GLOBAL`` : Global shuffle of all rows of data in dataset. The memory usage is large.
735
+
736
+ - ``Shuffle.PARTIAL`` : Partial shuffle of data in dataset for every 1 million samples.
737
+ The memory usage is less than ``Shuffle.GLOBAL`` .
738
+
739
+ - ``Shuffle.FILES`` : Shuffle the file sequence but keep the order of data within each file.
740
+
741
+ - ``Shuffle.INFILE`` : Keep the file sequence the same but shuffle the data within each file.
534
742
 
535
743
  Raises:
536
744
  TypeError: If `replacement` is not of type bool.
537
745
  TypeError: If `num_samples` is not of type int.
538
746
  ValueError: If `num_samples` is a negative value.
747
+ TypeError: If `shuffle` is not of type Shuffle.
539
748
 
540
749
  Examples:
541
750
  >>> import mindspore.dataset as ds
@@ -546,7 +755,7 @@ class RandomSampler(BuiltinSampler):
546
755
  ... sampler=sampler)
547
756
  """
548
757
 
549
- def __init__(self, replacement=False, num_samples=None):
758
+ def __init__(self, replacement=False, num_samples=None, shuffle=Shuffle.GLOBAL):
550
759
  if not isinstance(replacement, bool):
551
760
  raise TypeError("replacement must be a boolean value but was: {}.".format(replacement))
552
761
 
@@ -557,6 +766,10 @@ class RandomSampler(BuiltinSampler):
557
766
  raise ValueError("num_samples exceeds the boundary between {} and {}(INT64_MAX)!"
558
767
  .format(0, validator.INT64_MAX))
559
768
 
769
+ if shuffle not in (Shuffle.ADAPTIVE, Shuffle.GLOBAL, Shuffle.PARTIAL, Shuffle.FILES, Shuffle.INFILE):
770
+ raise TypeError("shuffle must be valid shuffle mode but was: {}.".format(shuffle))
771
+ self.shuffle = shuffle
772
+
560
773
  self.deterministic = False
561
774
  self.replacement = replacement
562
775
  self.reshuffle_each_epoch = True
@@ -566,7 +779,11 @@ class RandomSampler(BuiltinSampler):
566
779
  """ Parse the sampler."""
567
780
  num_samples = self.num_samples if self.num_samples is not None else 0
568
781
  replacement = self.replacement if self.replacement is not None else False
569
- c_sampler = cde.RandomSamplerObj(replacement, num_samples, self.reshuffle_each_epoch)
782
+ # convert shuffle=True to Shuffle.GLOBAL, convert shuffle=False to Shuffle.FALSE
783
+ if self.shuffle is not Shuffle.GLOBAL:
784
+ raise RuntimeError("The shuffle mode: {} is not supported with current dataset.".format(self.shuffle))
785
+ c_sampler = cde.RandomSamplerObj(replacement, num_samples, self.reshuffle_each_epoch,
786
+ shuffle_to_shuffle_mode(self.shuffle))
570
787
  c_child_sampler = self.parse_child()
571
788
  c_sampler.add_child(c_child_sampler)
572
789
  return c_sampler
@@ -574,7 +791,15 @@ class RandomSampler(BuiltinSampler):
574
791
  def parse_for_minddataset(self):
575
792
  """Parse the sampler for MindRecord."""
576
793
  num_samples = self.num_samples if self.num_samples is not None else 0
577
- c_sampler = cde.MindrecordRandomSampler(num_samples, self.replacement, self.reshuffle_each_epoch)
794
+ shuffle = self.shuffle if self.shuffle is not None else True
795
+ # convert shuffle=True to Shuffle.ADAPTIVE, convert shuffle=False to Shuffle.FALSE
796
+ if isinstance(shuffle, bool):
797
+ if shuffle:
798
+ shuffle = Shuffle.ADAPTIVE
799
+ else:
800
+ raise RuntimeError("The shuffle: False is invalid for RandomSampler.")
801
+ c_sampler = cde.MindrecordRandomSampler(num_samples, self.replacement, self.reshuffle_each_epoch,
802
+ shuffle_to_shuffle_mode(shuffle))
578
803
  c_child_sampler = self.parse_child_for_minddataset()
579
804
  c_sampler.add_child(c_child_sampler)
580
805
  c_sampler.set_num_samples(num_samples)
@@ -589,6 +814,10 @@ class RandomSampler(BuiltinSampler):
589
814
 
590
815
  return self.child_sampler.is_sharded()
591
816
 
817
+ def get_shuffle_mode(self):
818
+ """Get the shuffle mode"""
819
+ return self.shuffle
820
+
592
821
 
593
822
  class SequentialSampler(BuiltinSampler):
594
823
  """
@@ -658,6 +887,10 @@ class SequentialSampler(BuiltinSampler):
658
887
 
659
888
  return self.child_sampler.is_sharded()
660
889
 
890
+ def get_shuffle_mode(self):
891
+ """Get the shuffle mode"""
892
+ return Shuffle.FALSE
893
+
661
894
 
662
895
  class SubsetSampler(BuiltinSampler):
663
896
  """
@@ -747,6 +980,10 @@ class SubsetSampler(BuiltinSampler):
747
980
 
748
981
  return min(len(self.indices), num_samples)
749
982
 
983
+ def get_shuffle_mode(self):
984
+ """Get the shuffle mode"""
985
+ return Shuffle.FALSE
986
+
750
987
 
751
988
  class SubsetRandomSampler(SubsetSampler):
752
989
  """
@@ -789,6 +1026,10 @@ class SubsetRandomSampler(SubsetSampler):
789
1026
  c_sampler.set_num_samples(self.get_num_samples())
790
1027
  return c_sampler
791
1028
 
1029
+ def get_shuffle_mode(self):
1030
+ """Get the shuffle mode"""
1031
+ return Shuffle.GLOBAL
1032
+
792
1033
 
793
1034
  class IterSampler(Sampler):
794
1035
  """
@@ -817,8 +1058,8 @@ class IterSampler(Sampler):
817
1058
  """
818
1059
 
819
1060
  def __init__(self, sampler, num_samples=None):
820
- if num_samples is None:
821
- num_samples = len(list(sampler))
1061
+ if num_samples is None and hasattr(sampler, '__len__'):
1062
+ num_samples = len(sampler)
822
1063
  super().__init__(num_samples=num_samples)
823
1064
  self.sampler = sampler
824
1065
 
@@ -832,8 +1073,9 @@ class WeightedRandomSampler(BuiltinSampler):
832
1073
 
833
1074
  Args:
834
1075
  weights (list[float, int]): A sequence of weights, not necessarily summing up to 1.
835
- num_samples (int, optional): Number of elements to sample. Default: ``None`` , which means sample all elements.
836
- replacement (bool): If ``True``, put the sample ID back for the next draw. Default: ``True``.
1076
+ num_samples (int, optional): Number of elements to sample. Default: ``None`` ,
1077
+ which means sample all elements.
1078
+ replacement (bool, optional): If ``True``, put the sample ID back for the next draw. Default: ``True``.
837
1079
 
838
1080
  Raises:
839
1081
  TypeError: If elements of `weights` are not of type number.
@@ -893,3 +1135,7 @@ class WeightedRandomSampler(BuiltinSampler):
893
1135
  return False
894
1136
 
895
1137
  return self.child_sampler.is_sharded()
1138
+
1139
+ def get_shuffle_mode(self):
1140
+ """Get the shuffle mode"""
1141
+ return Shuffle.GLOBAL
@@ -63,12 +63,13 @@ def serialize(dataset, json_filepath=""):
63
63
 
64
64
  def deserialize(input_dict=None, json_filepath=None):
65
65
  """
66
- Construct dataset pipeline from a JSON file produced by dataset serialize function.
66
+ Deserialize the data processing pipeline, the api accepts a Python dictionary or
67
+ a JSON file generated by :func:`mindspore.dataset.serialize`.
67
68
 
68
69
  Args:
69
70
  input_dict (dict): A Python dictionary containing a serialized dataset graph. Default: ``None``.
70
71
  json_filepath (str): A path to the JSON file containing dataset graph.
71
- User can obtain this file by calling API `mindspore.dataset.serialize()` . Default: ``None``.
72
+ User can obtain this file by calling API :func:`mindspore.dataset.serialize` . Default: ``None``.
72
73
 
73
74
  Returns:
74
75
  de.Dataset or None if error occurs.