option
MaisonMaison Skill Science des données et ML nemo-mbridge-resiliency

nemo-mbridge-resiliency

NVIDIA/skills NVIDIA/skills

Configurer la tolérance aux pannes, la détection des tâches en retard, la préemption, le redémarrage en cours d'exécution et la machine à états de réexécution pour les tâches d'entraînement de Megatron Bridge.

...Développer tout
0
Heure mise à jour 25 septembre 2026

Résilience

Documentation stable : @docs/training/resiliency.md, @docs/training/checkpointing.md Fiche : @skills/nemo-mbridge-resiliency/card.yaml

Mise en œuvre

Tolérance aux pannes (Slurm uniquement)

Option 1 : plugin NeMo Run (recommandé)

from megatron.bridge.recipes.run_plugins import FaultTolerancePlugin
import nemo_run as run

task = run.Script(...)
run_plugins = [
    FaultTolerancePlugin(
        enable_ft_package=True,
        calc_ft_timeouts=True,
        num_in_job_restarts=3,
        num_job_retries_on_failure=2,
        initial_rank_heartbeat_timeout=1800,
        rank_heartbeat_timeout=300,
    )
]
run.run(task, plugins=run_plugins, executor=executor)
Paramètre du plugin Valeur par défaut Description
num_in_job_restarts 3 Nombre maximal de redémarrages au sein d'un même travail
nombre_de_tentatives_en_cas_d'échec 2 Nombre maximal de nouveaux lancements de tâche en cas d'échec
délai_d'expiration_du_battement_cardiaque_du_rang_initial 1800 Délai d'expiration du premier signal de vie (en secondes)
délai_d’expiration_du_heartbeat_du_rang 300 Délai d'expiration des signaux de présence suivants (en secondes)

Option 2 : configuration directe + ft_launcher

from megatron.bridge.training.config import FaultToleranceConfig

cfg.ft = FaultToleranceConfig(
    enable_ft_package=True,
    calc_ft_timeouts=True,
    simulate_fault=False,
    simulated_fault_type="random",
)

Lancer avec ft_launcher (et non torchrun) :

export GROUP_RANK=0  # obligatoire pour les environnements non-Slurm
ft_launcher \
    --rdzv_backend=c10d --rdzv_endpoint=${MASTER_ADDR}:${MASTER_PORT} \
    --nnodes=${NUM_NODES} --nproc-per-node=${NUM_GPUS_PER_NODE} \
    --ft-rank_section_timeouts=setup:600,step:180,checkpointing:420 \
    --ft-rank_out_of_section_timeout=300 \
    your_training_script.py
Paramètre de configuration Valeur par défaut Description
enable_ft_package Faux Activer la tolérance aux pannes
calc_ft_timeouts Faux Calculer automatiquement les délais d'expiration optimaux
simulate_fault Faux Activer la simulation de défaillance pour les tests
type_de_défaillance_simulée « random » « rank_hung », « rank_killed » ou « random »
simulated_fault_rank Aucun Rang spécifique à la défaillance (aléatoire si None)
simulated_fault_base_delay 0 Délai de base avant la simulation d'un défaut

La surveillance des délais d’expiration par section couvre indépendamment la configuration, les étapes d’apprentissage, la création de points de contrôle et le temps passé hors section. Les délais d’expiration sont enregistrés dans ft_state.json pour les exécutions suivantes lorsque calc_ft_timeouts=True.

Détection des retardataires NVRx

from megatron.bridge.training.config import NVRxStragglerDetectionConfig

cfg.nvrx_straggler = NVRxStragglerDetectionConfig(
    enabled=True,
    report_time_interval=300.0,
    calc_relative_gpu_perf=True,
    calc_individual_gpu_perf=True,
    num_gpu_perf_scores_to_print=5,
    gpu_relative_perf_threshold=0.7,
    seuil_de_performance_individuelle_du_GPU=0,7,
    arrêt_en_cas_de_détection=Faux,
    activation_de_la_journalisation=Vrai,
)
Paramètre Valeur par défaut Description
activé Faux Activer la détection des retardataires
report_time_interval 300,0 Nombre de secondes entre les vérifications de retardataires
calc_relative_gpu_perf Vrai Comparer les classements entre eux
calc_individual_gpu_perf Vrai Suivre la dégradation de chaque rang au fil du temps
gpu_relative_perf_threshold 0,7 Seuil de performance relative (0-1)
gpu_individual_perf_threshold 0,7 Seuil de performance individuelle (0-1)
stop_if_detected Faux Arrêter l'entraînement en cas de retard
nombre_de_scores_de_performance_GPU_à_afficher 5 Nombre de meilleurs/pires scores à afficher
profiling_interval 1 Intervalle de profilage pour le détecteur

