mindspore 2.4.1__cp311-cp311-win_amd64.whl → 2.5.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 (395) 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 +8 -3
  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/_checkparam.py +0 -5
  9. mindspore/_extends/parallel_compile/akg_compiler/gen_custom_op_files.py +1 -1
  10. mindspore/_extends/parse/compile_config.py +64 -0
  11. mindspore/_extends/parse/deprecated/__init__.py +0 -0
  12. mindspore/_extends/parse/deprecated/deprecated_tensor_method.py +375 -0
  13. mindspore/_extends/parse/parser.py +23 -5
  14. mindspore/_extends/parse/standard_method.py +123 -27
  15. mindspore/_extends/pijit/pijit_func_white_list.py +1 -1
  16. mindspore/amp.py +7 -1
  17. mindspore/atlprov.dll +0 -0
  18. mindspore/avcodec-59.dll +0 -0
  19. mindspore/avdevice-59.dll +0 -0
  20. mindspore/avfilter-8.dll +0 -0
  21. mindspore/avformat-59.dll +0 -0
  22. mindspore/avutil-57.dll +0 -0
  23. mindspore/boost/boost_cell_wrapper.py +136 -41
  24. mindspore/c1.dll +0 -0
  25. mindspore/c1xx.dll +0 -0
  26. mindspore/c2.dll +0 -0
  27. mindspore/common/__init__.py +3 -1
  28. mindspore/common/_register_for_tensor.py +0 -1
  29. mindspore/common/_stub_tensor.py +25 -4
  30. mindspore/common/_tensor_cpp_method.py +17 -0
  31. mindspore/common/_tensor_docs.py +6132 -0
  32. mindspore/common/api.py +99 -25
  33. mindspore/common/dtype.py +34 -34
  34. mindspore/common/dump.py +2 -1
  35. mindspore/common/file_system.py +8 -1
  36. mindspore/common/generator.py +2 -0
  37. mindspore/common/hook_handle.py +3 -1
  38. mindspore/common/initializer.py +3 -4
  39. mindspore/common/lazy_inline.py +8 -2
  40. mindspore/common/mindir_util.py +10 -2
  41. mindspore/common/parameter.py +30 -27
  42. mindspore/common/tensor.py +713 -1337
  43. mindspore/communication/__init__.py +1 -1
  44. mindspore/communication/_comm_helper.py +10 -0
  45. mindspore/communication/comm_func.py +215 -173
  46. mindspore/communication/management.py +23 -20
  47. mindspore/context.py +292 -193
  48. mindspore/dataset/__init__.py +23 -19
  49. mindspore/dataset/callback/ds_callback.py +2 -1
  50. mindspore/dataset/core/config.py +84 -3
  51. mindspore/dataset/engine/cache_admin.py +3 -3
  52. mindspore/dataset/engine/cache_client.py +5 -4
  53. mindspore/dataset/engine/datasets.py +192 -149
  54. mindspore/dataset/engine/datasets_audio.py +14 -0
  55. mindspore/dataset/engine/datasets_standard_format.py +28 -11
  56. mindspore/dataset/engine/datasets_text.py +38 -1
  57. mindspore/dataset/engine/datasets_user_defined.py +125 -65
  58. mindspore/dataset/engine/datasets_vision.py +81 -8
  59. mindspore/dataset/engine/iterators.py +281 -63
  60. mindspore/dataset/engine/obs/util.py +8 -0
  61. mindspore/dataset/engine/queue.py +40 -0
  62. mindspore/dataset/engine/samplers.py +26 -2
  63. mindspore/dataset/engine/serializer_deserializer.py +1 -1
  64. mindspore/dataset/engine/validators.py +43 -11
  65. mindspore/dataset/transforms/py_transforms_util.py +17 -0
  66. mindspore/dataset/transforms/transforms.py +29 -12
  67. mindspore/dataset/vision/validators.py +1 -2
  68. mindspore/device_context/__init__.py +21 -0
  69. mindspore/device_context/ascend/__init__.py +25 -0
  70. mindspore/device_context/ascend/device.py +72 -0
  71. mindspore/device_context/ascend/op_debug.py +94 -0
  72. mindspore/device_context/ascend/op_precision.py +193 -0
  73. mindspore/device_context/ascend/op_tuning.py +127 -0
  74. mindspore/device_context/cpu/__init__.py +25 -0
  75. mindspore/device_context/cpu/device.py +62 -0
  76. mindspore/device_context/cpu/op_tuning.py +43 -0
  77. mindspore/device_context/gpu/__init__.py +21 -0
  78. mindspore/device_context/gpu/device.py +70 -0
  79. mindspore/device_context/gpu/op_precision.py +67 -0
  80. mindspore/device_context/gpu/op_tuning.py +175 -0
  81. mindspore/device_manager.py +134 -0
  82. mindspore/dnnl.dll +0 -0
  83. mindspore/dpcmi.dll +0 -0
  84. mindspore/experimental/llm_boost/__init__.py +3 -2
  85. mindspore/experimental/llm_boost/ascend_native/__init__.py +22 -0
  86. mindspore/experimental/llm_boost/ascend_native/llama_boost_ascend_native.py +211 -0
  87. mindspore/experimental/llm_boost/ascend_native/llm_boost.py +52 -0
  88. mindspore/experimental/llm_boost/atb/boost_base.py +239 -64
  89. mindspore/experimental/llm_boost/atb/llama_boost.py +52 -30
  90. mindspore/experimental/llm_boost/atb/qwen_boost.py +47 -24
  91. mindspore/experimental/llm_boost/register.py +1 -0
  92. mindspore/experimental/optim/adadelta.py +26 -22
  93. mindspore/experimental/optim/adam.py +3 -0
  94. mindspore/experimental/optim/lr_scheduler.py +33 -24
  95. mindspore/experimental/optim/radam.py +33 -30
  96. mindspore/hal/device.py +28 -0
  97. mindspore/hal/event.py +17 -0
  98. mindspore/hal/memory.py +94 -3
  99. mindspore/hal/stream.py +91 -6
  100. mindspore/include/api/context.h +1 -2
  101. mindspore/include/dataset/constants.h +2 -2
  102. mindspore/jpeg62.dll +0 -0
  103. mindspore/log.py +12 -0
  104. mindspore/mindrecord/__init__.py +1 -1
  105. mindspore/mindrecord/config.py +17 -316
  106. mindspore/mindrecord/filereader.py +1 -9
  107. mindspore/mindrecord/filewriter.py +5 -15
  108. mindspore/mindrecord/mindpage.py +1 -9
  109. mindspore/mindspore_backend.dll +0 -0
  110. mindspore/mindspore_common.dll +0 -0
  111. mindspore/mindspore_core.dll +0 -0
  112. mindspore/mindspore_glog.dll +0 -0
  113. mindspore/mindspore_ops.dll +0 -0
  114. mindspore/mint/__init__.py +824 -218
  115. mindspore/mint/distributed/__init__.py +66 -4
  116. mindspore/mint/distributed/distributed.py +2594 -44
  117. mindspore/mint/linalg/__init__.py +6 -0
  118. mindspore/mint/nn/__init__.py +473 -14
  119. mindspore/mint/nn/functional.py +486 -11
  120. mindspore/mint/nn/layer/__init__.py +17 -4
  121. mindspore/mint/nn/layer/_functions.py +330 -0
  122. mindspore/mint/nn/layer/activation.py +169 -1
  123. mindspore/mint/nn/layer/basic.py +123 -0
  124. mindspore/mint/nn/layer/conv.py +727 -0
  125. mindspore/mint/nn/layer/normalization.py +215 -19
  126. mindspore/mint/nn/layer/padding.py +797 -0
  127. mindspore/mint/nn/layer/pooling.py +170 -0
  128. mindspore/mint/optim/__init__.py +2 -1
  129. mindspore/mint/optim/adam.py +223 -0
  130. mindspore/mint/optim/adamw.py +26 -19
  131. mindspore/mint/special/__init__.py +2 -1
  132. mindspore/msobj140.dll +0 -0
  133. mindspore/mspdb140.dll +0 -0
  134. mindspore/mspdbcore.dll +0 -0
  135. mindspore/mspdbst.dll +0 -0
  136. mindspore/mspft140.dll +0 -0
  137. mindspore/msvcdis140.dll +0 -0
  138. mindspore/msvcp140_1.dll +0 -0
  139. mindspore/msvcp140_2.dll +0 -0
  140. mindspore/msvcp140_atomic_wait.dll +0 -0
  141. mindspore/msvcp140_codecvt_ids.dll +0 -0
  142. mindspore/multiprocessing/__init__.py +5 -0
  143. mindspore/nn/__init__.py +2 -0
  144. mindspore/nn/cell.py +142 -21
  145. mindspore/nn/dynamic_lr.py +2 -1
  146. mindspore/nn/layer/activation.py +6 -6
  147. mindspore/nn/layer/basic.py +35 -25
  148. mindspore/nn/layer/channel_shuffle.py +3 -3
  149. mindspore/nn/layer/conv.py +3 -0
  150. mindspore/nn/layer/embedding.py +3 -3
  151. mindspore/nn/layer/normalization.py +8 -7
  152. mindspore/nn/layer/padding.py +4 -3
  153. mindspore/nn/layer/pooling.py +55 -23
  154. mindspore/nn/layer/rnn_cells.py +1 -1
  155. mindspore/nn/layer/rnns.py +2 -1
  156. mindspore/nn/layer/timedistributed.py +5 -5
  157. mindspore/nn/layer/transformer.py +48 -26
  158. mindspore/nn/learning_rate_schedule.py +5 -3
  159. mindspore/nn/loss/loss.py +31 -36
  160. mindspore/nn/optim/ada_grad.py +1 -0
  161. mindspore/nn/optim/adadelta.py +2 -2
  162. mindspore/nn/optim/adam.py +1 -1
  163. mindspore/nn/optim/lars.py +1 -4
  164. mindspore/nn/optim/optimizer.py +1 -1
  165. mindspore/nn/optim/rprop.py +2 -2
  166. mindspore/nn/optim/thor.py +2 -1
  167. mindspore/nn/utils/__init__.py +22 -0
  168. mindspore/nn/utils/init.py +73 -0
  169. mindspore/nn/wrap/cell_wrapper.py +4 -6
  170. mindspore/nn/wrap/loss_scale.py +3 -4
  171. mindspore/numpy/array_creations.py +60 -62
  172. mindspore/numpy/array_ops.py +148 -143
  173. mindspore/numpy/logic_ops.py +41 -42
  174. mindspore/numpy/math_ops.py +361 -359
  175. mindspore/numpy/utils.py +16 -16
  176. mindspore/numpy/utils_const.py +4 -4
  177. mindspore/opencv_core452.dll +0 -0
  178. mindspore/opencv_imgcodecs452.dll +0 -0
  179. mindspore/opencv_imgproc452.dll +0 -0
  180. mindspore/ops/__init__.py +2 -1
  181. mindspore/ops/_grad_experimental/grad_comm_ops.py +107 -8
  182. mindspore/ops/_grad_experimental/grad_debug_ops.py +6 -1
  183. mindspore/ops/_grad_experimental/grad_inner_ops.py +9 -0
  184. mindspore/ops/_grad_experimental/grad_math_ops.py +2 -1
  185. mindspore/ops/_op_impl/cpu/__init__.py +1 -0
  186. mindspore/ops/_op_impl/cpu/raise_op.py +28 -0
  187. mindspore/ops/_vmap/vmap_array_ops.py +20 -19
  188. mindspore/ops/_vmap/vmap_base.py +0 -2
  189. mindspore/ops/_vmap/vmap_grad_nn_ops.py +19 -13
  190. mindspore/ops/_vmap/vmap_math_ops.py +11 -9
  191. mindspore/ops/_vmap/vmap_nn_ops.py +20 -34
  192. mindspore/ops/auto_generate/cpp_create_prim_instance_helper.py +149 -12
  193. mindspore/ops/auto_generate/gen_arg_handler.py +0 -61
  194. mindspore/ops/auto_generate/gen_extend_func.py +554 -60
  195. mindspore/ops/auto_generate/gen_ops_def.py +1621 -115
  196. mindspore/ops/auto_generate/gen_ops_prim.py +8027 -3411
  197. mindspore/ops/auto_generate/pyboost_inner_prim.py +183 -79
  198. mindspore/ops/composite/base.py +1 -1
  199. mindspore/ops/composite/multitype_ops/_compile_utils.py +229 -30
  200. mindspore/ops/composite/multitype_ops/pow_impl.py +0 -29
  201. mindspore/ops/function/__init__.py +12 -0
  202. mindspore/ops/function/array_func.py +561 -159
  203. mindspore/ops/function/clip_func.py +64 -0
  204. mindspore/ops/function/debug_func.py +28 -20
  205. mindspore/ops/function/image_func.py +1 -1
  206. mindspore/ops/function/linalg_func.py +5 -4
  207. mindspore/ops/function/math_func.py +1664 -294
  208. mindspore/ops/function/nn_func.py +988 -317
  209. mindspore/ops/function/parameter_func.py +3 -56
  210. mindspore/ops/function/random_func.py +243 -33
  211. mindspore/ops/function/sparse_unary_func.py +1 -1
  212. mindspore/ops/functional.py +18 -5
  213. mindspore/ops/functional_overload.py +897 -0
  214. mindspore/ops/operations/__init__.py +3 -2
  215. mindspore/ops/operations/_embedding_cache_ops.py +4 -4
  216. mindspore/ops/operations/_grad_ops.py +2 -34
  217. mindspore/ops/operations/_infer_ops.py +2 -1
  218. mindspore/ops/operations/_inner_ops.py +38 -8
  219. mindspore/ops/operations/array_ops.py +45 -303
  220. mindspore/ops/operations/comm_ops.py +23 -17
  221. mindspore/ops/operations/custom_ops.py +7 -49
  222. mindspore/ops/operations/debug_ops.py +42 -47
  223. mindspore/ops/operations/inner_ops.py +6 -4
  224. mindspore/ops/operations/linalg_ops.py +3 -2
  225. mindspore/ops/operations/manually_defined/ops_def.py +185 -104
  226. mindspore/ops/operations/math_ops.py +11 -216
  227. mindspore/ops/operations/nn_ops.py +153 -310
  228. mindspore/ops/primitive.py +23 -21
  229. mindspore/ops/tensor_method.py +1669 -0
  230. mindspore/ops_generate/aclnn_kernel_register_auto_cc_generator.py +110 -0
  231. mindspore/ops_generate/add_tensor_docs_generator.py +54 -0
  232. mindspore/ops_generate/arg_handler.py +0 -61
  233. mindspore/ops_generate/auto_grad_impl_cc_generator.py +135 -0
  234. mindspore/ops_generate/auto_grad_reg_cc_generator.py +93 -0
  235. mindspore/ops_generate/base_generator.py +11 -0
  236. mindspore/ops_generate/cpp_create_prim_instance_helper_generator.py +108 -0
  237. mindspore/ops_generate/functional_map_cpp_generator.py +491 -0
  238. mindspore/ops_generate/functional_overload_py_generator.py +110 -0
  239. mindspore/ops_generate/functions_cc_generator.py +233 -0
  240. mindspore/ops_generate/gen_aclnn_implement.py +110 -114
  241. mindspore/ops_generate/gen_constants.py +157 -3
  242. mindspore/ops_generate/gen_ops.py +245 -990
  243. mindspore/ops_generate/gen_pyboost_func.py +97 -998
  244. mindspore/ops_generate/gen_utils.py +119 -33
  245. mindspore/ops_generate/lite_ops_cpp_generator.py +155 -0
  246. mindspore/ops_generate/op_api_proto.py +206 -0
  247. mindspore/ops_generate/op_def_py_generator.py +131 -0
  248. mindspore/ops_generate/op_prim_py_generator.py +480 -0
  249. mindspore/ops_generate/op_proto.py +373 -108
  250. mindspore/ops_generate/op_template_parser.py +436 -0
  251. mindspore/ops_generate/ops_def_cc_generator.py +288 -0
  252. mindspore/ops_generate/ops_def_h_generator.py +74 -0
  253. mindspore/ops_generate/ops_name_h_generator.py +68 -0
  254. mindspore/ops_generate/ops_primitive_h_generator.py +81 -0
  255. mindspore/ops_generate/pyboost_functions_cpp_generator.py +370 -0
  256. mindspore/ops_generate/pyboost_functions_h_generator.py +68 -0
  257. mindspore/ops_generate/pyboost_functions_py_generator.py +148 -0
  258. mindspore/ops_generate/pyboost_grad_function_cpp_generator.py +154 -0
  259. mindspore/ops_generate/pyboost_inner_prim_generator.py +131 -0
  260. mindspore/ops_generate/pyboost_native_grad_functions_generator.py +268 -0
  261. mindspore/ops_generate/pyboost_op_cpp_code_generator.py +851 -0
  262. mindspore/ops_generate/pyboost_overload_functions_cpp_generator.py +344 -0
  263. mindspore/ops_generate/pyboost_utils.py +92 -33
  264. mindspore/ops_generate/template.py +294 -44
  265. mindspore/ops_generate/tensor_func_reg_cpp_generator.py +422 -0
  266. mindspore/parallel/__init__.py +3 -3
  267. mindspore/parallel/_auto_parallel_context.py +44 -34
  268. mindspore/parallel/_cell_wrapper.py +22 -3
  269. mindspore/parallel/_parallel_serialization.py +13 -2
  270. mindspore/parallel/_utils.py +4 -2
  271. mindspore/parallel/algo_parameter_config.py +1 -1
  272. mindspore/parallel/checkpoint_transform.py +44 -0
  273. mindspore/parallel/cluster/process_entity/_api.py +131 -37
  274. mindspore/parallel/cluster/process_entity/_utils.py +41 -6
  275. mindspore/parallel/cluster/run.py +20 -3
  276. mindspore/parallel/parameter_broadcast.py +1 -1
  277. mindspore/parallel/shard.py +3 -0
  278. mindspore/parallel/transform_safetensors.py +119 -253
  279. mindspore/pgodb140.dll +0 -0
  280. mindspore/pgort140.dll +0 -0
  281. mindspore/profiler/__init__.py +17 -4
  282. mindspore/profiler/analysis/__init__.py +0 -0
  283. mindspore/profiler/analysis/parser/__init__.py +0 -0
  284. mindspore/profiler/analysis/parser/ascend_cann_parser.py +166 -0
  285. mindspore/profiler/analysis/parser/base_parser.py +158 -0
  286. mindspore/profiler/analysis/parser/framework_cann_relation_parser.py +45 -0
  287. mindspore/profiler/analysis/parser/ms_framework_parser.py +142 -0
  288. mindspore/profiler/analysis/parser/ms_minddata_parser.py +145 -0
  289. mindspore/profiler/analysis/parser/timeline_assembly_factory/__init__.py +0 -0
  290. mindspore/profiler/analysis/parser/timeline_assembly_factory/ascend_timeline_assembler.py +261 -0
  291. mindspore/profiler/analysis/parser/timeline_assembly_factory/base_timeline_assembler.py +40 -0
  292. mindspore/profiler/analysis/parser/timeline_assembly_factory/trace_view_container.py +84 -0
  293. mindspore/profiler/analysis/parser/timeline_creator/__init__.py +0 -0
  294. mindspore/profiler/analysis/parser/timeline_creator/base_timeline_creator.py +44 -0
  295. mindspore/profiler/analysis/parser/timeline_creator/cpu_op_timeline_creator.py +90 -0
  296. mindspore/profiler/analysis/parser/timeline_creator/fwk_timeline_creator.py +76 -0
  297. mindspore/profiler/analysis/parser/timeline_creator/msprof_timeline_creator.py +103 -0
  298. mindspore/profiler/analysis/parser/timeline_creator/scope_layer_timeline_creator.py +134 -0
  299. mindspore/profiler/analysis/parser/timeline_event/__init__.py +0 -0
  300. mindspore/profiler/analysis/parser/timeline_event/base_event.py +233 -0
  301. mindspore/profiler/analysis/parser/timeline_event/cpu_op_event.py +47 -0
  302. mindspore/profiler/analysis/parser/timeline_event/flow_event.py +36 -0
  303. mindspore/profiler/analysis/parser/timeline_event/fwk_event.py +260 -0
  304. mindspore/profiler/analysis/parser/timeline_event/msprof_event.py +73 -0
  305. mindspore/profiler/analysis/parser/timeline_event/scope_layer_event.py +53 -0
  306. mindspore/profiler/analysis/parser/timeline_event/timeline_event_pool.py +146 -0
  307. mindspore/profiler/analysis/task_manager.py +131 -0
  308. mindspore/profiler/analysis/time_converter.py +84 -0
  309. mindspore/profiler/analysis/viewer/__init__.py +0 -0
  310. mindspore/profiler/analysis/viewer/ascend_communication_viewer.py +333 -0
  311. mindspore/profiler/analysis/viewer/ascend_integrate_viewer.py +87 -0
  312. mindspore/profiler/analysis/viewer/ascend_kernel_details_viewer.py +252 -0
  313. mindspore/profiler/analysis/viewer/ascend_memory_viewer.py +313 -0
  314. mindspore/profiler/analysis/viewer/ascend_op_memory_viewer.py +322 -0
  315. mindspore/profiler/analysis/viewer/ascend_step_trace_time_viewer.py +265 -0
  316. mindspore/profiler/analysis/viewer/ascend_timeline_viewer.py +58 -0
  317. mindspore/profiler/analysis/viewer/base_viewer.py +26 -0
  318. mindspore/profiler/analysis/viewer/ms_dataset_viewer.py +97 -0
  319. mindspore/profiler/analysis/viewer/ms_minddata_viewer.py +581 -0
  320. mindspore/profiler/analysis/work_flow.py +73 -0
  321. mindspore/profiler/common/ascend_msprof_exporter.py +138 -0
  322. mindspore/profiler/common/command_executor.py +90 -0
  323. mindspore/profiler/common/constant.py +174 -3
  324. mindspore/profiler/common/file_manager.py +208 -0
  325. mindspore/profiler/common/log.py +130 -0
  326. mindspore/profiler/common/msprof_cmd_tool.py +202 -0
  327. mindspore/profiler/common/path_manager.py +371 -0
  328. mindspore/profiler/common/process_bar.py +168 -0
  329. mindspore/profiler/common/process_pool.py +9 -3
  330. mindspore/profiler/common/profiler_context.py +476 -0
  331. mindspore/profiler/common/profiler_info.py +304 -0
  332. mindspore/profiler/common/profiler_output_path.py +284 -0
  333. mindspore/profiler/common/profiler_parameters.py +210 -0
  334. mindspore/profiler/common/profiler_path_manager.py +120 -0
  335. mindspore/profiler/common/record_function.py +76 -0
  336. mindspore/profiler/common/tlv_decoder.py +76 -0
  337. mindspore/profiler/common/util.py +75 -2
  338. mindspore/profiler/dynamic_profiler.py +270 -37
  339. mindspore/profiler/envprofiler.py +138 -0
  340. mindspore/profiler/mstx.py +199 -0
  341. mindspore/profiler/platform/__init__.py +21 -0
  342. mindspore/profiler/platform/base_profiler.py +40 -0
  343. mindspore/profiler/platform/cpu_profiler.py +124 -0
  344. mindspore/profiler/platform/gpu_profiler.py +74 -0
  345. mindspore/profiler/platform/npu_profiler.py +309 -0
  346. mindspore/profiler/profiler.py +580 -93
  347. mindspore/profiler/profiler_action_controller.py +187 -0
  348. mindspore/profiler/profiler_interface.py +114 -0
  349. mindspore/profiler/schedule.py +208 -0
  350. mindspore/rewrite/api/symbol_tree.py +1 -2
  351. mindspore/run_check/_check_version.py +18 -13
  352. mindspore/runtime/__init__.py +37 -0
  353. mindspore/runtime/device.py +27 -0
  354. mindspore/runtime/event.py +209 -0
  355. mindspore/runtime/executor.py +148 -0
  356. mindspore/runtime/memory.py +392 -0
  357. mindspore/runtime/stream.py +460 -0
  358. mindspore/runtime/thread_bind_core.py +401 -0
  359. mindspore/swresample-4.dll +0 -0
  360. mindspore/swscale-6.dll +0 -0
  361. mindspore/tbbmalloc.dll +0 -0
  362. mindspore/tinyxml2.dll +0 -0
  363. mindspore/train/__init__.py +2 -2
  364. mindspore/train/_utils.py +53 -18
  365. mindspore/train/amp.py +8 -4
  366. mindspore/train/callback/_checkpoint.py +32 -18
  367. mindspore/train/callback/_early_stop.py +1 -1
  368. mindspore/train/callback/_flops_collector.py +105 -69
  369. mindspore/train/callback/_history.py +1 -1
  370. mindspore/train/callback/_summary_collector.py +44 -6
  371. mindspore/train/callback/_tft_register.py +37 -15
  372. mindspore/train/dataset_helper.py +11 -11
  373. mindspore/train/metrics/precision.py +4 -5
  374. mindspore/train/mind_ir_pb2.py +167 -46
  375. mindspore/train/model.py +13 -14
  376. mindspore/train/serialization.py +461 -72
  377. mindspore/train/summary/summary_record.py +1 -2
  378. mindspore/train/train_thor/model_thor.py +1 -1
  379. mindspore/turbojpeg.dll +0 -0
  380. mindspore/utils/__init__.py +4 -2
  381. mindspore/utils/dryrun.py +138 -0
  382. mindspore/utils/runtime_execution_order_check.py +550 -0
  383. mindspore/vcmeta.dll +0 -0
  384. mindspore/vcruntime140.dll +0 -0
  385. mindspore/vcruntime140_1.dll +0 -0
  386. mindspore/version.py +1 -1
  387. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/METADATA +3 -4
  388. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/RECORD +391 -265
  389. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/entry_points.txt +1 -1
  390. mindspore/common/_tensor_overload.py +0 -139
  391. mindspore/mindspore_np_dtype.dll +0 -0
  392. mindspore/profiler/envprofiling.py +0 -254
  393. mindspore/profiler/profiling.py +0 -1926
  394. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/WHEEL +0 -0
  395. {mindspore-2.4.1.dist-info → mindspore-2.5.0.dist-info}/top_level.txt +0 -0
