SkyPilot¶
supernova uses SkyPilot for all distributed compute -- both embedding generation (GPU) and data loading (CPU). SkyPilot gives us job management on ephemeral cloud VMs, using spot instances that are 60-90% cheaper than on-demand.
Setup¶
Check AWS service quotas for your account. Request vCPU limit increases if needed (EC2 -> Service Quotas).
Pools¶
Both nova embed-dist and nova load-dist use SkyPilot pools. A pool is a set of workers that auto-scale and reuse setup across jobs. Workers are provisioned once (uv sync, model downloads), then jobs are submitted to the pool.
# Create a pool
sky jobs pool apply -p my-pool pool.yaml
# Submit jobs
sky jobs launch -p my-pool --num-jobs 20 job.yaml
# Monitor
sky jobs pool status my-pool
sky jobs pool status my-pool --all # show individual workers
# Logs
sky jobs pool logs my-pool <worker-id>
sky jobs pool logs --controller my-pool
# SSH
sky jobs pool ssh my-pool <worker-id>
# Tear down
sky jobs pool down my-pool
Managed jobs (spot recovery)¶
sky jobs launch runs on a SkyPilot controller VM:
- Spot preemption recovery -- if AWS reclaims the instance, SkyPilot finds a new one and restarts
- Laptop can disconnect -- controller keeps running in the cloud
- Job monitoring --
sky jobs queue,sky jobs logs
The controller is a tiny instance (~$5/mo). Tear it down with sky jobs controller stop when not in use.
Cost estimates¶
Embedding (GPU, spot)¶
| Instance | GPU | Spot $/hr | 10 jobs x 1hr |
|---|---|---|---|
| g5.xlarge | A10G | ~$0.38 | ~$3.80 |
| g4dn.xlarge | T4 | ~$0.16 | ~$1.60 |
Loading (CPU, spot)¶
| Instance | vCPUs | RAM | Spot $/hr | 10 jobs x 2hr |
|---|---|---|---|---|
| c6i.4xlarge | 16 | 32GB | ~$0.25 | ~$5 |
| c6i.8xlarge | 32 | 64GB | ~$0.50 | ~$10 |
Loading 250M vectors sharded across 10 workers: roughly $5-10 total.