Préemption

Plugin (Slurm)

from megatron.bridge.recipes.run_plugins import PreemptionPlugin

plugins = [
    PreemptionPlugin(
        preempt_time=60,
        enable_exit_handler=True,
        enable_exit_handler_for_data_loader=False,
    )
]
Paramètre du plugin Valeur par défaut Description
preempt_time 60 Nombre de secondes avant la fin du job pour envoyer un signal
enable_exit_handler Vrai Activer le gestionnaire de signaux pendant l'entraînement
enable_exit_handler_for_data_loader Faux Activer pour les workers du chargeur de données

Configuration directe

import signal
cfg.train.exit_signal_handler = True
cfg.train.exit_signal = signal.SIGTERM
cfg.train.exit_signal_handler_for_dataloader = False

Relancer la machine à états (expérimental)

from megatron.bridge.training.config import RerunStateMachineConfig

cfg.rerun_state_machine = RerunStateMachineConfig(
    rerun_mode="validate_results",
    check_for_nan_in_loss=True,
    check_for_spiky_loss=False,
    spiky_loss_factor=10.0,
)
Paramètre Valeur par défaut Description
rerun_mode « désactivé » « désactivé », « validate_results », « report_determinism_stats »
vérification_des_valeurs_nan_dans_la_perte Vrai Vérifier la présence de valeurs NaN dans la perte
check_for_spiky_loss Faux Vérifier la présence d'une perte anormalement élevée
spiky_loss_factor 10,0 La perte est signalée si elle est supérieure à facteur * valeur maximale observée (augmenter pour les grands modèles)

Codes de sortie : 16 = reprise pour lever l’ambiguïté, 17 = validation échouée.

Redémarrage en cours de traitement (expérimental)

from megatron.bridge.training.config import InProcessRestartConfig

cfg.inprocess_restart = InProcessRestartConfig(
    enabled=True,
    granularity="node",
    soft_timeout=60.0,
    hard_timeout=90.0,
)
Paramètre Valeur par défaut Description
enabled Faux Activer le redémarrage en cours d'exécution
active_world_size Aucun Nombre de rangs exécutant la charge de travail (les autres constituent des réserves à froid)
granularité « nœud » « nœud » ou « rang » granularité de redémarrage
max_iterations Aucune Nombre maximal de tentatives de redémarrage (Aucun = illimité)
soft_timeout 60,0 Détection des blocages après libération du GIL (en secondes)
hard_timeout 90,0 Forcer l'arrêt des rangs bloqués (en secondes)
heartbeat_interval 30,0 Intervalle entre les signaux de vie (en secondes)
heartbeat_timeout 60,0 Délai d'expiration en cas d'absence de signal de pulsation (en secondes)
barrier_timeout 120,0 Délai d'expiration de la barrière distribuée (en secondes)
completion_timeout 120,0 Délai d'expiration de la barrière d'achèvement (en secondes)
empty_cuda_cache Vrai Vider le cache CUDA lors du redémarrage
max_rank_faults Aucun Nombre maximal de défauts de rang avant l'arrêt
monitor_process_logdir Aucun Répertoire des journaux de surveillance

Variables d'environnement requises :

export TORCH_CPP_LOG_LEVEL=error
export TORCH_NCCL_RETHROW_CUDA_ERRORS=0
export NCCL_NVLS_ENABLE=0

Le délai d'expiration du watchdog NCCL de PyTorch doit être supérieur à hard_timeout. L'exécuteur Slurm de NeMo-Run n'est pas pris en charge ; lancez directement avec srun --kill-on-bad-exit=0.

Enregistrement asynchrone des points de contrôle

cfg.checkpoint.async_save = True
cfg.checkpoint.ckpt_format = "torch_dist"

Sauvegarde locale des points de contrôle (NVRx)

cfg.checkpoint.non_persistent_local_ckpt_dir = "/local/scratch/ckpt"
cfg.checkpoint.non_persistent_local_ckpt_algo = "fully_parallel"

Ancrages de code