@@ -16,9 +16,12 @@
16
16
  """
17
17
  Built-in validators.
18
18
  """
19
+
20
+ import collections
19
21
  import inspect as ins
20
22
  import os
21
23
  from functools import wraps
24
+
22
25
  import numpy as np
23
26
 
24
27
  from mindspore._c_expression import typing
@@ -28,7 +31,6 @@ from ..core.validator_helpers import parse_user_args, type_check, type_check_lis
28
31
  validate_dataset_param_value, check_padding_options, \
29
32
  check_num_parallel_workers, check_columns, check_pos_int32, check_valid_str, check_dataset_num_shards_shard_id, \
30
33
  check_valid_list_tuple, check_int32, check_independent_mode
31
-
32
34
  from . import datasets
33
35
  from . import samplers
34
36
  from . import cache_client
@@ -976,7 +978,7 @@ def check_tuple_iterator(method):
976
978
  @wraps(method)
977
979
  def new_method(self, *args, **kwargs):
978
980
  [columns, num_epochs, _, _], param_dict = parse_user_args(method, *args, **kwargs)
979
- nreq_param_bool = ['output_numpy']
981
+ nreq_param_bool = ['output_numpy', 'do_copy']
980
982
  validate_dataset_param_value(nreq_param_bool, param_dict, bool)
