nemo-mbridge-resiliency
NVIDIA/skills
Configure a tolerância a falhas, a detecção de tarefas atrasadas, a preempção, o reinício durante o processo e a máquina de estados de reexecução para os trabalhos de treinamento do Megatron Bridge.
...Expandir tudoResiliência
Documentação estável: @docs/training/resiliency.md, @docs/training/checkpointing.md Cartão: @skills/nemo-mbridge-resiliency/card.yaml
Habilitação
Tolerância a falhas (somente Slurm)
Opção 1: Plug-in 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âmetro do plug-in | Padrão | Descrição |
|---|---|---|
num_in_job_restarts |
3 | Número máximo de reinicializações dentro do mesmo trabalho |
num_job_retries_on_failure |
2 | Número máximo de novas execuções de tarefa em caso de falha |
tempo_limite_do_heartbeat_da_classificação_inicial |
1800 | Tempo limite do primeiro heartbeat (segundos) |
tempo_limite_do_heartbeat_da_classificação |
300 | Tempo limite para batimentos cardíacos subsequentes (segundos) |
Opção 2: Configuração direta + 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",
)
Inicie com o ft_launcher (não com o torchrun):
export GROUP_RANK=0 # necessário para ambientes que não sejam 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
| Parâmetro de configuração | Padrão | Descrição |
|---|---|---|
enable_ft_package |
False | Ativar tolerância a falhas |
calc_ft_timeouts |
False | Calcular automaticamente os tempos limite ideais |
simulate_fault |
Falso | Ativar simulação de falha para testes |
tipo_de_falha_simulada |
"aleatório" |
"rank_hung", "rank_killed" ou "random" |
simulated_fault_rank |
Nenhum | Classificação específica para a falha (aleatória se for Nenhuma) |
atraso_base_da_falha_simulada |
0 | Atraso base antes da simulação da falha |
O monitoramento de tempo limite por seção abrange a configuração, as etapas de treinamento, a criação de pontos de verificação
e o tempo fora da seção de forma independente. Os tempos limite são salvos em ft_state.json
para execuções subsequentes quando calc_ft_timeouts=True.
Detecção de stragglers no 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,
gpu_individual_perf_threshold=0.7,
stop_if_detected=False,
enable_logging=True,
)
| Parâmetro | Padrão | Descrição |
|---|---|---|
ativado |
False | Ativar detecção de atrasados |
intervalo_de_relatório |
300,0 | Segundos entre as verificações de atrasos |
calc_relative_gpu_perf |
True | Comparar as classificações entre si |
calc_individual_gpu_perf |
Verdadeiro | Acompanhar a degradação por classificação ao longo do tempo |
gpu_relative_perf_threshold |
0,7 | Limite para o desempenho relativo (0-1) |
gpu_individual_perf_threshold |
0,7 | Limite para o desempenho individual (0-1) |
stop_if_detected |
Falso | Encerrar o treinamento se houver um retardatário |
num_gpu_perf_scores_to_print |
5 | Número das melhores/piores pontuações a serem exibidas |
intervalo_de_perfilagem |
1 | Intervalo de perfilagem para o detector |
Preempção
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,
)
]
| Parâmetro do plug-in | Padrão | Descrição |
|---|---|---|
preempt_time |
60 | Segundos antes do limite da tarefa para enviar o sinal |
enable_exit_handler |
True | Ativar o manipulador de sinais durante o treinamento |
enable_exit_handler_for_data_loader |
False | Ativar para os trabalhadores do carregador de dados |
Configuração direta
import signal
cfg.train.exit_signal_handler = True
cfg.train.exit_signal = signal.SIGTERM
cfg.train.exit_signal_handler_for_dataloader = False
Reexecutar 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 | Padrão | Descrição |
|---|---|---|
rerun_mode |
"desativado" |
"desativado", "validar_resultados", "relatar_estatísticas_de_determinismo" |
verificar_se_há_NaN_na_perda |
True | Verificar se há NaN na perda |
verificar_se_há_picos_na_perda |
Falso | Verificar se há perda inesperadamente grande |
spiky_loss_factor |
10,0 | A perda é sinalizada se for maior que fator * o máximo observado (aumentar para modelos grandes) |
Códigos de saída: 16 = retomar para esclarecer ambiguidades, 17 = validação com falha.
Reinício durante o processo (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 | Padrão | Descrição |
|---|---|---|
enabled |
False | Ativar reinício durante a execução |
tamanho_do_mundo_ativo |
Nenhum | Classifica as cargas de trabalho em execução (as demais são reservas ativas) |
granularidade |
"nó" |
“nó” ou “rank” granularidade de reinício |
max_iterations |
Nenhuma | Número máximo de tentativas de reinício (Nenhum = ilimitado) |
soft_timeout |
60,0 | Detectar travamentos com liberação do GIL (segundos) |
hard_timeout |
90,0 | Encerrar à força os ranks travados (segundos) |
heartbeat_interval |
30,0 | Intervalo de heartbeat (segundos) |
heartbeat_timeout |
60,0 | Tempo limite para ausência de heartbeat (segundos) |
barrier_timeout |
120,0 | Tempo limite da barreira distribuída (segundos) |
completion_timeout |
120,0 | Tempo limite da barreira de conclusão (segundos) |
empty_cuda_cache |
True | Limpar o cache CUDA durante o reinício |
max_rank_faults |
Nenhum | Número máximo de falhas de rank antes do encerramento |
monitor_process_logdir |
Nenhum | Diretório para os logs do monitor |
Variáveis de ambiente obrigatórias:
export TORCH_CPP_LOG_LEVEL=error
export TORCH_NCCL_RETHROW_CUDA_ERRORS=0
export NCCL_NVLS_ENABLE=0
O tempo limite do watchdog do PyTorch NCCL deve ser maior que hard_timeout. O
Executor Slurm do NeMo-Run não é compatível; execute diretamente com srun --kill-on-bad-exit=0.
Salvamento assíncrono de checkpoint
cfg.checkpoint.async_save = True
cfg.checkpoint.ckpt_format = "torch_dist"
Salvamento de checkpoint local (NVRx)
cfg.checkpoint.non_persistent_local_ckpt_dir = "/local/scratch/ckpt"
cfg.checkpoint.non_persistent_local_ckpt_algo = "fully_parallel"
Âncoras de código
Tolerância a falhas
- Configuração:
src/megatron/bridge/training/config.py—FaultToleranceConfig - Tempo de execução:
src/megatron/bridge/training/fault_tolerance.py - Plug-in:
src/megatron/bridge/recipes/run_plugins.py—FaultTolerancePlugin - Plug-in de desempenho:
scripts/performance/nemo-mbridge-resiliency_plugins.py - Testes:
tests/unit_tests/training/test_fault_tolerance.py - Exemplo:
examples/training_features/nemo-mbridge-resiliency/fault_tolerance/
Detecção de stragglers
- Configuração:
src/megatron/bridge/training/config.py—NVRxStragglerDetectionConfig - Tempo de execução:
src/megatron/bridge/training/nvrx_straggler.py - Ciclo de treinamento:
src/megatron/bridge/training/train.py—check_nvrx_straggler_detection - Testes:
tests/unit_tests/training/test_nvrx_straggler.py,tests/functional_tests/training/test_nvrx_straggler.py - Exemplo:
examples/training_features/nemo-mbridge-resiliency/straggler_detection/
Reinício durante o processo
- Configuração:
src/megatron/bridge/training/config.py—InProcessRestartConfig - Tempo de execução:
src/megatron/bridge/training/inprocess_restart.py - Ponto de entrada:
src/megatron/bridge/training/pretrain.py—maybe_wrap_for_inprocess_restart - Testes:
tests/unit_tests/training/test_inprocess_restart.py,tests/functional_tests/training/test_inprocess_restart.py
Preempção
- Plug-in:
src/megatron/bridge/recipes/run_plugins.py—PreemptionPlugin - Manipulador de sinais:
src/megatron/bridge/training/utils/sig_utils.py - Testes:
tests/unit_tests/recipes/test_run_plugins.py
Máquina de estados de reexecução
- Configuração:
src/megatron/bridge/training/config.py—RerunStateMachineConfig - Inicialização:
src/megatron/bridge/training/initialize.py—init_rerun_state
Checkpoint
- Salvamento assíncrono:
src/megatron/bridge/training/checkpointing.py—schedule_async_save - Checkpoint local:
src/megatron/bridge/training/checkpointing.py—LocalCheckpointManager - Testes:
tests/functional_tests/training/test_local_checkpointing.py
Armadilhas
ft_launcher, não torchrun: A configuração direta
do FaultToleranceConfigrequerft_launcher. Usaro torchrundesativa silenciosamente a FT. Para ambientes que não sejam Slurm, definaGROUP_RANK=0.O salvamento assíncrono requer torch_dist:
async_save=Truesó funciona comckpt_format="torch_dist". Outros formatos falham silenciosamente ou geram erro.IPR + NeMo-Run: O reinício dentro do processo não é compatível com o NeMo-Run ou com os plug-ins de preempção do Slurm. Requer versões específicas do PyTorch/NCCL e variáveis de ambiente.
NVRx vs. straggler legado: Existem dois detectores. Use o NVRx (
nvrx_straggler); não habilite os dois.Padrão de `stop_if_detected`: O NVRx registra em log, mas não interrompe o treinamento por padrão. Defina
`stop_if_detected=True` para encerramento automático.Watchdog do NCCL vs. `hard_timeout`: Para IPR, o tempo limite do watchdog do NCCL deve exceder
o `hard_timeout`; caso contrário, o PyTorch encerra o processo antes da recuperação.A máquina de estados de reexecução está em fase alfa: use
check_for_nan_in_loss=Truepara detecção de NaN, mas ainda não confie nos fluxos de trabalho completos de reexecução.
Verificação
Tolerância a falhas
./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
Procure pelas linhas de log [FaultTolerance] / [RankMonitorServer] com
timeouts de seção. A falha simulada deve acionar a reinicialização a partir do ponto de verificação.
Detecção de stragglers
uv run python -m torch.distributed.run --nproc_per_node=2 \
examples/training_features/nemo-mbridge-resiliency/straggler_detection/straggler_detection_example.py
Procure os relatórios de desempenho relativo das GPUs e de desempenho individual das GPUs
com pontuações por rank.
Ponto de verificação assíncrono
Verifique se há menções ao agendamento do salvamento assíncrono de ponto de verificação nos logs. As iterações de treinamento
devem continuar enquanto os arquivos de ponto de verificação estão sendo gravados.
Reinício durante o processo
pytest tests/functional_tests/training/test_inprocess_restart.py -v
Requer versões compatíveis do PyTorch/NCCL.
---
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 os arquivos
6 arquivosInstalar nemo-mbridge-resiliency
Baixe e descompacte os arquivos de habilidades no diretório .claude/skills/.
Baixar ZIPClone o repositório e copie os arquivos da habilidade para o seu projeto.
git clone https://github.com/NVIDIA/skills/tree/main/skills/nemo-mbridge-resiliency # Copy SKILL.md to your .claude/skills/ directory
Copiar





Lar
