SkyPilot:一键在任意云上运行 LLMs
在云计算日益普及的今天,如何有效、经济且无缝地在各种云平台上运行大语言模型(LLMs)、AI 和批处理作业成为了迫切的需求。SkyPilot 项目应运而生,旨在解决这一核心问题。它不仅抽象并简化了云基础设施操作,为用户提供了在任何云平台上轻松部署和扩展作业的能力,还通过自动获取多个云平台 GPU 的实时价格并进行实时比价,帮助用户选择最优的云平台来运行自己的 Job。这样做极大地降低了成本,提供了高度的 GPU 可用性,让云基础设施管理变得轻而易举。这样做极大的满足了市场对高效、低成本云资源利用的需求。通过 SkyPilot,企业和开发者能够最大化地利用 GPU,进一步推动了人工智能和大数据处理技术的发展,为云计算市场带来了新的可能。
SkyPilot
SkyPilot 是一个为大型语言模型(LLMs)、AI 和批处理作业设计的框架,能在任何云平台上运行。它是一个 CLI 工具,对于熟悉命令行的用户来说,使用起来非常方便。仅通过一行命令就能启动一个完整的云环境,而无需关心具体的 VM、网络或安全组配置。相较于使用 Terraform 进行自行配置,SkyPilot 提供了更快的速度和更好体验。最重要的是,它允许用户在多个云平台上使用同一套配置,大大节省了学习和适配的时间。
SkyPilot 主要优势如下:
- 云基础设施抽象:简化在任何云上启动作业和集群的过程,便于扩展和对象存储访问。
- 最大化 GPU 可用性:自动在所有可访问的区域和云中分配资源,实现故障的自动切换。
- 降低云成本:采用 spot VMs 节省成本,自动选择最便宜的资源并自动关闭空闲集群。
- 无代码更改:兼容现有的 GPU、TPU 和 CPU 工作负载,无需改动代码。
除了上述优点,SkyPilot 的核心功能还在于简化云基础设施的管理。其核心功能包括:
- Managed Spot:通过优化资源分配,利用 spot VMs(临时虚拟机),为用户带来3-6倍的成本节省。并在遭遇预占事件时保证作业稳定运行。
- Smarter Optimizer:智能选择最便宜的虚拟机、区域或云平台,进一步节省用户成本。
- 其他功能和特点:
- 跨云平台支持:支持在 AWS、Azure、GCP 等多个云平台上运行。
- 简易扩展:轻松地运行多个作业,这些作业将自动管理,确保资源的有效利用。
- 对象存储访问:简化对 S3、GCS、R2 等对象存储的访问,方便数据管理和存储。
目前支持的云提供商包括 AWS、Azure、GCP、Lambda Cloud、IBM、Samsung、OCI、Cloudflare 和 Kubernetes:

快速开始
下面以在 Azure 上部署 Llama-2 Chatbot 为例,介绍 SkyPilot 的使用方法。
安装
首先,确保您的系统中已安装了 Python 3.7 或更高版本。对于 Apple Silicon,建议使用 Python 3.8 或更高版本。以下是安装 SkyPilot 的步骤:
- 创建并激活一个新的 conda 环境(推荐,但非必需):
| |
- 使用 pip 安装 SkyPilot。你可以根据所使用的云服务提供商选择附加安装选项。例如,如果你想在 AWS 和 Azure 上使用 SkyPilot,你可以运行:
| |
或者,你可以选择安装所有可用的附加选项:
| |
此外,你还可以选择安装最新的 nightly 构建:
| |
或从源代码安装 SkyPilot:
| |
配置
安装完成后,需进行一些初步配置以连接到您的云服务提供商。这些配置步骤可能因云服务提供商而有所不同。整体配置流程相对简单。如果您已在本地配置了对应的云服务 CLI,可以使用以下命令检查 SkyPilot 是否可以正常访问:
| |
您会看到如下输出,显示每个云服务的访问状态:

接下来简单介绍 Azure 的配置方法,其他云的配置方法请参考 官方文档。
安装 Azure CLI
运行
az login命令以登录到 Azure CLI。运行
az account subscription list命令可以获取你账户下的subscription_id列表。运行
az account set -s <subscription_id>命令可以设置要使用的订阅。1 2 3 4# Login az login # Set the subscription to use az account set -s <subscription_id>最后再次运行
sky check以确认配置是否成功。
创建和运行 Llama-2 Chatbot
以下仅为简要步骤,详细操作请参考官方文档。
前提条件
访问此链接申请使用 Llama-2 模型。