981
983
  if num_epochs is not None:
982
984
  type_check(num_epochs, (int,), "num_epochs")
@@ -996,7 +998,7 @@ def check_dict_iterator(method):
996
998
  @wraps(method)
997
999
  def new_method(self, *args, **kwargs):
998
1000
  [num_epochs, _, _], param_dict = parse_user_args(method, *args, **kwargs)
999
- nreq_param_bool = ['output_numpy']
1001
+ nreq_param_bool = ['output_numpy', 'do_copy']
1000
1002
  validate_dataset_param_value(nreq_param_bool, param_dict, bool)
1001
1003
  if num_epochs is not None:
1002
1004
  type_check(num_epochs, (int,), "num_epochs")
@@ -1071,7 +1073,34 @@ def check_source_function(source):
1071
1073
  return str(var) + source_doc
1072
1074
 
1073
1075
 
1074
- def check_generatordataset(method):
1076
+ def check_batch_sampler(batch_sampler, num_samples, shuffle, num_shards, shard_id, sampler, collate_fn):
1077
+ """Check whether the params are valid with batch_sampler."""
1078
+ if batch_sampler is not None:
1079
+ if not all(param is None for param in [num_samples, shuffle, num_shards, shard_id, sampler]):
1080
+ raise ValueError("batch_sampler is mutually exclusive with num_samples, shuffle, num_shards, "
1081
+ "shard_id and sampler.")
1082
+ if not isinstance(batch_sampler, (samplers.BuiltinSampler, collections.abc.Iterable)):
1083
+ raise TypeError("batch_sampler should have __getitem__ or __iter__ method.")
1084
+
1085
+ if collate_fn is not None:
1086
+ if batch_sampler is None:
1087
+ raise ValueError("collate_fn can be specified only when batch_sampler is set.")
1088
+ if not isinstance(collate_fn, collections.abc.Callable):
1089
+ raise TypeError("collate_fn should be callable.")
1090
+
1091
+
1092
+ def check_valid_map_style_dataset(source, sampler, batch_sampler, num_shards):
1093
+ """Check whether the params are valid for map style dataset."""
1094
+ if not hasattr(source, "__getitem__"):
1095
+ if sampler is not None:
1096
+ raise ValueError("sampler is not supported if source does not have attribute '__getitem__'.")
1097
+ if batch_sampler is not None:
1098
+ raise ValueError("batch_sampler is not supported if source does not have attribute '__getitem__'.")
1099
+ if num_shards is not None:
1100
+ raise ValueError("num_shards is not supported if source does not have attribute '__getitem__'.")
1101
+
1102
+
1103
+ def check_generator_dataset(method):
1075
1104
  """A wrapper that wraps a parameter checker around the original Dataset(GeneratorDataset)."""
