opción

nemo-mbridge-resiliency

NVIDIA/skills NVIDIA/skills

Configurar la tolerancia a fallos, la detección de procesos rezagados, la preempción, el reinicio durante el proceso y la máquina de estados de reejecución para los trabajos de entrenamiento de Megatron Bridge.

...Expandir todo
0
Tiempo actualizado 25 de septiembre de 2026

Resiliencia

Documentación estable: @docs/training/resiliency.md, @docs/training/checkpointing.md Ficha: @skills/nemo-mbridge-resiliency/card.yaml

Habilitación

Tolerancia a fallos (solo Slurm)

Opción 1: Complemento NeMo Run (recomendado)

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)
Parámetros del complemento Valor por defecto Descripción
num_in_job_restarts 3 Número máximo de reinicios dentro de un mismo trabajo
num_job_retries_on_failure 2 Número máximo de nuevos trabajos iniciados en caso de fallo
tiempo_de_espera_del_latido_inicial_de_rango 1800 Tiempo de espera del primer latido (segundos)
tiempo_de_espera_del_pulso_de_rango 300 Tiempo de espera de los latidos posteriores (segundos)

Opción 2: Configuración directa + 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",
)

Ejecutar con ft_launcher (no con torchrun):

export GROUP_RANK=0  # necesario para entornos que no sean 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 \
    tu_script_de_entrenamiento.py
Parámetro de configuración Por defecto Descripción
enable_ft_package False Habilitar tolerancia a fallos
calc_ft_timeouts Falso Calcular automáticamente los tiempos de espera óptimos
simulate_fault Falso Habilitar la simulación de fallos para las pruebas
tipo_de_fallo_simulado «aleatorio» «rank_hung», «rank_killed» o «aleatorio»
rango_de_fallo_simulado Ninguno Rango específico para el fallo (aleatorio si es «None»)
retardo_base_fallo_simulado 0 Retardo base antes de simular el fallo

La supervisión de tiempos de espera por sección abarca la configuración, los pasos de entrenamiento, los puntos de control y el tiempo fuera de sección de forma independiente. Los tiempos de espera se guardan en ft_state.json para ejecuciones posteriores cuando calc_ft_timeouts=True.

Detección de rezagados en 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,
    umbral_rendimiento_individual_GPU=0,7,
    detener_si_se_detecta=False,
    habilitar_registro=True,
)
Parámetro Valor por defecto Descripción
activado False Habilitar la detección de rezagados
intervalo_de_informe 300,0 Segundos entre comprobaciones de rezagados
calc_relative_gpu_perf Verdadero Comparar las clasificaciones entre sí
calc_individual_gpu_perf Verdadero Realizar un seguimiento de la degradación por rango a lo largo del tiempo
gpu_relative_perf_threshold 0,7 Umbral de rendimiento relativo (0-1)
gpu_individual_perf_threshold 0,7 Umbral de rendimiento individual (0-1)
stop_if_detected Falso Detener el entrenamiento si se detecta un rezagado
número_de_puntuaciones_de_rendimiento_de_GPU_a_imprimir 5 Número de puntuaciones mejores y peores que se van a mostrar
intervalo_de_perfilado 1 Intervalo de perfilado para el detector

Preeminencia

Complemento (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,
    )
]
Parámetros del complemento Valor por defecto Descripción
preempt_time 60 Segundos antes del límite de la tarea para enviar la señal
enable_exit_handler Verdadero Habilitar el gestor de señales durante el entrenamiento
enable_exit_handler_for_data_loader Falso Habilitar para los trabajadores del cargador de datos

Configuración directa

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

Reejecutar la máquina de estados (experimental)

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,
)
Parámetro Valor por defecto Descripción
rerun_mode «desactivado» «desactivado», «validar_resultados», «informar_estadísticas_determinismo»
comprobar_si_hay_nan_en_la_pérdida True Comprobar si hay valores NaN en la pérdida
check_for_spiky_loss Falso Comprobar si hay una pérdida inesperadamente grande
factor_pérdida_pico 10,0 Se marca la pérdida si es > factor * máximo observado (aumentar para modelos grandes)

Códigos de salida: 16 = reanudar para resolver la ambigüedad, 17 = validación fallida.

Reinicio en proceso (experimental)

from megatron.bridge.training.config import InProcessRestartConfig

cfg.inprocess_restart = InProcessRestartConfig(
    enabled=True,
    granularity="node",
    soft_timeout=60.0,
    hard_timeout=90.0,
)
Parámetro Valor por defecto Descripción
enabled False Habilitar reinicio durante el proceso
tamaño_mundo_activo Ninguno Número de rangos que ejecutan la carga de trabajo (el resto son reservas en espera)
granularidad «nodo» «nodo» o «rango» granularidad de reinicio
max_iterations Ninguna Número máximo de intentos de reinicio (Ninguno = ilimitado)
tiempo_de_espera_suave 60,0 Detección de bloqueos tras la liberación del GIL (segundos)
tiempo_de_espera_duro 90,0 Forzar la finalización de los rangos bloqueados (segundos)
heartbeat_interval 30,0 Intervalo de pulsación (segundos)
tiempo_de_espera_del_latido 60,0 Tiempo de espera por falta de latido (segundos)
barrier_timeout 120,0 Tiempo de espera de la barrera distribuida (segundos)
tiempo_de_espera_de_finalización 120,0 Tiempo de espera de la barrera de finalización (segundos)
empty_cuda_cache True Borrar la caché de CUDA durante el reinicio
max_rank_faults Ninguno Número máximo de fallos de rango antes de la terminación
monitor_process_logdir Ninguno Directorio para los registros del monitor

