mindspore 2.1.0__cp38-none-any.whl → 2.2.0__cp38-none-any.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 (539) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -1
  3. mindspore/_akg/akg/build_module.py +5 -6
  4. mindspore/_akg/akg/composite/build_module.py +49 -16
  5. mindspore/_akg/akg/composite/split_stitch.py +10 -11
  6. mindspore/_akg/akg/ms/info_version_adapt.py +67 -1
  7. mindspore/_akg/akg/tvm/api.py +4 -3
  8. mindspore/_akg/akg/tvm/autotvm/__init__.py +1 -2
  9. mindspore/_akg/akg/tvm/autotvm/graph_tuner/base_graph_tuner.py +1 -5
  10. mindspore/_akg/akg/tvm/autotvm/measure/__init__.py +1 -1
  11. mindspore/_akg/akg/tvm/autotvm/measure/measure.py +1 -10
  12. mindspore/_akg/akg/tvm/autotvm/measure/measure_methods.py +1 -372
  13. mindspore/_akg/akg/tvm/build_module.py +16 -1
  14. mindspore/_akg/akg/tvm/contrib/graph_runtime.py +0 -53
  15. mindspore/_akg/akg/tvm/hybrid/parser.py +7 -6
  16. mindspore/_akg/akg/tvm/ir_builder.py +1 -1
  17. mindspore/_akg/akg/tvm/module.py +1 -2
  18. mindspore/_akg/akg/tvm/stmt.py +2 -2
  19. mindspore/_akg/akg/utils/composite_op_helper.py +9 -10
  20. mindspore/_akg/akg/utils/kernel_exec.py +58 -260
  21. mindspore/_akg/akg/utils/result_analysis.py +4 -24
  22. mindspore/_akg/akg/utils/tbe_codegen_utils.py +198 -0
  23. mindspore/_c_dataengine.cpython-38-aarch64-linux-gnu.so +0 -0
  24. mindspore/_c_expression.cpython-38-aarch64-linux-gnu.so +0 -0
  25. mindspore/_c_mindrecord.cpython-38-aarch64-linux-gnu.so +0 -0
  26. mindspore/_check_jit_forbidden_api.py +3 -1
  27. mindspore/_checkparam.py +26 -32
  28. mindspore/_extends/graph_kernel/__init__.py +0 -1
  29. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  30. mindspore/_extends/graph_kernel/splitter.py +1 -9
  31. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  32. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +2 -2
  33. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  34. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  35. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +4 -4
  36. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  37. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  38. mindspore/_extends/parse/__init__.py +12 -15
  39. mindspore/_extends/parse/namespace.py +7 -33
  40. mindspore/_extends/parse/parser.py +61 -71
  41. mindspore/_extends/parse/resources.py +1 -1
  42. mindspore/_extends/parse/standard_method.py +72 -95
  43. mindspore/_extends/parse/trope.py +1 -1
  44. mindspore/_extends/remote/kernel_build_server.py +24 -7
  45. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  46. mindspore/_install_custom.py +43 -0
  47. mindspore/_mindspore_offline_debug.cpython-38-aarch64-linux-gnu.so +0 -0
  48. mindspore/amp.py +47 -11
  49. mindspore/bin/cache_admin +0 -0
  50. mindspore/bin/cache_server +0 -0
  51. mindspore/boost/boost.py +1 -8
  52. mindspore/boost/boost_cell_wrapper.py +3 -2
  53. mindspore/boost/grad_accumulation.py +1 -1
  54. mindspore/boost/group_loss_scale_manager.py +8 -7
  55. mindspore/common/__init__.py +5 -3
  56. mindspore/common/_jit_fallback_utils.py +6 -0
  57. mindspore/common/_register_for_adapter.py +2 -0
  58. mindspore/common/_register_for_tensor.py +2 -2
  59. mindspore/common/_stub_tensor.py +13 -0
  60. mindspore/common/_utils.py +13 -0
  61. mindspore/common/api.py +173 -258
  62. mindspore/common/auto_dynamic_shape.py +498 -0
  63. mindspore/common/dtype.py +18 -11
  64. mindspore/common/dump.py +6 -4
  65. mindspore/common/initializer.py +14 -14
  66. mindspore/common/jit_config.py +33 -15
  67. mindspore/common/lazy_inline.py +126 -7
  68. mindspore/common/mindir_util.py +101 -0
  69. mindspore/common/parameter.py +51 -41
  70. mindspore/common/seed.py +4 -4
  71. mindspore/common/sparse_tensor.py +13 -14
  72. mindspore/common/tensor.py +240 -145
  73. mindspore/communication/__init__.py +7 -4
  74. mindspore/communication/_comm_helper.py +83 -4
  75. mindspore/communication/management.py +152 -84
  76. mindspore/config/op_info.config +13 -2
  77. mindspore/config/super_bar_config.json +4 -2
  78. mindspore/context.py +143 -59
  79. mindspore/dataset/__init__.py +5 -5
  80. mindspore/dataset/audio/__init__.py +2 -2
  81. mindspore/dataset/audio/transforms.py +52 -52
  82. mindspore/dataset/callback/ds_callback.py +16 -2
  83. mindspore/dataset/core/config.py +68 -51
  84. mindspore/dataset/engine/cache_client.py +28 -5
  85. mindspore/dataset/engine/datasets.py +250 -112
  86. mindspore/dataset/engine/datasets_audio.py +43 -211
  87. mindspore/dataset/engine/datasets_standard_format.py +11 -35
  88. mindspore/dataset/engine/datasets_text.py +43 -67
  89. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  90. mindspore/dataset/engine/datasets_vision.py +219 -1029
  91. mindspore/dataset/engine/iterators.py +11 -4
  92. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  93. mindspore/dataset/engine/obs/util.py +3 -0
  94. mindspore/dataset/engine/samplers.py +1 -1
  95. mindspore/dataset/engine/validators.py +19 -5
  96. mindspore/dataset/text/__init__.py +3 -3
  97. mindspore/dataset/text/transforms.py +101 -127
  98. mindspore/dataset/text/utils.py +205 -138
  99. mindspore/dataset/transforms/__init__.py +1 -1
  100. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  101. mindspore/dataset/transforms/transforms.py +95 -40
  102. mindspore/dataset/utils/browse_dataset.py +8 -2
  103. mindspore/dataset/utils/line_reader.py +17 -19
  104. mindspore/dataset/vision/__init__.py +3 -3
  105. mindspore/dataset/vision/c_transforms.py +6 -3
  106. mindspore/dataset/vision/transforms.py +409 -287
  107. mindspore/dataset/vision/utils.py +13 -14
  108. mindspore/dataset/vision/validators.py +11 -1
  109. mindspore/experimental/map_parameter.py +14 -0
  110. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  111. mindspore/{nn/optim_ex → experimental/optim}/adam.py +59 -66
  112. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  113. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  114. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  115. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  116. mindspore/gen_ops.py +273 -0
  117. mindspore/include/OWNERS +0 -1
  118. mindspore/include/api/data_type.h +2 -1
  119. mindspore/include/api/graph.h +0 -15
  120. mindspore/include/api/kernel.h +2 -0
  121. mindspore/include/api/kernel_api.h +37 -12
  122. mindspore/include/api/model.h +0 -14
  123. mindspore/include/api/types.h +37 -4
  124. mindspore/include/c_api/ms/abstract.h +67 -0
  125. mindspore/include/c_api/ms/attribute.h +197 -0
  126. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  127. mindspore/include/c_api/ms/base/macros.h +32 -0
  128. mindspore/include/c_api/ms/base/status.h +33 -0
  129. mindspore/include/c_api/ms/base/types.h +282 -0
  130. mindspore/include/c_api/ms/context.h +102 -0
  131. mindspore/include/c_api/ms/graph.h +160 -0
  132. mindspore/include/c_api/ms/node.h +606 -0
  133. mindspore/include/c_api/ms/tensor.h +161 -0
  134. mindspore/include/c_api/ms/value.h +84 -0
  135. mindspore/include/dataset/constants.h +6 -5
  136. mindspore/include/dataset/execute.h +23 -13
  137. mindspore/include/dataset/text.h +26 -26
  138. mindspore/include/dataset/transforms.h +13 -13
  139. mindspore/include/dataset/vision.h +60 -60
  140. mindspore/include/dataset/vision_ascend.h +5 -6
  141. mindspore/include/dataset/vision_lite.h +17 -17
  142. mindspore/include/mindapi/base/type_id.h +1 -0
  143. mindspore/include/mindapi/base/types.h +1 -0
  144. mindspore/lib/libdnnl.so.2 +0 -0
  145. mindspore/lib/libjemalloc.so.2 +0 -0
  146. mindspore/lib/libmindspore.so +0 -0
  147. mindspore/lib/libmindspore_backend.so +0 -0
  148. mindspore/lib/libmindspore_common.so +0 -0
  149. mindspore/lib/libmindspore_core.so +0 -0
  150. mindspore/lib/libmindspore_glog.so.0 +0 -0
  151. mindspore/lib/libmindspore_gpr.so.15 +0 -0
  152. mindspore/lib/libmindspore_grpc++.so.1 +0 -0
  153. mindspore/lib/libmindspore_grpc.so.15 +0 -0
  154. mindspore/lib/libmindspore_shared_lib.so +0 -0
  155. mindspore/lib/libnnacl.so +0 -0
  156. mindspore/lib/libopencv_core.so.4.5 +0 -0
  157. mindspore/lib/libopencv_imgcodecs.so.4.5 +0 -0
  158. mindspore/lib/libopencv_imgproc.so.4.5 +0 -0
  159. mindspore/lib/libps_cache.so +0 -0
  160. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_aicpu_kernels.so +0 -0
  161. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/aicpu_kernel/impl/libcust_cpu_kernels.so +0 -0
  162. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_impl/cpu/config/cust_aicpu_kernel.json +9000 -0
  163. mindspore/lib/plugin/ascend/custom_aicpu_ops/op_proto/libcust_op_proto.so +0 -0
  164. mindspore/lib/plugin/ascend/libakg.so +0 -0
  165. mindspore/lib/plugin/ascend/libascend_collective.so +0 -0
  166. mindspore/lib/plugin/ascend/libdvpp_utils.so +0 -0
  167. mindspore/lib/plugin/ascend/libhccl_plugin.so +0 -0
  168. mindspore/lib/plugin/ascend/libmindspore_aicpu_kernels.so +0 -0
  169. mindspore/lib/plugin/ascend/libmindspore_cpu_kernels.so +0 -0
  170. mindspore/lib/plugin/cpu/libakg.so +0 -0
  171. mindspore/lib/plugin/libmindspore_ascend.so.1 +0 -0
  172. mindspore/lib/plugin/libmindspore_ascend.so.2 +0 -0
  173. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  174. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  175. mindspore/nn/__init__.py +0 -2
  176. mindspore/nn/cell.py +316 -74
  177. mindspore/nn/dynamic_lr.py +21 -21
  178. mindspore/nn/layer/activation.py +21 -28
  179. mindspore/nn/layer/basic.py +15 -13
  180. mindspore/nn/layer/channel_shuffle.py +1 -1
  181. mindspore/nn/layer/container.py +271 -9
  182. mindspore/nn/layer/conv.py +310 -207
  183. mindspore/nn/layer/dense.py +8 -5
  184. mindspore/nn/layer/embedding.py +33 -27
  185. mindspore/nn/layer/flash_attention.py +82 -41
  186. mindspore/nn/layer/image.py +8 -6
  187. mindspore/nn/layer/math.py +13 -18
  188. mindspore/nn/layer/normalization.py +107 -66
  189. mindspore/nn/layer/padding.py +1 -1
  190. mindspore/nn/layer/pooling.py +131 -109
  191. mindspore/nn/layer/rnn_cells.py +22 -17
  192. mindspore/nn/layer/rnns.py +13 -16
  193. mindspore/nn/layer/thor_layer.py +1 -1
  194. mindspore/nn/layer/transformer.py +221 -154
  195. mindspore/nn/learning_rate_schedule.py +9 -1
  196. mindspore/nn/loss/loss.py +235 -174
  197. mindspore/nn/optim/ada_grad.py +2 -1
  198. mindspore/nn/optim/adadelta.py +1 -0
  199. mindspore/nn/optim/adafactor.py +2 -1
  200. mindspore/nn/optim/adam.py +7 -4
  201. mindspore/nn/optim/adamax.py +3 -2
  202. mindspore/nn/optim/adasum.py +2 -2
  203. mindspore/nn/optim/asgd.py +2 -3
  204. mindspore/nn/optim/ftrl.py +6 -5
  205. mindspore/nn/optim/lamb.py +7 -4
  206. mindspore/nn/optim/lars.py +1 -1
  207. mindspore/nn/optim/lazyadam.py +5 -3
  208. mindspore/nn/optim/momentum.py +2 -1
  209. mindspore/nn/optim/optimizer.py +53 -4
  210. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  211. mindspore/nn/optim/rmsprop.py +4 -3
  212. mindspore/nn/optim/rprop.py +23 -12
  213. mindspore/nn/optim/sgd.py +26 -11
  214. mindspore/nn/optim/thor.py +9 -7
  215. mindspore/nn/probability/bijector/bijector.py +5 -5
  216. mindspore/nn/probability/bijector/power_transform.py +27 -27
  217. mindspore/nn/probability/bijector/softplus.py +3 -3
  218. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  219. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  220. mindspore/nn/probability/distribution/beta.py +3 -3
  221. mindspore/nn/probability/distribution/categorical.py +7 -7
  222. mindspore/nn/probability/distribution/cauchy.py +0 -1
  223. mindspore/nn/probability/distribution/distribution.py +3 -3
  224. mindspore/nn/probability/distribution/gamma.py +3 -3
  225. mindspore/nn/probability/distribution/geometric.py +4 -4
  226. mindspore/nn/probability/distribution/gumbel.py +4 -4
  227. mindspore/nn/probability/distribution/log_normal.py +2 -2
  228. mindspore/nn/probability/distribution/logistic.py +2 -2
  229. mindspore/nn/probability/distribution/poisson.py +4 -4
  230. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  231. mindspore/nn/probability/distribution/uniform.py +6 -6
  232. mindspore/nn/wrap/cell_wrapper.py +78 -34
  233. mindspore/nn/wrap/grad_reducer.py +8 -5
  234. mindspore/nn/wrap/loss_scale.py +105 -42
  235. mindspore/numpy/array_creations.py +1 -2
  236. mindspore/numpy/array_ops.py +3 -2
  237. mindspore/offline_debug/convert_async.py +2 -2
  238. mindspore/ops/_grad_experimental/__init__.py +0 -5
  239. mindspore/ops/_grad_experimental/grad_array_ops.py +1 -2
  240. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  241. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  242. mindspore/ops/_grad_experimental/grad_implementations.py +10 -0
  243. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  244. mindspore/ops/_grad_experimental/grad_math_ops.py +0 -181
  245. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  246. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  247. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
  248. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
  249. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
  250. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
  251. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
  252. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
  253. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  254. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  255. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  256. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  257. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  258. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  259. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  260. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  261. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  262. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  263. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  264. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  265. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  266. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  267. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  268. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  269. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  270. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  271. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  272. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  273. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  274. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  275. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  276. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  277. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  278. mindspore/ops/_primitive_cache.py +1 -1
  279. mindspore/ops/_tracefunc.py +45 -13
  280. mindspore/ops/_utils/utils.py +4 -1
  281. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  282. mindspore/ops/_vmap/vmap_base.py +3 -3
  283. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  284. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  285. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  286. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  287. mindspore/ops/arg_dtype_cast.py +54 -0
  288. mindspore/ops/composite/base.py +37 -10
  289. mindspore/ops/composite/math_ops.py +5 -4
  290. mindspore/ops/composite/multitype_ops/_compile_utils.py +273 -72
  291. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  292. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  293. mindspore/ops/composite/multitype_ops/getitem_impl.py +40 -2
  294. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  295. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  296. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  297. mindspore/ops/deprecated.py +304 -0
  298. mindspore/ops/function/__init__.py +4 -1
  299. mindspore/ops/function/array_func.py +167 -189
  300. mindspore/ops/function/clip_func.py +81 -13
  301. mindspore/ops/function/debug_func.py +1 -1
  302. mindspore/ops/function/grad/grad_func.py +18 -8
  303. mindspore/ops/function/image_func.py +10 -4
  304. mindspore/ops/function/linalg_func.py +5 -5
  305. mindspore/ops/function/math_func.py +575 -386
  306. mindspore/ops/function/nn_func.py +470 -251
  307. mindspore/ops/function/random_func.py +86 -56
  308. mindspore/ops/function/sparse_func.py +1 -1
  309. mindspore/ops/function/sparse_unary_func.py +14 -12
  310. mindspore/ops/function/vmap_func.py +6 -5
  311. mindspore/ops/functional.py +15 -10
  312. mindspore/ops/op_info_register.py +235 -19
  313. mindspore/ops/operations/__init__.py +25 -17
  314. mindspore/ops/operations/_grad_ops.py +52 -7
  315. mindspore/ops/operations/_inner_ops.py +213 -12
  316. mindspore/ops/operations/_quant_ops.py +4 -8
  317. mindspore/ops/operations/_sequence_ops.py +42 -0
  318. mindspore/ops/operations/array_ops.py +64 -280
  319. mindspore/ops/operations/comm_ops.py +105 -57
  320. mindspore/ops/operations/custom_ops.py +10 -3
  321. mindspore/ops/operations/debug_ops.py +8 -4
  322. mindspore/ops/operations/image_ops.py +18 -12
  323. mindspore/ops/operations/math_ops.py +185 -138
  324. mindspore/ops/operations/nn_ops.py +716 -492
  325. mindspore/ops/operations/other_ops.py +0 -22
  326. mindspore/ops/operations/random_ops.py +53 -111
  327. mindspore/ops/operations/sparse_ops.py +3 -1
  328. mindspore/ops/primitive.py +24 -18
  329. mindspore/parallel/_auto_parallel_context.py +68 -8
  330. mindspore/parallel/_cost_model_context.py +2 -2
  331. mindspore/parallel/_offload_context.py +17 -3
  332. mindspore/parallel/_parallel_serialization.py +2 -2
  333. mindspore/parallel/_ps_context.py +12 -0
  334. mindspore/parallel/_tensor.py +14 -12
  335. mindspore/parallel/_transformer/layers.py +5 -3
  336. mindspore/parallel/_transformer/loss.py +1 -0
  337. mindspore/parallel/_transformer/moe.py +2 -2
  338. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  339. mindspore/parallel/_transformer/transformer.py +23 -3
  340. mindspore/parallel/_utils.py +11 -7
  341. mindspore/parallel/algo_parameter_config.py +85 -5
  342. mindspore/parallel/checkpoint_transform.py +6 -10
  343. mindspore/parallel/shard.py +4 -4
  344. mindspore/profiler/common/struct_type.py +3 -3
  345. mindspore/profiler/common/util.py +3 -2
  346. mindspore/profiler/envprofiling.py +1 -1
  347. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  348. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  349. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  350. mindspore/profiler/parser/ascend_hccl_generator.py +17 -12
  351. mindspore/profiler/parser/ascend_msprof_exporter.py +104 -252
  352. mindspore/profiler/parser/ascend_msprof_generator.py +8 -8
  353. mindspore/profiler/parser/ascend_op_generator.py +5 -5
  354. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  355. mindspore/profiler/parser/ascend_timeline_generator.py +9 -6
  356. mindspore/profiler/parser/base_timeline_generator.py +9 -7
  357. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +14 -10
  358. mindspore/profiler/parser/flops_parser.py +15 -11
  359. mindspore/profiler/parser/framework_parser.py +37 -21
  360. mindspore/profiler/parser/hccl_parser.py +16 -12
  361. mindspore/profiler/parser/integrator.py +22 -11
  362. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  363. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  364. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  365. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  366. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  367. mindspore/profiler/parser/optime_parser.py +1 -1
  368. mindspore/profiler/parser/profiler_info.py +2 -2
  369. mindspore/profiler/parser/step_trace_parser.py +11 -14
  370. mindspore/profiler/profiling.py +139 -71
  371. mindspore/rewrite/api/node.py +102 -19
  372. mindspore/rewrite/api/node_type.py +5 -1
  373. mindspore/rewrite/api/scoped_value.py +9 -17
  374. mindspore/rewrite/api/symbol_tree.py +131 -47
  375. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  376. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  377. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  378. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  379. mindspore/rewrite/common/rewrite_elog.py +5 -1
  380. mindspore/rewrite/namer.py +33 -24
  381. mindspore/rewrite/namespace.py +14 -5
  382. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  383. mindspore/rewrite/node/call_function.py +79 -0
  384. mindspore/rewrite/node/cell_container.py +135 -0
  385. mindspore/rewrite/node/control_flow.py +88 -0
  386. mindspore/rewrite/{node.py → node/node.py} +273 -234
  387. mindspore/rewrite/node/node_manager.py +254 -0
  388. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  389. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  390. mindspore/rewrite/parsers/assign_parser.py +216 -221
  391. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  392. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  393. mindspore/rewrite/parsers/constant_parser.py +9 -6
  394. mindspore/rewrite/parsers/container_parser.py +9 -7
  395. mindspore/rewrite/parsers/for_parser.py +36 -15
  396. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  397. mindspore/rewrite/parsers/if_parser.py +28 -24
  398. mindspore/rewrite/parsers/module_parser.py +196 -25
  399. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  400. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  401. mindspore/rewrite/parsers/return_parser.py +6 -6
  402. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  403. mindspore/rewrite/sparsify/utils.py +1 -1
  404. mindspore/rewrite/symbol_tree.py +525 -577
  405. mindspore/rewrite/symbol_tree_builder.py +9 -193
  406. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  407. mindspore/run_check/_check_version.py +2 -2
  408. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  409. mindspore/safeguard/rewrite_obfuscation.py +517 -0
  410. mindspore/scipy/linalg.py +1 -1
  411. mindspore/scipy/optimize/minimize.py +7 -3
  412. mindspore/train/_utils.py +7 -3
  413. mindspore/train/amp.py +323 -123
  414. mindspore/train/anf_ir_pb2.py +14 -2
  415. mindspore/train/callback/_backup_and_restore.py +2 -12
  416. mindspore/train/callback/_callback.py +29 -4
  417. mindspore/train/callback/_checkpoint.py +23 -8
  418. mindspore/train/callback/_early_stop.py +2 -2
  419. mindspore/train/callback/_landscape.py +4 -4
  420. mindspore/train/callback/_loss_monitor.py +2 -2
  421. mindspore/train/callback/_on_request_exit.py +2 -2
  422. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  423. mindspore/train/callback/_summary_collector.py +14 -7
  424. mindspore/train/callback/_time_monitor.py +58 -5
  425. mindspore/train/data_sink.py +5 -11
  426. mindspore/train/dataset_helper.py +83 -57
  427. mindspore/train/loss_scale_manager.py +2 -2
  428. mindspore/train/metrics/__init__.py +3 -3
  429. mindspore/train/metrics/cosine_similarity.py +1 -1
  430. mindspore/train/metrics/hausdorff_distance.py +3 -2
  431. mindspore/train/metrics/mean_surface_distance.py +3 -2
  432. mindspore/train/metrics/metric.py +39 -19
  433. mindspore/train/metrics/roc.py +2 -2
  434. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  435. mindspore/train/mind_ir_pb2.py +85 -36
  436. mindspore/train/model.py +185 -45
  437. mindspore/train/serialization.py +390 -150
  438. mindspore/train/summary/_writer_pool.py +3 -2
  439. mindspore/train/summary/summary_record.py +14 -10
  440. mindspore/train/train_thor/convert_utils.py +3 -3
  441. mindspore/train/train_thor/dataset_helper.py +1 -1
  442. mindspore/version.py +1 -1
  443. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/METADATA +6 -7
  444. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/RECORD +447 -507
  445. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/entry_points.txt +0 -1
  446. mindspore/_akg/akg/tvm/contrib/debugger/__init__.py +0 -16
  447. mindspore/_akg/akg/tvm/contrib/debugger/debug_result.py +0 -274
  448. mindspore/_akg/akg/tvm/contrib/debugger/debug_runtime.py +0 -259
  449. mindspore/_akg/akg/tvm/contrib/peak.py +0 -341
  450. mindspore/_akg/akg/tvm/contrib/rpc.py +0 -25
  451. mindspore/_akg/akg/tvm/contrib/xcode.py +0 -257
  452. mindspore/_akg/akg/tvm/exec/__init__.py +0 -17
  453. mindspore/_akg/akg/tvm/exec/autotvm_log_editor.py +0 -60
  454. mindspore/_akg/akg/tvm/exec/measure_peak.py +0 -48
  455. mindspore/_akg/akg/tvm/exec/query_rpc_tracker.py +0 -48
  456. mindspore/_akg/akg/tvm/exec/rpc_proxy.py +0 -98
  457. mindspore/_akg/akg/tvm/exec/rpc_server.py +0 -88
  458. mindspore/_akg/akg/tvm/exec/rpc_tracker.py +0 -62
  459. mindspore/_akg/akg/tvm/rpc/__init__.py +0 -29
  460. mindspore/_akg/akg/tvm/rpc/base.py +0 -182
  461. mindspore/_akg/akg/tvm/rpc/client.py +0 -436
  462. mindspore/_akg/akg/tvm/rpc/proxy.py +0 -595
  463. mindspore/_akg/akg/tvm/rpc/server.py +0 -413
  464. mindspore/_akg/akg/tvm/rpc/tornado_util.py +0 -121
  465. mindspore/_akg/akg/tvm/rpc/tracker.py +0 -431
  466. mindspore/_extends/graph_kernel/expander.py +0 -80
  467. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  468. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  469. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  470. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  471. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  472. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  473. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  474. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  475. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  476. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  477. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  478. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  479. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  480. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  481. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  482. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  483. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  484. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  485. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  486. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  487. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  488. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  489. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  490. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  491. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  492. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  493. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  494. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  495. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  496. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  497. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  498. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  499. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  500. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  501. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  502. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  503. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  504. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  505. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  506. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  507. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  508. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  509. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  510. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  511. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  512. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  513. mindspore/dataset/datapreprocess/__init__.py +0 -20
  514. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  515. mindspore/include/api/net.h +0 -142
  516. mindspore/nn/lr_scheduler.py +0 -262
  517. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  518. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  519. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  520. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  521. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  522. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  523. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  524. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  525. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  526. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  527. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  528. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  529. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  530. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  531. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  532. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  533. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  534. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  535. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  536. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  537. mindspore/rewrite/node_visitor.py +0 -44
  538. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/WHEEL +0 -0
  539. {mindspore-2.1.0.dist-info → mindspore-2.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,517 @@
1
+ # Copyright 2023 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
+ """obfuscate network based on rewrite interfaces."""
16
+ import os
17
+ import re
18
+ import secrets
19
+ from pathlib import Path
20
+ import numpy as np
21
+
22
+ from mindspore import ops, nn
23
+ from mindspore.common.tensor import Tensor
24
+ from mindspore import log as logger
25
+ from mindspore import load_checkpoint, save_checkpoint
26
+ from mindspore.rewrite import SymbolTree, Node, NodeType, TreeNodeHelper, ScopedValue
27
+
28
+ OBF_RATIOS_LENGTH = 1
29
+ MAX_OBF_RATIOS_NUM = 50
30
+ OBF_RATIOS_WIDTH = 0
31
+ OBF_RATIOS_INSERT_INDEX = 0
32
+
33
+
34
+ def obfuscate_ckpt(network, ckpt_files, target_modules=None, saved_path='./'):
35
+ """
36
+ obfuscate the plaintext checkpoint files. Usually used in conjunction with
37
+ :func:`mindspore.load_obf_params_into_net`.
38
+ interface.
39
+
40
+ Args:
41
+ network (nn.Cell): The original network that need to be obfuscated.
42
+ ckpt_files (str): The directory path of original ckpt files.
43
+ target_modules (list[str]): The target module of network that need to be obfuscated. The first string
44
+ represents the network path of target module in original network, which should be in form of ``'A/B/C'``.
45
+ The second string represents the obfuscation target module, which should be in form of ``'D|E|F'``. For
46
+ example, thr target_modules of GPT2 can be ``['backbone/blocks/attention', 'dense1|dense2|dense3']``.
47
+ If target_modules has the third value, it should be in the format of 'obfuscate_layers:all' or
48
+ 'obfuscate_layers:int', which represents the number of layers need to be obfuscated of duplicate layers
49
+ (such as transformer layers or resnet blocks). If target_modules is ``None``, the function would search
50
+ target modules by itself. If found, the searched target module would be used, otherwise suggested target
51
+ modules would be given with warning log. Default: ``None``.
52
+ saved_path (str): The directory path for saving obfuscated ckpt files and obf_ratios (a numpy file). obf_ratios
53
+ is the necessary data that needs to be load when running obfuscated network. Default: ``'./'``.
54
+
55
+ Raises:
56
+ TypeError: If `network` is not nn.Cell.
57
+ TypeError: If `ckpt_files` is not string or `saved_path` is not string.
58
+ TypeError: If `target_modules` is not list.
59
+ TypeError: If target_modules's elements are not string.
60
+ ValueError: If `ckpt_files` is not exist or `saved_path` is not exist.
61
+ ValueError: If the number of elements of `target_modules` is less than ``2``.
62
+ ValueError: If the first string of `target_modules` contains characters other than uppercase and lowercase
63
+ letters, numbers, ``'_'`` and ``'/'``.
64
+ ValueError: If the second string of `target_modules` is empty or contains characters other than uppercase and
65
+ lowercase letters, numbers, ``'_'`` and ``'|'``.
66
+ ValueError: If the third string of `target_modules` is not in the format of 'obfuscate_layers:all' or
67
+ 'obfuscate_layers:int'.
68
+
69
+ Examples:
70
+ >>> from mindspore import obfuscate_ckpt, save_checkpoint
71
+ >>> # Refer to https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/lenet.py
72
+ >>> net = LeNet5()
73
+ >>> save_checkpoint(net, './test_net.ckpt')
74
+ >>> target_modules = ['', 'fc1|fc2']
75
+ >>> obfuscate_ckpt(net, target_modules, './', './')
76
+ """
77
+ if not isinstance(network, nn.Cell):
78
+ raise TypeError("network must be nn.Cell, but got {}.".format(type(network)))
79
+ _check_dir_path('ckpt_files', ckpt_files)
80
+ _check_dir_path('saved_path', saved_path)
81
+ # Try to find default target modules
82
+ if target_modules is None:
83
+ to_split_modules = _get_default_target_modules(ckpt_files)
84
+ else:
85
+ if len(target_modules) >= 1 and target_modules[0] == '/':
86
+ target_modules[0] = ''
87
+ to_split_modules = target_modules
88
+ if not _check_valid_target(network, to_split_modules):
89
+ raise ValueError("The obfuscate module path {} is not exist, please check the input 'target_modules'."
90
+ .format(to_split_modules))
91
+ # generate and save obf_ratios to saved_path
92
+ path_list = to_split_modules[0].split('/')
93
+ target_list = to_split_modules[1].split('|')
94
+ global OBF_RATIOS_WIDTH, OBF_RATIOS_LENGTH
95
+ number_of_ratios = OBF_RATIOS_LENGTH * OBF_RATIOS_WIDTH
96
+ if number_of_ratios > MAX_OBF_RATIOS_NUM:
97
+ OBF_RATIOS_LENGTH = MAX_OBF_RATIOS_NUM // OBF_RATIOS_WIDTH
98
+ number_of_ratios = OBF_RATIOS_LENGTH * OBF_RATIOS_WIDTH
99
+ obf_ratios = []
100
+ secrets_generator = secrets.SystemRandom()
101
+ for _ in range(number_of_ratios):
102
+ secure_float = secrets_generator.uniform(0.01, 100)
103
+ obf_ratios.append(secure_float)
104
+ np.save(os.path.abspath(saved_path) + '/' + 'obf_ratios.npy', np.array(obf_ratios))
105
+ # start obfuscate ckpt
106
+ ckpt_dir_files = os.listdir(ckpt_files)
107
+ for ckpt_name in ckpt_dir_files:
108
+ if Path(ckpt_files + ckpt_name).is_dir():
109
+ sub_path = ckpt_files + ckpt_name
110
+ sub_ckpt_file_list = os.listdir(sub_path)
111
+ new_saved_path = os.path.abspath(saved_path) + '/' + ckpt_name
112
+ if not os.path.exists(new_saved_path):
113
+ try:
114
+ os.mkdir(new_saved_path, mode=0o700)
115
+ except FileExistsError:
116
+ pass
117
+ for sub_ckpt_name in sub_ckpt_file_list:
118
+ if not sub_ckpt_name.endswith('.ckpt'):
119
+ continue
120
+ _obfuscate_single_ckpt(os.path.abspath(sub_path) + '/' + sub_ckpt_name, obf_ratios, path_list,
121
+ target_list, new_saved_path)
122
+ else:
123
+ if not ckpt_name.endswith('.ckpt'):
124
+ continue
125
+ _obfuscate_single_ckpt(os.path.abspath(ckpt_files) + '/' + ckpt_name, obf_ratios, path_list,
126
+ target_list, saved_path)
127
+
128
+
129
+ def _obfuscate_single_ckpt(ckpt_name, obf_ratios, path_list, target_list, saved_path):
130
+ """Obfuscate single ckpt file"""
131
+ module_has_been_obfuscated = set()
132
+ ckpt_param = load_checkpoint(ckpt_name)
133
+ obf_ratios_index = -1
134
+ global OBF_RATIOS_LENGTH, OBF_RATIOS_WIDTH
135
+ for item in ckpt_param:
136
+ module = _get_valid_module(item, path_list, target_list)
137
+ if module:
138
+ layer_index = _judge_layer_index(item)
139
+ if layer_index >= OBF_RATIOS_LENGTH:
140
+ break
141
+ if module not in module_has_been_obfuscated:
142
+ module_has_been_obfuscated.add(module)
143
+ obf_ratios_index += 1
144
+ ratio_total_index = layer_index * OBF_RATIOS_WIDTH + obf_ratios_index % OBF_RATIOS_WIDTH
145
+ ckpt_param[item].set_data(ckpt_param[item].value() / obf_ratios[ratio_total_index])
146
+ # save the obfuscated model to saved_path
147
+ obf_param_list = []
148
+ for item in ckpt_param:
149
+ obf_param_list.append({'name': item, 'data': ckpt_param[item]})
150
+ ckpt_file_name = ckpt_name.split('/')[-1]
151
+ obf_ckpt_file_name = ckpt_file_name.split('.')[0] + '_obf' + '.ckpt'
152
+ save_checkpoint(obf_param_list, os.path.abspath(saved_path) + '/' + obf_ckpt_file_name)
153
+
154
+
155
+ def load_obf_params_into_net(network, target_modules, obf_ratios, **kwargs):
156
+ """
157
+ load obfuscate ratios into obfuscated network. Usually used in conjunction with :func:`mindspore.obfuscate_ckpt`
158
+ interface.
159
+
160
+ Args:
161
+ network (nn.Cell): The original network that need to be obfuscated.
162
+ target_modules (list[str]): The target module of network that need to be obfuscated. The first string
163
+ represents the network path of target module in original network, which should be in form of ``'A/B/C'``.
164
+ The second string represents the obfuscation target module, which should be in form of ``'D|E|F'``. For
165
+ example, thr target_modules of GPT2 can be ``['backbone/blocks/attention', 'dense1|dense2|dense3']``.
166
+ If target_modules has the third value, it should be in the format of 'obfuscate_layers:all' or
167
+ 'obfuscate_layers:int', which represents the number of layers need to be obfuscated of duplicate layers
168
+ (such as transformer layers or resnet blocks).
169
+ obf_ratios (Tensor): The obf ratios generated when execute :func:`mindspore.obfuscate_ckpt`.
170
+ kwargs (dict): Configuration options dictionary.
171
+
172
+ - ignored_func_decorators (list[str]): The name list of function decorators in network's python code.
173
+ - ignored_class_decorators (list[str]): The name list of class decorators in network's python code.
174
+
175
+ Raises:
176
+ TypeError: If `network` is not nn.Cell.
177
+ TypeError: If `obf_ratios` is not Tensor.
178
+ TypeError: If `target_modules` is not list.
179
+ TypeError: If target_modules's elements are not string.
180
+ ValueError: If the number of elements of `target_modules` is less than ``2``.
181
+ ValueError: If `obf_ratios` is empty Tensor.
182
+ ValueError: If the first string of `target_modules` contains characters other than uppercase and lowercase
183
+ letters, numbers, ``'_'`` and ``'/'``.
184
+ ValueError: If the second string of `target_modules` is empty or contains characters other than uppercase and
185
+ lowercase letters, numbers, ``'_'`` and ``'|'``.
186
+ ValueError: If the third string of `target_modules` is not in the format of 'obfuscate_layers:all' or
187
+ 'obfuscate_layers:int'.
188
+ TypeError: If `ignored_func_decorators` is not list[str] or `ignored_class_decorators` is not list[str].
189
+
190
+ Examples:
191
+ >>> from mindspore import obfuscate_ckpt, save_checkpoint, load_checkpoint, Tensor
192
+ >>> import mindspore.common.dtype as mstype
193
+ >>> import numpy as np
194
+ >>> # Refer to https://gitee.com/mindspore/docs/blob/r2.2/docs/mindspore/code/lenet.py
195
+ >>> net = LeNet5()
196
+ >>> save_checkpoint(net, './test_net.ckpt')
197
+ >>> target_modules = ['', 'fc1|fc2']
198
+ >>> # obfuscate ckpt files
199
+ >>> obfuscate_ckpt(net, target_modules, './', './')
200
+ >>> # load obf ckpt into network
201
+ >>> new_net = LeNet5()
202
+ >>> load_checkpoint('./test_net_obf.ckpt', new_net)
203
+ >>> obf_ratios = Tensor(np.load('./obf_ratios.npy'), mstype.float16)
204
+ >>> obf_net = load_obf_params_into_net(new_net, target_modules, obf_ratios)
205
+ """
206
+ if not isinstance(network, nn.Cell):
207
+ raise TypeError("network must be nn.Cell, but got {}.".format(type(network)))
208
+ if not isinstance(obf_ratios, Tensor):
209
+ raise TypeError("obf_ratios must be MindSpore Tensor, but got {}.".format(type(obf_ratios)))
210
+ if obf_ratios.size == 0:
211
+ raise ValueError("obf_ratios can not be empty.")
212
+ if not _check_valid_target(network, target_modules):
213
+ raise ValueError("{} is not exist, please check the input 'target_modules'.".format(target_modules))
214
+ if len(target_modules) >= 1 and target_modules[0] == '/':
215
+ target_modules[0] = ''
216
+ path_list = target_modules[0].split('/')
217
+ path_len = len(path_list)
218
+ target_list = []
219
+ for _ in range(path_len):
220
+ target_list.append([])
221
+ target_list.append(target_modules[1].split('|'))
222
+ global MAX_OBF_RATIOS_NUM, OBF_RATIOS_WIDTH, OBF_RATIOS_LENGTH
223
+ number_of_ratios = OBF_RATIOS_LENGTH * OBF_RATIOS_WIDTH
224
+ if number_of_ratios > MAX_OBF_RATIOS_NUM:
225
+ OBF_RATIOS_LENGTH = MAX_OBF_RATIOS_NUM // OBF_RATIOS_WIDTH
226
+ number_of_ratios = OBF_RATIOS_LENGTH * OBF_RATIOS_WIDTH
227
+ MAX_OBF_RATIOS_NUM = number_of_ratios
228
+ rewrite_network = _obfuscate_network(network, path_list, target_list, **kwargs)
229
+ setattr(rewrite_network, 'obf_ratios', obf_ratios)
230
+ return rewrite_network
231
+
232
+
233
+ def _check_dir_path(name, dir_path):
234
+ """check directory path"""
235
+ if not isinstance(dir_path, str):
236
+ raise TypeError("{} must be string, but got {}.".format(name, type(dir_path)))
237
+ if not os.path.exists(dir_path):
238
+ raise ValueError("{} is not exist, please check the input {}.".format(dir_path, name))
239
+ if not Path(dir_path).is_dir():
240
+ raise TypeError("{} must be a directory path, but got {}.".format(name, dir_path))
241
+
242
+
243
+ def _judge_layer_index(layer_name):
244
+ """Judge the layer index of target layers"""
245
+ split_name = layer_name.split('.')
246
+ for split_str in split_name[:]:
247
+ if split_str.isdigit():
248
+ return int(split_str)
249
+ return 0
250
+
251
+
252
+ def _check_valid_target(network, target_modules):
253
+ """check whether the input 'target_modules' exists"""
254
+ if not isinstance(target_modules, list):
255
+ raise TypeError("target_modules type should be list, but got {}.".format(type(target_modules)))
256
+ if len(target_modules) < 2:
257
+ raise ValueError("target_modules should contain at least two string values, in the form of ['A/B/C', 'D1|D2'],"
258
+ "but got {}.".format(target_modules))
259
+ if (not isinstance(target_modules[0], str)) or (not isinstance(target_modules[1], str)):
260
+ raise TypeError("The values of target_modules should be string, but got {} and {}.".
261
+ format(type(target_modules[0]), type(target_modules[1])))
262
+
263
+ if not target_modules[1]:
264
+ raise ValueError("{} should be a non-empty string value, in the form of 'D1|D2'"
265
+ .format(target_modules[1]))
266
+ if not re.fullmatch(pattern=r'([a-zA-Z]*[0-9]*\/*_*)*', string=target_modules[0])\
267
+ or not re.fullmatch(pattern=r'([a-zA-Z]*[0-9]*\|*_*)*', string=target_modules[1]):
268
+ raise ValueError("please check the input 'target_modules'{},it should be in the form of ['A/B/C', 'D1|D2']."
269
+ "target_modules[0] can only contain uppercase and lowercase letters, numbers, '_' and '/',"
270
+ "target_modules[1] can only contain uppercase and lowercase letters, numbers, '_' and '|'"
271
+ .format(target_modules))
272
+ # target_modules[0] is allowed to be '', it means the main network path
273
+ path_list = target_modules[0].split('/')
274
+ target_list = target_modules[1].split('|')
275
+ net = network
276
+ # DFS check whether path_list is valid
277
+ stk = [net]
278
+ i = 0
279
+ global OBF_RATIOS_LENGTH
280
+ OBF_RATIOS_LENGTH = 1
281
+ while stk and i < len(path_list):
282
+ net = stk.pop()
283
+ if hasattr(net, path_list[i]):
284
+ net = getattr(net, path_list[i])
285
+ i += 1
286
+ if isinstance(net, nn.CellList):
287
+ OBF_RATIOS_LENGTH *= len(net)
288
+ for n in net:
289
+ stk.append(n)
290
+ elif isinstance(net, nn.Cell):
291
+ stk.append(net)
292
+ else:
293
+ raise TypeError("Target_modules[0] should be a subgraph and it's type should be nn.Cell(nn.CellList),"
294
+ "but got type {}".format(type(net)))
295
+ if target_modules[0] != '' and i != len(path_list):
296
+ raise ValueError("the path {} does not exist.".format(target_modules[0]))
297
+ # check whether target_list is valid
298
+ global OBF_RATIOS_WIDTH
299
+ OBF_RATIOS_WIDTH = 0
300
+ for j in range(len(target_list)):
301
+ if not hasattr(net, target_list[j]):
302
+ logger.warning("{} does not exist in the path {}".format(target_list[j], target_modules[0]))
303
+ else:
304
+ OBF_RATIOS_WIDTH += 1
305
+ if OBF_RATIOS_WIDTH == 0:
306
+ raise ValueError("all targets {} do not exist in the path {}.".format(target_list, target_modules[0]))
307
+ _update_max_obf_ratios_num(target_modules)
308
+ return True
309
+
310
+
311
+ def _update_max_obf_ratios_num(target_modules):
312
+ """Update MAX_OBF_RATIOS_NUM"""
313
+ if len(target_modules) >= 3:
314
+ obfuscate_layers = target_modules[2].split(':')
315
+ if len(obfuscate_layers) != 2 or obfuscate_layers[0] != 'obfuscate_layers':
316
+ raise ValueError("The third value of target_modules should be in the format of 'obfuscate_layers:all' or"
317
+ "'obfuscate_layers:int'")
318
+ global MAX_OBF_RATIOS_NUM
319
+ if obfuscate_layers[1] == 'all':
320
+ MAX_OBF_RATIOS_NUM = OBF_RATIOS_LENGTH * OBF_RATIOS_WIDTH
321
+ else:
322
+ if not obfuscate_layers[1].isdigit():
323
+ raise ValueError(
324
+ "The third value of target_modules should be in the format of 'obfuscate_layers:all' or"
325
+ "'obfuscate_layers:int'")
326
+ MAX_OBF_RATIOS_NUM = int(obfuscate_layers[1]) * OBF_RATIOS_WIDTH
327
+
328
+
329
+ def _get_default_target_modules(ckpt_files):
330
+ """Get the default or suggested target modules, if the target modules is None."""
331
+ def _split_to_path_and_target(module, target):
332
+ # split module into path list and target list
333
+ target_index = module.index(target)
334
+ path = module[:target_index - 1]
335
+ target = module[target_index:].split('/')[0]
336
+ return path, target
337
+
338
+ def _find_default_obfuscate_modules(net_path):
339
+ # find modules including the default paths
340
+ default_module = {'attention'}
341
+ for module in default_module:
342
+ if module in net_path and module not in candidate_modules:
343
+ candidate_modules.append(net_path)
344
+ # find the default targets in the default module
345
+ default_target = {'dense', 'query', 'key', 'value'}
346
+ for target in default_target:
347
+ for candidate in candidate_modules:
348
+ if target in candidate:
349
+ path, target = _split_to_path_and_target(candidate, target)
350
+ if path not in paths:
351
+ paths.append(path)
352
+ if target not in targets:
353
+ targets.append(target)
354
+
355
+ def _find_suggested_obfuscate_modules(net_path):
356
+ default_target = {'dense', 'query', 'key', 'value'}
357
+ for target in default_target:
358
+ # find the suggest modules
359
+ if target in net_path:
360
+ path, target = _split_to_path_and_target(net_path, target)
361
+ if [path, target] not in suggest_modules:
362
+ suggest_modules.append([path, target])
363
+
364
+ # store the potential candidate_modules
365
+ candidate_modules = []
366
+ suggest_modules = []
367
+ paths = []
368
+ targets = []
369
+ ckpt_dir_files = os.listdir(ckpt_files)
370
+ for ckpt_name in ckpt_dir_files:
371
+ if not ckpt_name.endswith('.ckpt'):
372
+ continue
373
+ ckpt_param = load_checkpoint(os.path.abspath(ckpt_files) + '/' + ckpt_name)
374
+ for item in ckpt_param:
375
+ param_path = _remove_digit(item)
376
+ param_path = '/'.join(param_path)
377
+ # find candidate modules including the default paths and append candidate_modules
378
+ _find_default_obfuscate_modules(param_path)
379
+ # give the suggested modules and find the default targets in the default module
380
+ _find_suggested_obfuscate_modules(param_path)
381
+ if paths and targets:
382
+ target_modules = [paths[0], '|'.join(targets)]
383
+ logger.warning("The default obfuscate modules is obtained:{}".format(target_modules))
384
+ return target_modules
385
+ # logging the suggested target module
386
+ logger.warning("The default obfuscate modules can not be obtained. The suggested possible paths are given below: {}"
387
+ .format(suggest_modules))
388
+ raise ValueError("Can not get the default path, please specify the path in the form of ['A/B/C', 'D1|D2']")
389
+
390
+
391
+ def _get_valid_module(item, path_list, target_list):
392
+ """get the valid module"""
393
+ number_path = len(path_list)
394
+ net_path = _remove_digit(item)
395
+ net_path = '/'.join(net_path[:number_path])
396
+ tar_path = '/'.join(path_list)
397
+ # update the weights with obf_ratios in target module
398
+ if net_path == tar_path:
399
+ for i in range(len(target_list)):
400
+ if target_list[i] in item.split('.'):
401
+ target_index = item.split('.').index(target_list[i])
402
+ module = ''.join(item.split('.')[:target_index + 1])
403
+ return module
404
+ return None
405
+
406
+
407
+ def _remove_digit(item):
408
+ """remove digit in the parameter path"""
409
+ param_path = item.split('.')
410
+ for tmp_str in param_path[:]:
411
+ if tmp_str.isdigit():
412
+ param_path.remove(tmp_str)
413
+ return param_path
414
+
415
+
416
+ def _obfuscate_network(model, path_list, target_list, **kwargs):
417
+ """obfuscate original network, including add mul operation and add inputs for passing obf_ratio."""
418
+
419
+ def _insert_input(stree: SymbolTree, arg_name: str = 'y_obf'):
420
+ """add inputs for passing obf_ratio"""
421
+ last_input = None
422
+ for node in stree.nodes():
423
+ if node.get_node_type() == NodeType.Input:
424
+ last_input = node
425
+ position = stree.after(last_input)
426
+ # the insert input node name would be 'input_y_obf'
427
+ new_input_node = last_input.create_input(arg_name)
428
+ stree.insert(position, new_input_node)
429
+ return new_input_node
430
+
431
+ def _insert_mul(stree: SymbolTree, node: Node, index: int):
432
+ """add mul operation for original network"""
433
+ arg_list = node.get_targets().copy()
434
+ input_y_node = stree.get_node("input_y_obf")
435
+ v: str = input_y_node.get_targets()[0].value
436
+ sv: ScopedValue = ScopedValue.create_naming_value(v + f'[{index}]')
437
+ arg_list.append(sv)
438
+ target_list = node.get_targets().copy()
439
+ new_mul_node = node.create_call_cell(cell=ops.Mul(), targets=target_list, args=arg_list, name='mul')
440
+ position = stree.after(node)
441
+ stree.insert(position, new_mul_node)
442
+
443
+ def _insert_mul_by_name(stree: SymbolTree, after_name_list: list):
444
+ """add mul operation after the target nodes according the name of them"""
445
+ if not after_name_list:
446
+ return
447
+ for node in stree.nodes():
448
+ for after_name in after_name_list:
449
+ if node.get_name() == after_name:
450
+ global OBF_RATIOS_INSERT_INDEX
451
+ if OBF_RATIOS_INSERT_INDEX < MAX_OBF_RATIOS_NUM:
452
+ _insert_mul(stree, node, OBF_RATIOS_INSERT_INDEX)
453
+ OBF_RATIOS_INSERT_INDEX += 1
454
+
455
+ def _update_subnet(stree: SymbolTree, substree: SymbolTree, subnode: Node):
456
+ """update the network once the subnet is obfuscated"""
457
+ new_net = substree.get_network()
458
+ input_y_node = substree.get_node("input_y_obf")
459
+ if input_y_node is None:
460
+ return
461
+ arg_list = subnode.get_args().copy()
462
+ v: str = input_y_node.get_targets()[0].value
463
+ arg_obf: ScopedValue = ScopedValue.create_naming_value("y_obf=" + v)
464
+ arg_list.append(arg_obf)
465
+ target_list = subnode.get_targets().copy()
466
+ name = subnode.get_name()
467
+ new_node = subnode.create_call_cell(cell=new_net, targets=target_list, args=arg_list, name=name)
468
+ stree.replace(subnode, [new_node])
469
+
470
+ def _traverse(stree, i=0):
471
+ """traverse and obfuscate the original network"""
472
+ if len(path_list) == i:
473
+ return
474
+ for node in stree.nodes():
475
+ node_name = node.get_name()
476
+ if node.get_node_type() == NodeType.Tree and node_name.startswith(path_list[i]):
477
+ sub_stree = TreeNodeHelper.get_sub_tree(node)
478
+ _traverse(sub_stree, i + 1)
479
+ _insert_input(sub_stree, arg_name='y_obf')
480
+ _insert_mul_by_name(sub_stree, after_name_list=target_list[i + 1])
481
+ _update_subnet(stree, sub_stree, node)
482
+
483
+ def _register_denied_func_decorators(fn):
484
+ """set the function decorators which should be denied for parse"""
485
+ from mindspore.rewrite.parsers.class_def_parser import ClassDefParser
486
+ name = "denied_function_decorator_list"
487
+ setattr(ClassDefParser, name, fn)
488
+
489
+ def _register_denied_class_decorators(fn):
490
+ """set the class decorators which should be denied for parse"""
491
+ from mindspore.rewrite.parsers.class_def_parser import ModuleParser
492
+ name = "denied_class_decorator_list"
493
+ setattr(ModuleParser, name, fn)
494
+
495
+ if 'ignored_func_decorators' in kwargs.keys():
496
+ kw_func_dec = kwargs["ignored_func_decorators"]
497
+ if not isinstance(kw_func_dec, list):
498
+ raise TypeError('{} should be list, but got {}'.format(kw_func_dec, type(kw_func_dec)))
499
+ if kw_func_dec and not isinstance(kw_func_dec[0], str):
500
+ raise TypeError('elements of {} should be str, but got {}'.format(kw_func_dec, type(kw_func_dec[0])))
501
+ _register_denied_func_decorators(kw_func_dec)
502
+ else:
503
+ _register_denied_func_decorators(["_args_type_validator_check", "_LogActionOnce", "cell_attr_register"])
504
+ if 'ignored_class_decorators' in kwargs.keys():
505
+ kw_class_dec = kwargs["ignored_class_decorators"]
506
+ _register_denied_class_decorators(kw_class_dec)
507
+ if not isinstance(kw_class_dec, list):
508
+ raise TypeError('{} should be list[str] type, but got {}'.format(kw_class_dec, type(kw_class_dec)))
509
+ if kw_class_dec and not isinstance(kw_class_dec[0], str):
510
+ raise TypeError('elements of {} should be str, but got {}'.format(kw_class_dec, type(kw_class_dec[0])))
511
+
512
+ main_stree = SymbolTree.create(model)
513
+ _traverse(main_stree, 0)
514
+ _insert_input(main_stree, arg_name='y_obf')
515
+ _insert_mul_by_name(main_stree, after_name_list=target_list[0])
516
+ new_net = main_stree.get_network()
517
+ return new_net
mindspore/scipy/linalg.py CHANGED
@@ -461,8 +461,8 @@ def lu_pivots_to_permutation(pivots, permutation_size: int):
461
461
  loc = mnp.ix_(*(mnp.arange(0, b) for b in batch_dims))
462
462
  x = permutation[..., i]
463
463
  y = permutation[loc + (j,)]
464
- permutation[..., i] = y
465
464
  permutation[loc + (j,)] = x
465
+ permutation[..., i] = y
466
466
  return permutation
467
467
 
468
468
 
@@ -99,10 +99,14 @@ def minimize(func, x0, args=(), method=None, jac=None, hess=None, hessp=None, bo
99
99
  if it is a callable, it should be a function that returns the gradient vector:
100
100
  :math:`jac(x, *args) -> array\_like, shape (n,)`
101
101
  where x is an array with shape :math:`(n,)` and args is a tuple with the fixed parameters.
102
+ hess (Callable, optional): Method for calculating the Hessian Matrix. Not implemented yet.
103
+ hessp (Callable, optional): Hessian of objective function times an arbitrary vector `p`. Not implemented yet.
104
+ bounds (Sequence, optional): Sequence of `(min, max)` pairs for each element in `x`. Not implemented yet.
105
+ constraints (Callable, optional): representing the inequality constrains, each function in constrains indicates
106
+ the function < 0 as an inequality constrain.
102
107
  tol (float, optional): tolerance for termination. For detailed control, use solver-specific
103
108
  options. Default: ``None`` .
104
- constraints(Callable, optional): representing the inequality constrains, each function in constrains indicates
105
- the function < 0 as an inequality constrain.
109
+ callback (Callable, optional): A callable called after each iteration. Not implemented yet.
106
110
  options (Mapping[str, Any], optional): a dictionary of solver options. All methods accept the following
107
111
  generic options. Default: ``None`` .
108
112
 
@@ -111,7 +115,7 @@ def minimize(func, x0, args=(), method=None, jac=None, hess=None, hessp=None, bo
111
115
  - maxiter (int): Maximum number of iterations to perform. Depending on the
112
116
  method each iteration may use several function evaluations.
113
117
 
114
- The follow options are exclusive to Lagrange method:
118
+ The follow options are exclusive to Lagrange method:
115
119
 
116
120
  - save_tol (list): list of saving tolerance, with the same length with 'constrains'.
117
121
  - obj_weight (float): weight for objective function, usually between 1.0 - 100000.0.
mindspore/train/_utils.py CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright 2020-2021 Huawei Technologies Co., Ltd
1
+ # Copyright 2020-2023 Huawei Technologies Co., Ltd
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -66,7 +66,11 @@ def _exec_datagraph(exec_dataset, dataset_size, phase='dataset', create_data_inf
66
66
  # transform data format
67
67
  dataset_types, dataset_shapes = _get_types_and_shapes(exec_dataset)
68
68
  send_epoch_end = bool(dataset_size == -1)
69
- exec_dataset = exec_dataset.device_que(send_epoch_end=send_epoch_end, create_data_info_queue=create_data_info_queue)
69
+ queue_name = _cell_graph_executor.get_queue_name(phase)
70
+ if queue_name is None:
71
+ queue_name = str("")
72
+ exec_dataset = exec_dataset.device_que(send_epoch_end=send_epoch_end,
73
+ create_data_info_queue=create_data_info_queue, queue_name=queue_name)
70
74
  _cell_graph_executor.init_dataset(exec_dataset.queue_name,
71
75
  dataset_size,
72
76
  batch_size,
@@ -105,7 +109,7 @@ def _construct_tensor_list(types, shapes, batch_expand_num=1):
105
109
  new_shape += (item * batch_expand_num,)
106
110
  else:
107
111
  new_shape += (item,)
108
- tensor = Tensor(np.zeros(new_shape, dtype_to_nptype(type_)))
112
+ tensor = Tensor(np.zeros(new_shape, dtype_to_nptype(type_)), dtype=type_)
109
113
  tensor.virtual_flag = True
110
114
  tensor_list.append(tensor)
111
115
  return tensor_list