1076
1105
 
1077
1106
  @wraps(method)
@@ -1133,10 +1162,13 @@ def check_generatordataset(method):
1133
1162
  except TypeError:
1134
1163
  raise TypeError("sampler should be either iterable or from mindspore.dataset.samplers.")
1135
1164
 
1136
- if sampler is not None and not hasattr(source, "__getitem__"):
1137
- raise ValueError("sampler is not supported if source does not have attribute '__getitem__'.")
1138
- if num_shards is not None and not hasattr(source, "__getitem__"):
1139
- raise ValueError("num_shards is not supported if source does not have attribute '__getitem__'.")
1165
+ batch_sampler = param_dict.get("batch_sampler")
1166
+ num_samples = param_dict.get("num_samples")
1167
+ shuffle = param_dict.get("shuffle")
1168
+ collate_fn = param_dict.get("collate_fn")
1169
+ check_batch_sampler(batch_sampler, num_samples, shuffle, num_shards, shard_id, sampler, collate_fn)
1170
+
1171
+ check_valid_map_style_dataset(source, sampler, batch_sampler, num_shards)
1140
1172
 
1141
1173
  return method(self, *args, **kwargs)
1142
1174
 
@@ -1306,7 +1338,7 @@ def check_batch(method):
1306
1338
  sig = ins.signature(batch_size)
