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