Variables de entorno obligatorias:

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

El tiempo de espera del watchdog de PyTorch NCCL debe superar el valor de hard_timeout. El ejecutor Slurm de NeMo-Run no es compatible; ejecútalo directamente con srun --kill-on-bad-exit=0.

Guardado asíncrono de puntos de control

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

Puntos de control locales (NVRx)

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

Anclajes de código

Tolerancia a fallos

  • Configuración: src/megatron/bridge/training/config.py — FaultToleranceConfig
  • Tiempo de ejecución: src/megatron/bridge/training/fault_tolerance.py
  • Complemento: src/megatron/bridge/recipes/run_plugins.py — FaultTolerancePlugin
  • Complemento de rendimiento: scripts/performance/nemo-mbridge-resiliency_plugins.py
  • Pruebas: tests/unit_tests/training/test_fault_tolerance.py
  • Ejemplo: examples/training_features/nemo-mbridge-resiliency/fault_tolerance/

Detección de rezagados

  • Configuración: src/megatron/bridge/training/config.py — NVRxStragglerDetectionConfig
  • Tiempo de ejecución: src/megatron/bridge/training/nvrx_straggler.py
  • Bucle de entrenamiento: src/megatron/bridge/training/train.py — check_nvrx_straggler_detection
  • Pruebas: tests/unit_tests/training/test_nvrx_straggler.py, tests/functional_tests/training/test_nvrx_straggler.py
  • Ejemplo: examples/training_features/nemo-mbridge-resiliency/straggler_detection/

Reinicio en proceso

  • Configuración: src/megatron/bridge/training/config.py — InProcessRestartConfig
  • Tiempo de ejecución: src/megatron/bridge/training/inprocess_restart.py
  • Punto de entrada: src/megatron/bridge/training/pretrain.py — maybe_wrap_for_inprocess_restart
  • Pruebas: tests/unit_tests/training/test_inprocess_restart.py, tests/functional_tests/training/test_inprocess_restart.py

Preemption

  • Complemento: src/megatron/bridge/recipes/run_plugins.py — PreemptionPlugin
  • Manejador de señales: src/megatron/bridge/training/utils/sig_utils.py
  • Pruebas: tests/unit_tests/recipes/test_run_plugins.py

Máquina de estados de reejecución

  • Configuración: src/megatron/bridge/training/config.py — RerunStateMachineConfig
  • Inicialización: src/megatron/bridge/training/initialize.py — init_rerun_state

Puntos de control

  • Guardado asíncrono: src/megatron/bridge/training/checkpointing.py — schedule_async_save
  • Punto de control local: src/megatron/bridge/training/checkpointing.py — LocalCheckpointManager
  • Pruebas: tests/functional_tests/training/test_local_checkpointing.py

Puntos a tener en cuenta

  1. ft_launcher, no torchrun: la configuración directa de FaultToleranceConfig requiere ft_launcher. El uso de torchrun desactiva FT de forma silenciosa. Para entornos que no sean Slurm, establece GROUP_RANK=0.

  2. El guardado asíncrono requiere torch_dist: async_save=True solo funciona con ckpt_format="torch_dist". Otros formatos fallan de forma silenciosa o dan error.

  3. IPR + NeMo-Run: el reinicio durante el proceso no es compatible con NeMo-Run ni con los complementos de preempción de Slurm. Requiere versiones específicas de PyTorch/NCCL y variables de entorno.

  4. NVRx frente al straggler heredado: existen dos detectores. Utiliza NVRx (nvrx_straggler); no actives ambos.

  5. Valor por defecto de stop_if_detected: NVRx registra el evento, pero no detiene el entrenamiento por defecto. Establece stop_if_detected=True para la terminación automática.

  6. NCCL watchdog frente a hard_timeout: para IPR, el tiempo de espera de NCCL watchdog debe superar el valor de hard_timeout; de lo contrario, PyTorch terminará el proceso antes de la recuperación.

  7. La máquina de estados de reejecución está en fase alfa: utiliza check_for_nan_in_loss=True para la detección de NaN, pero no confíes todavía en los flujos de trabajo de reejecución completos.

Verificación

Tolerancia a fallos

./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

Busca en los registros de [FaultTolerance] / [RankMonitorServer] las líneas con tiempos de espera de sección (timeouts). El fallo simulado debería activar el reinicio desde el punto de control.

Detección de nodos rezagados

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

Busca los informes de rendimiento relativo de las GPU y de rendimiento individual de las GPU con puntuaciones por rango.

Punto de control asíncrono

Busca en los registros la entrada «Scheduling async checkpoint save ». Las iteraciones de entrenamiento deben continuar mientras se escriben los archivos de punto de control.

Reinicio en proceso

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

Requiere versiones compatibles de PyTorch/NCCL.

Ver en 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.

Todos los archivos

6 archivos
SKILL.md 11.1k
Ver
card.yaml 4.8k
Ver

Instalar nemo-mbridge-resiliency

Descarga y descomprime los archivos de habilidades en el directorio .claude/skills/.

Descargar ZIP

Clona el repositorio y copia los archivos de la habilidad a tu proyecto.

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

Copiar Copiar
Configuración rápida: Copia la carpeta de la habilidad en .claude/skills/ Claude detectará y utilizará automáticamente la habilidad
Repositorio NVIDIA/skills

Habilidades relacionadas

web-search
Tiempo actualizado 29 de junio de 2026
webapp-testing
Tiempo actualizado 29 de junio de 2026
lark-base
Tiempo actualizado 5 de julio de 2026
agentmail
Tiempo actualizado 29 de junio de 2026
OR