1307
1339
  if len(sig.parameters) != 1:
1308
1340
  raise ValueError("callable batch_size should take one parameter (BatchInfo).")
1309
- else:
1341
+ elif batch_size != -1:
1310
1342
  check_pos_int32(int(batch_size), "batch_size")
1311
1343
 
1312
1344
  if num_parallel_workers is not None:
@@ -1977,7 +2009,7 @@ def check_hostname(hostname):
1977
2009
  return all(allowed.match(x) for x in hostname.split("."))
1978
2010
 
1979
2011
 
1980
- def check_numpyslicesdataset(method):
2012
+ def check_numpy_slices_dataset(method):
1981
2013
  """A wrapper that wraps a parameter checker around the original Dataset(NumpySlicesDataset)."""
1982
2014
 
1983
2015
  @wraps(method)
@@ -2018,7 +2050,7 @@ def check_numpyslicesdataset(method):
2018
2050
  return new_method
2019
2051
 
2020
2052
 
2021
- def check_paddeddataset(method):
2053
+ def check_padded_dataset(method):
2022
2054
  """A wrapper that wraps a parameter checker around the original Dataset(PaddedDataset)."""
2023
2055
 
2024
2056
  @wraps(method)
@@ -19,6 +19,8 @@ import json
19
19
  import random
20
20
  from enum import IntEnum
21
21
  from types import FunctionType, MethodType
22
+
23
+ import dill
22
24
  import numpy as np
23
25
 
24
26
  from mindspore import log as logger
@@ -187,6 +189,7 @@ class FuncWrapper:
187
189
  raise ValueError("Input operations should be callable Python function, but got: " + str(transform))
188
190
  self.transform = transform
189
191
  self.implementation = Implementation.C
192
+ self.random = False
190
193
  try:
191
194
  if hasattr(self.transform, "random") and not self.transform.random:
192
195
  self.random = False
