This page lists the flat configuration keys exposed by Primus when framework: megatron. Unless a section says otherwise, values are the defaults from primus/configs/modules/megatron/trainer_base.yaml and related model presets. The effective pretraining preset is pre_trainer.yaml, which extends trainer_base.yaml and overrides several high-impact training defaults.
Where parameters live. Set overrides under modules.pre_trainer.overrides: in your experiment YAML. Model architecture keys usually come from models.<role>.overrides: (or your chosen model preset), but the same names map to Megatron’s argparse namespace either way.
Presets.
- Module presets:
primus/configs/modules/megatron/ (the main pretraining bundle is pre_trainer.yaml, which extends trainer_base.yaml and Primus Megatron add-ons).
- Model presets:
primus/configs/models/megatron/ (for example language_model.yaml).
Mapping to Megatron-LM. Keys are passed through 1:1 to Megatron’s training arguments (same names as argparse / Namespace). Primus builds that namespace with MegatronArgBuilder.
Upstream reference. Full flag semantics and newer options are defined in Megatron-LM: megatron/training/arguments.py.
framework: megatron
modules:
pre_trainer:
overrides:
global_batch_size: 256
train_iters: 50000
tensor_model_parallel_size: 2
models:
pre_train:
overrides:
hidden_size: 2048
num_layers: 32
Source: primus/configs/modules/module_base.yaml (merged into Megatron presets; trainer_base.yaml sets trainable: true).
| Parameter | Default | Description |
|---|
trainable | true | When true, this module participates in training workflows. (module_base.yaml alone defaults to false; Megatron trainer_base.yaml overrides to true.) |
sink_level | null | Log level for the structured sink (Primus module plumbing); null uses framework default. |
file_sink_level | DEBUG | Minimum level for file-backed logging. |
stderr_sink_level | INFO | Minimum level for stderr logging. |
Source: primus/configs/modules/megatron/trainer_base.yaml; effective pre_trainer.yaml overrides are noted where they differ.
| Parameter | Default | Description |
|---|
yaml_cfg | null | Reserved; not supported as a Megatron override in this preset. |
spec | null | Optional trainer spec hook (unused in defaults). |
micro_batch_size | 2 | Samples per microbatch per data-parallel rank (per forward/backward step before gradient accumulation). |
batch_size | null | Deprecated; use micro_batch_size / global_batch_size. |
global_batch_size | 128 (16 in pre_trainer.yaml) | Total batch size across the data-parallel world (before or after splitting, per Megatron semantics). |
rampup_batch_size | null | Optional batch-size ramp schedule string / config. |
decrease_batch_size_if_needed | false | Allow shrinking batch if memory is insufficient. |
check_for_nan_in_loss_and_grad | true | Abort on NaNs in loss or gradients. |
check_for_spiky_loss | false | Detect abnormal loss spikes. |
check_for_large_grads | false | Detect abnormally large gradients. |
make_vocab_size_divisible_by | 128 | Pads vocabulary size for efficient kernels / partitioning. |
exit_signal_handler | false | Install handlers for graceful shutdown signals. |
exit_duration_in_mins | null | Stop training after this many minutes. |
exit_interval | null | Exit after this many iterations (if set). |
onnx_safe | null | ONNX export compatibility tweaks. |
bert_binary_head | true | Use BERT binary classification head when applicable. |
use_flash_attn | false (true in pre_trainer.yaml) | Prefer FlashAttention kernels when available. |
seed | 1234 | RNG seed for reproducibility. |
data_parallel_random_init | false | Random init that varies across data-parallel ranks. |
init_method_xavier_uniform | false | Use Xavier uniform for some weights. |
test_mode | false | Lightweight test path (fewer steps / checks). |
train_iters | null (1000 in pre_trainer.yaml) | Total training iterations (mutually exclusive with sample-based stopping in typical setups). |
train_samples | null | Total training samples (when using sample-based training). |
eval_iters | 32 (0 in pre_trainer.yaml) | Validation iterations per eval. |
eval_interval | 2000 (1000 in pre_trainer.yaml) | Run validation every this many iterations. |
full_validation | false | Run a full pass over validation data. |
multiple_validation_sets | false | Multiple validation datasets / passes. |
skip_train | false | Only run eval / test, no training updates. |
train_sync_interval | null | Periodic distributed sync barrier for debugging. |
adlr_autoresume | false | ADLR autoresume integration. |
adlr_autoresume_interval | 1000 | Autoresume checkpoint interval. |
manual_gc | false | Force Python GC on a schedule. |
manual_gc_interval | 1 | GC every N steps when manual_gc is enabled. |
manual_gc_eval | false | Run manual GC during evaluation. |
mask_type | random | Masking strategy for MLM / similar objectives. |
mask_factor | 1.0 | Masking strength multiplier. |
iter_per_epoch | 1250 | Iterations interpreted as one “epoch” for logging. |
Source: trainer_base.yaml.
| Parameter | Default | Description |
|---|
fp16 | false | Enable FP16 mixed precision training. |
bf16 | true | Enable BF16 mixed precision training. |
grad_reduce_in_bf16 | false | All-reduce gradients in BF16 (saves bandwidth). |
calculate_per_token_loss | false | Normalize loss per token instead of per sample. |
loss_scale | null | Static loss scale for FP16; null uses dynamic scaling. |
initial_loss_scale | 4294967296 | Initial dynamic loss scale. |
min_loss_scale | 1.0 | Floor for dynamic loss scale. |
loss_scale_window | 1000 | Window for dynamic loss scaling updates. |
hysteresis | 2 | Hysteresis steps for loss-scale decreases. |
accumulate_allreduce_grads_in_fp32 | false | Accumulate and reduce gradients in FP32. |
fp16_lm_cross_entropy | false | Compute LM cross-entropy in FP16. |
fp8 | null | FP8 recipe selection (e4m3, hybrid, etc.); null disables. |
fp8_margin | 0 | FP8 scaling margin. |
fp8_recipe | delayed | FP8 recipe variant (e.g. delayed scaling). |
fp8_interval | 1 | Deprecated FP8 interval (kept for compatibility). |
fp8_amax_history_len | 1024 | History length for FP8 amax statistics. |
fp8_amax_compute_algo | "max" | How to combine amax history (max, etc.). |
fp8_wgrad | true | Run weight gradients in FP8 where supported. |
fp8_param_gather | false | FP8 parameter gather for distributed optimizer paths. |
te_rng_tracker | false | Transformer Engine RNG tracker for FP8. |
inference_rng_tracker | false | Separate RNG tracker for inference FP8. |
fp4 | null | FP4 mode; null disables. |
fp4_recipe | nvfp4 | FP4 recipe name. |
fp4_param | false | Store parameters in FP4. |
first_last_layers_bf16 | false | Keep first/last layers in BF16 for stability. |
num_layers_at_start_in_bf16 | 1 | Count of early layers forced to BF16 when enabled. |
num_layers_at_end_in_bf16 | 1 | Count of final layers forced to BF16 when enabled. |
no_fp8_weight_transpose_cache | false | Primus: disable FP8 weight transpose cache (see primus_megatron_module.yaml). |
Source: trainer_base.yaml.
| Parameter | Default | Description |
|---|
optimizer | adam | Optimizer family (adam, sgd, etc.). |
lr | 2.5e-4 (2.0e-05 in pre_trainer.yaml) | Peak learning rate. |
lr_decay_style | cosine | LR decay schedule (cosine, linear, constant, WSD, etc.). |
lr_decay_iters | null | Decay duration in iterations. |
lr_decay_samples | null | Decay duration in samples. |
lr_warmup_fraction | null | Warmup as a fraction of total train steps. |
lr_warmup_iters | 0 (40 in pre_trainer.yaml) | Linear warmup steps. |
lr_warmup_samples | 0 | Warmup in samples. |
lr_warmup_init | 0.0 | LR at the start of warmup. |
min_lr | 2.5e-5 (0.0 in pre_trainer.yaml) | Minimum LR after decay. |
lr_wsd_decay_style | exponential | Weight-decay schedule style for WSD when used. |
lr_wsd_decay_samples | null | WSD decay window in samples. |
lr_wsd_decay_iters | null | WSD decay window in iterations. |
head_lr_mult | 1.0 | LR multiplier for attention/head modules when supported. |
weight_decay | 0.01 (0.0 in pre_trainer.yaml) | AdamW / L2-style weight decay. |
start_weight_decay | null | Starting weight decay for schedules. |
end_weight_decay | null | Ending weight decay for schedules. |
weight_decay_incr_style | constant | How weight decay changes between start/end. |
clip_grad | 1.0 | Global gradient norm clip. |
adam_beta1 | 0.9 | Adam first moment decay. |
adam_beta2 | 0.95 (0.999 in pre_trainer.yaml) | Adam second moment decay. |
adam_eps | 1.0e-08 | Adam epsilon. |
sgd_momentum | 0.9 | SGD momentum when optimizer is SGD. |
override_opt_param_scheduler | false (true in pre_trainer.yaml) | Override optimizer parameter groups’ schedulers. |
use_checkpoint_opt_param_scheduler | false | Load optimizer scheduler state strictly from checkpoint. |
warmup | null | Alternate warmup specification (legacy / schedule hooks). |
decoupled_lr | null | Decoupled LR for certain param groups. |
decoupled_min_lr | null | Minimum for decoupled LR. |
muon_extra_scale_factor | 1.0 | Muon optimizer scaling. |
muon_scale_mode | "spectral" | Muon scaling mode. |
muon_fp32_matmul_prec | "medium" | Muon matmul precision hint. |
muon_num_ns_steps | 5 | Muon Newton–Schulz iterations. |
muon_tp_mode | "blockwise" | Muon tensor-parallel mode. |
muon_use_nesterov | false | Muon Nesterov momentum. |
muon_split_qkv | true | Split QKV for Muon. |
muon_momentum | 0.95 | Muon momentum. |
muon_weight_decay | 0.01 | Muon-specific decay. |
muon_weight_decay_method | "decoupled" | How Muon applies decay. |
optimizer_cpu_offload | false | Offload optimizer state to CPU. |
optimizer_offload_fraction | 1.0 | Fraction of optimizer state offloaded. |
use_torch_optimizer_for_cpu_offload | false | Use PyTorch optimizer for offload path. |
overlap_cpu_optimizer_d2h_h2d | false | Overlap CPU optimizer device transfers. |
pin_cpu_grads | true | Pin memory for CPU gradients. |
pin_cpu_params | true | Pin memory for CPU params in offload. |
use_precision_aware_optimizer | false | Use precision-aware optimizer (main grads/params in lower precision). |
main_grads_dtype | fp32 | Dtype for main gradients (fp32, bf16). |
main_params_dtype | fp32 | Dtype for master params. |
exp_avg_dtype | fp32 | Optimizer first moment dtype (fp32, fp16, fp8). |
exp_avg_sq_dtype | fp32 | Optimizer second moment dtype. |
Sources: trainer_base.yaml (distributed runtime) and primus/configs/models/megatron/language_model.yaml (model-parallel sizes and TP communication).
| Parameter | Default | Description |
|---|
overlap_p2p_comm | true | Overlap pipeline P2P with compute. |
distributed_backend | nccl | Process-group backend (nccl, gloo, …). |
distributed_timeout_minutes | 10 (60 in pre_trainer.yaml) | Collective timeout. |
defer_embedding_wgrad_compute | false | Defer embedding weight gradients. |
wgrad_deferral_limit | 0 | Max deferred embedding wgrad steps. |
align_grad_reduce | true | Align gradient reductions for efficiency. |
ddp_num_buckets | null | Number of DDP buckets. |
ddp_bucket_size | null | DDP bucket size in elements. |
ddp_pad_buckets_for_high_nccl_busbw | false | Pad buckets for NCCL bus bandwidth. |
ddp_average_in_collective | false | Average inside collective vs outside. |
overlap_grad_reduce | false | Overlap gradient all-reduce with backward. |
overlap_param_gather | false | Overlap param all-gather (distributed optimizer). |
overlap_param_gather_with_optimizer_step | false | Overlap param gather with optimizer step. |
align_param_gather | true | Align param gather for distributed optimizer. |
scatter_gather_tensors_in_pipeline | true | Scatter/gather tensors across PP ranks. |
use_ring_exchange_p2p | false | Ring-exchange P2P for PP. |
local_rank | null | Local rank override (normally from launcher). |
lazy_mpu_init | null | Defer Megatron parallel state init. |
account_for_embedding_in_pipeline_split | false | Account for embedding in PP partition. |
account_for_loss_in_pipeline_split | false | Account for loss partition in PP. |
empty_unused_memory_level | 0 | Aggressiveness of torch.cuda.empty_cache. |
standalone_embedding_stage | false | Dedicated PP stage for embeddings. |
use_distributed_optimizer | false (true in pre_trainer.yaml) | Shard optimizer state across data parallel. |
use_sharp | false | Use SHARP for collectives when available. |
sharp_enabled_group | null | Which group SHARP applies to (dp, dp_replica). |
use_custom_fsdp | false | Custom FSDP integration path. |
use_megatron_fsdp | false | Megatron FSDP path. |
init_model_with_meta_device | false | Build model on meta device first. |
data_parallel_sharding_strategy | no_shard | FSDP / ZeRO style sharding (no_shard, optim, …). |
gradient_reduce_div_fusion | true | Fuse division into reduce-scatter. |
suggested_communication_unit_size | 400000000 | Suggested communication chunk size. |
keep_fp8_transpose_cache_when_using_custom_fsdp | false | Keep FP8 transpose cache with custom FSDP. |
num_distributed_optimizer_instances | 1 | Sharded optimizer instances per rank group. |
use_torch_fsdp2 | false | Use PyTorch FSDP2 integration. |
nccl_communicator_config_path | null | JSON config for NCCL communicators. |
use_tp_pp_dp_mapping | false | Custom TP/PP/DP process mapping. |
replication | false | Data replication mode for certain schedules. |
replication_jump | null | Stride between replicated ranks. |
replication_factor | null | Replication factor. |
deterministic_mode | false | Prefer deterministic algorithms (slower). |
check_weight_hash_across_dp_replicas_interval | null | Periodically hash weights across DP replicas for debugging. |
overlap_moe_expert_parallel_comm | false | Overlap MoE expert-parallel communication. |
decoder_pipeline_manual_split_list | null | Primus: manual PP split points for decoder (list of ints). |
patch_moe_overlap | false | Primus: patch MoE compute/comm overlap. |
| Parameter | Default | Description |
|---|
model_parallel_size | null | Legacy combined MP size override. |
tensor_model_parallel_size | 1 | Tensor parallelism degree (intra-layer split). |
encoder_tensor_model_parallel_size | 0 | Encoder TP size when encoder/decoder differ. |
pipeline_model_parallel_size | 1 | Pipeline parallelism stages. |
pipeline_model_parallel_layout | null | Optional explicit PP layout string. |
pipeline_model_parallel_comm_backend | null | nccl or ucc for PP collectives. |
encoder_pipeline_model_parallel_size | 0 | Encoder PP stages (encoder–decoder models). |
pipeline_model_parallel_split_rank | null | Rank where encoder/decoder split. |
decoder_first_pipeline_num_layers | null | Layers on first decoder PP stage. |
decoder_last_pipeline_num_layers | null | Layers on last decoder PP stage. |
virtual_pipeline_model_parallel_size | null | Virtual PP (interleaved) depth. |
num_layers_per_virtual_pipeline_stage | null | Layers per virtual stage. |
num_virtual_stages_per_pipeline_rank | null | Virtual stages per physical PP rank. |
microbatch_group_size_per_vp_stage | null | Microbatch grouping for interleaved PP. |
sequence_parallel | true | Sequence parallelism when TP > 1. |
context_parallel_size | 1 | Context (sequence) parallelism degree. |
cp_comm_type | p2p | Context-parallel comm pattern (p2p, a2a, allgather, a2a+p2p). |
hierarchical_context_parallel_sizes | null | Hierarchical CP group sizes. |
expert_model_parallel_size | 1 | Expert parallelism for MoE. |
expert_tensor_parallel_size | null | Expert tensor-parallel degree. |
high_priority_stream_groups | [] | Named groups that get high-priority CUDA streams. |
| Parameter | Default | Description |
|---|
async_tensor_model_parallel_allreduce | true | Async TP all-reduces for column-parallel layers. |
tp_comm_overlap | false | Enable TP communication overlap planner. |
tp_comm_overlap_cfg | null | Extra JSON / path for overlap configuration. |
tp_comm_overlap_ag | true | Overlap all-gather in TP backward. |
tp_comm_overlap_rs | true | Overlap reduce-scatter in TP backward. |
tp_comm_overlap_rs_dgrad | false | Overlap RS for data-grad path. |
tp_comm_split_ag | true | Split all-gather for overlap. |
tp_comm_split_rs | true | Split reduce-scatter for overlap. |
tp_comm_bulk_wgrad | true | Bulk weight-gradient path for TP comm. |
tp_comm_bulk_dgrad | true | Bulk data-gradient path for TP comm. |
barrier_with_L1_time | true | Barrier using L1 timing hooks for TP comm profiling. |
tp_comm_bootstrap_backend | nccl | Backend used to bootstrap TP communicators. |
Source: trainer_base.yaml.
| Parameter | Default | Description |
|---|
save | null | Path prefix / pattern for checkpoints to write. |
save_interval | 20000 (1000 in pre_trainer.yaml) | Save every N iterations. |
save_retain_interval | null | Retain checkpoints at this interval. |
no_save_optim | null | Skip optimizer state in checkpoints when truthy. |
no_save_rng | null | Skip RNG state in checkpoints when truthy. |
load | null | Checkpoint path to load. |
load_main_params_from_ckpt | false | Load only main parameters. |
no_load_optim | null | Skip loading optimizer state. |
no_load_rng | null | Skip loading RNG state. |
finetune | false (true in pre_trainer.yaml) | Finetune mode (do not require full optimizer match). |
use_checkpoint_args | false | When true, restore training args from checkpoint metadata. |
use_mp_args_from_checkpoint_args | false | Restore model-parallel args from checkpoint. |
use_tokenizer_model_from_checkpoint_args | true | Restore tokenizer path from checkpoint args. |
exit_on_missing_checkpoint | true | Fail if load is set but checkpoint is missing. |
non_persistent_save_interval | null | Ephemeral checkpoint interval. |
non_persistent_ckpt_type | null | global, local, in_memory, or null. |
non_persistent_global_ckpt_dir | null | Directory for non-persistent global checkpoints. |
non_persistent_local_ckpt_dir | null | Directory for non-persistent local checkpoints. |
non_persistent_local_ckpt_algo | "fully_parallel" | fully_parallel or atomic. |
pretrained_checkpoint | null | Load weights from a pretrained checkpoint path. |
ckpt_step | null | Specific step to load within a distributed checkpoint. |
use_dist_ckpt_deprecated | false | Use deprecated distributed checkpoint format. |
use_persistent_ckpt_worker | false | Background worker for checkpoint IO. |
auto_detect_ckpt_format | false | Infer checkpoint format automatically. |
dist_ckpt_format_deprecated | null | Legacy format hint. |
ckpt_format | torch_dist | torch, torch_dist, or zarr. |
ckpt_convert_format | null | Target format for one-shot conversion. |
ckpt_convert_save | null | Output path for conversion. |
ckpt_convert_update_legacy_dist_opt_format | false | Update legacy distributed-optimizer layout when converting. |
ckpt_fully_parallel_save_deprecated | false | Deprecated fully-parallel save toggle. |
ckpt_fully_parallel_save | true | Save shards in parallel across ranks. |
async_save | null | Async checkpoint save (null = framework default). |
ckpt_fully_parallel_load | false | Load shards in parallel. |
ckpt_assume_constant_structure | false | Assume identical layer structure across ranks. |
dist_ckpt_strictness | assume_ok_unexpected | How to handle unexpected keys in distributed ckpt. |
dist_ckpt_save_pre_mcore_014 | null | Compatibility flag for older Megatron-Core checkpoints. |
dist_ckpt_optim_fully_reshardable | null | Optimizer state fully reshardable layout. |
auto_continue_train | false | Primus: resume from latest checkpoint in the save directory when enabled. |
disable_last_saving | false | Primus: skip writing the final checkpoint at shutdown. |
Source: trainer_base.yaml.
| Parameter | Default | Description |
|---|
data_path | null | Single blended dataset path / list. |
data_sharding | true | Shard data across ranks. |
split | "99,1,0" (null in pre_trainer.yaml) | Train/valid/test split ratios as comma string. |
train_data_path | null | Training data blend. |
valid_data_path | null | Validation data blend. |
test_data_path | null | Test data blend. |
data_args_path | null | External JSON/YAML of dataset arguments. |
per_split_data_args_path | null | Per-split dataset args file. |
data_cache_path | null | On-disk cache for indexed datasets. |
mock_data | false | Use synthetic data (no real files). |
merge_file | null | Merge file for blended datasets. |
seq_length | 4096 (1024 in pre_trainer.yaml) | Training sequence length. |
encoder_seq_length | null | Encoder sequence length (encoder–decoder). |
decoder_seq_length | null | Decoder sequence length. |
retriever_seq_length | 256 | Sequence length for retriever models. |
sample_rate | 1.0 | Sampling rate for dataset blending. |
mask_prob | 0.15 | MLM mask probability. |
short_seq_prob | 0.1 | Probability of shorter sequences in BERT-style data. |
num_workers | 8 | DataLoader worker processes per rank. |
reset_position_ids | false | Reset position IDs at document boundaries. |
reset_attention_mask | false | Reset attention mask at boundaries. |
eod_mask_loss | false | Mask loss at end-of-document tokens. |
dataloader_type | null (cyclic in pre_trainer.yaml) | Dataloader implementation (single, cyclic, external, …). |
mmap_bin_files | true | Memory-map .bin index files when supported. |
create_attention_mask_in_dataloader | true | Build attention masks in the dataloader. |
num_dataset_builder_threads | 1 | Threads to build dataset indices. |
Sources: trainer_base.yaml and primus_megatron_module.yaml.
| Parameter | Default | Description |
|---|
recompute_activations | false | Enable activation recomputation globally. |
recompute_granularity | null | full or selective checkpointing. |
recompute_method | null | uniform or block selective recomputation. |
recompute_num_layers | null | Layers to recompute per block / schedule. |
recompute_layer_ids | null | Primus: explicit global layer indices to recompute. Decoder layers are 0 … num_layers-1; the MTP depths continue the numbering, so depth d is num_layers + d. Requires recompute_granularity: full and recompute_method: null. |
distribute_saved_activations | false | Distribute saved activations across TP/PP for memory balance. |
checkpoint_activations | false | Deprecated alias for activation checkpointing. |
moe_layer_recompute | false | Recompute MoE layer activations (model preset). |
Sources: trainer_base.yaml and primus_megatron_module.yaml.
| Parameter | Default | Description |
|---|
log_avg_skip_iterations | 2 | Skip first N iterations for throughput averaging. |
log_avg_reset_interval | 10 | Reset moving averages periodically. |
log_params_norm | false | Log L2 norms of parameters. |
log_num_zeros_in_grad | false | Log fraction of zero gradients. |
log_throughput | false (true in pre_trainer.yaml) | Log tokens/sec and timing. |
log_progress | false | Verbose progress logging. |
timing_log_level | 0 | Verbosity for timing logs. |
timing_log_option | minmax | Aggregate style for timing (minmax, all, …). |
tensorboard_log_interval | 1 | Steps between TensorBoard scalars. |
tensorboard_queue_size | 1000 | TensorBoard event queue size. |
log_timers_to_tensorboard | false (true in pre_trainer.yaml) | Write timer stats to TensorBoard. |
log_batch_size_to_tensorboard | false (true in pre_trainer.yaml) | Log batch size. |
log_learning_rate_to_tensorboard | true | Log LR. |
log_validation_ppl_to_tensorboard | false | Log validation perplexity. |
log_memory_to_tensorboard | false | Log memory usage. |
log_world_size_to_tensorboard | false | Log distributed world size. |
log_loss_scale_to_tensorboard | true | Log FP16/FP8 loss scale. |
wandb_project | null | Weights & Biases project name. |
wandb_exp_name | null | W&B run name. |
wandb_save_dir | null | W&B local directory. |
wandb_entity | null | W&B entity / team. |
enable_one_logger | true | Enable NVIDIA OneLogger integration. |
one_logger_project | megatron-lm | OneLogger project string. |
one_logger_run_name | null | OneLogger run name. |
log_interval | 100 (1 in pre_trainer.yaml) | Console log interval in iterations. |
tensorboard_dir | null | TensorBoard output directory. |
logging_level | null | Python logging level override. |
config_logger_dir | "" | Directory for dumped config logs. |
one_logger_async | false | Async OneLogger flushing. |
app_tag_run_name | null | Application tag for telemetry. |
app_tag_run_version | 0.0.0 | Application tag version. |
disable_tensorboard | true | Primus: disable TensorBoard integration in Primus-wrapped runs. |
disable_wandb | true | Primus: disable W&B. |
disable_mlflow | true | Primus: disable MLflow. |
mlflow_run_name | null | Primus: MLflow run name. |
mlflow_experiment_name | null | Primus: MLflow experiment name. |
use_rocm_mem_info | false | Primus: collect ROCm memory info via rocm-smi every step when true. |
use_rocm_mem_info_iters | [1, 2] | Primus: iterations at which to log memory if use_rocm_mem_info is false. |
| Parameter | Default | Description |
|---|
profile | false | Enable lightweight Nsight / CUDA profiling hooks. |
use_pytorch_profiler | false | Enable torch.profiler regions. |
profile_ranks | [0] | Ranks to profile. |
profile_step_start | 10 | First step to profile. |
profile_step_end | 12 | Last step to profile. |
iterations_to_skip | null | Skip listed iterations in profiling. |
result_rejected_tracker_filename | null | Log rejected samples to this file. |
enable_gloo_process_groups | true | Create auxiliary Gloo groups for CPU-side ops. |
record_memory_history | false | Record CUDA memory history (debug). |
memory_snapshot_path | snapshot.pickle | Path for memory snapshot dumps. |
disable_profiler_activity_cpu | false | Primus: omit CPU activities from profiler traces. |
torch_profiler_record_shapes | true | Primus: record tensor shapes in PyTorch profiler. |
torch_profiler_with_stack | true | Primus: capture Python stacks in profiler. |
torch_profiler_use_gzip | false | Primus: gzip profiler outputs. |
Sources: primus/configs/models/megatron/language_model.yaml and primus/configs/models/megatron/primus_megatron_model.yaml.
| Parameter | Default | Description |
|---|
use_legacy_models | false | Use legacy Megatron model code paths. |
deprecated_use_mcore_models | false | Deprecated flag for Megatron-Core models; prefer current transformer_impl + stack. |
model_type | gpt | gpt or mamba family. |
num_layers | 24 | Transformer layers (decoder or unified stack). |
encoder_num_layers | null | Encoder depth (encoder–decoder). |
decoder_num_layers | null | Decoder depth. |
hidden_size | 1024 | Hidden / model width. |
num_attention_heads | 16 | Attention heads. |
attention_backend | auto | Attention kernel backend selection. |
group_query_attention | false | Enable grouped-query attention (GQA). |
qk_layernorm | false | LayerNorm on Q/K projections. |
qk_l2_norm | false | L2-normalize Q/K vectors. |
num_query_groups | null | Number of query groups for GQA; null means MHA. |
add_position_embedding | false | Add absolute position embeddings (non-RoPE stacks). |
position_embedding_type | learned_absolute | Position embedding style. |
max_position_embeddings | null | Maximum sequence positions (context length cap). |
original_max_position_embeddings | null | Original pretrained length for interpolation / scaling. |
untie_embeddings_and_output_weights | true | Separate input embedding and LM head weights. |
ffn_hidden_size | null | FFN hidden size; null often defaults via hidden_size heuristics. |
kv_channels | null | Per-head KV channels override. |
hidden_dropout | 0.1 | Dropout on residual / hidden states. |
attention_dropout | 0.1 | Attention dropout. |
fp32_residual_connection | false | Accumulate residuals in FP32. |
apply_residual_connection_post_layernorm | false | Apply residual after (vs before) norm where supported. |
add_bias_linear | false | Biases in linear / column-parallel layers. |
add_qkv_bias | false | Biases in QKV projections. |
swiglu | true | SwiGLU activation in FFN. |
quick_geglu | false | Faster GeGLU path. |
openai_gelu | false | OpenAI GELU variant. |
squared_relu | false | Squared ReLU activation. |
rotary_base | 10000 | RoPE base frequency. |
rotary_percent | 1.0 | Fraction of head dim spanned by RoPE. |
rotary_interleaved | false | Interleaved RoPE layout. |
rotary_seq_len_interpolation_factor | null | Positional interpolation factor for long contexts. |
use_rotary_position_embeddings | null | Force RoPE on/off; null follows model type. |
use_rope_scaling | false | Enable LLaMA-style rope scaling. |
rope_scaling_factor | 8.0 | Scaling factor for extended contexts (LLaMA-3 style). |
transformer_impl | transformer_engine | Backend library (transformer_engine, local, …). |
rope_type | null | rope or yarn style extensions. |
norm_epsilon | 1.0e-05 | LayerNorm / RMSNorm epsilon. |
normalization | "LayerNorm" | Norm type (LayerNorm, RMSNorm with TE, …). |
apply_layernorm_1p | false | LayerNorm with +1 offset trick. |
clone_scatter_output_in_embedding | true | Clone embedding scatter for autograd safety. |
perform_initialization | true | Run weight initialization. |
use_cpu_initialization | null | Initialize on CPU then move to GPU. |
use_te_activation_func | false | Use Transformer Engine activation kernels. |
gradient_accumulation_fusion | true | Fuse gradient accumulation kernels. |
delay_wgrad_compute | false | Delay weight-gradient computation for scheduling. |
| Parameter | Default | Description |
|---|
tokenizer_type | null | Tokenizer class name (GPT2BPETokenizer, HuggingFaceTokenizer, …). |
tokenizer_model | null | Path to tokenizer model / vocabulary file. |
vocab_size | null | Vocabulary size (often inferred from tokenizer). |
vocab_file | null | Vocabulary file path for BPE/WP tokenizers. |
vocab_extra_ids | 0 | Extra reserved token slots. |
tiktoken_pattern | null | Regex pattern for tiktoken. |
tiktoken_num_special_tokens | 1000 | Special token count for tiktoken setup. |
tiktoken_special_tokens | null | Serialized special tokens for tiktoken. |
legacy_tokenizer | false | Legacy tokenizer behavior. |
trust_remote_code | false | trust_remote_code for Hugging Face tokenizers. |
| Parameter | Default | Description |
|---|
init_method_std | 0.02 | Standard deviation for weight init. |
apply_query_key_layer_scaling | false | Scale Q/K by layer index (deprecated GPT-3 trick). |
attention_softmax_in_fp32 | false | Force softmax in FP32. |
| Parameter | Default | Description |
|---|
bias_gelu_fusion | true | Fuse bias + GELU. |
cross_entropy_loss_fusion | false | Fused cross-entropy + softmax. |
cross_entropy_fusion_impl | "native" | native or te fused CE. |
bias_swiglu_fusion | true | Fuse bias + SwiGLU. |
masked_softmax_fusion | true | Fused masked softmax. |
no_persist_layer_norm | false | Non-persistent LayerNorm mode in TE. |
bias_dropout_fusion | true | Fuse bias + dropout. |
apply_rope_fusion | true | Fused RoPE kernels. |
| Parameter | Default | Description |
|---|
multi_latent_attention | false | Enable MLA blocks instead of standard MHA. |
q_lora_rank | null | Low-rank query projection rank. |
kv_lora_rank | 32 | Low-rank KV compression rank. |
qk_head_dim | 128 | Q/K head dimension for MLA. |
qk_pos_emb_head_dim | 64 | Positional head dimension for MLA. |
v_head_dim | 128 | Value head dimension for MLA. |
rotary_scaling_factor | 1.0 | RoPE scaling inside MLA (distinct from rope_scaling_factor above). |
mscale | 1.0 | Yarn / scaling m-factor. |
mscale_all_dim | 1.0 | Yarn scaling on all dims. |
| Parameter | Default | Description |
|---|
num_experts | null | Experts per MoE layer; null means dense model. |
moe_layer_freq | 1 | Every Nth layer is MoE (1 = every layer). |
moe_ffn_hidden_size | null | Expert FFN hidden size. |
moe_shared_expert_overlap | false | Shared expert overlaps routing. |
moe_shared_expert_intermediate_size | null | Shared expert FFN size. |
moe_grouped_gemm | false | Grouped GEMM for experts. |
moe_router_load_balancing_type | "aux_loss" | Router balancing (aux_loss, seq_aux_loss, sinkhorn, none). |
moe_router_dtype | null | Router activation dtype (fp32, fp64). |
moe_router_score_function | softmax | softmax or sigmoid routing scores. |
moe_router_topk | 2 | Experts to select per token. |
moe_router_pre_softmax | false | Apply softmax before top-k. |
moe_router_num_groups | null | Group-limited routing: number of expert groups. |
moe_router_group_topk | null | Groups to pick before top-k inside groups. |
moe_router_topk_scaling_factor | null | Scaling for routing logits. |
moe_router_enable_expert_bias | false | Learnable per-expert bias. |
moe_router_bias_update_rate | 1.0e-03 | Update rate for expert bias. |
moe_use_legacy_grouped_gemm | false | Legacy grouped GEMM path. |
moe_aux_loss_coeff | 0.0 | Auxiliary load-balancing loss weight. |
moe_z_loss_coeff | null | Router z-loss coefficient. |
moe_input_jitter_eps | null | Input jitter for router stability. |
moe_token_dispatcher_type | allgather | Token dispatch algorithm (allgather, alltoall, flex, alltoall_seq). |
moe_enable_deepep | false | DeepEP-style expert parallelism. |
moe_per_layer_logging | false | Per-layer MoE statistics logging. |
moe_expert_capacity_factor | null | Capacity factor for token dropping / padding. |
moe_pad_expert_input_to_capacity | false | Pad expert batches to capacity. |
moe_token_drop_policy | probs | Token dropping policy when over capacity. |
moe_extended_tp | false | Extended tensor-parallel for experts. |
moe_use_upcycling | false | Expert upcycling initialization. |
moe_permute_fusion | false | Fuse token permutation for MoE. |
disable_primus_topk_router | false | Primus: disable Primus top-k router patch. |
moe_router_force_load_balancing | false | Primus: force load-balanced routing. |
use_deprecated_20241209_moe_layer | false | Primus: legacy MoE layer implementation. |
moe_router_force_load_balancing_type | even | Primus: Control the force load balancing type for the MoE router. Choices: even, uniform. |
| Parameter | Default | Description |
|---|
final_logit_softcapping | null | Softcap value for final logits; null disables. |
attn_logit_softcapping | null | Softcap for attention logits. |
router_logit_softcapping | null | Softcap for MoE router logits. |
| Parameter | Default | Description |
|---|
disable_compile_dependencies | true | Primus: avoid compiling dependency stacks in the trainer wrapper. |
| Parameter | Default | Description |
|---|
enable_primus_turbo | false | Master switch for Primus-Turbo integrations. Many sub-features require this plus specific kernels. |
use_turbo_attention | false | Turbo attention implementation. |
use_sink_attention | false | GPT-OSS-style learned sink attention. |
sink_sliding_window | 0 | Sliding-window size for sink attention (GPT-OSS uses 128). |
sink_window_even_layers_only | true | Apply the sliding window only to even layers (GPT-OSS pattern). |
use_turbo_gemm | false | Active Turbo GEMM flag for Dense paths. |
use_turbo_parallel_linear | (removed) | Removed—use use_turbo_gemm. Passing this key now raises an assertion error (use_turbo_parallel_linear has been removed; please use use_turbo_gemm instead). |
use_turbo_grouped_gemm | false | Active Turbo grouped GEMM flag for MoE paths. |
use_turbo_grouped_mlp | (removed) | Removed—use use_turbo_grouped_gemm. Passing this key now raises an assertion error (use_turbo_grouped_mlp has been removed; please use use_turbo_grouped_gemm instead). |
moe_use_fused_router_with_aux_score | false | Fused MoE router with auxiliary scores. |
enable_turbo_attention_float8 | false | FP8 path inside Turbo attention (spacing in YAML is normalized to this key). |
use_turbo_deepep | false | Turbo DeepEP expert communication. |
turbo_deepep_num_cu | 32 | DeepEP compute units / channels. |
turbo_deepep_use_comm_stream | false | Use a dedicated communication stream for DeepEP. |
turbo_sync_free_moe_stage | 0 | Stage selector for sync-free MoE. |
use_turbo_fused_act_with_probs | false | Fuse activation + probability tensors to remove redundant work. |
use_turbo_rms_norm | false | Turbo RMSNorm kernels. |
| Parameter | Default | Description |
|---|
patch_zero_bubble | false | Install Primus zero-bubble PP patches when true. |
debug_scheduler_table | false | Print PP scheduler tables (also in primus_pipeline.yaml; last merge wins—defaults match). |
enable_zb_runtime | true | Unified runtime for zero-bubble and related schedules. |
pre_communication_optimization | false | Issue a tiny comm before real comm to tune overlap. |
zero_bubble_pipeline_timers_start_iter | 100 | Start iter for auto-scheduler timers. |
zero_bubble_pipeline_timers_end_iter | 110 | End iter for auto-scheduler timers. |
zero_bubble_max_pending_backward | auto | Max pending backward ops (ZB1p vs ZB2p style); auto adapts. |
zero_bubble_adaptive_memory_limit_percentile | 85 | GPU memory percentile cap for adaptive ZB. |
enable_optimizer_post_validation | false | Post-optimizer validation step (needs FSDP path). |
enable_exactly_numeric_match | true | Require bitwise match in post validation when enabled. |
enable_zero_bubble | true | Enable zero-bubble schedule features in the ZB runtime. |
zero_bubble_v_schedule | false | Zero-bubble “V” schedule without extra memory vs some baselines. |
zero_bubble_v_schedule_mem_setup | half | Memory setup variant: half, min, or zb. |
enable_1f1b_v | false | 1F1B-V schedule variant. |
allow_padding_num_layers | true | Allow PP layer padding for divisibility. |
profile_memory_iter | -1 | Iteration to profile memory (-1 disables). |
interleave_group_size | 0 | Interleaved PP group size. |
offload_chunk_num | 0 | Activation offload chunk count. |
offload_time | 1.0 | Time budget for offload (scheduler hint). |
auto_offload_time | true | Auto-tune offload timing. |
offload_overlap_sr | true | Overlap save/resume in offload path. |
num_seq_splits | 1 | Splits along sequence dimension for ZB. |
cpu_offload | false | CPU offload of activations in ZB path. |
| Parameter | Default | Description |
|---|
patch_primus_pipeline | false | Enable Primus pipeline scheduling patches. |
pp_algorithm | "1f1b-interleaved" | Schedule name (1f1b, 1f1b-interleaved, zero-bubble, zero-bubble-heuristic, zbv-formatted, v-half, v-min). |
communication_method | "async_p2p" | async_p2p or batch_p2p PP transfers. |
offload | false | Generic PP activation offload toggle in Primus pipeline. |
offload_ops | "" | Comma-separated offload targets (attn today; other ops listed in-file are not supported yet). |
pp_max_mem | null | zero-bubble-heuristic only: max activation memory per stage (null = unlimited). |
pp_cost_f | null | zero-bubble-heuristic only: forward cost per stage (scalar or list; null = default 1000). |
pp_cost_b | null | zero-bubble-heuristic only: backward cost per stage (scalar or list; null = default 1000). |
pp_cost_w | null | zero-bubble-heuristic only: weight-grad cost per stage (scalar or list; null = default 1000). |
pp_warmup and dump_pp_data are Primus helpers defined in primus_megatron_module.yaml (not primus_pipeline.yaml):
| Parameter | Default | Description |
|---|
pp_warmup | false | Primus: warm-up PP stages to reduce first-iteration latency. |
dump_pp_data | false | Primus: dump PP tensors for debugging. |
Source: trainer_base.yaml. Names follow Megatron’s grpo_* / rl_* prefixes (there is no rl_grpo single flag in these presets).
| Parameter | Default | Description |
|---|
perform_rl_step | false | Run RL / preference optimization steps (GRPO / LangRL integration). |
rl_prompts_per_eval | 32 | Prompts per RL evaluation pass. |
grpo_prompts_per_step | 32 | GRPO prompts sampled per training step. |
grpo_group_size | 2 | Samples per prompt group for GRPO. |
grpo_iterations | 2 | Inner GRPO iterations. |
grpo_clamp_eps_lower | 0.01 | PPO-style lower clip epsilon. |
grpo_clamp_eps_upper | 0.01 | Upper clip epsilon. |
grpo_kl_beta | 0.001 | KL penalty weight toward reference policy. |
grpo_entropy_term_weight | 0.0 | Entropy bonus weight. |
grpo_filter_groups_with_same_reward | false | Drop groups with identical rewards. |
grpo_default_temperature | 1.0 | Default softmax temperature for rollouts. |
grpo_default_top_p | 0 | Top-p sampling (0 often means disabled / greedy—see Megatron RL docs). |
langrl_inference_server_type | inplace_megatron | LangRL inference backend. |
langrl_inference_server_conversation_template | null | Conversation template path / name. |
langrl_env_config | null | Environment / task YAML for LangRL. |
rl_offload_optimizer_during_inference | false | Offload optimizer to CPU during rollout inference. |
rl_offload_kv_cache_during_training | false | Offload KV cache while training forward runs. |
rl_remove_kv_cache_during_training | false | Drop KV cache between RL phases to save memory. |
rl_reset_cuda_graphs | false | Reset CUDA graphs when switching RL phases. |
rl_partial_rollouts | false | Partial sequence rollouts. |
rl_inference_logprobs_is_correction | false | Interpret inference logprobs as IS correction term. |
rl_importance_sampling_truncation_coef | null | Truncate importance ratios at this value. |
rl_calculate_intra_group_similarity | false | Log similarity within GRPO groups. |
Source: trainer_base.yaml (remaining domains).
| Parameter | Default | Description |
|---|
vision_pretraining | false | Enable vision backbone pretraining. |
vision_pretraining_type | classify | Objective (classify, etc.). |
vision_backbone_type | vit | Vision backbone family. |
swin_backbone_type | tiny | Swin variant size. |
num_classes | 1000 | Classification classes. |
img_h | 224 | Image height. |
img_w | 224 | Image width. |
num_channels | 3 | Input channels. |
patch_dim | 16 | ViT patch size. |
classes_fraction | 1.0 | Fraction of classes used. |
data_per_class_fraction | 1.0 | Fraction of data per class. |
| Parameter | Default | Description |
|---|
retro_project_dir | null | RETRO project directory with indices. |
retro_add_retriever | false | Add frozen retriever tower. |
retro_cyclic_train_iters | null | Cyclic iterator length. |
retro_encoder_layers | 2 | Retriever encoder layers. |
retro_encoder_hidden_dropout | 0.1 | Retriever dropout. |
retro_encoder_attention_dropout | 0.1 | Retriever attention dropout. |
retro_num_neighbors | 2 | Neighbors per query chunk. |
retro_num_retrieved_chunks | 2 | Chunks concatenated per neighbor set. |
retro_attention_gate | 1 | Gating between retrieval and LM. |
retro_verify_neighbor_count | true | Assert neighbor counts for debugging. |
| Parameter | Default | Description |
|---|
dino_local_img_size | 96 | Local crop size. |
dino_local_crops_number | 10 | Number of local crops. |
dino_head_hidden_size | 2048 | Projection head width. |
dino_bottleneck_size | 256 | Bottleneck dimension. |
dino_freeze_last_layer | 1 | Freeze last layer epochs. |
dino_norm_last_layer | false | Normalize last layer weights. |
dino_warmup_teacher_temp | 0.04 | Teacher temperature warmup start. |
dino_teacher_temp | 0.07 | Teacher temperature. |
dino_warmup_teacher_temp_epochs | 30 | Epochs to warm teacher temperature. |
| Parameter | Default | Description |
|---|
ict_head_size | null | ICT projection head width. |
biencoder_projection_dim | 0 | Biencoder shared projection dimension. |
biencoder_shared_query_context_model | false | Share query/context encoders. |
ict_load | null | ICT checkpoint path. |
bert_load | null | BERT encoder checkpoint for biencoder. |
titles_data_path | null | Titles file for ICT datasets. |
query_in_block_prob | 0.1 | Probability of in-block queries. |
use_one_sent_docs | false | Single-sentence pseudo documents. |
evidence_data_path | null | Evidence passages for open-domain QA. |
retriever_report_topk_accuracies | [] | k values for top-k accuracy logging. |
retriever_score_scaling | false | Scale retriever scores. |
block_data_path | null | Block JSON data for retrieval. |
embedding_path | null | Precomputed embeddings path. |
indexer_batch_size | 128 | Batch size when building ANN index. |
indexer_log_interval | 1000 | Indexer progress log interval. |
| Parameter | Default | Description |
|---|
log_straggler | false | Log straggler diagnostics. |
disable_straggler_on_startup | false | Skip straggler detection at startup. |
straggler_ctrlr_port | 65535 | Controller port for straggler service. |
straggler_minmax_count | 1 | Min/max samples for straggler stats. |
| Parameter | Default | Description |
|---|
inference_batch_times_seqlen_threshold | -1 | Heuristic threshold tying batch and sequence length. |
inference_dynamic_batching | false | Dynamic batching for inference server. |
inference_dynamic_batching_buffer_size_gb | 40.0 | GPU buffer budget (GB). |
inference_dynamic_batching_buffer_guaranteed_fraction | 0.2 | Minimum reserved fraction of buffer. |
inference_dynamic_batching_buffer_overflow_factor | null | Overflow growth factor. |
inference_dynamic_batching_max_requests_override | null | Hard cap on concurrent requests. |
inference_dynamic_batching_max_tokens_override | null | Hard cap on tokens in flight. |
max_tokens_to_oom | 12000 | Token limit guard before OOM abort. |
output_bert_embeddings | false | Return BERT pooled embeddings. |
bert_embedder_type | megatron | megatron or huggingface embedder. |
flash_decode | false | Flash decode kernels for incremental generation. |
enable_cuda_graph | false | Capture CUDA graphs for inference. |
cuda_graph_warmup_steps | 3 | Warm-up steps before capturing graphs. |
external_cuda_graph | false | External graph provider hooks. |
cuda_graph_scope | full | Graph scope (full or attn). |
inference_max_requests | 8 | Max concurrent requests. |
inference_max_seq_length | 2560 | Max prefill + decode tokens per request. |
| Parameter | Default | Description |
|---|
enable_ft_package | false | NVIDIA fault-tolerance package hooks. |
calc_ft_timeouts | false | Auto-calculate FT timeouts. |
run_workload_inspector_server | false | Run workload inspector sidecar. |
| Parameter | Default | Description |
|---|
heterogeneous_layers_config_path | null | JSON describing variable layer widths/types per layer. |
heterogeneous_layers_config_encoded_json | null | Inline base64/JSON blob for heterogeneous layers. |
inprocess_restart | false | In-process restart for fault recovery experiments. |
| Parameter | Default | Description |
|---|
enable_experimental | false | Gate experimental Megatron features. |
error_injection_rate | 0 | Fraction of iterations with injected errors (testing). |
error_injection_type | transient_error | correct_result, transient_error, or persistent_error. |
rerun_mode | disabled | disabled, validate_results, or report_stats for rerun harness. |
- Megatron-LM argument definitions:
megatron/training/arguments.py
- Primus Megatron presets:
primus/configs/modules/megatron/
- Primus Megatron model presets:
primus/configs/models/megatron/