constants.py 5.8 KB

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