Configuration and timeouts
Use explicit launcher CLI options for the recommended deployment. For example, Megatron’s section configuration is:
--ft-rank-section-timeouts setup:900,step:120,checkpointing:600 \
--ft-rank-out-of-section-timeout 180
These are example values to qualify on the target model and system. Initialization includes checkpoint loading, compilation, and model setup. The step timeout must cover training and evaluation. The checkpointing timeout must accommodate save preparation and potentially expensive async finalization; background disk I/O is not one continuously open checkpointing section.
Defaults and precedence
FaultToleranceConfig supplies defaults, then --ft-cfg-path supplies YAML
values, then explicit --ft-* CLI arguments override those values. The YAML
file configures FT fields, not general launcher options such as --nnodes or
--max-restarts. Use nvidia_resiliency_ext.fault_tolerance.config.FaultToleranceConfig
and ft_launcher --help for the configuration fields and accepted CLI syntax.
Setting |
Default |
Effect |
|---|---|---|
|
Empty mapping |
No named sections are monitored |
|
|
No out-of-section deadline |
|
|
Heartbeat hang detection disabled |
|
5 seconds |
Timeout polling interval, not a recovery-time guarantee |
|
|
Section messages do not wait for acknowledgement |
|
3 |
Stop threshold when usable checkpoint progress is available |
|
|
Simple hot-spare selection without ClusterUUID requirements |
Only section names present in the mapping send messages and collect timing data.
An entry with a null timeout enables section events without a finite deadline;
an omitted name skips both. CLI timeout values accept null or none to
disable a deadline. With response skipping enabled, consult the monitor logs
for section-protocol errors; disable it while debugging integration mistakes.
Optional YAML configuration
The same Megatron timeout settings can be supplied as:
fault_tolerance:
rank_section_timeouts:
setup: 900
step: 120
checkpointing: 600
rank_out_of_section_timeout: 180
Pass --ft-cfg-path /path/to/ft.yaml before the workload entrypoint. Do not use
the DDP YAML unchanged for Megatron: its section names are different. Unknown
YAML fields may be ignored; check the effective configuration and section names
in the startup logs.
ft_state.json is not this YAML configuration file. It contains calculated
monitoring timeouts saved by a workload through RankMonitorClient.state_dict().
If a workload restores calculated timeouts, they can supersede configured values.
For a fixed-timeout run use a fresh checkpoint directory or deliberately archive
the old calculated-timeout file before launch. Preserve training checkpoints.
Megatron currently restores an existing ft_state.json even when
--calc-ft-timeouts is omitted.
Warmup and unmonitored intervals
Megatron opens setup before initialization and closes it before the first
training or evaluation iteration. Its --ft-num-warmup-iters (default 5)
controls when it begins opening step. NVRx normally suppresses out-of-section
checking until a step section has been observed when named sections are configured
without a warmup entry. Thus a finite step timeout alone does not bound hangs
in the initial warmup window.
The small GPT example uses --ft-num-warmup-iters 0 and a conservative fixed
step timeout to monitor the first step too. For production, qualify startup
latency and warmup coverage against the exact Megatron/NVRx revisions. A
warmup timeout is an optional monitor behavior for workloads reporting early
step sections; adding that key does not make Megatron open step sections it skips.
Experimental calibration and legacy heartbeats
Dynamic timeout calibration is experimental and insufficiently tested for the
recommended Megatron deployment. It requires collective participation from all
ranks, representative observations, and validation after model, hardware, or I/O
changes. Megatron’s --calc-ft-timeouts cannot automatically calibrate every
phase: setup needs a persistent checkpoint load, step calculation needs enough
iterations, and checkpointing calibration is skipped with async saving.
The DDP sections example offers --calculate_timeouts only for experiments;
its default uses fixed timeouts and does not load or write ft_state.json.
Heartbeat APIs remain available for compatibility but are being deprecated as
a deployment approach. Their examples are under the legacy navigation. Leaving
heartbeat timeouts unset does not provide fallback protection for warmup.