Tolérance aux pannes

  • Configuration : src/megatron/bridge/training/config.py — FaultToleranceConfig
  • Exécution : src/megatron/bridge/training/fault_tolerance.py
  • Plugin : src/megatron/bridge/recipes/run_plugins.py — FaultTolerancePlugin
  • Plugin de performance : scripts/performance/nemo-mbridge-resiliency_plugins.py
  • Tests : tests/unit_tests/training/test_fault_tolerance.py
  • Exemple : examples/training_features/nemo-mbridge-resiliency/fault_tolerance/

Détection des retardataires

  • Configuration : src/megatron/bridge/training/config.py — NVRxStragglerDetectionConfig
  • Exécution : src/megatron/bridge/training/nvrx_straggler.py
  • Boucle d'entraînement : src/megatron/bridge/training/train.py — check_nvrx_straggler_detection
  • Tests : tests/unit_tests/training/test_nvrx_straggler.py, tests/functional_tests/training/test_nvrx_straggler.py
  • Exemple : examples/training_features/nemo-mbridge-resiliency/straggler_detection/

Redémarrage en cours de traitement

  • Configuration : src/megatron/bridge/training/config.py — InProcessRestartConfig
  • Exécution : src/megatron/bridge/training/inprocess_restart.py
  • Point d’entrée : src/megatron/bridge/training/pretrain.py — maybe_wrap_for_inprocess_restart
  • Tests : tests/unit_tests/training/test_inprocess_restart.py, tests/functional_tests/training/test_inprocess_restart.py

Préemption

  • Plugin : src/megatron/bridge/recipes/run_plugins.py — PreemptionPlugin
  • Gestionnaire de signaux : src/megatron/bridge/training/utils/sig_utils.py
  • Tests : tests/unit_tests/recipes/test_run_plugins.py

Machine à états de relance

  • Configuration : src/megatron/bridge/training/config.py — RerunStateMachineConfig
  • Initialisation : src/megatron/bridge/training/initialize.py — init_rerun_state

Points de contrôle

  • Enregistrement asynchrone : src/megatron/bridge/training/checkpointing.py — schedule_async_save
  • Point de contrôle local : src/megatron/bridge/training/checkpointing.py — LocalCheckpointManager
  • Tests : tests/functional_tests/training/test_local_checkpointing.py

Pièges

  1. ft_launcher, et non torchrun: la configuration directe de FaultToleranceConfig nécessite ft_launcher. L'utilisation de torchrun désactive silencieusement la tolérance aux pannes. Pour les environnements non-Slurm, définissez GROUP_RANK=0.

  2. L'enregistrement asynchrone nécessite torch_dist: async_save=True ne fonctionne qu’avec ckpt_format="torch_dist". Les autres formats échouent silencieusement ou génèrent une erreur.

  3. IPR + NeMo-Run: le redémarrage en cours d’exécution n’est pas compatible avec NeMo-Run ni avec les plugins de préemption Slurm. Nécessite des versions spécifiques de PyTorch/NCCL et des variables d’environnement.

  4. NVRx vs straggler hérité: il existe deux détecteurs. Utilisez NVRx (nvrx_straggler) ; ne les activez pas tous les deux.

  5. Valeur par défaut de `stop_if_detected`: NVRx consigne les événements mais n’arrête pas l’entraînement par défaut. Définissez `stop_if_detected=True` pour une interruption automatique.

  6. Watchdog NCCL vs `hard_timeout` : pour IPR, le délai d’expiration du watchdog NCCL doit dépasser la valeur de `hard_timeout`, sinon PyTorch mettra fin au processus avant la récupération.

  7. La machine à états de réexécution est en version alpha: utilisez check_for_nan_in_loss=True pour la détection des valeurs NaN, mais ne vous fiez pas encore aux workflows de réexécution complets.

Vérification

Tolérance aux pannes

./examples/training_features/nemo-mbridge-resiliency/fault_tolerance/run_fault_tolerance.sh
./examples/training_features/nemo-mbridge-resiliency/fault_tolerance/run_fault_tolerance.sh --simulate-fault

Recherchez dans les lignes de journal [FaultTolerance] / [RankMonitorServer] les sections timeouts. La défaillance simulée devrait déclencher un redémarrage à partir du point de contrôle.

Détection des retardataires

uv run python -m torch.distributed.run --nproc_per_node=2 \
    examples/training_features/nemo-mbridge-resiliency/straggler_detection/straggler_detection_example.py

Recherchez les rapports de performances relatives des GPU et de performances individuelles des GPU avec les scores par rang.

Point de contrôle asynchrone

Recherchez dans les journaux la mention « Scheduling async checkpoint save » (Planification de l’enregistrement asynchrone du point de contrôle). Les itérations d’entraînement doivent se poursuivre pendant l’écriture des fichiers de point de contrôle.

