SkyPilot - 모든 클라우드에서 AI 워크로드 실행 치트시트
SkyPilot는 모든 클라우드 또는 Kubernetes 클러스터에서 단일 YAML 정의에서 AI 및 배치 워크로드를 실행합니다. LLM 작업을 위한 그것의 핵심 가치는 경제적입니다: GPU 가용성 및 가격은 제공자와 지역에 따라 매우 다르며, SkyPilot는 요구사항을 만족하는 가장 저렴한 사용 가능 용량을 자동으로 찾고, 제공하고, 코드를 동기화하고, 작업을 실행하고, 모든 것을 철거합니다. 또한 스팟 인스턴스 선점을 자동 복구로 처리하여 저렴한 중단 가능 GPU를 긴 훈련 실행에 실용적으로 만듭니다.
설치
| 방법 | 명령어 |
|---|
| pip | pip install "skypilot[all]" |
| 특정 클라우드 | pip install "skypilot[aws,gcp,kubernetes]" |
| 자격증명 확인 | sky check |
| 확인 | sky --version |
sky check은 어느 클라우드에 자격증명이 있는지 보고합니다 — SkyPilot은 오직 그것들만 고려합니다.
작업 정의
# 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
| 필드 | 목적 |
|---|
resources.accelerators | GPU 타입 및 개수 (A100:8, H100:4) |
use_spot | 중단 가능 인스턴스 사용 |
any_of / ordered | 후보 클라우드/지역 |
workdir | 클러스터로 동기화된 로컬 디렉터리 |
setup | 클러스터당 한 번 실행 |
run | 실제 작업 |
num_nodes | 다중 노드 훈련 |
핵심 명령어
| 명령어 | 설명 |
|---|
sky launch -c mycluster train.yaml | 제공 및 실행 |
sky exec mycluster train.yaml | 기존 클러스터에서 다시 실행 |
sky status | 클러스터 및 비용 나열 |
sky logs mycluster | 작업 로그 스트림 |
sky queue mycluster | 작업 큐 표시 |
sky down mycluster | 종료 (지불 중지) |
sky stop mycluster | 중지하지만 디스크 유지 |
관리형 작업 (복구와 함께 스팟)
# 스팟 인스턴스에서 긴 훈련 실행, 선점에 자동 복구
sky jobs launch -n llama-sft train.yaml
| 명령어 | 목적 |
|---|
sky jobs launch | 관리형 작업 제출 |
sky jobs queue | 관리형 작업 나열 |
sky jobs logs -n NAME | 로그 꼬리 |
sky jobs cancel -n NAME | 취소 |
관리형 작업은 스팟 GPU를 훈련에 사용 가능하게 만드는 기능입니다: 선점에 SkyPilot은 다른 곳에 다시 제공하고 체크포인트에서 재개하므로 다중 일 실행은 중단에 생존합니다.
비용 최적화
| 메커니즘 | 효과 |
|---|
| 크로스 클라우드 검색 | 가장 저렴한 매칭 옵션 선택 |
use_spot: true | 종종 60-90% 저렴 |
sky show-gpus | 현재 가격/클라우드별 가용성 |
| Autostop | sky autostop -i 10 mycluster 유휴 클러스터 종료 |
sky down | 가장 중요한 습관 — 유휴 GPU가 주요 낭비 |
# 어느 A100 용량이 존재하고 어느 가격에서?
sky show-gpus A100
모델 제공
# 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는 복제본, 상태 검사, 클라우드 전체 자동 스케일을 추가합니다 — vLLM로 가장 저렴한 사용 가능 GPU에 제공할 때 유용합니다.
Kubernetes 백엔드
| 기능 | 참고 |
|---|
| 기존 클러스터 | cloud: kubernetes 자신의 K8s를 대상 |
| 혼합 | 온프레미스 K8s와 클라우드 버스트 결합 |
| GPU 스케줄링 | 표준 K8s GPU 리소스 사용 |
| 클라우드 자격증명 필요 없음 | 순수 온프레미스 사용 |
SkyPilot vs 대안
| 측면 | SkyPilot | Ray | 클라우드 원어민 (SageMaker/Vertex) |
|---|
| 다중 클라우드 | 핵심 기능 | 가능, 수동 | 단일 제공자 |
| 스팟 복구 | 빌트인 | 수동 | 다양함 |
| 잠금 | 없음 (평문 YAML) | 프레임워크 | 높음 |
| 최적 대상 | 어디서나 가장 저렴한 GPU | 분산 Python 앱 | 심층 단일 클라우드 통합 |
Axolotl, TorchTitan과 같은 훈련 스택 및 vLLM를 통한 제공과 페어링합니다.
리소스