opción
HogarHogar Skill DevOps y CI/CD nemo-automodel-launcher-config

nemo-automodel-launcher-config

NVIDIA/skills NVIDIA/skills

Configura el inicio de trabajos de NeMo AutoModel para ejecuciones interactivas, clústeres Slurm y ejecución en la nube con SkyPilot.

...Expandir todo
1
Tiempo actualizado 28 de septiembre de 2026

Configuración del lanzador

NeMo AutoModel admite tres métodos de ejecución: interactivo (torchrun), Slurm (clústeres HPC) y SkyPilot (independiente de la nube).

Instrucciones

Para las preguntas sobre el lanzador, responde directamente desde esta skill sin consultar el repositorio, a menos que el usuario te pida que edites archivos. Centra la respuesta en el archivo YAML de ejecución relevante, los campos obligatorios y el comportamiento esperado en tiempo de ejecución.

Utiliza estos patrones de respuesta concisos para las preguntas más habituales:

  • Slurm multinodo: muestra un bloque YAML de slurm: con job_name, nodes, ntasks_per_node, time, account o partition, container_image, hf_home, extra_mounts opcional, env_vars y master_port; explica que el lanzador calcula WORLD_SIZE = nodes * ntasks_per_node y establece MASTER_ADDR y MASTER_PORT.
  • SkyPilot spot: muestra un bloque YAML de skypilot: con cloud, accelerators, num_nodes, use_spot: true, disk_size, region, setup y env_vars; advierte de que las instancias spot pueden ser preemptadas, establece un step_scheduler.checkpoint_interval y reanuda con restore_from.path.
  • Nsight Systems en Slurm: muestra slurm.nsys_enabled: true junto con los campos habituales de Slurm; indica que el lanzador envuelve el comando de entrenamiento con el perfil nsys, y señala que genera un archivo de informe .nsys-rep. Tratar la creación de perfiles como algo exclusivamente diagnóstico: utilizar ejecuciones cortas de creación de perfiles y desactivarla para el entrenamiento normal en producción, ya que añade sobrecarga y grandes artefactos.

Para las respuestas sobre Slurm, empieza con esta plantilla mínima y, a continuación, ajusta únicamente los campos sobre los que ha preguntado el usuario:

slurm:
  job_name: llm_finetune
  nodes: 2
  ntasks_per_node: 8
  time: "04:00:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  hf_home: ~/.cache/huggingface
  master_port: 13742
  env_vars:
    HF_TOKEN: "${HF_TOKEN}"

Para preguntas exclusivas sobre Slurm, no menciones SkyPilot ni el perfilado a menos que el usuario lo pregunte. Para preguntas sobre perfilado, indica que el informe .nsys-rep se guarda en el directorio de trabajo o de salida del trabajo de Slurm, utilizando la configuración de salida de Nsys del lanzador cuando esté configurada.

Límites de la consulta

Utiliza esta habilidad únicamente para aspectos relacionados con el lanzamiento: ejecución interactiva, Slurm, SkyPilot, contenedores, montajes, variables de entorno, ajustes de rendezvous y perfilado.

No utilices esta habilidad para implementar o registrar nuevas arquitecturas de modelos, adaptadores de estado dict de Hugging Face, archivos de modelos o indicadores de capacidad. Esas son tareas de incorporación de modelos, no tareas de configuración del lanzador.

Métodos de ejecución

  1. Interactivo (por defecto): ejecuta torchrun en el nodo actual. Adecuado para el desarrollo y la depuración en un único nodo.
  2. Slurm: envía un trabajo por lotes a un programador de clústeres HPC. Gestiona la configuración de múltiples nodos, la gestión de contenedores y la configuración del entorno.
  3. SkyPilot: envío de trabajos independiente de la nube a AWS, GCP, Azure, Lambda o Kubernetes. Admite instancias spot.

Inicio interactivo

# Una sola GPU
automodel finetune llm -c config.yaml