从 huggingface 获取访问令牌,在 huggingface 生成只读访问令牌,并确保你的 huggingface 账户可以访问 Llama-2 模型。
在
chatbot-meta.yaml文件中填写获取的访问令牌。1 2 3envs: MODEL_SIZE: 7 HF_TOKEN: <your-huggingface-token>
使用 SkyPilot 运行 Llama-2 Chatbot
- 创建一个名为
chatbot-meta.yaml的新 YAML 文件,并添加以下内容:
| |
运行以下命令启动集群并执行任务:
1sky launch -c llama chatbot-meta.yaml
在上述步骤中,
llama是集群的名称,而chatbot-meta.yaml是任务配置文件。在几分钟内,SkyPilot 将在 Azure 的 V100 GPU 上完成集群的创建、配置和任务执行。打开新的终端,执行以下命令将本地
7681端口与集群中的7681端口绑定:1ssh -L 7681:localhost:7681 llama在浏览器中访问
http://localhost:7681并开始聊天体验!
停止并清理集群
任务完成后,可以使用以下命令来停止或彻底删除集群:
停止集群
1sky stop lama # or pass your custom name if you used "-c <other name>"重启已停止的集群并重新运行 Chatbot:
1sky launch chatbot-meta.yaml -c llama --no-setup使用
--no-setup旨在跳过 setup 步骤,因为停止的集群已保留了其磁盘内容。彻底删除集群:
1sky down llama # or pass your custom name if you used "-c <other name>"
清理完成后,您可以运行 sky status 来查看您在不同 regions/clouds 中的所有集群。
进阶使用
除了前述的基本使用方法,SkyPilot 还拥有众多高级功能,下面简要介绍其中一些。
显示支持的 GPU/TPU/accelerators 及其价格
您可以在任务 YAML 的 accelerators 字段或在 CLI 的 --gpus flag 中设置 GPU/TPU/accelerators 的名称和数量。例如,若支持列表显示 8xV100,您可以在 accelerators 字段中使用 V100:8。
不同公有云给出的 GPU 型号及其价格十分混乱,SkyPilot 将相同型号的 GPU 及价格进行了统一的整理与命名,并提供了 show-gpus 命令来显示当前支持的 GPU/TPU/accelerators 及其价格:
| |
Public IP 与 Ports
如果您你喜欢使用 ssh 或 gradio 的方式来访问您的集群,可以使用以下命令来获取集群的 Public IP:
| |
同时,如果您希望开放一些端口,则可以使用 resources.ports 来开放指定端口:
| |
或者直接在 CLI 命令中使用 --ports 来指定:
| |
快速启动 GPU/CPU/TPU 实例
SkyPilot 还提供交互式节点,即用户在公有云上快速拉起指定单节点 VM,只需简单的 CLI 命令,无需 YAML 配置文件即可快速访问实例。
sky gpunodesky cpunodesky tpunode
| |
显示已经运行集群的预估成本
SkyPilot 同样提供了一个命令来显示已经运行集群的预估成本:
| |
注意:该 CLI 还属于试验性质。估计成本是根据群集状态的本地缓存计算的,可能并不准确。
获取 Azure 与 GCP 全球区域信息
默认情况下,SkyPilot 支持 AWS 上的大部分全球区域,仅支持 GCP 和 Azure 上的美国区域。如果您指定美国以外的 region,将会得到如下报错:
| |
如果您想使用所有全球地区,需要运行额外的命令来获取 Azure 和 GCP 的全球区域信息:
| |
更多内容见 Frequently Asked Questions。
结语
SkyPilot 是一个强大的工具,让云基础设施的管理变得前所未有的简单和高效。通过 SkyPilot,用户可以轻松地在各大云平台上部署和扩展 AI 和批处理作业,而无需关心底层的配置细节。SkyPilot 还带有众多高级功能,为企业和开发者提供了一个完整的、高度灵活的解决方案,满足了他们对高效、低成本云资源利用的需求。在未来,随着更多的云平台和技术加入,我们期待 SkyPilot 能为用户带来更多的便利和价值。