Redémarrage en cours de traitement

pytest tests/functional_tests/training/test_inprocess_restart.py -v

Nécessite des versions compatibles de PyTorch/NCCL.

Voir sur GitHub
---
name: nemo-mbridge-resiliency
description: Configure fault tolerance, straggler detection, preemption, in-process restart, and re-run state machine for Megatron Bridge training jobs.
license: Apache-2.0
---

# Resiliency

Stable docs: @docs/training/resiliency.md, @docs/training/checkpointing.md
Card: @skills/nemo-mbridge-resiliency/card.yaml

## Enablement

### Fault tolerance (Slurm only)

#### Option 1: NeMo Run plugin (recommended)

```python
from megatron.bridge.recipes.run_plugins import FaultTolerancePlugin
import nemo_run as run

task = run.Script(...)
run_plugins = [
    FaultTolerancePlugin(
        enable_ft_package=True,
        calc_ft_timeouts=True,
        num_in_job_restarts=3,
        num_job_retries_on_failure=2,
        initial_rank_heartbeat_timeout=1800,
        rank_heartbeat_timeout=300,
    )
]
run.run(task, plugins=run_plugins, executor=executor)
```

| Plugin parameter | Default | Description |
|---|---|---|
| `num_in_job_restarts` | 3 | Max restarts within same job |
| `num_job_retries_on_failure` | 2 | Max new job launches on failure |
| `initial_rank_heartbeat_timeout` | 1800 | First heartbeat timeout (seconds) |
| `rank_heartbeat_timeout` | 300 | Subsequent heartbeat timeout (seconds) |

#### Option 2: Direct config + ft_launcher

```python
from megatron.bridge.training.config import FaultToleranceConfig

cfg.ft = FaultToleranceConfig(
    enable_ft_package=True,
    calc_ft_timeouts=True,
    simulate_fault=False,
    simulated_fault_type="random",
)
```

Launch with `ft_launcher` (not `torchrun`):

```bash
export GROUP_RANK=0  # required for non-Slurm
ft_launcher \
    --rdzv_backend=c10d --rdzv_endpoint=${MASTER_ADDR}:${MASTER_PORT} \
    --nnodes=${NUM_NODES} --nproc-per-node=${NUM_GPUS_PER_NODE} \
    --ft-rank_section_timeouts=setup:600,step:180,checkpointing:420 \
    --ft-rank_out_of_section_timeout=300 \
    your_training_script.py
```

| Config parameter | Default | Description |
|---|---|---|
| `enable_ft_package` | False | Enable fault tolerance |
| `calc_ft_timeouts` | False | Auto-compute optimal timeouts |
| `simulate_fault` | False | Enable fault simulation for testing |
| `simulated_fault_type` | `"random"` | `"rank_hung"`, `"rank_killed"`, or `"random"` |
| `simulated_fault_rank` | None | Specific rank to fault (random if None) |
| `simulated_fault_base_delay` | 0 | Base delay before simulating fault |

Section-based timeout monitoring covers setup, training steps, checkpointing,
and out-of-section time independently. Timeouts are saved to `ft_state.json`
for subsequent runs when `calc_ft_timeouts=True`.

### NVRx straggler detection

```python
from megatron.bridge.training.config import NVRxStragglerDetectionConfig

cfg.nvrx_straggler = NVRxStragglerDetectionConfig(
    enabled=True,
    report_time_interval=300.0,
    calc_relative_gpu_perf=True,
    calc_individual_gpu_perf=True,
    num_gpu_perf_scores_to_print=5,
    gpu_relative_perf_threshold=0.7,
    gpu_individual_perf_threshold=0.7,
    stop_if_detected=False,
    enable_logging=True,
)
```

| Parameter | Default | Description |
|---|---|---|
| `enabled` | False | Enable straggler detection |
| `report_time_interval` | 300.0 | Seconds between straggler checks |
| `calc_relative_gpu_perf` | True | Compare ranks against each other |
| `calc_individual_gpu_perf` | True | Track per-rank degradation over time |
| `gpu_relative_perf_threshold` | 0.7 | Threshold for relative performance (0-1) |
| `gpu_individual_perf_threshold` | 0.7 | Threshold for individual performance (0-1) |
| `stop_if_detected` | False | Terminate training on straggler |
| `num_gpu_perf_scores_to_print` | 5 | Number of best/worst scores to print |
| `profiling_interval` | 1 | Profiling interval for detector |

