nemo-automodel-launcher-config
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 todoConfiguració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:conjob_name,nodes,ntasks_per_node,time,accountopartition,container_image,hf_home,extra_mountsopcional,env_varsymaster_port; explica que el lanzador calculaWORLD_SIZE = nodes * ntasks_per_nodey estableceMASTER_ADDRyMASTER_PORT. - SkyPilot spot: muestra un bloque YAML
de skypilot:concloud,accelerators,num_nodes,use_spot: true,disk_size,region,setupyenv_vars; advierte de que las instancias spot pueden ser preemptadas, establece unstep_scheduler.checkpoint_intervaly reanuda conrestore_from.path. - Nsight Systems en Slurm: muestra
slurm.nsys_enabled: truejunto con los campos habituales de Slurm; indica que el lanzador envuelve el comando de entrenamiento conel 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
- Interactivo (por defecto): ejecuta torchrun en el nodo actual. Adecuado para el desarrollo y la depuración en un único nodo.
- 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.
- 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 Slurmnodes: número de nodos que se van a solicitarntasks_per_node: número de tareas (GPU) por nodotime: límite de tiempo real en formato HH:MM:SSaccount,partition: parámetros de programación de Slurmcontainer_image: ruta de la imagen del contenedor Enroot/Pyxisnemo_mount: punto de montaje para la fuente de NeMo AutoModel dentro del contenedorhf_home: ruta al directorio de caché de HuggingFaceextra_mounts: lista deVolumeMapping(fuente, destino)para montajes vinculados adicionales del contenedormaster_port: puerto para la comunicación distribuida (por defecto, 13742)env_vars: variables de entorno pasadas al trabajonsys_enabled: cuando es «true», envuelve el comando de entrenamiento conel perfil nsyspara 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 nubeuse_spot: utiliza instancias preemptibles/spot para ahorrar costestamaño_del_disco: tamaño del disco en GB por nodoregión: región de la nube para la ubicación de las instanciassetup: 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,setupylas variables de entorno env_varsnecesarias. - 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_fromde 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 nodoMASTER_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, VolumeMappingcomponents/launcher/slurm/template.py- Generación de plantillas de scripts SBATCHcomponents/launcher/slurm/utils.py: utilidades de envío de Slurmcomponents/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 maestropredeterminado (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 origenen`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 tiempode 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.
---
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 archivosInstalar nemo-automodel-launcher-config
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona 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





Hogar
