综合介绍
SkyPilot 是一个由加州伯克利大学 Sky Computing Lab 发起的开源框架,旨在帮助用户在任何云端基础设施上高效运行 AI 和批处理任务。它支持超过 14 种云服务(包括 AWS、GCP、Azure 等)以及 Kubernetes,提供统一的执行接口、显著的成本节约和高 GPU 可用性。SkyPilot 通过简单的 YAML 或 Python API 配置,让用户无需修改代码即可将任务部署到云端,自动选择最优资源并实现故障容错。自 2022 年发布以来,该项目已吸引超过 1 百万次下载,并在 GitHub 上获得 7k+ 星标,广泛应用于机器学习模型训练、超参数调优和生物信息学等领域。
功能列表
- 多云任务部署:支持在 AWS、GCP、Azure 等 14+ 云端以及 Kubernetes 上运行任务,避免单一云厂商锁定。
- 成本优化:自动选择最便宜的云区域或实例(如按需或 Spot 实例),实现高达 3-6.5 倍的成本节约。
- GPU/TPU 支持:无缝调度和管理 GPU(如 NVIDIA A100)和 TPU 资源,提升计算效率。
- 自动故障恢复:遇到容量不足或抢占时,自动切换到其他云或区域,确保任务不中断。
- 代码与数据同步:将本地代码和数据自动同步至云端集群,简化部署流程。
- 任务队列管理:支持大规模并发任务(如 2000+ 作业),适用于超参数调优等场景。
- 服务部署(SkyServe):提供 HTTPS 支持和负载均衡策略,轻松部署 AI 模型服务。
- 预留实例支持:整合 AWS Capacity Blocks、GCP Dynamic Workload Scheduler 等预留资源。
使用帮助
SkyPilot 的安装与使用流程简单明了,适合开发者、研究人员和企业用户。下面详细介绍如何安装、配置和操作 SkyPilot 的核心功能。
安装流程
- 环境准备
确保本地已安装 Python 3.8 或更高版本,并具备pip
包管理工具。推荐使用虚拟环境以避免依赖冲突:python3 -m venv skypilot_env source skypilot_env/bin/activate
- 安装 SkyPilot
通过pip
安装最新版本:pip install -U "skypilot[all]"
其中
[all]
表示安装所有云支持的依赖。如果仅需特定云(如 AWS),可替换为skypilot[aws]
。 - 云端认证
配置目标云的凭证。以 AWS 为例:- 安装 AWS CLI:
pip install awscli
- 配置凭证:
aws configure
,输入 Access Key 和 Secret Key。
对于其他云(如 GCP、Azure),参考官方文档完成类似配置。
- 安装 AWS CLI:
- 验证安装
运行以下命令检查安装是否成功:sky check
输出会显示已启用的云服务状态。
主要功能操作流程
1. 创建任务配置文件
SkyPilot 使用 YAML 文件定义任务。以训练 PyTorch 模型为例,创建 train.yaml
:
resources:
accelerators: A100:1 # 使用 1 个 A100 GPU
num_nodes: 1 # 单节点
workdir: ~/my_project # 同步本地项目目录
setup: | # 安装依赖
pip install torch torchvision
run: | # 运行任务
python main.py --epochs 10
resources
:指定计算资源,如 GPU 类型和数量。workdir
:本地代码目录,自动同步至云端。setup
:运行前的准备命令。run
:任务执行命令。
2. 启动任务
在终端运行:
sky launch -c my-cluster train.yaml
-c my-cluster
:命名集群,便于后续管理。- SkyPilot 会自动选择最优云端资源并启动任务。
3. 查看任务状态
检查集群状态:
sky status
显示所有运行中的集群及其资源使用情况。
4. 成本优化与 Spot 实例
使用 Spot 实例降低成本:
sky launch -c my-spot-cluster train.yaml --use-spot
SkyPilot 会自动管理 Spot 实例中断并恢复任务。
5. 部署服务(SkyServe)
以部署 LLaMA 模型为例,创建 serve.yaml
:
resources:
accelerators: A100:1
service:
replica: 2 # 2 个副本
ports: 8080 # 服务端口
run: |
python serve.py --model llama
启动服务:
sky serve up serve.yaml -n llama-service
访问生成的 HTTPS 端点即可使用服务。
6. 大规模并发任务
运行 2000+ 任务(如超参数调优):
sky jobs launch -c my-jobs train.yaml --num-jobs 2000
SkyPilot 自动分配资源并管理队列。
特色功能操作详解
多云切换
若 AWS 无可用 A100,可指定其他云:
sky launch -c my-cluster train.yaml --cloud gcp
或让 SkyPilot 自动选择最便宜的云:
sky launch -c my-cluster train.yaml --cloud cheapest
GPU 调度
查看可用 GPU 资源:
sky show-gpus
根据需求动态调整 resources
中的 accelerators
参数。
日志与调试
实时查看任务日志:
sky logs my-cluster
启用调试模式:
export SKYPILOT_DEBUG=1
sky launch -c my-cluster train.yaml
注意事项
- 凭证安全:确保云凭证文件(如
~/.aws
)权限正确,避免泄露。 - 资源释放:任务完成后手动关闭集群:
sky down my-cluster
- 文档支持:更多高级用法参考 SkyPilot 官方文档。
通过以上步骤,用户可快速上手 SkyPilot,高效运行 AI 和批处理任务。