SkyPilot 多云编排是一份关于使用 SkyPilot 跨云运行机器学习工作负载并自动优化成本的综合指南。
用途
在以下情况使用 SkyPilot:跨多个云(AWS、GCP、Azure 等)运行 ML 工作负载;需要自动选择云/区域以优化成本;在抢占式实例上运行长作业并自动恢复;管理分布式多节点训练;希望为 20 多个云服务商提供统一接口;需要避免厂商锁定。
如果场景更简单,可考虑替代方案:Modal 适合更简单的无服务器 GPU 与 Python 原生 API;RunPod 适合单云持久 Pod;Kubernetes 适合已有 K8s 基础设施;Ray 适合纯 Ray 编排。
主要能力
- 多云:AWS、GCP、Azure、Kubernetes、Lambda、RunPod 等 20 多个服务商
- 成本优化:自动选择最便宜的云/区域
- 抢占式实例:节省 3-6 倍成本并自动恢复
- 分布式训练:多节点作业与 gang scheduling
- 托管作业:自动恢复、检查点、容错
- Sky Serve:带自动扩缩容的模型服务
使用方式
安装:
pip install "skypilot[aws,gcp,azure,kubernetes]"
验证云凭证
sky check
Hello World 示例,创建 hello.yaml:
resources: accelerators: T4:1
run: | nvidia-smi echo "Hello from SkyPilot!"
启动:
sky launch -c hello hello.yaml
SSH 到集群
ssh hello
终止
sky down hello
任务 YAML 结构示例:
name: my-task
resources: cloud: aws region: us-west-2 accelerators: A100:4 cpus: 8+ memory: 32+ use_spot: true disk_size: 256
num_nodes: 2
workdir: .
setup: | pip install -r requirements.txt
run: | python train.py
常用命令:sky launch 启动集群并运行任务;sky exec 在已有集群运行任务;sky status 查看集群状态;sky stop 停止集群(保留状态);sky down 终止集群;sky logs 查看任务日志;sky queue 查看作业队列;sky jobs launch 启动托管作业;sky serve up 部署服务端点。
GPU 配置支持 T4、L4、A10G、L40S、A100、A100-80GB、H100、V100、TPU-v4-8 等,并可通过 any_of 设置回退云。抢占式实例可设置 use_spot: true 与 spot_recovery: FAILOVER。
分布式训练使用 num_nodes 指定节点数,并通过环境变量 SKYPILOT_NODE_RANK、SKYPILOT_NODE_IPS、SKYPILOT_NUM_NODES、SKYPILOT_NUM_GPUS_PER_NODE 进行编排。
托管作业支持抢占恢复与检查点,通过 sky jobs launch、sky jobs queue、sky jobs logs、sky jobs cancel 管理。
文件挂载支持本地同步、S3/GCS 云存储,模式包括 MOUNT(流式读取)、COPY(预取到磁盘)、MOUNT_CACHED(缓存并异步上传)。
Sky Serve 支持就绪探针、副本策略、自动扩缩容与负载均衡策略。
成本优化方面,不指定 cloud 时自动选择最便宜选项,可用 sky launch task.yaml --dryrun 查看优化器决策,也可通过 any_of 指定云偏好。
适用场景
常见工作流包括:带检查点的微调(使用 MOUNT_CACHED 挂载检查点目录并启用抢占式实例);超参数扫描(通过环境变量传入 RUN_ID、LEARNING_RATE、BATCH_SIZE 并批量启动作业)。
限制与常见问题
配额超限需申请配额增加或尝试不同区域;抢占式中断建议使用 sky jobs launch 自动恢复;文件同步慢可使用 MOUNT_CACHED 模式;GPU 不可用可使用 any_of 回退云。
资源
文档:https://docs.skypilot.co GitHub:https://github.com/skypilot-org/skypilot Slack:https://slack.skypilot.co 示例:https://github.com/skypilot-org/skypilot/tree/master/examples