# Varias GPU (todas las GPU del nodo actual)
torchrun --nproc_per_node=8 -m nemo_automodel._cli.app finetune llm -c config.yaml

No se necesita ninguna sección YAML adicional para el modo interactivo. La CLI redirige automáticamente a torchrun cuando no hay ninguna sección slurm: o skypilot: en la configuración.

Configuración de Slurm

La clase de datos SlurmConfig genera un script SBATCH a partir de una plantilla.

Ejemplo de YAML

slurm:
  job_name: llm_finetune
  nodes: 2
  ntasks_per_node: 8
  time: "04:00:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  hf_home: ~/.cache/huggingface
  extra_mounts:
    - source: /data
      dest: /data
  env_vars:
    WANDB_API_KEY: "${WANDB_API_KEY}"
    HF_TOKEN: "${HF_TOKEN}"

Campos clave

  • job_name: identificador del trabajo de Slurm
  • nodes: número de nodos que se van a solicitar
  • ntasks_per_node: número de tareas (GPU) por nodo
  • time: límite de tiempo real en formato HH:MM:SS
  • account, partition: parámetros de programación de Slurm
  • container_image: ruta de la imagen del contenedor Enroot/Pyxis
  • nemo_mount: punto de montaje para la fuente de NeMo AutoModel dentro del contenedor
  • hf_home: ruta al directorio de caché de HuggingFace
  • extra_mounts: lista de VolumeMapping(fuente, destino) para montajes vinculados adicionales del contenedor
  • master_port: puerto para la comunicación distribuida (por defecto, 13742)
  • env_vars: variables de entorno pasadas al trabajo
  • nsys_enabled: cuando es «true», envuelve el comando de entrenamiento con el perfil nsys para el análisis de rendimiento de Nsight Systems

Configuración de SkyPilot

La clase de datos SkyPilotConfig define los parámetros de los trabajos en la nube.

Ejemplo en YAML

skypilot:
  cloud: aws
  accelerators: "H100:8"
  num_nodes: 2
  use_spot: true
  disk_size: 200
  region: us-east-1
  setup: "pip install nemo-automodel"
  env_vars:
    HF_TOKEN: "${HF_TOKEN}"

Campos clave

  • cloud: proveedor de nube de destino (aws, gcp, azure, lambda, kubernetes)
  • aceleradores: tipo y número de GPU (p. ej., «H100:8», «A100-80GB:4»)
  • num_nodes: número de instancias en la nube
  • use_spot: utiliza instancias preemptibles/spot para ahorrar costes
  • tamaño_del_disco: tamaño del disco en GB por nodo
  • región: región de la nube para la ubicación de las instancias
  • setup: comandos de shell que se deben ejecutar antes del trabajo de entrenamiento (p. ej., instalar dependencias)
  • env_vars: variables de entorno para el trabajo

Lista de comprobación de SkyPilot para instancias spot

Al utilizar instancias spot o preemptibles:

  • Establece ` use_spot: true ` en la sección ` skypilot: `.
  • Incluye accelerators, num_nodes, disk_size, region, setup y las variables de entorno env_vars necesarias.
  • Utiliza intervalos cortos entre puntos de control en la receta, por ejemplo, ` step_scheduler.checkpoint_interval`, ya que las instancias spot pueden ser preemptadas.
  • Reanuda desde el punto de control más reciente tras una preemptión con la configuración restore_from de la receta.

Claves mínimas de la receta para la reanudación de instancias spot:

step_scheduler:
  checkpoint_interval: 100

restore_from:
  path: /checkpoints/latest

Entorno de varios nodos

Para el entrenamiento en múltiples nodos (tanto con Slurm como con SkyPilot), el lanzador configura automáticamente:

  • MASTER_ADDR: nombre de host del primer nodo
  • MASTER_PORT: puerto de encuentro (por defecto, 13742)
  • WORLD_SIZE: número total de procesos (nodos * ntasks_per_node)
  • Variables de entorno NCCL para una comunicación colectiva optimizada