@@ -211,6 +214,20 @@ class FuncWrapper:
211
214
  logger.warning(warn_msg)
212
215
  return result
213
216
 
217
+ def __getstate__(self):
218
+ transform = dill.dumps(self.transform)
219
+ implementation = dill.dumps(self.implementation)
220
+ local_random = dill.dumps(self.random)
221
+ logged_list_mixed_type_warning = dill.dumps(self.logged_list_mixed_type_warning)
222
+ return (transform, implementation, local_random, logged_list_mixed_type_warning)
223
+
224
+ def __setstate__(self, state):
225
+ transform, implementation, local_random, logged_list_mixed_type_warning = state
226
+ self.transform = dill.loads(transform)
227
+ self.implementation = dill.loads(implementation)
228
+ self.random = dill.loads(local_random)
229
+ self.logged_list_mixed_type_warning = dill.loads(logged_list_mixed_type_warning)
230
+
214
231
  def to_json(self):
215
232
  """ Serialize to JSON format """
216
233
  # User-defined Python functions cannot be fully nor correctly serialized.
@@ -95,18 +95,35 @@ class TensorOperation:
95
95
  # get or create the executor from EXECUTORS_LIST
96
96
  executor = None
97
97
  key = str(os.getpid()) + "_" + str(threading.currentThread().ident)
98
- if key in EXECUTORS_LIST:
99
- # get the executor by process id and thread id
100
- executor = EXECUTORS_LIST[key]
101
- # remove the old transform which in executor and update the new transform
102
- executor.UpdateOperation(self.parse())
103
- else:
104
- # create a new executor by process id and thread_id
105
- executor = cde.Execute(self.parse())
106
- # add the executor the global EXECUTORS_LIST
107
- EXECUTORS_LIST[key] = executor
108
-
109
- output_tensor_list = executor(tensor_row)
98
+ try:
99
+ if key in EXECUTORS_LIST:
100
+ # get the executor by process id and thread id
101
+ executor = EXECUTORS_LIST[key]
102
+ # remove the old transform which in executor and update the new transform
103
+ executor.UpdateOperation(self.parse())
104
+ else:
105
+ # create a new executor by process id and thread_id
106
+ executor = cde.Execute(self.parse())
107
+ # add the executor the global EXECUTORS_LIST
108
+ EXECUTORS_LIST[key] = executor
109
+
110
+ output_tensor_list = executor(tensor_row)
111
+ except RuntimeError as e:
112
+ if "Create stream failed" in str(e):
113
+ raise RuntimeError("Cannot reset NPU device in forked subprocess.\n "
114
+ "Note: the following sevral scenarios are not supported yet.\n"
115
+ " 1. GeneratorDataset with num_parallel_workers>1 and "
116
+ "python_multiprocessing=True.\n 2. Independent dataset mode (export "
117
+ "MS_INDEPENDENT_DATASET=True):\n 1) Use the eager mode of dvpp "
118
+ "in the main process, and then start the dataset independent process. "
119
+ "GeneratorDataset / map / batch performs dvpp operations in thread mode.\n"
120
+ " 2) Initialize the device in the main process, and then start the "
121
+ "dataset independent process. GeneratorDataset / map / batch executes the "
122
+ "dvpp operation in thread mode.\n "
123
+ "Suggestion: except for the scenes above to use NPU with multiprocessing, "
124
+ "you can set ds.config.set_multiprocessing_start_method('spawn') in your "
125
+ "script and rerun.")
126
+ raise e
110
127
  output_numpy_list = [x.as_array() for x in output_tensor_list]
111
128
  return output_numpy_list[0] if len(output_numpy_list) == 1 else tuple(output_numpy_list)
112
129
 
@@ -24,7 +24,7 @@ from mindspore.dataset.core.validator_helpers import check_value, check_uint8, F
24
24
  check_pos_float32, check_float32, check_2tuple, check_range, check_positive, INT32_MAX, INT32_MIN, \
25
25
  parse_user_args, type_check, type_check_list, check_c_tensor_op, UINT8_MAX, UINT8_MIN, check_value_normalize_std, \
26
26
  check_value_cutoff, check_value_ratio, check_odd, check_non_negative_float32, check_non_negative_int32, \
27
- check_pos_int32, check_int32, check_tensor_op, deprecator_factory, check_valid_str, check_independent_mode
27
+ check_pos_int32, check_int32, check_tensor_op, deprecator_factory, check_valid_str
28
28
  from mindspore.dataset.transforms.validators import check_transform_op_type
29
29
  from .utils import Inter, Border, ImageBatchFormat, ConvertMode, SliceMode, AutoAugmentPolicy
30
30
 
@@ -358,7 +358,6 @@ def check_device_target(method):
358
358
  def new_method(self, *args, **kwargs):
359
359
  [device_target], _ = parse_user_args(method, *args, **kwargs)
360
360
  check_valid_str(device_target, ["CPU", "Ascend"], "device_target")
361
- check_independent_mode("Transform in Ascend mode", (device_target == "Ascend"))
362
361
  return method(self, *args, **kwargs)
363
362
  return new_method
364
363
 