### Preemption

#### Plugin (Slurm)

```python
from megatron.bridge.recipes.run_plugins import PreemptionPlugin

plugins = [
    PreemptionPlugin(
        preempt_time=60,
        enable_exit_handler=True,
        enable_exit_handler_for_data_loader=False,
    )
]
```

| Plugin parameter | Default | Description |
|---|---|---|
| `preempt_time` | 60 | Seconds before job limit to send signal |
| `enable_exit_handler` | True | Enable signal handler in training |
| `enable_exit_handler_for_data_loader` | False | Enable for dataloader workers |

#### Direct config

```python
import signal
cfg.train.exit_signal_handler = True
cfg.train.exit_signal = signal.SIGTERM
cfg.train.exit_signal_handler_for_dataloader = False
```

### Re-run state machine (experimental)

```python
from megatron.bridge.training.config import RerunStateMachineConfig

cfg.rerun_state_machine = RerunStateMachineConfig(
    rerun_mode="validate_results",
    check_for_nan_in_loss=True,
    check_for_spiky_loss=False,
    spiky_loss_factor=10.0,
)
```

| Parameter | Default | Description |
|---|---|---|
| `rerun_mode` | `"disabled"` | `"disabled"`, `"validate_results"`, `"report_determinism_stats"` |
| `check_for_nan_in_loss` | True | Check for NaN in loss |
| `check_for_spiky_loss` | False | Check for unexpectedly large loss |
| `spiky_loss_factor` | 10.0 | Loss flagged if > factor * max observed (increase for large models) |

Exit codes: 16 = resume to disambiguate, 17 = failed validation.

### In-process restart (experimental)

```python
from megatron.bridge.training.config import InProcessRestartConfig

cfg.inprocess_restart = InProcessRestartConfig(
    enabled=True,
    granularity="node",
    soft_timeout=60.0,
    hard_timeout=90.0,
)
```

| Parameter | Default | Description |
|---|---|---|
| `enabled` | False | Enable in-process restart |
| `active_world_size` | None | Ranks executing workload (rest are warm reserves) |
| `granularity` | `"node"` | `"node"` or `"rank"` restart granularity |
| `max_iterations` | None | Max restart attempts (None = unlimited) |
| `soft_timeout` | 60.0 | Detect GIL-released hangs (seconds) |
| `hard_timeout` | 90.0 | Force-terminate hung ranks (seconds) |
| `heartbeat_interval` | 30.0 | Heartbeat interval (seconds) |
| `heartbeat_timeout` | 60.0 | Missing heartbeat timeout (seconds) |
| `barrier_timeout` | 120.0 | Distributed barrier timeout (seconds) |
| `completion_timeout` | 120.0 | Completion barrier timeout (seconds) |
| `empty_cuda_cache` | True | Clear CUDA cache during restart |
| `max_rank_faults` | None | Max rank faults before terminating |
| `monitor_process_logdir` | None | Directory for monitor logs |

Required environment variables:

```bash
export TORCH_CPP_LOG_LEVEL=error
export TORCH_NCCL_RETHROW_CUDA_ERRORS=0
export NCCL_NVLS_ENABLE=0
```

The PyTorch NCCL watchdog timeout must exceed `hard_timeout`. NeMo-Run's
Slurm Executor is not supported; launch directly with `srun --kill-on-bad-exit=0`.

### Async checkpoint save

```python
cfg.checkpoint.async_save = True
cfg.checkpoint.ckpt_format = "torch_dist"
```

### Local checkpointing (NVRx)

```python
cfg.checkpoint.non_persistent_local_ckpt_dir = "/local/scratch/ckpt"
cfg.checkpoint.non_persistent_local_ckpt_algo = "fully_parallel"
```

## Code Anchors

### Fault tolerance
- Config: `src/megatron/bridge/training/config.py` — `FaultToleranceConfig`
- Runtime: `src/megatron/bridge/training/fault_tolerance.py`
- Plugin: `src/megatron/bridge/recipes/run_plugins.py` — `FaultTolerancePlugin`
- Perf plugin: `scripts/performance/nemo-mbridge-resiliency_plugins.py`
- Tests: `tests/unit_tests/training/test_fault_tolerance.py`
- Example: `examples/training_features/nemo-mbridge-resiliency/fault_tolerance/`

