快速入门#
本指南将带领您了解如何
以简单的 YAML 格式定义任务
配置集群并运行任务
使用核心 SkyPilot CLI 命令
在继续本指南之前,请务必先完成安装说明。
Hello, SkyPilot!#
让我们定义我们的第一个任务,一个简单的 Hello, SkyPilot! 程序。
在您的机器上的任何位置创建一个目录
$ mkdir hello-sky
$ cd hello-sky
将以下 YAML 内容复制到 hello_sky.yaml
文件中
resources:
# Optional; if left out, automatically pick the cheapest cloud.
cloud: aws
# 8x NVIDIA A100 GPU
accelerators: A100:8
# Working directory (optional) containing the project codebase.
# Its contents are synced to ~/sky_workdir/ on the cluster.
workdir: .
# Typical use: pip install -r requirements.txt
# Invoked under the workdir (i.e., can use its files).
setup: |
echo "Running setup."
# Typical use: make use of resources, such as running training.
# Invoked under the workdir (i.e., can use its files).
run: |
echo "Hello, SkyPilot!"
conda env list
这定义了一个包含以下组件的任务
resources
: 任务必须运行的云资源(例如,加速器、实例类型等)workdir
: 包含将同步到配置实例的项目代码的工作目录setup
: 任务执行前必须运行的命令(在工作目录下调用)run
: 运行实际任务的命令(在工作目录下调用)
所有这些字段都是可选的。
要启动集群并运行任务,请使用 sky launch
$ sky launch -c mycluster hello_sky.yaml
提示
首次运行可能需要几分钟。您可以随意继续阅读本指南。
提示
您可以使用 -c
标志为集群指定一个易于记忆的名称。如果未指定,将自动生成一个名称。
如果集群名称是 sky status
中显示的现有集群,则该集群将被重用。
sky launch
命令执行了大量繁重的工作
根据指定的资源约束选择合适的云和虚拟机;
在该云上配置(或重用)集群;
同步
workdir
;执行
setup
命令;以及执行
run
命令。
几分钟后,集群将完成配置并执行任务。输出将显示 Hello, SkyPilot!
和已安装的 Conda 环境列表。
在现有集群上执行任务#
一旦您拥有一个现有集群,使用 sky exec
在其上执行任务
$ sky exec mycluster hello_sky.yaml
sky exec
命令更轻量级;它会
同步
workdir
(以便任务可以使用更新的代码);并且执行
run
命令。
跳过配置和 setup
命令。
Bash 命令也支持,例如
$ sky exec mycluster python train_cpu.py
$ sky exec mycluster --gpus=A100:8 python train_gpu.py
对于交互式/监控命令,例如 htop
或 gpustat -i
,请改用 ssh
(见下文)以避免作业提交开销。
查看所有集群#
使用 sky status
在一个表中查看所有集群(跨区域和云平台)
$ sky status
如果您创建了多个集群,这可能会显示多个集群
NAME LAUNCHED RESOURCES COMMAND STATUS
mygcp 1 day ago 1x GCP(n1-highmem-8) sky launch -c mygcp --cloud gcp STOPPED
mycluster 4 mins ago 1x AWS(p4d.24xlarge, {'A100': 8}) sky exec mycluster hello_sky.yaml UP
此处列出了所有可能的集群状态。
访问仪表盘#
SkyPilot 提供了一个用于查看所有 SkyPilot 启动的集群和作业的仪表盘。要打开仪表盘,运行 sky dashboard
,它将自动在浏览器中打开一个仪表盘标签页。
从源码安装 SkyPilot 时启动仪表盘
如果您从源码安装 SkyPilot,在启动 API 服务器之前
运行以下命令生成仪表盘构建
# Install all dependencies
$ npm --prefix sky/dashboard install
# Build
$ npm --prefix sky/dashboard run build
使用
sky dashboard
启动仪表盘。
集群页面示例

托管作业页面示例

通过 SSH 连接到集群#
只需运行 ssh <cluster_name>
即可登录集群
$ ssh mycluster
多节点集群 也适用
# Assuming 3 nodes.
# Head node.
$ ssh mycluster
# Worker nodes.
$ ssh mycluster-worker1
$ ssh mycluster-worker2
以上通过在 ~/.ssh/config
中添加相应条目实现。
由于 SkyPilot 暴露了对集群的 SSH 访问,这意味着集群可以轻松地在 Visual Studio Code Remote 等工具中使用。
传输文件#
任务执行后,使用 rsync
或 scp
下载文件(例如,检查点)
$ rsync -Pavz mycluster:/remote/source /local/dest # copy from remote VM
有关上传文件到集群的信息,请参阅同步代码和 Artifacts。
停止/终止集群#
完成后,使用 sky stop
停止集群
$ sky stop mycluster
要终止集群,请运行 sky down
$ sky down mycluster
注意
停止集群不会丢失附加磁盘上的数据(实例的计费将停止,但磁盘仍会产生费用)。重新启动集群时,这些磁盘将重新附加。
终止集群将删除所有关联资源(所有计费停止),并且附加磁盘上的任何数据将丢失。已终止的集群无法重新启动。
在命令行界面参考中查找更多管理集群生命周期的命令。
横向扩展#
到目前为止,我们使用 SkyPilot 的 CLI 向单个集群提交工作并与之交互。当您准备好进行横向扩展(例如,运行数十、数百或数千个作业)时,使用托管作业在自动管理的集群上运行,甚至可以使用 spot 实例。
$ for i in $(seq 100) # launch 100 jobs
do sky jobs launch --use-spot --detach-run --yes -n hello-$i hello_sky.yaml
done
...
$ sky jobs dashboard # check the jobs status

SkyPilot 支持同时运行数千个托管作业。
异步执行#
所有 SkyPilot CLI 和 API 都是异步请求,这意味着您可以随时中断它们,让它们在后台运行。例如,如果您 KeyInterrupt(按下 Ctrl+C)sky launch
命令,集群将继续在后台进行配置
$ sky launch -c mycluster hello_sky.yaml
^C
⚙︎ Request will continue running asynchronously.
├── View logs: sky api logs 73d316ac
├── Or, visit: http://127.0.0.1:46580/api/stream?request_id=73d316ac
└── To cancel the request, run: sky api cancel 73d316ac
更多详细信息请参阅异步执行。
后续步骤#
恭喜!在本快速入门中,您已经启动了一个集群,运行了一个任务,并与 SkyPilot 的 CLI 进行了交互。
后续步骤
调整教程:AI 训练,开始在 SkyPilot 上运行您自己的项目!
查看任务 YAML 参考、命令行界面参考以及更多示例。
为多用户团队设置 SkyPilot:团队部署。
我们邀请您在剩余文档中探索 SkyPilot 的独特功能。