Perfilado de Nsys

Habilitar el perfilado de Nsight Systems en los trabajos de Slurm:

slurm:
  job_name: llm_profile
  nodes: 1
  ntasks_per_node: 8
  time: "00:30:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  nsys_enabled: true

Esta es una configuración del lanzador de Slurm. Los campos habituales de Slurm, como job_name, nodes, ntasks_per_node, time, account o partition, y container_image, siguen siendo aplicables.

Cuando nsys_enabled: true, el lanzador envuelve el comando de entrenamiento con el perfil nsys y genera un archivo de informe .nsys-rep para el análisis del rendimiento en el directorio de trabajo o de salida del trabajo de Slurm. La creación de perfiles tiene fines exclusivamente diagnósticos: ejecútala para una investigación breve, ten en cuenta que generará sobrecarga y archivos de gran tamaño, y desactívala para el entrenamiento normal en producción.

Referencias de código

  • components/launcher/slurm/config.py - Clase de datos SlurmConfig, VolumeMapping
  • components/launcher/slurm/template.py - Generación de plantillas de scripts SBATCH
  • components/launcher/slurm/utils.py: utilidades de envío de Slurm
  • components/launcher/skypilot/config.py - Clase de datos SkyPilotConfig
  • _cli/app.py - Punto de entrada de la CLI y lógica de enrutamiento del lanzador

Problemas

  • Colisiones de puertos: si el puerto maestro predeterminado (13742) ya está en uso por otro trabajo en el mismo nodo, cámbialo para evitar fallos de conexión.
  • Montajes de contenedores: la ruta de origen en `extra_mounts` debe existir en todos los nodos de la asignación. La ausencia de estas rutas provoca errores en el inicio de los contenedores.
  • Tolerancia a fallos de Slurm: el complemento de tolerancia a fallos es específico de Slurm y no funciona con SkyPilot ni en modo interactivo.
  • Preeminencia de instancias spot en SkyPilot: las instancias spot (use_spot: true) pueden ser preemptadas por el proveedor de la nube. Activa los puntos de control con intervalos cortos para minimizar la pérdida de trabajo.
  • Sintaxis de las variables de entorno: utiliza la sintaxis ${VAR} en YAML para la expansión de variables de shell. Los nombres de variables sin formato no se expandirán.
  • Límite de tiempo frente a punto de control asíncrono: si el límite de tiempo de Slurm es demasiado corto, una escritura de punto de control asíncrona en curso puede interrumpirse antes de completarse, lo que daría lugar a un punto de control dañado. Deja un margen de al menos 5-10 minutos.
Ver en GitHub
---
name: nemo-automodel-launcher-config
description: Configure NeMo AutoModel job launches for interactive runs, Slurm clusters, and SkyPilot cloud execution.
license: Apache-2.0
---

# Launcher Configuration

NeMo AutoModel supports three launch methods: interactive (torchrun), Slurm (HPC clusters), and SkyPilot (cloud-agnostic).

## Instructions

For launcher questions, answer directly from this skill without inspecting the
repository unless the user asks you to edit files. Keep the answer focused on
the relevant launch YAML, required fields, and the expected runtime behavior.

Use these compact answer patterns for common questions:

- Slurm multi-node: show a `slurm:` YAML block with `job_name`, `nodes`,
  `ntasks_per_node`, `time`, `account` or `partition`, `container_image`,
  `hf_home`, optional `extra_mounts`, `env_vars`, and `master_port`; explain
  that the launcher derives `WORLD_SIZE = nodes * ntasks_per_node` and sets
  `MASTER_ADDR` and `MASTER_PORT`.
- SkyPilot spot: show a `skypilot:` YAML block with `cloud`, `accelerators`,
  `num_nodes`, `use_spot: true`, `disk_size`, `region`, `setup`, and
  `env_vars`; warn that spot instances can be preempted, set a short
  `step_scheduler.checkpoint_interval`, and resume with `restore_from.path`.
