You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

condition_list.py 20 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. # Copyright 2020 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. Condition list.
  17. This module provide the detail conditions list.
  18. """
  19. from mindinsight.debugger.conditionmgr.condition import Condition
  20. from mindinsight.debugger.conditionmgr.condition import OptimizePhaseEnum
  21. from mindinsight.debugger.conditionmgr.condition import ConditionParameter
  22. from mindinsight.debugger.conditionmgr.condition import ValueTypeEnum
  23. from mindinsight.debugger.conditionmgr.condition import TargetTypeEnum
  24. from mindinsight.debugger.conditionmgr.condition import PlatformEnum
  25. from mindinsight.debugger.conditionmgr.condition import ParamTypeEnum
  26. from mindinsight.debugger.conditionmgr.condition import ConditionIdEnum
  27. from mindinsight.debugger.conditionmgr.condition import ParamNameEnum
  28. from mindinsight.debugger.conditionmgr.condition import check_initialization_available
  29. from mindinsight.debugger.conditionmgr.condition import check_normal_param_range
  30. from mindinsight.debugger.conditionmgr.condition import check_percentage_param_range
  31. from mindinsight.debugger.conditionmgr.condition import check_abs_param_range, check_positive_param_range
  32. CONDITION_LIST = [
  33. Condition(
  34. condition_id=ConditionIdEnum.WEIGHT_INITIALIZATION,
  35. abbr="WI",
  36. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_initialization
  37. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  38. parameters=[
  39. ConditionParameter(
  40. name=ParamNameEnum.ZERO_PERCENTAGE_GE,
  41. value_type=ValueTypeEnum.FLOAT64,
  42. valid_test_func=check_percentage_param_range,
  43. default_value=100
  44. ),
  45. ConditionParameter(
  46. name=ParamNameEnum.MAX_GT,
  47. value_type=ValueTypeEnum.FLOAT64,
  48. valid_test_func=check_normal_param_range
  49. ),
  50. ConditionParameter(
  51. name=ParamNameEnum.MIN_LT,
  52. value_type=ValueTypeEnum.FLOAT64,
  53. valid_test_func=check_normal_param_range
  54. )
  55. ],
  56. supported_target_type=TargetTypeEnum.WEIGHT,
  57. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  58. minimum_debugger_capability=(1, 1),
  59. availability_test_func=check_initialization_available
  60. ),
  61. Condition(
  62. condition_id=ConditionIdEnum.WEIGHT_OVERFLOW,
  63. abbr="WO",
  64. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_general_overflow
  65. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  66. parameters=[],
  67. supported_target_type=TargetTypeEnum.WEIGHT,
  68. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  69. minimum_debugger_capability=(1, 1)
  70. ),
  71. Condition(
  72. condition_id=ConditionIdEnum.WEIGHT_TOO_LARGE,
  73. abbr="WL",
  74. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_large
  75. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  76. parameters=[
  77. ConditionParameter(
  78. name=ParamNameEnum.ABS_MEAN_GT,
  79. value_type=ValueTypeEnum.FLOAT64,
  80. valid_test_func=check_abs_param_range
  81. ),
  82. ConditionParameter(
  83. name=ParamNameEnum.MAX_GT,
  84. value_type=ValueTypeEnum.FLOAT64,
  85. valid_test_func=check_normal_param_range
  86. ),
  87. ConditionParameter(
  88. name=ParamNameEnum.MIN_GT,
  89. value_type=ValueTypeEnum.FLOAT64,
  90. valid_test_func=check_normal_param_range
  91. ),
  92. ConditionParameter(
  93. name=ParamNameEnum.MEAN_GT,
  94. value_type=ValueTypeEnum.FLOAT64,
  95. valid_test_func=check_normal_param_range
  96. )
  97. ],
  98. supported_target_type=TargetTypeEnum.WEIGHT,
  99. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  100. minimum_debugger_capability=(1, 1)
  101. ),
  102. Condition(
  103. condition_id=ConditionIdEnum.WEIGHT_TOO_SMALL,
  104. abbr="WS",
  105. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_small
  106. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  107. parameters=[
  108. ConditionParameter(
  109. name=ParamNameEnum.ABS_MEAN_LT,
  110. value_type=ValueTypeEnum.FLOAT64,
  111. valid_test_func=check_abs_param_range
  112. ),
  113. ConditionParameter(
  114. name=ParamNameEnum.MAX_LT,
  115. value_type=ValueTypeEnum.FLOAT64,
  116. valid_test_func=check_normal_param_range
  117. ),
  118. ConditionParameter(
  119. name=ParamNameEnum.MIN_LT,
  120. value_type=ValueTypeEnum.FLOAT64,
  121. valid_test_func=check_normal_param_range
  122. ),
  123. ConditionParameter(
  124. name=ParamNameEnum.MEAN_LT,
  125. value_type=ValueTypeEnum.FLOAT64,
  126. valid_test_func=check_normal_param_range
  127. )
  128. ],
  129. supported_target_type=TargetTypeEnum.WEIGHT,
  130. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  131. minimum_debugger_capability=(1, 1)
  132. ),
  133. Condition(
  134. condition_id=ConditionIdEnum.GRADIENT_VANISHING,
  135. abbr="GV",
  136. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_small
  137. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  138. parameters=[
  139. ConditionParameter(
  140. name=ParamNameEnum.ABS_MEAN_LT,
  141. value_type=ValueTypeEnum.FLOAT64,
  142. valid_test_func=check_abs_param_range
  143. ),
  144. ConditionParameter(
  145. name=ParamNameEnum.MAX_LT,
  146. value_type=ValueTypeEnum.FLOAT64,
  147. valid_test_func=check_normal_param_range
  148. ),
  149. ConditionParameter(
  150. name=ParamNameEnum.MIN_LT,
  151. value_type=ValueTypeEnum.FLOAT64,
  152. valid_test_func=check_normal_param_range
  153. ),
  154. ConditionParameter(
  155. name=ParamNameEnum.MEAN_LT,
  156. value_type=ValueTypeEnum.FLOAT64,
  157. valid_test_func=check_normal_param_range
  158. )
  159. ],
  160. supported_target_type=TargetTypeEnum.GRADIENT,
  161. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  162. minimum_debugger_capability=(1, 1)
  163. ),
  164. Condition(
  165. condition_id=ConditionIdEnum.GRADIENT_TOO_LARGE,
  166. abbr="GL",
  167. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_large
  168. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  169. parameters=[
  170. ConditionParameter(
  171. name=ParamNameEnum.ABS_MEAN_GT,
  172. value_type=ValueTypeEnum.FLOAT64,
  173. valid_test_func=check_abs_param_range
  174. ),
  175. ConditionParameter(
  176. name=ParamNameEnum.MAX_GT,
  177. value_type=ValueTypeEnum.FLOAT64,
  178. valid_test_func=check_normal_param_range
  179. ),
  180. ConditionParameter(
  181. name=ParamNameEnum.MIN_GT,
  182. value_type=ValueTypeEnum.FLOAT64,
  183. valid_test_func=check_normal_param_range
  184. ),
  185. ConditionParameter(
  186. name=ParamNameEnum.MEAN_GT,
  187. value_type=ValueTypeEnum.FLOAT64,
  188. valid_test_func=check_normal_param_range
  189. )
  190. ],
  191. supported_target_type=TargetTypeEnum.GRADIENT,
  192. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  193. minimum_debugger_capability=(1, 1)
  194. ),
  195. Condition(
  196. condition_id=ConditionIdEnum.GRADIENT_EXPLODING,
  197. abbr="GE",
  198. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_general_overflow
  199. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  200. parameters=[],
  201. supported_target_type=TargetTypeEnum.GRADIENT,
  202. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  203. minimum_debugger_capability=(1, 1)
  204. ),
  205. Condition(
  206. condition_id=ConditionIdEnum.TENSOR_OVERFLOW,
  207. abbr="TO",
  208. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_general_overflow
  209. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  210. parameters=[],
  211. supported_target_type=TargetTypeEnum.TENSOR,
  212. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  213. minimum_debugger_capability=(1, 1)
  214. ),
  215. Condition(
  216. condition_id=ConditionIdEnum.OPERATOR_OVERFLOW,
  217. abbr="OO",
  218. # Send this condition to MindSpore will use WatchCondition.Condition.overflow
  219. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  220. parameters=[],
  221. supported_target_type=TargetTypeEnum.TENSOR,
  222. supported_platforms=(PlatformEnum.ASCEND,),
  223. minimum_debugger_capability=(1, 1)
  224. ),
  225. Condition(
  226. condition_id=ConditionIdEnum.TENSOR_TOO_LARGE,
  227. abbr="TL",
  228. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_large
  229. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  230. parameters=[
  231. ConditionParameter(
  232. name=ParamNameEnum.ABS_MEAN_GT,
  233. value_type=ValueTypeEnum.FLOAT64,
  234. valid_test_func=check_abs_param_range
  235. ),
  236. ConditionParameter(
  237. name=ParamNameEnum.MAX_GT,
  238. value_type=ValueTypeEnum.FLOAT64,
  239. valid_test_func=check_normal_param_range
  240. ),
  241. ConditionParameter(
  242. name=ParamNameEnum.MIN_GT,
  243. value_type=ValueTypeEnum.FLOAT64,
  244. valid_test_func=check_normal_param_range
  245. ),
  246. ConditionParameter(
  247. name=ParamNameEnum.MEAN_GT,
  248. value_type=ValueTypeEnum.FLOAT64,
  249. valid_test_func=check_normal_param_range
  250. )
  251. ],
  252. supported_target_type=TargetTypeEnum.TENSOR,
  253. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  254. minimum_debugger_capability=(1, 1)
  255. ),
  256. Condition(
  257. condition_id=ConditionIdEnum.TENSOR_TOO_SMALL,
  258. abbr="TS",
  259. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_too_small
  260. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  261. parameters=[
  262. ConditionParameter(
  263. name=ParamNameEnum.ABS_MEAN_LT,
  264. value_type=ValueTypeEnum.FLOAT64,
  265. valid_test_func=check_abs_param_range
  266. ),
  267. ConditionParameter(
  268. name=ParamNameEnum.MAX_LT,
  269. value_type=ValueTypeEnum.FLOAT64,
  270. valid_test_func=check_normal_param_range
  271. ),
  272. ConditionParameter(
  273. name=ParamNameEnum.MIN_LT,
  274. value_type=ValueTypeEnum.FLOAT64,
  275. valid_test_func=check_normal_param_range
  276. ),
  277. ConditionParameter(
  278. name=ParamNameEnum.MEAN_LT,
  279. value_type=ValueTypeEnum.FLOAT64,
  280. valid_test_func=check_normal_param_range
  281. )
  282. ],
  283. supported_target_type=TargetTypeEnum.TENSOR,
  284. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  285. minimum_debugger_capability=(1, 1)
  286. ),
  287. Condition(
  288. condition_id=ConditionIdEnum.TENSOR_ALL_ZERO,
  289. abbr="TZ",
  290. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_all_zero
  291. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  292. parameters=[
  293. ConditionParameter(
  294. name=ParamNameEnum.ZERO_PERCENTAGE_GE,
  295. value_type=ValueTypeEnum.FLOAT64,
  296. valid_test_func=check_percentage_param_range,
  297. default_value=100
  298. )
  299. ],
  300. supported_target_type=TargetTypeEnum.TENSOR,
  301. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  302. minimum_debugger_capability=(1, 1)
  303. ),
  304. Condition(
  305. condition_id=ConditionIdEnum.WEIGHT_NOT_CHANGED,
  306. abbr="WNC",
  307. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_not_changed
  308. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  309. parameters=[
  310. ConditionParameter(
  311. name=ParamNameEnum.RTOL,
  312. value_type=ValueTypeEnum.FLOAT64,
  313. valid_test_func=check_abs_param_range,
  314. default_value=1e-5
  315. ),
  316. ConditionParameter(
  317. name=ParamNameEnum.ATOL,
  318. value_type=ValueTypeEnum.FLOAT64,
  319. support_disable=False,
  320. default_value=1e-8,
  321. visible_on_ui=False
  322. ),
  323. ConditionParameter(
  324. name=ParamNameEnum.EQUAL_NAN,
  325. value_type=ValueTypeEnum.BOOL,
  326. support_disable=False,
  327. default_value=False,
  328. visible_on_ui=False
  329. )
  330. ],
  331. supported_target_type=TargetTypeEnum.WEIGHT,
  332. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  333. minimum_debugger_capability=(1, 1)
  334. ),
  335. Condition(
  336. condition_id=ConditionIdEnum.WEIGHT_CHANGE_TOO_LARGE,
  337. abbr="WCL",
  338. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_change_too_large
  339. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  340. parameters=[
  341. ConditionParameter(
  342. name=ParamNameEnum.ABS_MEAN_UPDATE_RATIO_GT,
  343. value_type=ValueTypeEnum.FLOAT64,
  344. valid_test_func=check_abs_param_range,
  345. default_value=1e-1
  346. ),
  347. ConditionParameter(
  348. name=ParamNameEnum.EPSILON,
  349. value_type=ValueTypeEnum.FLOAT64,
  350. support_disable=False,
  351. default_value=1e-9,
  352. visible_on_ui=False
  353. )
  354. ],
  355. supported_target_type=TargetTypeEnum.WEIGHT,
  356. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  357. minimum_debugger_capability=(1, 1)
  358. ),
  359. Condition(
  360. condition_id=ConditionIdEnum.WEIGHT_CHANGE_TOO_SMALL,
  361. abbr="WCS",
  362. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_change_too_small
  363. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  364. parameters=[
  365. ConditionParameter(
  366. name=ParamNameEnum.ABS_MEAN_UPDATE_RATIO_LT,
  367. value_type=ValueTypeEnum.FLOAT64,
  368. valid_test_func=check_abs_param_range,
  369. default_value=1e-4
  370. ),
  371. ConditionParameter(
  372. name=ParamNameEnum.EPSILON,
  373. value_type=ValueTypeEnum.FLOAT64,
  374. support_disable=False,
  375. default_value=1e-9,
  376. visible_on_ui=False
  377. )
  378. ],
  379. supported_target_type=TargetTypeEnum.WEIGHT,
  380. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  381. minimum_debugger_capability=(1, 1)
  382. ),
  383. Condition(
  384. condition_id=ConditionIdEnum.ACTIVATION_RANGE,
  385. abbr="AR",
  386. # Send this condition to MindSpore will use WatchCondition.Condition.activation_range
  387. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  388. parameters=[
  389. ConditionParameter(
  390. name=ParamNameEnum.RANGE_START_INCLUSIVE,
  391. value_type=ValueTypeEnum.FLOAT64,
  392. valid_test_func=check_normal_param_range,
  393. param_type=ParamTypeEnum.SUPPORT_PARAM
  394. ),
  395. ConditionParameter(
  396. name=ParamNameEnum.RANGE_END_INCLUSIVE,
  397. value_type=ValueTypeEnum.FLOAT64,
  398. valid_test_func=check_normal_param_range,
  399. param_type=ParamTypeEnum.SUPPORT_PARAM
  400. ),
  401. ConditionParameter(
  402. name=ParamNameEnum.RANGE_PERCENTAGE_LT,
  403. value_type=ValueTypeEnum.FLOAT64,
  404. valid_test_func=check_percentage_param_range,
  405. required_params=[ParamNameEnum.RANGE_START_INCLUSIVE.value, ParamNameEnum.RANGE_END_INCLUSIVE.value]
  406. ),
  407. ConditionParameter(
  408. name=ParamNameEnum.RANGE_PERCENTAGE_GT,
  409. value_type=ValueTypeEnum.FLOAT64,
  410. valid_test_func=check_percentage_param_range,
  411. required_params=[ParamNameEnum.RANGE_START_INCLUSIVE.value, ParamNameEnum.RANGE_END_INCLUSIVE.value]
  412. ),
  413. ConditionParameter(
  414. name=ParamNameEnum.MAX_MIN_LT,
  415. value_type=ValueTypeEnum.FLOAT64,
  416. valid_test_func=check_positive_param_range
  417. ),
  418. ConditionParameter(
  419. name=ParamNameEnum.MAX_MIN_GT,
  420. value_type=ValueTypeEnum.FLOAT64,
  421. valid_test_func=check_abs_param_range
  422. )
  423. ],
  424. supported_target_type=TargetTypeEnum.ACTIVATION,
  425. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  426. minimum_debugger_capability=(1, 1)
  427. ),
  428. Condition(
  429. condition_id=ConditionIdEnum.TENSOR_RANGE,
  430. abbr="TR",
  431. # Send this condition to MindSpore will use WatchCondition.Condition.tensor_range
  432. optimize_phase=OptimizePhaseEnum.TENSOR_CHECK,
  433. parameters=[
  434. ConditionParameter(
  435. name=ParamNameEnum.RANGE_START_INCLUSIVE,
  436. value_type=ValueTypeEnum.FLOAT64,
  437. valid_test_func=check_normal_param_range,
  438. param_type=ParamTypeEnum.SUPPORT_PARAM
  439. ),
  440. ConditionParameter(
  441. name=ParamNameEnum.RANGE_END_INCLUSIVE,
  442. value_type=ValueTypeEnum.FLOAT64,
  443. valid_test_func=check_normal_param_range,
  444. param_type=ParamTypeEnum.SUPPORT_PARAM
  445. ),
  446. ConditionParameter(
  447. name=ParamNameEnum.RANGE_PERCENTAGE_LT,
  448. value_type=ValueTypeEnum.FLOAT64,
  449. valid_test_func=check_percentage_param_range,
  450. required_params=[ParamNameEnum.RANGE_START_INCLUSIVE.value, ParamNameEnum.RANGE_END_INCLUSIVE.value]
  451. ),
  452. ConditionParameter(
  453. name=ParamNameEnum.RANGE_PERCENTAGE_GT,
  454. value_type=ValueTypeEnum.FLOAT64,
  455. valid_test_func=check_percentage_param_range,
  456. required_params=[ParamNameEnum.RANGE_START_INCLUSIVE.value, ParamNameEnum.RANGE_END_INCLUSIVE.value]
  457. ),
  458. ConditionParameter(
  459. name=ParamNameEnum.MAX_MIN_LT,
  460. value_type=ValueTypeEnum.FLOAT64,
  461. valid_test_func=check_positive_param_range
  462. ),
  463. ConditionParameter(
  464. name=ParamNameEnum.MAX_MIN_GT,
  465. value_type=ValueTypeEnum.FLOAT64,
  466. valid_test_func=check_abs_param_range
  467. )
  468. ],
  469. supported_target_type=TargetTypeEnum.TENSOR,
  470. supported_platforms=(PlatformEnum.ASCEND, PlatformEnum.GPU),
  471. minimum_debugger_capability=(1, 1)
  472. )
  473. ]