SkyPilot - Esegui Workload IA su Qualsiasi Cloud Cheatsheet
SkyPilot esegue workload IA e batch su qualsiasi cloud o cluster Kubernetes da una singola definizione YAML. Il suo valore principale per il lavoro LLM è economico: la disponibilità e i prezzi delle GPU variano selvaggiamente tra provider e regioni, e SkyPilot trova automaticamente la capacità disponibile più economica che soddisfa i tuoi requisiti, la provisiona, sincronizza il tuo codice, esegue il lavoro e abbatte tutto. Gestisce anche preemption di istanze spot con ripristino automatico, che rende le GPU interrompibili economiche pratiche per lunghi run di training.
Installazione
| Metodo | Comando |
|---|
| pip | pip install "skypilot[all]" |
| Cloud specifici | pip install "skypilot[aws,gcp,kubernetes]" |
| Controlla credenziali | sky check |
| Verifica | sky --version |
sky check riporta quali cloud hai credenziali di lavoro — SkyPilot considera solo quelli.
Definizione di Un Task
# 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 | Scopo |
|---|
resources.accelerators | Tipo e numero di GPU (A100:8, H100:4) |
use_spot | Usa istanze interrompibili |
any_of / ordered | Cloud/regioni candidati |
workdir | Directory locale sincronizzato al cluster |
setup | Esegui una volta per cluster |
run | Il lavoro effettivo |
num_nodes | Training multi-nodo |
Comandi Principali
| Comando | Descrizione |
|---|
sky launch -c mycluster train.yaml | Provisiona ed esegui |
sky exec mycluster train.yaml | Esegui di nuovo su un cluster esistente |
sky status | Elenca cluster e costi |
sky logs mycluster | Stream log del lavoro |
sky queue mycluster | Mostra la coda del lavoro |
sky down mycluster | Termina (smetti di pagare) |
sky stop mycluster | Ferma ma mantieni il disco |
Lavori Gestiti (Spot con Ripristino)
# Lungo run di training su istanze spot, riprese automatiche su preemption
sky jobs launch -n llama-sft train.yaml
| Comando | Scopo |
|---|
sky jobs launch | Sottoponi un lavoro gestito |
sky jobs queue | Elenca lavori gestiti |
sky jobs logs -n NAME | Tail dei log |
sky jobs cancel -n NAME | Annulla |
I lavori gestiti sono la caratteristica che rendono le GPU spot utilizzabili per il training: su preemption SkyPilot re-provisiona altrove e riprende dal tuo checkpoint, in modo che un run di più giorni sopravviva agli interrupt.
Ottimizzazione dei Costi
| Meccanismo | Effetto |
|---|
| Ricerca cross-cloud | Sceglie l”opzione più economica corrispondente |
use_spot: true | Spesso 60–90% più economico |
sky show-gpus | Prezzi/disponibilità attuali per cloud |
| Autostop | sky autostop -i 10 mycluster termina cluster inattivi |
sky down | L”abitudine più importante — GPU inattive sono lo spreco principale |
# Quale capacità A100 esiste e a quale prezzo?
sky show-gpus A100
Servizio di Modelli
# 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 aggiunge repliche, health check e autoscaling tra cloud — utile per servire con vLLM sulle GPU più economiche disponibili.
Backend Kubernetes
| Capacità | Nota |
|---|
| Cluster esistenti | cloud: kubernetes punta il tuo K8s |
| Misto | Combina K8s on-prem con burst cloud |
| Scheduling GPU | Usa risorse GPU K8s standard |
| Nessuna credenziale cloud richiesta | Per uso puro on-prem |
SkyPilot vs Alternative
| Aspetto | SkyPilot | Ray | Cloud-native (SageMaker/Vertex) |
|---|
| Multi-cloud | Caratteristica principale | Possibile, manuale | Singolo vendor |
| Ripristino spot | Built-in | Manuale | Varia |
| Lock-in | Nessuno (YAML semplice) | Framework | Alto |
| Migliore per | GPU più economiche ovunque | App Python distribuite | Integrazione profonda di single-cloud |
Si accoppia con stack di training come Axolotl, TorchTitan, e servizio via vLLM.
Risorse