constants.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. '''Copyright The Microsoft DeepSpeed Team'''
  2. """
  3. Copyright (c) Microsoft Corporation
  4. Licensed under the MIT license.
  5. """
  6. #########################################
  7. # autotunner implementation constants
  8. #########################################
  9. import os
  10. DEFAULT_TEMPLATE_PATH_ZERO_0 = os.path.join(os.path.dirname(os.path.realpath(__file__)),
  11. "config_templates",
  12. "template_zero0.json")
  13. DEFAULT_TEMPLATE_PATH_ZERO_1 = os.path.join(os.path.dirname(os.path.realpath(__file__)),
  14. "config_templates",
  15. "template_zero1.json")
  16. DEFAULT_TEMPLATE_PATH_ZERO_2 = os.path.join(os.path.dirname(os.path.realpath(__file__)),
  17. "config_templates",
  18. "template_zero2.json")
  19. DEFAULT_TEMPLATE_PATH_ZERO_3 = os.path.join(os.path.dirname(os.path.realpath(__file__)),
  20. "config_templates",
  21. "template_zero3.json")
  22. METRIC_PERCENT_DIFF_CONST = 0.05
  23. DS_CONFIG = "ds_config"
  24. BUFSIZE = 1 # line buffer size for writing files
  25. #########################################
  26. # autotuner configuration constants
  27. #########################################
  28. # Autotuner. By default, this feature is not enabled.
  29. # Users can configure in ds_config.json as below example:
  30. AUTOTUNING_FORMAT = """
  31. autotuner should be enabled as:
  32. "session_params": {
  33. "autotuning": {
  34. "enabled": true,
  35. "start_step": 5,
  36. "end_step": 15
  37. }
  38. }
  39. """
  40. AUTOTUNING = "autotuning"
  41. AUTOTUNING_ENABLED = "enabled"
  42. AUTOTUNING_ENABLED_DEFAULT = False
  43. AUTOTUNING_FAST = "fast"
  44. AUTOTUNING_FAST_DEFAULT = True
  45. AUTOTUNING_RESULTS_DIR = "results_dir"
  46. AUTOTUNING_RESULTS_DIR_DEFAULT = "autotuning_results"
  47. AUTOTUNING_EXPS_DIR = "exps_dir"
  48. AUTOTUNING_EXPS_DIR_DEFAULT = "autotuning_exps"
  49. AUTOTUNING_OVERWRITE = "overwrite"
  50. AUTOTUNING_OVERWRITE_DEFAULT = True
  51. AUTOTUNING_START_PROFILE_STEP = "start_profile_step"
  52. AUTOTUNING_START_PROFILE_STEP_DEFAULT = 3
  53. AUTOTUNING_END_PROFILE_STEP = "end_profile_step"
  54. AUTOTUNING_END_PROFILE_STEP_DEFAULT = 5
  55. AUTOTUNING_METRIC_PATH = "metric_path"
  56. AUTOTUNING_METRIC_PATH_DEFAULT = None
  57. AUTOTUNING_TUNER_TYPE = "tuner_type"
  58. AUTOTUNING_TUNER_GRIDSEARCH = "gridsearch"
  59. AUTOTUNING_TUNER_RANDOM = "random"
  60. AUTOTUNING_TUNER_MODELBASED = "model_based"
  61. AUTOTUNING_TUNER_TYPE_DEFAULT = AUTOTUNING_TUNER_GRIDSEARCH
  62. AUTOTUNING_TUNER_EARLY_STOPPING = "tuner_early_stopping"
  63. AUTOTUNING_TUNER_EARLY_STOPPING_DEFAULT = 5
  64. AUTOTUNING_TUNER_NUM_TRIALS = "tuner_num_trials"
  65. AUTOTUNING_TUNER_NUM_TRIALS_DEFAULT = 50
  66. AUTOTUNING_ARG_MAPPINGS = "arg_mappings"
  67. AUTOTUNING_ARG_MAPPINGS_DEFAULT = None
  68. AUTOTUNING_MAX_TRAIN_BATCH_SIZE = "max_train_batch_size"
  69. AUTOTUNING_MAX_TRAIN_BATCH_SIZE_DEFAULT = None
  70. AUTOTUNING_MIN_TRAIN_BATCH_SIZE = "min_train_batch_size"
  71. AUTOTUNING_MIN_TRAIN_BATCH_SIZE_DEFAULT = 1
  72. AUTOTUNING_MAX_TRAIN_MICRO_BATCH_SIZE_PER_GPU = "max_train_micro_batch_size_per_gpu"
  73. AUTOTUNING_MAX_TRAIN_MICRO_BATCH_SIZE_PER_GPU_DEFAULT = 1024
  74. AUTOTUNING_MIN_TRAIN_MICRO_BATCH_SIZE_PER_GPU = "min_train_micro_batch_size_per_gpu"
  75. AUTOTUNING_MIN_TRAIN_MICRO_BATCH_SIZE_PER_GPU_DEFAULT = 1
  76. AUTOTUNING_NUM_TUNING_MICRO_BATCH_SIZES = "num_tuning_micro_batch_sizes"
  77. AUTOTUNING_NUM_TUNING_MICRO_BATCH_SIZES_DEFAULT = 3
  78. AUTOTUNING_MP_SIZE = "mp_size"
  79. AUTOTUNING_MP_SIZE_DEFAULT = 1
  80. AUTOTUNING_METRIC = "metric"
  81. AUTOTUNING_METRIC_LATENCY = "latency"
  82. AUTOTUNING_METRIC_THROUGHPUT = "throughput"
  83. AUTOTUNING_METRIC_FLOPS = "flops"
  84. AUTOTUNING_METRIC_FORWARD = "forward"
  85. AUTOTUNING_METRIC_BACKWRAD = "flops"
  86. AUTOTUNING_METRIC_STEPS = "step"
  87. AUTOTUNING_METRIC_DEFAULT = AUTOTUNING_METRIC_THROUGHPUT
  88. #########################################
  89. # MODEL INFO
  90. #########################################
  91. AUTOTUNING_MODEL_INFO_PATH = "model_info_path"
  92. AUTOTUNING_MODEL_INFO_PATH_DEFAULT = None
  93. MODEL_INFO_FORMAT = '''
  94. "model_info": {
  95. "num_params": 1000000000,
  96. "hidden_size": 10,
  97. "num_layers": 12,
  98. }
  99. '''
  100. MODEL_INFO = "model_info"
  101. MODEL_INFO_PROFILE = "profile"
  102. MODEL_INFO_PROFILE_DEFAULT = False
  103. MODEL_INFO_NUM_PARAMS = "num_params"
  104. MODEL_INFO_NUM_PARAMS_DEFAULT = None
  105. MODEL_INFO_HIDDEN_SIZE = "hideen_size"
  106. MODEL_INFO_HIDDEN_SIZE_DEFAULT = None
  107. MODEL_INFO_NUM_LAYERS = "num_layers"
  108. MODEL_INFO_NUM_LAYERS_DEFAULT = None
  109. MODEL_INFO_KEY_DEFAULT_DICT = {
  110. MODEL_INFO_PROFILE: MODEL_INFO_PROFILE_DEFAULT,
  111. MODEL_INFO_NUM_PARAMS: MODEL_INFO_NUM_PARAMS_DEFAULT,
  112. MODEL_INFO_HIDDEN_SIZE: MODEL_INFO_HIDDEN_SIZE_DEFAULT,
  113. MODEL_INFO_NUM_LAYERS: MODEL_INFO_NUM_LAYERS_DEFAULT
  114. }
  115. #########################################
  116. # autotunner search space constants
  117. #########################################
  118. DEFAULT_HF_CONFIG = {
  119. "train_batch_size": "auto",
  120. "train_micro_batch_size_per_gpu": "auto",
  121. "gradient_accumulation_steps": "auto",
  122. }
  123. DEFAULT_MIN_MEM_CONFIG = {
  124. "train_micro_batch_size_per_gpu": 1,
  125. "zero_optimization": {
  126. "stage": 3
  127. },
  128. "memory_break_down": False
  129. }
  130. DEFAULT_TUNING_SPACE_ZERO_0 = {"zero_optimization": {"stage": 0}}
  131. DEFAULT_TUNING_SPACE_ZERO_1 = {
  132. "zero_optimization": {
  133. "stage": 1,
  134. "reduce_bucket_size": [5e7,
  135. 5e8,
  136. 1e9],
  137. "allgather_bucket_size": [5e7,
  138. 5e8,
  139. 1e9],
  140. }
  141. }
  142. DEFAULT_TUNING_SPACE_ZERO_2 = {
  143. "zero_optimization": {
  144. "stage": 2,
  145. "overlap_comm": [True,
  146. False],
  147. "reduce_scatter": [False,
  148. True],
  149. "reduce_bucket_size": [5e7,
  150. 5e8,
  151. 1e9],
  152. "allgather_bucket_size": [5e7,
  153. 5e8,
  154. 1e9],
  155. "contiguous_gradients": [False,
  156. True]
  157. },
  158. }
  159. DEFAULT_TUNING_SPACE_ZERO_3 = {
  160. "zero_optimization": {
  161. "stage": 3,
  162. "overlap_comm": [True,
  163. False],
  164. "reduce_scatter": [False,
  165. True],
  166. "reduce_bucket_size": [5e7,
  167. 5e8,
  168. 1e9],
  169. "allgather_partitions": [True,
  170. False],
  171. "allgather_bucket_size": [5e7,
  172. 5e8,
  173. 1e9],
  174. "contiguous_gradients": [False,
  175. True]
  176. },
  177. }
  178. GLOBAL_TUNING_SPACE = 'global'
  179. # TUNING_MICRO_BATCH_SIZE_PREFIX="tune_micro_batch_size_z"
  180. TUNING_MICRO_BATCH_SIZE_PREFIX = "z"