快速入门#
本指南将引导您完成:
以简单的YAML格式定义任务
配置集群并运行任务
使用核心的SkyPilot CLI命令
在继续本指南之前,请确保先完成安装说明。
你好,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
请参阅此处以获取所有可能的集群状态列表。
SSH 进入集群#
只需运行 ssh 即可登录到集群:
$ 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
要将文件上传到集群,请参阅同步代码和工件。
停止/终止集群#
完成后,使用sky stop停止集群:
$ sky stop mycluster
要终止集群,请运行 sky down:
$ sky down mycluster
注意
停止集群不会丢失附加磁盘上的数据(实例的计费将停止,而磁盘仍将收费)。这些磁盘在重新启动集群时将重新附加。
终止集群将删除所有相关资源(所有计费停止),并且附加磁盘上的任何数据都将丢失。已终止的集群无法重新启动。
在CLI参考中查找更多管理集群生命周期的命令。
扩展#
到目前为止,我们已经使用SkyPilot的CLI来提交工作并与单个集群进行交互。 当你准备好扩展时(例如,运行10个或100个任务),SkyPilot支持两种选项:
在你的集群上使用
sky exec排队多个作业(参见 Job Queue);使用Managed Spot Jobs在自动管理的spot实例上运行 (用户无需与底层集群交互)
托管Spot作业运行在更便宜的Spot实例上,具有自动抢占恢复功能。尝试使用:
$ sky jobs launch --use-spot hello_sky.yaml
下一步#
恭喜!在这个快速入门中,您已经启动了一个集群,运行了一个任务,并与SkyPilot的CLI进行了交互。
下一步:
调整教程:AI 训练以开始在 SkyPilot 上运行您自己的项目!
要了解更多信息,请尝试在Jupyter笔记本中使用SkyPilot教程
我们邀请您在文档的其余部分探索SkyPilot的独特功能。