Run on Any Cloud with SkyPilot
In this guide, you will learn how to launch NeMo AutoModel training jobs with SkyPilot. SkyPilot can target public clouds such as AWS, GCP, Azure, and Lambda, and it can also submit jobs to Kubernetes clusters. For a beginner-friendly Kubernetes walkthrough, see SkyPilot + Kubernetes tutorial. For on-premises cluster usage without SkyPilot, see Run on a Cluster (Slurm). For single-node workstation usage, see Run on Your Local Workstation.
SkyPilot is an open-source framework that abstracts cloud infrastructure so you can train on whichever cloud is cheapest or most available at launch time — including automatic spot-instance handling for significant cost savings.
Before You Begin
Complete the following setup steps before launching your first AutoModel job on a cloud provider.
- Create and activate a virtual environment, then install SkyPilot with the connector for your target infrastructure. Choose one connector install command:
NeMo AutoModel’s current launcher passes detach_run and stream_logs to sky.launch(). These SDK arguments are supported by SkyPilot 0.8.1 and were removed in later releases, so keep this version pin until the launcher is migrated to the newer SkyPilot API. Azure is not currently usable with this integration: skypilot[azure]==0.8.1 no longer resolves because its azure-cli dependency requires unavailable azure-batch versions.
- Configure access for your target infrastructure, then verify:
You should see at least one cloud listed as OK.
- Set required environment variables:
Quickstart
Add a skypilot: section to any existing config YAML, then run the same automodel command you already know:
The CLI detects the skypilot: key, strips it from the training config, uploads the code and config to a cloud VM, and launches training — all in one command.
Configuration Reference
Below is an annotated example for fine-tuning Llama-3.2-1B on SQuAD on a GCP spot T4. The checked-in examples/llm_finetune/llama3_2/llama3_2_1b_squad_skypilot.yaml is a configuration reference, but its commented custom setup: example predates the replacement semantics below. If you enable setup:, use the complete override shown here.
All skypilot: Fields
Cloud Examples
AWS — On-Demand A10G
GCP — Spot V100, 8 GPUs (Single Node)
Multi-Node Distributed Training (2 x 8 x A100)
For multi-node jobs, the launcher builds the torchrun rendezvous arguments from the $SKYPILOT_NODE_RANK, $SKYPILOT_NUM_NODES, and $SKYPILOT_NODE_IPS environment variables provided by SkyPilot.
Monitor and Manage Jobs
After submitting, use standard SkyPilot commands:
The launcher’s local job_dir contains only the timestamped job_config.yaml snapshot. sky logs --sync-down downloads SkyPilot’s logs to the local ~/sky_logs tree, not to job_dir.
How It Works
- The
automodelCLI detects theskypilot:key in the YAML and callsSkyPilotLauncher().launch(). - The training config (with
skypilot:removed) is written to a localskypilot_jobs/<timestamp>/job_config.yaml. - A
sky.Taskis created with:- workdir — the current directory synced to
~/sky_workdiron the remote VM. - file_mounts — the job config uploaded to
/tmp/automodel_job_config.yaml. - setup — defaults to
cd ~/sky_workdir && pip install -e . --quiet. A non-empty customsetup:value replaces this command rather than being appended, so the override must include any required package installation. - run — a
torchruncommand pointing at the recipe script and config.
- workdir — the current directory synced to
sky.launch()provisions the VM, runs setup, then executes training. Withdetach_run=True, it returns after job submission without streaming execution logs; usesky logsto follow progress.
Customize Configuration
Override any training parameter from the command line, same as with local runs:
Kubernetes Users
If you want to run on a Kubernetes cluster, use cloud: kubernetes and follow the dedicated SkyPilot + Kubernetes tutorial. That guide includes:
- a copy-paste single-node config
- a two-node example
- sample
skyandkubectloutput to help you sanity-check your setup - a short troubleshooting section for common first-run issues