### Straggler detection
- Config: `src/megatron/bridge/training/config.py` — `NVRxStragglerDetectionConfig`
- Runtime: `src/megatron/bridge/training/nvrx_straggler.py`
- Train loop: `src/megatron/bridge/training/train.py` — `check_nvrx_straggler_detection`
- Tests: `tests/unit_tests/training/test_nvrx_straggler.py`, `tests/functional_tests/training/test_nvrx_straggler.py`
- Example: `examples/training_features/nemo-mbridge-resiliency/straggler_detection/`

### In-process restart
- Config: `src/megatron/bridge/training/config.py` — `InProcessRestartConfig`
- Runtime: `src/megatron/bridge/training/inprocess_restart.py`
- Entry point: `src/megatron/bridge/training/pretrain.py` — `maybe_wrap_for_inprocess_restart`
- Tests: `tests/unit_tests/training/test_inprocess_restart.py`, `tests/functional_tests/training/test_inprocess_restart.py`

### Preemption
- Plugin: `src/megatron/bridge/recipes/run_plugins.py` — `PreemptionPlugin`
- Signal handler: `src/megatron/bridge/training/utils/sig_utils.py`
- Tests: `tests/unit_tests/recipes/test_run_plugins.py`

### Re-run state machine
- Config: `src/megatron/bridge/training/config.py` — `RerunStateMachineConfig`
- Init: `src/megatron/bridge/training/initialize.py` — `init_rerun_state`

### Checkpointing
- Async save: `src/megatron/bridge/training/checkpointing.py` — `schedule_async_save`
- Local ckpt: `src/megatron/bridge/training/checkpointing.py` — `LocalCheckpointManager`
- Tests: `tests/functional_tests/training/test_local_checkpointing.py`

## Pitfalls

1. **ft_launcher, not torchrun**: Direct `FaultToleranceConfig` requires
   `ft_launcher`. Using `torchrun` silently disables FT. For non-Slurm,
   set `GROUP_RANK=0`.

2. **Async save requires torch_dist**: `async_save=True` only works with
   `ckpt_format="torch_dist"`. Other formats silently fail or error.

3. **IPR + NeMo-Run**: In-process restart is not compatible with NeMo-Run
   or Slurm preemption plugins. Requires specific PyTorch/NCCL versions
   and env vars.

4. **NVRx vs legacy straggler**: Two detectors exist. Use NVRx
   (`nvrx_straggler`); do not enable both.

5. **stop_if_detected default**: NVRx logs but does not stop training by
   default. Set `stop_if_detected=True` for automatic termination.

6. **NCCL watchdog vs hard_timeout**: For IPR, NCCL watchdog timeout must
   exceed `hard_timeout` or PyTorch kills the process before recovery.

7. **Rerun state machine is alpha**: Use `check_for_nan_in_loss=True` for
   NaN detection, but don't rely on full rerun workflows yet.

## Verification

### Fault tolerance
```bash
./examples/training_features/nemo-mbridge-resiliency/fault_tolerance/run_fault_tolerance.sh
./examples/training_features/nemo-mbridge-resiliency/fault_tolerance/run_fault_tolerance.sh --simulate-fault
```
Look for `[FaultTolerance]` / `[RankMonitorServer]` log lines with section
timeouts. Simulated fault should trigger restart from checkpoint.

### Straggler detection
```bash
uv run python -m torch.distributed.run --nproc_per_node=2 \
    examples/training_features/nemo-mbridge-resiliency/straggler_detection/straggler_detection_example.py
```
Look for `GPU relative performance` and `GPU individual performance` reports
with per-rank scores.

### Async checkpoint
Look for `Scheduling async checkpoint save` in logs. Training iterations
should continue while checkpoint files are being written.

### In-process restart
```bash
pytest tests/functional_tests/training/test_inprocess_restart.py -v
```
Requires compatible PyTorch/NCCL versions.

Tous les fichiers

6 fichiers
SKILL.md 11.1k
Voir

Installer nemo-mbridge-resiliency

Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.

Télécharger le ZIP

Clonez le dépôt et copiez les fichiers de compétence dans votre projet.

git clone https://github.com/NVIDIA/skills/tree/main/skills/nemo-mbridge-resiliency # Copy SKILL.md to your .claude/skills/ directory

Copier Copier
Configuration rapide: Copiez le dossier de la compétence dans .claude/skills/ Claude détectera automatiquement la compétence et l'utilisera
Dépôt NVIDIA/skills

Compétences similaires

web-search
Heure mise à jour 29 juin 2026
webapp-testing
Heure mise à jour 29 juin 2026
lark-base
Heure mise à jour 5 juillet 2026
agentmail
Heure mise à jour 29 juin 2026
OR