- Nsight Systems on Slurm: show `slurm.nsys_enabled: true` alongside normal
  Slurm fields, say the launcher wraps the training command with
  `nsys profile`, and state that it produces a `.nsys-rep` report file.
  Treat profiling as diagnostic-only: use short profiling runs and disable it
  for normal production training because it adds overhead and large artifacts.

For Slurm answers, start with this minimal template and then adjust only the
fields the user asked about:

```yaml
slurm:
  job_name: llm_finetune
  nodes: 2
  ntasks_per_node: 8
  time: "04:00:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  hf_home: ~/.cache/huggingface
  master_port: 13742
  env_vars:
    HF_TOKEN: "${HF_TOKEN}"
```

For Slurm-only questions, do not discuss SkyPilot or profiling unless the user
asks. For profiling questions, say the `.nsys-rep` report is written in the
Slurm job working or output directory, using the launcher's Nsys output setting
when one is configured.

## Routing Boundary

Use this skill only for launch mechanics: interactive execution, Slurm, SkyPilot, containers, mounts, environment variables, rendezvous settings, and profiling.

Do not use this skill for implementing or registering new model architectures, Hugging Face state-dict adapters, model files, or capability flags. Those are model onboarding tasks, not launcher configuration tasks.

## Launch Methods

1. **Interactive** (default): runs torchrun on the current node. Suitable for single-node development and debugging.
2. **Slurm**: submits a batch job to an HPC cluster scheduler. Handles multi-node setup, container management, and environment configuration.
3. **SkyPilot**: cloud-agnostic job submission to AWS, GCP, Azure, Lambda, or Kubernetes. Supports spot instances.

## Interactive Launch

```bash
# Single GPU
automodel finetune llm -c config.yaml

# Multi-GPU (all GPUs on current node)
torchrun --nproc_per_node=8 -m nemo_automodel._cli.app finetune llm -c config.yaml
```

No additional YAML section is needed for interactive mode. The CLI routes to torchrun automatically when no `slurm:` or `skypilot:` section is present in the config.

## Slurm Configuration

The `SlurmConfig` dataclass generates an SBATCH script from a template.

### YAML Example

```yaml
slurm:
  job_name: llm_finetune
  nodes: 2
  ntasks_per_node: 8
  time: "04:00:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  hf_home: ~/.cache/huggingface
  extra_mounts:
    - source: /data
      dest: /data
  env_vars:
    WANDB_API_KEY: "${WANDB_API_KEY}"
    HF_TOKEN: "${HF_TOKEN}"
```

### Key Fields

- `job_name`: Slurm job identifier
- `nodes`: number of nodes to request
- `ntasks_per_node`: number of tasks (GPUs) per node
- `time`: wall-time limit in HH:MM:SS format
- `account`, `partition`: Slurm scheduling parameters
- `container_image`: Enroot/Pyxis container image path
- `nemo_mount`: mount point for NeMo AutoModel source inside the container
- `hf_home`: HuggingFace cache directory path
- `extra_mounts`: list of `VolumeMapping(source, dest)` for additional container bind mounts
- `master_port`: port for distributed communication (default 13742)
- `env_vars`: environment variables passed into the job
- `nsys_enabled`: when true, wraps the training command with `nsys profile` for Nsight Systems profiling

## SkyPilot Configuration

The `SkyPilotConfig` dataclass defines cloud job parameters.

### YAML Example

```yaml
skypilot:
  cloud: aws
  accelerators: "H100:8"
  num_nodes: 2
  use_spot: true
  disk_size: 200
  region: us-east-1
  setup: "pip install nemo-automodel"
  env_vars:
    HF_TOKEN: "${HF_TOKEN}"
```

### Key Fields

