__init__.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. """Pipeline task registry and scenario definitions.
  2. A *task* is a callable ``task(tracker, logger, config, state) -> None``. A
  3. *scenario* is an ordered list of task ids the pipeline runs. Tasks communicate
  4. through the mutable ``state`` dict (dataloaders, model paths, control events).
  5. Pipeline stages (see ai/ARCHITECTURE.md):
  6. 1. load_data -> implemented
  7. 2. train_regular -> implemented
  8. 3. train_bayesian -> implemented
  9. 4. evaluate_regular -> implemented
  10. 5. evaluate_bayesian-> implemented
  11. 6. evaluate_noisy -> implemented
  12. load_models -> implemented; discovers saved .pt ensembles on disk and
  13. records their paths in ``state`` so evaluation is
  14. decoupled from training (training frees models from VRAM
  15. after saving). Evaluation loads one model at a time.
  16. """
  17. from . import evaluate
  18. from . import load_data
  19. from . import load_models
  20. from . import train_bayesian
  21. from . import train_normal
  22. PIPELINE_TASKS = {
  23. "load_data": {
  24. "task_name": "Load Image and ADNIMERGE",
  25. "task_func": load_data.load_data_task,
  26. },
  27. "train_regular": {
  28. "task_name": "Train Regular Models",
  29. "task_func": train_normal.train_normal_task,
  30. },
  31. "train_bayesian": {
  32. "task_name": "Train Bayesian Models",
  33. "task_func": train_bayesian.train_bayesian_task,
  34. },
  35. "load_models": {
  36. "task_name": "Load Saved Models",
  37. "task_func": load_models.load_models_task,
  38. },
  39. "evaluate_regular": {
  40. "task_name": "Evaluate Regular Models",
  41. "task_func": evaluate.evaluate_normal_task,
  42. },
  43. "evaluate_bayesian": {
  44. "task_name": "Evaluate Bayesian Models",
  45. "task_func": evaluate.evaluate_bayesian_task,
  46. },
  47. "evaluate_noisy": {
  48. "task_name": "Evaluate Models on Noised Data",
  49. "task_func": evaluate.evaluate_noisy_task,
  50. },
  51. }
  52. SCENARIOS = {
  53. "scen_train_all": {
  54. "label": "1. Train, Evaluate, & Noise Analysis",
  55. "tasks": [
  56. "load_data",
  57. "train_regular",
  58. "train_bayesian",
  59. "load_models",
  60. "evaluate_regular",
  61. "evaluate_bayesian",
  62. "evaluate_noisy",
  63. ],
  64. },
  65. "scen_load_all": {
  66. "label": "2. Load, Evaluate, & Noise Analysis",
  67. "tasks": [
  68. "load_data",
  69. "load_models",
  70. "evaluate_regular",
  71. "evaluate_bayesian",
  72. "evaluate_noisy",
  73. ],
  74. },
  75. "scen_load_eval": {
  76. "label": "3. Load & Evaluate (Skip Noise)",
  77. "tasks": [
  78. "load_data",
  79. "load_models",
  80. "evaluate_regular",
  81. "evaluate_bayesian",
  82. ],
  83. },
  84. }