SkyPilot - Cheatsheet de Execução de Workloads de IA em Qualquer Nuvem
SkyPilot executa trabalhos de IA e batch em qualquer nuvem ou cluster Kubernetes a partir de uma única definição YAML. Seu valor central para trabalho LLM é econômico: disponibilidade de GPU e preço variam muito entre provedores e regiões, e SkyPilot encontra automaticamente a capacidade mais barata disponível que atende seus requisitos, fornece, sincroniza seu código, executa o trabalho e desativa tudo. Também lida com preempção de instância spot com recuperação automática, que torna GPUs baratas interruptíveis práticas para execuções de treinamento longo.
Instalação
| Método | Comando |
|---|
| pip | pip install "skypilot[all]" |
| Nuvens específicas | pip install "skypilot[aws,gcp,kubernetes]" |
| Verificar credenciais | sky check |
| Verificar | sky --version |
sky check relata quais nuvens você tem credenciais de trabalho para — SkyPilot apenas considera aquelas.
Definindo uma Tarefa
# 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 e contagem de GPU (A100:8, H100:4) |
use_spot | Use instâncias interruptíveis |
any_of / ordered | Nuvens/regiões candidatas |
workdir | Dir local sincronizado para o cluster |
setup | Executa uma vez por cluster |
run | O trabalho real |
num_nodes | Treinamento multi-node |
Comandos Centrais
| Comando | Descrição |
|---|
sky launch -c mycluster train.yaml | Fornece e executa |
sky exec mycluster train.yaml | Executa novamente em um cluster existente |
sky status | Lista clusters e custos |
sky logs mycluster | Fluxo de logs de trabalho |
sky queue mycluster | Mostra a fila de trabalho |
sky down mycluster | Termina (pare de pagar) |
sky stop mycluster | Para mas mantém o disco |
# Longa execução de treinamento em instâncias spot, auto-recuperada em preempção
sky jobs launch -n llama-sft train.yaml
| Comando | Propósito |
|---|
sky jobs launch | Submete um trabalho gerenciado |
sky jobs queue | Lista trabalhos gerenciados |
sky jobs logs -n NAME | Rastreie logs |
sky jobs cancel -n NAME | Cancela |
Trabalhos gerenciados são o recurso que torna GPUs spot usáveis para treinamento: em preempção SkyPilot reproveiciona em outro lugar e retoma a partir de seu checkpoint, então uma execução multi-dia sobrevive interrupções.
Otimização de Custo
| Mecanismo | Efeito |
|---|
| Busca de nuvem cruzada | Pega a opção mais barata que corresponde |
use_spot: true | Frequentemente 60-90% mais barato |
sky show-gpus | Preços/disponibilidade atuais por nuvem |
| Autostop | sky autostop -i 10 mycluster termina clusters ociosos |
sky down | O hábito mais importante — GPUs ociosas são o desperdício principal |
# Qual capacidade de A100 existe e a que preço?
sky show-gpus A100
Servindo 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 adiciona réplicas, health checks e autoscaling entre nuvens — útil para servir com vLLM nas GPUs mais baratas disponíveis.
Backend de Kubernetes
| Capacidade | Nota |
|---|
| Clusters existentes | cloud: kubernetes alvo seu próprio K8s |
| Misto | Combine K8s on-prem com cloud burst |
| Agendamento de GPU | Usa recursos padrão de GPU de K8s |
| Sem credenciais de nuvem necessárias | Para uso puro on-prem |
SkyPilot vs Alternativas
| Aspecto | SkyPilot | Ray | Cloud-native (SageMaker/Vertex) |
|---|
| Multi-nuvem | Recurso principal | Possível, manual | Único vendor |
| Recuperação de spot | Built-in | Manual | Varia |
| Lock-in | Nenhum (YAML simples) | Framework | Alto |
| Melhor para | GPUs mais baratos em qualquer lugar | Apps Python distribuído | Integração profunda single-cloud |
Pareia com stacks de treinamento como Axolotl, TorchTitan, e servindo via vLLM.
Recursos