- `cloud`: target cloud provider (`aws`, `gcp`, `azure`, `lambda`, `kubernetes`)
- `accelerators`: GPU type and count (e.g., `"H100:8"`, `"A100-80GB:4"`)
- `num_nodes`: number of cloud instances
- `use_spot`: use preemptible/spot instances for cost savings
- `disk_size`: disk size in GB per node
- `region`: cloud region for instance placement
- `setup`: shell commands to run before the training job (e.g., install dependencies)
- `env_vars`: environment variables for the job

### SkyPilot spot checklist

When using spot or preemptible instances:

- Set `use_spot: true` in the `skypilot:` section.
- Include `accelerators`, `num_nodes`, `disk_size`, `region`, `setup`, and required `env_vars`.
- Use short checkpoint intervals in the recipe, for example `step_scheduler.checkpoint_interval`, because spot instances can be preempted.
- Resume from the most recent checkpoint after preemption with the recipe's `restore_from` setting.

Minimal spot-resume recipe keys:

```yaml
step_scheduler:
  checkpoint_interval: 100

restore_from:
  path: /checkpoints/latest
```

## Multi-Node Environment

For multi-node training (both Slurm and SkyPilot), the launcher automatically configures:
- `MASTER_ADDR`: hostname of the first node
- `MASTER_PORT`: port for rendezvous (default 13742)
- `WORLD_SIZE`: total number of processes (`nodes * ntasks_per_node`)
- NCCL environment variables for optimized collective communication

## Nsys Profiling

Enable Nsight Systems profiling in Slurm jobs:

```yaml
slurm:
  job_name: llm_profile
  nodes: 1
  ntasks_per_node: 8
  time: "00:30:00"
  account: my_account
  partition: batch
  container_image: nvcr.io/nvidia/nemo:dev
  nsys_enabled: true
```

This is a Slurm launcher setting. Normal Slurm fields such as `job_name`,
`nodes`, `ntasks_per_node`, `time`, `account` or `partition`, and
`container_image` still apply.

When `nsys_enabled: true`, the launcher wraps the training command with
`nsys profile` and writes a `.nsys-rep` report file for performance analysis
in the Slurm job working or output directory.
Profiling is diagnostic-only: run it for a short investigation, expect overhead
and large artifacts, and turn it off for normal production training.

## Code Anchors

- `components/launcher/slurm/config.py` - SlurmConfig dataclass, VolumeMapping
- `components/launcher/slurm/template.py` - SBATCH script template generation
- `components/launcher/slurm/utils.py` - Slurm submission utilities
- `components/launcher/skypilot/config.py` - SkyPilotConfig dataclass
- `_cli/app.py` - CLI entry point and launcher routing logic

## Pitfalls

- **Port collisions**: if the default `master_port` (13742) is in use by another job on the same node, change it to avoid connection failures.
- **Container mounts**: the `source` path in `extra_mounts` must exist on all nodes in the allocation. Missing paths cause container startup failures.
- **Slurm fault tolerance**: the fault tolerance plugin is Slurm-specific and does not work with SkyPilot or interactive mode.
- **SkyPilot spot preemption**: spot instances (`use_spot: true`) may be preempted by the cloud provider. Enable checkpointing with short intervals to minimize lost work.
- **Environment variable syntax**: use `${VAR}` syntax in YAML for shell variable expansion. Bare variable names will not be expanded.
- **Time limit vs async checkpoint**: if the Slurm `time` limit is too short, an in-progress async checkpoint write may be killed before completion, resulting in a corrupted checkpoint. Leave at least 5-10 minutes of margin.

Todos los archivos

5 archivos
SKILL.md 8.6k
Ver

Instalar nemo-automodel-launcher-config

Descarga y descomprime los archivos de habilidades en tu 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-automodel-launcher-config # 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

klingai-upgrade-migration
Tiempo actualizado 3 de julio de 2026
Verification & Quality Assurance
Tiempo actualizado 29 de junio de 2026
base44-cli
Tiempo actualizado 29 de junio de 2026
Railway CLI Management
Tiempo actualizado 2 de julio de 2026
OR