@@ -0,0 +1,21 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """
17
+ The device context interface.
18
+ """
19
+ import mindspore.device_context.gpu
20
+ import mindspore.device_context.cpu
21
+ import mindspore.device_context.ascend
@@ -0,0 +1,25 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Ascend interfaces"""
17
+
18
+ from .device import device_count, is_available
19
+ from .op_debug import *
20
+ from .op_precision import *
21
+ from .op_tuning import *
22
+
23
+ __all__ = [
24
+ "device_count", "is_available"
25
+ ]
@@ -0,0 +1,72 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Device context ascend interfaces"""
17
+ import mindspore as ms
18
+ from mindspore._c_expression import MSContext
19
+ from mindspore import log as logger
20
+
21
+ try:
22
+ from mindspore._c_expression import ascend_get_device_count
23
+ except ImportError:
24
+ pass
25
+
26
+
27
+ def device_count():
28
+ """
29
+ Return compute-capable device count of Ascend.
30
+
31
+ Returns:
32
+ int, the number of compute-capable Ascend devices.
33
+
34
+ Examples:
35
+ >>> import mindspore as ms
36
+ >>> print(ms.device_context.ascend.device_count())
37
+ 8
38
+ """
39
+ if not MSContext.get_instance().is_pkg_support_device("Ascend") or not is_available():
40
+ raise RuntimeError(f"Device Ascend not exist.")
41
+ return ascend_get_device_count()
42
+
43
+
44
+ def is_available():
45
+ """
46
+ Returns whether ascend backend is available.
47
+
48
+ Returns:
49
+ Bool, whether the ascend backend is available for this MindSpore package.
50
+
51
+ Examples:
52
+ >>> import mindspore as ms
53
+ >>> print(ms.device_context.ascend.is_available())
54
+ True
55
+ """
56
+ # MindSpore will try to load plugins in "import mindspore", and availability status will be stored.
57
+ if not MSContext.get_instance().is_pkg_support_device("Ascend"):
58
+ logger.warning(f"Device Ascend is not available.")
59
+ load_plugin_error = MSContext.get_instance().load_plugin_error()
60
+ if load_plugin_error != "":
61
+ logger.warning(f"Here's error when loading plugin for MindSpore package."
62
+ f"Error message: {load_plugin_error}")
63
+ return False
64
+ return True
65
+
66
+
67
+ def _is_supported():
68
+ device_target = ms.context.get_context("device_target")
69
+ if device_target == 'CPU' or device_target == 'GPU':
70
+ logger.error(f"{device_target} device is not supported. Please use correct device")
71
+ return False
72
+ return True
@@ -0,0 +1,94 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Op debug interfaces."""
17
+ from mindspore._checkparam import args_type_check
18
+ from .device import _is_supported
19
+ try:
20
+ from mindspore._c_expression import AscendOpDebugConf
21
+ except ImportError:
22
+ pass
23
+
24
+ function_status = {'execute_timeout': False, 'debug_option': False}
25
+
26
+
27
+ @args_type_check(op_timeout=int)
28
+ def execute_timeout(op_timeout):
29
+ """
30
+ Set the maximum duration of executing an operator in seconds. The framework operator execution timeout time
31
+ is ``900`` by default.
32
+ please refer to `Ascend Community document about aclrtSetOpExecuteTimeOut
33
+ <https://www.hiascend.com/document/detail/en/CANNCommunityEdition/600alphaX/infacldevg/aclcppdevg/aclcppdevg_03_0069.html>`_.
34
+
35
+ Args:
36
+ op_timeout (int): Set the maximum duration of executing an operator in seconds.
37
+ If the execution time exceeds this value, system will terminate the task.
38
+ 0 means endless wait. The defaults for AI Core and AICPU operators vary on different hardware.
39
+
40
+ Examples:
41
+ >>> import mindspore as ms
42
+ >>> ms.device_context.ascend.op_debug.execute_timeout(100)
43
+ """
44
+ if not function_status['execute_timeout']:
45
+ function_status['execute_timeout'] = True
46
+ if not _is_supported():
47
+ return
48
+ if op_timeout == AscendOpDebugConf.get_instance().execute_timeout():
49
+ return
50
+ # Check the configuration environment whether valid
51
+ if AscendOpDebugConf.get_instance().is_execute_timeout_configured():
52
+ raise RuntimeError("The 'execute_timeout' can not be set repeatedly.")
53
+ if op_timeout < 0:
54
+ raise ValueError("The num of execute_timeout must bigger than or equal to 0.")
55
+ AscendOpDebugConf.get_instance().set_execute_timeout(op_timeout)
56
+
57
+
58
+ def debug_option(option_value):
59
+ """
60
+ Enable debugging options for Ascend operators, default not enabled.
61
+
62
+ Args:
63
+ option_value(str): Ascend operators debugging configuration. Currently, only memory
64
+ access violation detection is supported.
65
+ The value currently only supports being set to ``"oom"``.
66
+
67
+ - ``"oom"``: When there is a memory out of bounds during the execution of an operator,
68
+ AscendCL will return an error code of ``EZ9999``.
69
+
70
+ Examples:
71
+ >>> import mindspore as ms
72
+ >>> ms.device_context.ascend.op_debug.debug_option("oom")
73
+ """
74
+ if not function_status['debug_option']:
75
+ function_status['debug_option'] = True
76
+ if not _is_supported():
77
+ return
78
+ if option_value == AscendOpDebugConf.get_instance().debug_option():
79
+ return
80
+ # Check the configuration environment whether valid
81
+ if AscendOpDebugConf.get_instance().is_debug_option_configured():
82
+ raise RuntimeError("The 'debug_option' can not be set repeatedly.")
83
+ valid_order = {"oom"}
84
+ if not isinstance(option_value, str):
85
+ raise TypeError(
86
+ f"For 'device_context.ascend.op_debug.debug_option(option_value)', the type of 'option_value' must be str, "
87
+ f"but got {type(option_value)}."
88
+ )
89
+ if option_value not in valid_order:
90
+ raise ValueError(
91
+ f"For 'device_context.ascend.op_debug.debug_option(option_value)', the 'option_value' supports being set "
92
+ f"to 'oom' currently, but got {option_value}."
93
+ )
94
+ AscendOpDebugConf.get_instance().set_debug_option(option_value)
@@ -0,0 +1,193 @@
1
+ # Copyright 2024 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+
16
+ """Op precision interfaces."""
17
+ import os
18
+ from mindspore._checkparam import args_type_check
19
+ from .device import _is_supported
20
+
21
+ try:
22
+ from mindspore._c_expression import AscendOpPrecisionConf
23
+ except ImportError:
24
+ pass
25
+
26
+ function_status = {'precision_mode': False, 'op_precision_mode': False,
27
+ 'matmul_allow_hf32': False, 'conv_allow_hf32': False}
28
+
29
+
30
+ def precision_mode(mode):
31
+ """
32
+ Configure mixed precision mode setting. The framework set the configuration of Atlas training series
33
+ products to "force_fp16" by default, and set the configuration for other products such as the Atlas A2
34
+ training series products to "must_keep_origin_dtype" by default.
35
+ For detailed information, please refer to `Ascend community
36
+ <https://www.hiascend.com/document/detail/zh/canncommercial/80RC3/apiref/appdevgapi/aclcppdevg_03_1371.html/>`_ .
37
+
38
+ Note:
39
+ - The default value of `precision_mode` is experimental parameter, may change in the future.
40
+
41
+ Args:
42
+ mode (str): The operator precision mode setting.
43
+ The value range is as follows:
44
+
45
+ - force_fp16: When the operator supports both float16 and float32, directly choose float16.
46
+ - allow_fp32_to_fp16: For matrix-type operators, use float16. For vector-type operators, prioritize
47
+ the original precision. If the operator in the network model supports float32, retain the original
48
+ precision float32. If the operator in the network model does not support float32, directly reduce
49
+ the precision to float16.
50
+ - allow_mix_precision: Automatic mixed precision, for all operators in the network, according to the
51
+ built-in optimization strategy, automatically reduce the precision of some operators to float16 or
52
+ bfloat16.
53
+ - must_keep_origin_dtype: Maintain the original precision.
54
+ - force_fp32: When the input of the matrix calculation operator is float16, and the output supports both
55
+ float16 and float32, force the output to be converted to float32.
56
+ - allow_fp32_to_bf16: For matrix-type operators, use bfloat16. For vector-type operators, prioritize the
57
+ original precision. If the operator in the network model supports float32, retain the original precision
58
+ float32. If the operator in the network model does not support float32, directly reduce the precision
59
+ to bfloat16.
60
+ - allow_mix_precision_fp16: Automatic mixed precision, for all operators in the network, according to
61
+ the built-in optimization strategy, automatically reduce the precision of some operators to float16.
62
+ - allow_mix_precision_bf16: Automatic mixed precision, for all operators in the network, according to
63
+ the built-in optimization strategy, automatically reduce the precision of some operators to bfloat16.
64
+
65
+ Examples:
66
+ >>> import mindspore as ms
67
+ >>> ms.device_context.ascend.op_precision.precision_mode("force_fp16")
68
+ """
69
+ if not function_status['precision_mode']:
70
+ function_status['precision_mode'] = True
71
+ if not _is_supported():
72
+ return
73
+ if mode == AscendOpPrecisionConf.get_instance().precision_mode():
74
+ return
75
+ # Check the configuration environment whether valid
76
+ if AscendOpPrecisionConf.get_instance().is_precision_mode_configured():
77
+ raise RuntimeError("The 'precision_mode' can not be set repeatedly.")
78
+ supported_modes = [
79
+ "force_fp16",
80
+ "allow_fp32_to_fp16",
81
+ "allow_mix_precision",
82
+ "must_keep_origin_dtype",
83
+ "force_fp32",
84
+ "allow_fp32_to_bf16",
85
+ "allow_mix_precision_fp16",
86
+ "allow_mix_precision_bf16",
87
+ ]
88
+ if mode not in supported_modes:
89
+ raise ValueError(f"For 'precision_mode', the value of mode {mode} must be one of "
90
+ f"{supported_modes}, but got {mode}.")
91
+ AscendOpPrecisionConf.get_instance().set_precision_mode(mode)
92
+
93
+
94
+ @args_type_check(path=str)
95
+ def op_precision_mode(path):
96
+ """
97
+ Path to config file of op precision mode.
98
+ For detailed information, please refer to `Ascend community
99
+ <https://www.hiascend.com/document/detail/zh/canncommercial/80RC3/apiref/appdevgapi/aclcppdevg_03_1371.html/>`_ .
100
+
101
+ Args:
102
+ path (str): Directory of the configuration file (.ini format) for setting the operator precision mode.
103
+ The directory can contain letters, digits, underscores (_), hyphens (-), and periods (.).
104
+
105
+ Examples:
106
+ >>> import mindspore as ms
107
+ >>> ms.device_context.ascend.op_precision.op_precision_mode("./op_precision_config_file")
108
+ """
109
+ if not function_status['op_precision_mode']:
110
+ function_status['op_precision_mode'] = True
111
+ if not _is_supported():
112
+ return
113
+ if path == AscendOpPrecisionConf.get_instance().op_precision_mode():
114
+ return
115
+ # Check the configuration environment whether valid
116
+ if AscendOpPrecisionConf.get_instance().is_op_precision_mode_configured():
117
+ raise RuntimeError("The 'op_precision_mode' can not be set repeatedly.")
118
+ op_precision_path = path
119
+ real_path = os.path.realpath(op_precision_path)
120
+ if not os.path.exists(real_path):
121
+ raise ValueError(
122
+ f"For 'op_precision_mode', the 'path' is invalid, "
123
+ f"got '{op_precision_path}'."
124
+ )
125
+ AscendOpPrecisionConf.get_instance().set_op_precision_mode(path)
126
+
127
+
128
+ def matmul_allow_hf32(value):
129
+ """
130
+ Whether to convert FP32 to HF32 for Matmul operators. CANN disables FP32 to HF32
131
+ for Matmul operators by default.
132
+ For detailed information, please refer to `Ascend community
133
+ <https://www.hiascend.com/document/detail/zh/canncommercial/80RC3/apiref/appdevgapi/aclcppdevg_03_1371.html/>`_ .
134
+
135
+ Note:
136
+ - This is an experimental prototype that is subject to change and/or deletion.
137
+
138
+ Args:
139
+ value (bool): Whether to convert FP32 to HF32 for Matmul operators
140
+
141
+ Examples:
142
+ >>> import mindspore as ms
143
+ >>> ms.device_context.ascend.op_precision.matmul_allow_hf32(True)
144
+ """
145
+ if not function_status['matmul_allow_hf32']:
146
+ function_status['matmul_allow_hf32'] = True
147
+ if not _is_supported():
148
+ return
149
+ supported_modes = [True, False]
150
+ if value not in supported_modes:
151
+ raise ValueError(f"For 'matmul_allow_hf32', the type of input value must be one of "
152
+ f"{supported_modes}, but got {value}.")
153
+ is_enable = "1" if value else "0"
154
+ if is_enable == AscendOpPrecisionConf.get_instance().matmul_allow_hf32():
155
+ return
156
+ # Check the configuration environment whether valid
157
+ if AscendOpPrecisionConf.get_instance().is_matmul_allow_hf32_configured():
158
+ raise RuntimeError("The 'matmul_allow_hf32' can not be set repeatedly.")
159
+ AscendOpPrecisionConf.get_instance().set_matmul_allow_hf32(is_enable)
160
+
161
+
162
+ def conv_allow_hf32(value):
163
+ """
164
+ Whether to convert FP32 to HF32 for Conv operators. CANN enables FP32 to HF32
165
+ for Conv operators by default.
166
+ For detailed information, please refer to `Ascend community
167
+ <https://www.hiascend.com/document/detail/zh/canncommercial/80RC3/apiref/appdevgapi/aclcppdevg_03_1371.html/>`_ .
168
+
169
+ Note:
170
+ - This is an experimental prototype that is subject to change and/or deletion.
171
+
172
+ Args:
173
+ value (bool): Whether to convert FP32 to HF32 for Conv operators.
174
+
175
+ Examples:
176
+ >>> import mindspore as ms
177
+ >>> ms.device_context.ascend.op_precision.conv_allow_hf32(True)
178
+ """
179
+ if not function_status['conv_allow_hf32']:
180
+ function_status['conv_allow_hf32'] = True
181
+ if not _is_supported():
182
+ return
183
+ supported_modes = [True, False]
184
+ if value not in supported_modes:
185
+ raise ValueError(f"For 'conv_allow_hf32', the type of input value must be one of "
186
+ f"{supported_modes}, but got {value}.")
187
+ is_enable = "1" if value else "0"
188
+ if is_enable == AscendOpPrecisionConf.get_instance().conv_allow_hf32():
189
+ return
190
+ # Check the configuration environment whether valid
191
+ if AscendOpPrecisionConf.get_instance().is_conv_allow_hf32_configured():
192
+ raise RuntimeError("The 'conv_allow_hf32' can not be set repeatedly.")
193
+ AscendOpPrecisionConf.get_instance().set_conv_allow_hf32(is_enable)