Skip to content

Commit 2db355b

Browse files
author
mollys
committed
add mlperf llama3.1 8b pretrain recipes
1 parent 3b3b5b6 commit 2db355b

5 files changed

Lines changed: 547 additions & 1 deletion

File tree

‎src/megatron/bridge/perf_recipes/llama/__init__.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
llama3_70b_sft_32gpu_gb200_fp8mx_config,
7171
)
7272
from megatron.bridge.perf_recipes.llama.gb200.llama31 import (
73+
llama31_8b_pretrain_8gpu_gb200_nvfp4_config,
74+
llama31_8b_pretrain_72gpu_gb200_nvfp4_config,
75+
llama31_8b_pretrain_512gpu_gb200_fp8cs_config,
7376
llama31_405b_pretrain_128gpu_gb200_bf16_config,
7477
llama31_405b_pretrain_128gpu_gb200_fp8cs_config,
7578
llama31_405b_pretrain_128gpu_gb200_fp8mx_config,
@@ -102,6 +105,9 @@
102105
llama3_70b_sft_32gpu_gb300_fp8mx_config,
103106
)
104107
from megatron.bridge.perf_recipes.llama.gb300.llama31 import (
108+
llama31_8b_pretrain_8gpu_gb300_nvfp4_config,
109+
llama31_8b_pretrain_72gpu_gb300_nvfp4_config,
110+
llama31_8b_pretrain_512gpu_gb300_fp8cs_config,
105111
llama31_405b_pretrain_128gpu_gb300_bf16_config,
106112
llama31_405b_pretrain_128gpu_gb300_fp8cs_config,
107113
llama31_405b_pretrain_128gpu_gb300_fp8mx_config,

‎src/megatron/bridge/perf_recipes/llama/common.py‎

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
# ruff: noqa: F401
1515
"""Common helpers for llama performance recipes."""
1616

17+
import torch
18+
1719
from megatron.bridge.perf_recipes._common import (
1820
_benchmark_common,
1921
_enable_overlap_param_gather_with_optimizer_step,
@@ -56,3 +58,189 @@ def _llama_benchmark_common(cfg: ConfigContainer) -> None:
5658
cfg.model.moe_token_dispatcher_type = "alltoall"
5759
if cuda_graph_impl == "none" and te_rng_disabled:
5860
cfg.rng.te_rng_tracker = cfg.model.use_te_rng_tracker = False
61+
62+
63+
def _llama31_8b_common(cfg: ConfigContainer) -> None:
64+
"""Set common configurations for all Llama3.1 8B configs."""
65+
cfg.optimizer.adam_beta2 = 0.95
66+
cfg.optimizer.adam_eps = 1e-05
67+
cfg.optimizer.bf16 = True
68+
cfg.optimizer.fp8_recipe = 'tensorwise'
69+
cfg.optimizer.overlap_param_gather = True
70+
cfg.optimizer.params_dtype = torch.bfloat16
71+
cfg.optimizer.use_distributed_optimizer = True
72+
cfg.optimizer.weight_decay = 0.1
73+
cfg.optimizer.bucket_size = 768000000
74+
cfg.ddp.data_parallel_sharding_strategy = 'optim_grads_params'
75+
cfg.ddp.delay_wgrad_compute = False
76+
cfg.ddp.overlap_grad_reduce = True
77+
cfg.ddp.overlap_param_gather = True
78+
cfg.ddp.use_distributed_optimizer = True
79+
cfg.ddp.bucket_size = 768000000
80+
cfg.ddp.grad_reduce_in_fp32 = False
81+
cfg.ddp.average_in_collective = False
82+
cfg.model.add_bias_linear = False
83+
cfg.model.apply_rope_fusion = True
84+
cfg.model.attention_dropout = 0.0
85+
cfg.model.gradient_accumulation_fusion = True
86+
cfg.model.hidden_dropout = 0.0
87+
cfg.model.hidden_size = 4096
88+
cfg.model.kv_channels = 128
89+
cfg.model.masked_softmax_fusion = True
90+
cfg.model.microbatch_group_size_per_vp_stage = 1
91+
cfg.model.normalization = 'RMSNorm'
92+
cfg.model.num_attention_heads = 32
93+
cfg.model.num_layers = 32
94+
cfg.model.num_layers_at_end_in_bf16 = 0
95+
cfg.model.num_layers_at_start_in_bf16 = 0
96+
cfg.model.num_query_groups = 8
97+
cfg.model.overlap_p2p_comm = True
98+
cfg.model.params_dtype = torch.bfloat16
99+
cfg.model.persist_layer_norm = True
100+
cfg.model.pipeline_dtype = torch.bfloat16
101+
cfg.model.recompute_modules = ['core_attn']
102+
cfg.model.tp_only_amax_red = True
103+
cfg.model.use_te_rng_tracker = True
104+
cfg.model.wgrad_deferral_limit = 50
105+
cfg.model.batch_p2p_comm = False
106+
cfg.model.fused_single_qkv_rope = True
107+
cfg.train.check_optimizer_step_success = False
108+
cfg.train.decrease_batch_size_if_needed = False
109+
cfg.train.empty_unused_memory_level = 0
110+
cfg.train.exit_signal_handler = False
111+
cfg.train.exit_signal_handler_for_dataloader = False
112+
cfg.train.exit_signal_handler_for_training = False
113+
cfg.train.iterations_to_skip = []
114+
cfg.train.manual_gc = True
115+
cfg.train.manual_gc_eval = False
116+
cfg.train.manual_gc_interval = 500
117+
cfg.train.skip_sync_grad_norm_across_mp = True
118+
cfg.scheduler.end_weight_decay = 0.1
119+
cfg.scheduler.lr_decay_style = 'cosine'
120+
cfg.scheduler.lr_warmup_init = 0.0
121+
cfg.scheduler.lr_warmup_samples = 0
122+
cfg.scheduler.lr_wsd_decay_style = 'exponential'
123+
cfg.scheduler.override_opt_param_scheduler = False
124+
cfg.scheduler.start_weight_decay = 0.1
125+
cfg.scheduler.use_checkpoint_opt_param_scheduler = False
126+
cfg.scheduler.weight_decay_incr_style = 'constant'
127+
cfg.dataset.add_extra_token_to_sequence = True
128+
cfg.dataset.allow_ambiguous_pad_tokens = False
129+
cfg.dataset.create_attention_mask = False
130+
cfg.dataset.data_parallel_size = 1
131+
cfg.dataset.data_sharding = True
132+
cfg.dataset.dataloader_type = 'single'
133+
cfg.dataset.defer_npy_index_mmap = True
134+
cfg.dataset.drop_last = True
135+
cfg.dataset.drop_last_partial_validation_sequence = True
136+
cfg.dataset.eod_mask_loss = False
137+
cfg.dataset.fast_cache_load = True
138+
cfg.dataset.hybrid_context_parallel = False
139+
cfg.dataset.inter_document_masking = False
140+
cfg.dataset.mid_level_dataset_surplus = 0.005
141+
cfg.dataset.mmap_bin_files = True
142+
cfg.dataset.mock = False
143+
cfg.dataset.num_dataset_builder_threads = 1
144+
cfg.dataset.num_workers = 8
145+
cfg.dataset.persistent_workers = True
146+
cfg.dataset.pin_memory = True
147+
cfg.dataset.reset_attention_mask = False
148+
cfg.dataset.reset_position_ids = False
149+
cfg.dataset.seq_length = 8192
150+
cfg.dataset.sequence_length = 8192
151+
cfg.dataset.sequence_parallel_size = 0
152+
cfg.checkpoint.also_save_hf_checkpoint = False
153+
cfg.checkpoint.async_ckpt_cpu_priority = 10
154+
cfg.checkpoint.async_ckpt_io_priority = 3
155+
cfg.checkpoint.async_ckpt_use_cpu_shm = False
156+
cfg.checkpoint.async_save = False
157+
cfg.checkpoint.async_strategy = 'mcore'
158+
cfg.checkpoint.async_write_results_mp_mode = 'fork'
159+
cfg.checkpoint.auto_detect_ckpt_format = False
160+
cfg.checkpoint.ckpt_assume_constant_structure = False
161+
cfg.checkpoint.ckpt_convert_update_legacy_dist_opt_format = False
162+
cfg.checkpoint.ckpt_format = 'torch_dist'
163+
cfg.checkpoint.ckpt_fully_parallel_load_exchange_algo = 'broadcast'
164+
cfg.checkpoint.ckpt_fully_parallel_load_process_group = 'dp'
165+
cfg.checkpoint.ckpt_fully_parallel_save_process_group = 'dp'
166+
cfg.checkpoint.ckpt_load_validate_sharding_integrity = True
167+
cfg.checkpoint.dist_ckpt_optim_fully_reshardable = False
168+
cfg.checkpoint.dist_ckpt_save_pre_mcore_014 = False
169+
cfg.checkpoint.dist_ckpt_strictness = 'log_all'
170+
cfg.checkpoint.dist_ckpt_workers = 1
171+
cfg.checkpoint.distrib_optim_fully_reshardable_mem_efficient = False
172+
cfg.checkpoint.exit_on_missing_checkpoint = False
173+
cfg.checkpoint.finetune = False
174+
cfg.checkpoint.fully_parallel_load = True
175+
cfg.checkpoint.fully_parallel_save = True
176+
cfg.checkpoint.hf_distributed_save = False
177+
cfg.checkpoint.hf_save_every_n_ranks = 1
178+
cfg.checkpoint.hf_trust_remote_code = False
179+
cfg.checkpoint.load_optim = False
180+
cfg.checkpoint.load_rng = False
181+
cfg.checkpoint.most_recent_k = -1
182+
cfg.checkpoint.non_persistent_local_ckpt_algo = 'fully_parallel'
183+
cfg.checkpoint.replication = False
184+
cfg.checkpoint.replication_factor = 2
185+
cfg.checkpoint.save_optim = True
186+
cfg.checkpoint.save_rng = True
187+
cfg.checkpoint.save_tokenizer_assets = True
188+
cfg.checkpoint.storage_writers_per_rank = 1
189+
cfg.checkpoint.strict_fsdp_dtensor_load = False
190+
cfg.checkpoint.use_checkpoint_args = False
191+
cfg.checkpoint.use_mp_args_from_checkpoint_args = False
192+
cfg.checkpoint.use_persistent_ckpt_worker = True
193+
cfg.checkpoint.use_tokenizer_model_from_checkpoint_args = True
194+
cfg.checkpoint.verify_integrity = False
195+
cfg.logger.barrier_with_L1_time = True
196+
cfg.logger.filter_warnings = True
197+
cfg.logger.log_device_memory_used = False
198+
cfg.logger.log_energy = False
199+
cfg.logger.log_interval = 1
200+
cfg.logger.log_l2_norm_grad_to_tensorboard = False
201+
cfg.logger.log_loss_scale_to_tensorboard = True
202+
cfg.logger.log_max_attention_logit = False
203+
cfg.logger.log_memory_to_tensorboard = False
204+
cfg.logger.log_num_zeros_in_grad = False
205+
cfg.logger.log_params_norm = False
206+
cfg.logger.log_progress = False
207+
cfg.logger.log_runtime_to_tensorboard = False
208+
cfg.logger.log_throughput = False
209+
cfg.logger.log_throughput_to_tensorboard = False
210+
cfg.logger.log_timers_to_tensorboard = False
211+
cfg.logger.log_validation_ppl_to_tensorboard = False
212+
cfg.logger.log_world_size_to_tensorboard = False
213+
cfg.logger.logging_level = 20
214+
cfg.logger.mlflow_log_artifacts = True
215+
cfg.logger.moe_routing_trace_capture_hidden_states = False
216+
cfg.logger.moe_routing_trace_capture_logits = False
217+
cfg.logger.moe_routing_trace_dump_weights = False
218+
cfg.logger.runtime_time_unit = 'hours'
219+
cfg.logger.set_level_for_all_loggers = False
220+
cfg.logger.skip_train_metrics_log = False
221+
cfg.logger.tensorboard_log_interval = 1
222+
cfg.logger.tensorboard_queue_size = 1000
223+
cfg.logger.throughput_window_size = 100
224+
cfg.logger.timing_log_level = 0
225+
cfg.logger.timing_log_option = 'minmax'
226+
cfg.tokenizer.force_system_message = False
227+
cfg.tokenizer.hf_tokenizer_kwargs = {'use_fast': True}
228+
cfg.tokenizer.make_vocab_size_divisible_by = 1
229+
cfg.tokenizer.null_tokenizer_pad_id = -1
230+
cfg.tokenizer.pad_vocab_size = False
231+
cfg.tokenizer.rank = 0
232+
cfg.tokenizer.sp_tokenizer_kwargs = {}
233+
cfg.tokenizer.tensor_model_parallel_size = 1
234+
cfg.tokenizer.tiktoken_num_special_tokens = 1000
235+
cfg.tokenizer.tokenizer_hf_no_include_special_tokens = False
236+
cfg.tokenizer.tokenizer_hf_no_use_fast = False
237+
cfg.tokenizer.tokenizer_sentencepiece_ignore_extra_whitespaces = True
238+
cfg.tokenizer.tokenizer_sentencepiece_legacy = False
239+
cfg.tokenizer.tokenizer_type = "NullTokenizer"
240+
cfg.tokenizer.trust_remote_code = False
241+
cfg.tokenizer.vocab_extra_ids = 0
242+
cfg.rng.data_parallel_random_init: False
243+
cfg.rng.inference_rng_tracker = False
244+
cfg.rng.te_rng_tracker = True
245+
cfg.ddp.align_param_gather = False
246+
cfg.optimizer.overlap_param_gather_with_optimizer_step = False

0 commit comments

Comments
 (0)