SkyPilot - Ejecutar workloads de IA en cualquier cloud
SkyPilot ejecuta workloads de IA y batch en cualquier cloud o cluster Kubernetes desde una definición YAML única. Su valor central para trabajo de LLM es económico: la disponibilidad de GPU y precios varían salvajemente entre proveedores y regiones, y SkyPilot automáticamente encuentra la capacidad disponible más barata que cumple tus requisitos, la provisiona, sincroniza tu código, ejecuta el trabajo y lo desactiva. También maneja preemption de spot instances con recuperación automática, lo cual hace GPUs baratas interruptibles prácticas para ejecuciones de entrenamiento largas.
Instalación
| Método | Comando |
|---|
| pip | pip install "skypilot[all]" |
| Clouds específicos | pip install "skypilot[aws,gcp,kubernetes]" |
| Checar credenciales | sky check |
| Verificar | sky --version |
sky check reporta qué clouds tienes credenciales funcionando — SkyPilot solo considera esos.
Definiendo una tarea
# train.yaml
resources:
accelerators: A100:8
use_spot: true
any_of:
- cloud: aws
- cloud: gcp
- cloud: kubernetes
num_nodes: 1
workdir: .
setup: |
pip install -r requirements.txt
run: |
torchrun --nproc_per_node=8 train.py --config configs/7b.yaml
| Campo | Propósito |
|---|
resources.accelerators | Tipo de GPU y conteo (A100:8, H100:4) |
use_spot | Usar instancias interruptibles |
any_of / ordered | Clouds/regiones candidatas |
workdir | Directorio local sincronizado al cluster |
setup | Ejecutar una vez por cluster |
run | El trabajo actual |
num_nodes | Entrenamiento multi-nodo |
Comandos principales
| Comando | Descripción |
|---|
sky launch -c mycluster train.yaml | Provisionar y ejecutar |
sky exec mycluster train.yaml | Ejecutar de nuevo en un cluster existente |
sky status | Listar clusters y costos |
sky logs mycluster | Stream logs del trabajo |
sky queue mycluster | Mostrar la cola de trabajos |
sky down mycluster | Terminar (dejar de pagar) |
sky stop mycluster | Parar pero mantener el disco |
Trabajos gestionados (spot con recuperación)
# Ejecución de entrenamiento larga en spot instances, recuperada automáticamente en preemption
sky jobs launch -n llama-sft train.yaml
| Comando | Propósito |
|---|
sky jobs launch | Enviar un trabajo gestionado |
sky jobs queue | Listar trabajos gestionados |
sky jobs logs -n NAME | Tail logs |
sky jobs cancel -n NAME | Cancelar |
Los trabajos gestionados son la característica que hace las GPUs spot utilizables para entrenamiento: en preemption SkyPilot re-provisiona en otro lugar y reanuda desde tu checkpoint, para que una ejecución multi-día sobreviva interrupciones.
Optimización de costo
| Mecanismo | Efecto |
|---|
| Búsqueda multi-cloud | Elige la opción compatible más barata |
use_spot: true | Frecuentemente 60–90% más barata |
sky show-gpus | Precios/disponibilidad actual por cloud |
| Autostop | sky autostop -i 10 mycluster termina clusters inactivos |
sky down | El hábito más importante — GPUs inactivas son el desperdicio principal |
# ¿Qué capacidad A100 existe y a qué precio?
sky show-gpus A100
Sirviendo modelos
# serve.yaml
service:
readiness_probe: /v1/models
replicas: 2
resources:
accelerators: A100:1
ports: 8000
run: |
vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000
sky serve up -n llm-api serve.yaml
sky serve status
SkyServe añade replicas, health checks y autoscaling entre clouds — útil para servir con vLLM en las GPUs más baratas disponibles.
Backend de Kubernetes
| Capacidad | Nota |
|---|
| Clusters existentes | cloud: kubernetes apunta a tu propio K8s |
| Mixto | Combinar K8s on-prem con cloud burst |
| GPU scheduling | Usa recursos GPU estándar de K8s |
| Sin credenciales cloud | Para uso puro on-prem |
SkyPilot vs alternativas
| Aspecto | SkyPilot | Ray | Cloud-native (SageMaker/Vertex) |
|---|
| Multi-cloud | Característica central | Posible, manual | Vendor único |
| Recuperación de spot | Built-in | Manual | Varía |
| Lock-in | Ninguno (YAML plano) | Framework | Alto |
| Mejor para | GPUs más baratas en cualquier lugar | Aplicaciones Python distribuidas | Integración profunda single-cloud |
Se empareja con stacks de entrenamiento como Axolotl, TorchTitan y servicio vía vLLM.
Recursos