安装#

注意

对于 Mac,安装 SkyPilot 需要 macOS >= 10.15。基于 Apple Silicon 的设备(例如 Apple M1)在安装 SkyPilot 之前必须运行 pip uninstall grpcio; conda install -c conda-forge grpcio=1.43.0

使用 pip 安装 SkyPilot

# Recommended: use a new conda env to avoid package conflicts.
# SkyPilot requires 3.7 <= python <= 3.11.
conda create -y -n sky python=3.10
conda activate sky

# Choose your cloud:

pip install "skypilot[kubernetes]"
pip install "skypilot[aws]"
pip install "skypilot[gcp]"
pip install "skypilot[azure]"
pip install "skypilot[oci]"
pip install "skypilot[lambda]"
pip install "skypilot[runpod]"
pip install "skypilot[fluidstack]"
pip install "skypilot[paperspace]"
pip install "skypilot[cudo]"
pip install "skypilot[ibm]"
pip install "skypilot[scp]"
pip install "skypilot[vsphere]"
pip install "skypilot[nebius]"
pip install "skypilot[all]"
# Recommended: use a new conda env to avoid package conflicts.
# SkyPilot requires 3.7 <= python <= 3.11.
conda create -y -n sky python=3.10
conda activate sky

# Choose your cloud:

pip install "skypilot-nightly[kubernetes]"
pip install "skypilot-nightly[aws]"
pip install "skypilot-nightly[gcp]"
pip install "skypilot-nightly[azure]"
pip install "skypilot-nightly[oci]"
pip install "skypilot-nightly[lambda]"
pip install "skypilot-nightly[runpod]"
pip install "skypilot-nightly[fluidstack]"
pip install "skypilot-nightly[paperspace]"
pip install "skypilot-nightly[do]"
pip install "skypilot-nightly[cudo]"
pip install "skypilot-nightly[ibm]"
pip install "skypilot-nightly[scp]"
pip install "skypilot-nightly[vsphere]"
pip install "skypilot-nightly[nebius]"
pip install "skypilot-nightly[all]"
# Recommended: use a new conda env to avoid package conflicts.
# SkyPilot requires 3.7 <= python <= 3.11.
conda create -y -n sky python=3.10
conda activate sky

git clone https://github.com/skypilot-org/skypilot.git
cd skypilot

# Choose your cloud:

pip install -e ".[kubernetes]"
pip install -e ".[aws]"
pip install -e ".[gcp]"
pip install -e ".[azure]"
pip install -e ".[oci]"
pip install -e ".[lambda]"
pip install -e ".[runpod]"
pip install -e ".[fluidstack]"
pip install -e ".[paperspace]"
pip install -e ".[cudo]"
pip install -e ".[ibm]"
pip install -e ".[scp]"
pip install -e ".[vsphere]"
pip install -e ".[nebius]"
pip install -e ".[all]"

要使用多个云提供商,请结合使用 pip extras

pip install -U "skypilot[kubernetes,aws,gcp]"
pip install -U "skypilot-nightly[kubernetes,aws,gcp]"
pip install -e ".[kubernetes,aws,gcp]"

也支持通过 uv 进行安装

uv venv --seed --python 3.10
uv pip install --prerelease allow 'azure-cli>=2.65.0'
# Explicitly install prerelease dependency to work around https://docs.astral.sh/uv/pip/compatibility/#pre-release-compatibility
# Optionally only install specific clouds - e.g. 'skypilot[aws,gcp,kubernetes]'
uv pip install 'omegaconf>=2.4.0dev3' 'skypilot[all]'

另外,我们也提供了Docker 镜像,作为快速体验 SkyPilot 的方式。

注意

升级 SkyPilot 后,使用 sky api stop 来启用新版本。更多详情请参阅升级 SkyPilot

连接到远程 API 服务器(可选)#

如果您的团队已设置远程SkyPilot API 服务器,可以通过运行以下命令连接到它

sky api login

这是可选步骤——默认情况下,SkyPilot 会自动启动并使用本地 API 服务器。更多详情请参阅连接到 API 服务器

验证云访问#

安装后,运行 sky check 来验证凭据是否设置正确

sky check

这将产生如下摘要

Checking credentials to enable clouds for SkyPilot.
  AWS: enabled
  GCP: enabled
  Azure: enabled
  OCI: enabled
  Lambda: enabled
  Nebius: enabled
  RunPod: enabled
  Paperspace: enabled
  Fluidstack: enabled
  Cudo: enabled
  IBM: enabled
  SCP: enabled
  vSphere: enabled
  Cloudflare (for R2 object store): enabled
  Kubernetes: enabled

如果任何云提供商的凭据或依赖项缺失,sky check 将输出如何解决它们的提示。您也可以参阅下方的云账户设置部分。

提示

如果您的云提供商显示 enabled — 🎉 🎉 恭喜! 🎉 🎉 您现在可以前往快速入门开始使用 SkyPilot。

提示

要仅检查特定云提供商的凭据,请将云提供商作为参数传递:sky check aws gcp

设置 Kubernetes 或云提供商#

SkyPilot 支持大多数主要的云提供商。如果您的本地机器上已经设置了云访问,请运行 sky check验证 SkyPilot 是否可以访问您已启用的云提供商

否则,请按照以下指南配置对至少一个云提供商的访问。

Kubernetes#

SkyPilot 可以在本地或云托管的 Kubernetes 集群(例如 EKS、GKE)上运行工作负载。唯一的要求是在 ~/.kube/config 处有一个有效的 kubeconfig 文件。

# Place your kubeconfig at ~/.kube/config
mkdir -p ~/.kube
cp /path/to/kubeconfig ~/.kube/config

更多信息请参阅在 Kubernetes 上使用 SkyPilot

提示

如果您没有 Kubernetes 集群的访问权限,可以使用 sky local up 在您的笔记本电脑上部署本地 Kubernetes 集群

AWS#

要设置 AWS 凭据,请登录 AWS 控制台并为您自己创建一个访问密钥。如果您在 AWS 说明中没有看到显示的“安全凭据”链接,您可能正在使用 SSO;请参阅使用 AWS SSO

现在配置您的凭据。

# Configure your AWS credentials
aws configure
  • 对于 AWS Access Key ID,从控制台中复制“访问密钥”的值。

  • 对于 AWS Secret Access Key,从控制台中复制“Secret access key”的值。

  • 默认区域名称 [None]:默认输出格式 [None]:字段是可选的,可以留空以选择默认值。

要使用 AWS IAM Identity Center (AWS SSO),请参阅此处获取说明。

可选:要创建一个具有 SkyPilot 最低权限的新 AWS 用户,请参阅专用的 SkyPilot IAM 用户

GCP#

conda install -c conda-forge google-cloud-sdk

gcloud init

# Run this if you don't have a credentials file.
# This will generate ~/.config/gcloud/application_default_credentials.json.
gcloud auth application-default login

提示

如果您正在使用多个 GCP 项目,请通过 gcloud projects list 列出所有项目,并通过 gcloud config set project <PROJECT_ID> 激活其中一个(参阅 GCP 文档)。

常见的 GCP 安装错误

这里有一些常见的错误及其修复方法

  • 运行 conda install -c conda-forge google-cloud-sdk 时出现 RemoveError: 'requests' is a dependency of conda and cannot be removed from conda's operating environment — 请先运行 conda update --force conda,然后重新运行该命令。

  • 运行 gcloud auth login 生成的 URL 时出现 Authorization Error (Error 400: invalid_request) — 请在您的本地机器(打开浏览器的机器)上安装最新版本的 Google Cloud SDK(例如,使用 conda install -c conda-forge google-cloud-sdk),然后重新运行该命令。

可选:要在您的本地机器上创建和使用一个长期有效的服务账户,请参阅此处

可选:要创建一个具有 SkyPilot 最低权限的新 GCP 用户,请参阅创建 GCP 用户

Azure#

# Login
az login
# Set the subscription to use
az account set -s <subscription_id>

提示:运行 az account subscription list 以获取您账户下的订阅 ID 列表。

OCI#

要访问 Oracle Cloud Infrastructure (OCI),请按照本指南设置凭据。完成指南中的步骤后,~/.oci 文件夹应包含以下文件

~/.oci/config
~/.oci/oci_api_key.pem

~/.oci/config 文件应包含以下字段

[DEFAULT]
user=ocid1.user.oc1..aaaaaaaa
fingerprint=aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp
tenancy=ocid1.tenancy.oc1..aaaaaaaa
region=us-sanjose-1
# Note that we should avoid using full home path for the key_file configuration, e.g. use ~/.oci instead of /home/username/.oci
key_file=~/.oci/oci_api_key.pem

默认情况下,调配的节点将位于根区划 (compartment) 中。要指定根区划以外的区划,请创建/编辑文件 ~/.sky/config.yaml,并将区划的 OCID 放在其中,如下所示

oci:
  default:
    compartment_ocid: ocid1.compartment.oc1..aaaaaaaa......

Lambda Cloud#

Lambda Cloud 是一个提供低成本 GPU 的云提供商。要配置 Lambda Cloud 访问,请访问您的 Lambda 控制台上的API 密钥页面生成一个密钥,然后将其添加到 ~/.lambda_cloud/lambda_keys

mkdir -p ~/.lambda_cloud
echo "api_key = <your_api_key_here>" > ~/.lambda_cloud/lambda_keys

Paperspace#

Paperspace 是一个提供 GPU 加速虚拟机访问的云提供商。要配置 Paperspace 访问,请按照这些说明生成 API 密钥。通过以下方式添加 API 密钥

mkdir -p ~/.paperspace
echo "{'api_key' : <your_api_key_here>}" > ~/.paperspace/config.json

Vast#

Vast 是一个提供低成本 GPU 的云提供商。要配置 Vast 访问,请访问您的 Vast 控制台上的账户页面获取您的 API 密钥。然后,运行

pip install "vastai-sdk>=0.1.12"
echo "<your_api_key_here>" > ~/.vast_api_key

RunPod#

RunPod 是一家提供低成本 GPU 的专业 AI 云提供商。要配置 RunPod 访问,请访问您的 RunPod 控制台上的设置页面生成一个 API 密钥。然后,运行

pip install "runpod>=1.6.1"
runpod config

Fluidstack#

Fluidstack 是一个提供低成本 GPU 的云提供商。要配置 Fluidstack 访问,请访问您的 Fluidstack 控制台上的主页生成一个 API 密钥,然后将 API key 添加到 ~/.fluidstack/api_key

mkdir -p ~/.fluidstack
echo "your_api_key_here" > ~/.fluidstack/api_key

Cudo Compute#

Cudo Compute 提供由绿色能源驱动的低成本 GPU。

  1. 创建一个计费账户

  2. 创建一个项目

  3. 创建一个API 密钥

  4. 下载并安装cudoctl 命令行工具

  5. 运行 cudoctl init

    cudoctl init
       api key: my-api-key
       project: my-project
       billing account: my-billing-account
       context: default
      config file saved ~/.config/cudo/cudo.yml
    
    pip install "cudo-compute>=0.1.10"
    

如果您想将 SkyPilot 与不同的 Cudo Compute 账户或项目一起使用,请再次运行 cudoctl init

IBM#

要访问 IBM 的 VPC 服务,请将以下字段存储在 ~/.ibm/credentials.yaml

iam_api_key: <user_personal_api_key>
resource_group_id: <resource_group_user_is_a_member_of>

注意

现有镜像目前不提供开箱即用的 ML 工具。请遵循此文档中 IBM 部分的说明,创建包含必要工具(例如 CUDA)的私有镜像。

要访问 IBM 的 Cloud Object Storage (COS),请将以下字段添加到凭据文件中

access_key_id: <access_key_id>
secret_access_key: <secret_key_id>

要获取 access_key_idsecret_access_key,请使用 IBM Web 控制台

  1. Web 控制台创建/选择一个 COS 实例。

  2. 在“服务凭据”选项卡中,单击“新建凭据”并切换“包含 HMAC 凭据”。

  3. 将“secret_access_key”和“access_key_id”复制到文件。

最后,通过以下方式安装rclonecurl https://rclone.org/install.sh | sudo bash

注意

sky check 不会反映 IBM COS 的启用状态。IBM: enabled 仅保证 IBM VM 实例已启用。

SCP (Samsung Cloud Platform)#

Samsung Cloud Platform,简称 SCP,提供为企业客户优化的云服务。您可以在此处了解有关 SCP 的更多信息。

要配置 SCP 访问,您需要访问密钥以及您的任务将在其中运行的项目 ID。请访问您的 SCP 控制台上的访问密钥管理页面生成访问密钥,并访问项目概览页面获取项目 ID。然后,通过运行以下命令将它们添加到 ~/.scp/scp_credential

# Create directory if required
mkdir -p ~/.scp
# Add the lines for "access_key", "secret_key", and "project_id" to scp_credential file
echo "access_key = <your_access_key>" >> ~/.scp/scp_credential
echo "secret_key = <your_secret_key>" >> ~/.scp/scp_credential
echo "project_id = <your_project_id>" >> ~/.scp/scp_credential

注意

SCP 目前不支持多节点集群。

VMware vSphere#

要配置 VMware vSphere 访问,请将 vSphere 凭据存储在 ~/.vsphere/credential.yaml

mkdir -p ~/.vsphere
touch ~/.vsphere/credential.yaml

这是凭据文件中的配置示例

vcenters:
  - name: <your_vsphere_server_ip_01>
    username: <your_vsphere_user_name>
    password: <your_vsphere_user_passwd>
    skip_verification: true # If your vcenter have valid certificate then change to 'false' here
    # Clusters that can be used by SkyPilot:
    #   [] means all the clusters in the vSphere can be used by Skypilot
    # Instead, you can specify the clusters in a list:
    # clusters:
    #   - name: <your_vsphere_cluster_name1>
    #   - name: <your_vsphere_cluster_name2>
    clusters: []
  # If you are configuring only one vSphere instance, omit the following line.
  - name: <your_vsphere_server_ip_02>
    username: <your_vsphere_user_name>
    password: <your_vsphere_user_passwd>
    skip_verification: true
    clusters: []

配置 vSphere 凭据后,请确保已完成 vSphere 的必要准备工作。更多信息请参阅本指南:vSphere 云准备

Cloudflare R2#

Cloudflare 提供 R2,这是一种 S3 兼容的对象存储,没有任何出口费用。SkyPilot 可以将数据下载/上传到 R2 存储桶,并将其作为本地文件系统挂载到 SkyPilot 启动的集群上。要设置 R2 支持,请运行

# Install boto
pip install boto3
# Configure your R2 credentials
AWS_SHARED_CREDENTIALS_FILE=~/.cloudflare/r2.credentials aws configure --profile r2

在提示中,输入您的 R2 Access Key ID 和 Secret Access Key(参阅生成 R2 凭据的说明)。默认区域选择 auto,默认输出格式选择 json

AWS Access Key ID [None]: <access_key_id>
AWS Secret Access Key [None]: <access_key_secret>
Default region name [None]: auto
Default output format [None]: json

接下来,从您的 R2 控制面板获取您的账户 ID,并将其存储在 ~/.cloudflare/accountid 中,通过运行

mkdir -p ~/.cloudflare
echo <YOUR_ACCOUNT_ID_HERE> > ~/.cloudflare/accountid

注意

对 R2 的支持处于 Beta 阶段。请在 Github 上报告问题或通过 Slack 联系我们。

Nebius#

Nebius 是 AI 探索者的终极云平台。要配置 Nebius 访问,请安装并配置Nebius CLI

mkdir -p ~/.nebius
nebius iam get-access-token > ~/.nebius/NEBIUS_IAM_TOKEN.txt
nebius --format json iam whoami|jq -r '.user_profile.tenants[0].tenant_id' > ~/.nebius/NEBIUS_TENANT_ID.txt

可选:您可以在 ~/.sky/config.yaml 中指定特定的 project ID 和 fabric,参阅Nebius 的 project_id 和 fabric 配置

或者,您也可以使用服务账户访问 Nebius,参阅使用服务账户访问 Nebius

Nebius 也提供 对象存储,这是一种 S3 兼容的对象存储,没有任何出口费用。SkyPilot 可以将数据下载/上传到 Nebius 存储桶,并将其作为本地文件系统挂载到 SkyPilot 启动的集群上。要设置 Nebius 支持,请运行

# Install boto
pip install boto3
# Configure your Nebius Object Storage credentials
aws configure --profile nebius

在提示中,输入您的 Nebius Access Key ID 和 Secret Access Key(参阅生成 Nebius 凭据的说明)。默认区域选择 auto,默认输出格式选择 json

aws configure set aws_access_key_id $NB_ACCESS_KEY_AWS_ID --profile nebius
aws configure set aws_secret_access_key $NB_SECRET_ACCESS_KEY --profile nebius
aws configure set region <REGION> --profile nebius
aws configure set endpoint_url <ENDPOINT>  --profile nebius

初次使用用户请求配额#

如果您的云账户之前未用于启动实例,则相应的配额很可能设置为零或较低的限制。对于 GPU 实例尤其如此。

在继续之前,请按照请求增加配额来检查配额并请求增加配额。

在 Docker 中使用 SkyPilot#

作为在您的笔记本电脑上安装 SkyPilot 的快速替代方案,我们也提供了一个 Docker 镜像,其中 SkyPilot main 分支已自动克隆。您只需运行

# NOTE: '--platform linux/amd64' is needed for Apple silicon Macs
docker run --platform linux/amd64 \
  -td --rm --name sky \
  -v "$HOME/.sky:/root/.sky:rw" \
  -v "$HOME/.aws:/root/.aws:rw" \
  -v "$HOME/.config/gcloud:/root/.config/gcloud:rw" \
  berkeleyskypilot/skypilot

docker exec -it sky /bin/bash

如果您的云 CLI 已设置,您的凭据(AWS 和 GCP)将被挂载到容器中,您可以继续进行快速入门。否则,您可以在容器内部按照云账户设置中的说明来设置您的云账户。

当您完成 SkyPilot 的实验后,请记住使用以下命令删除您可能创建的所有集群和存储资源

# Run inside the container:
sky down -a -y
sky storage delete -a -y

最后,您可以使用以下命令停止容器

docker stop sky

有关开发容器镜像 berkeleyskypilot/skypilot-nightly 的更多详情,请参阅此处

启用 Shell 自动补全#

SkyPilot 支持 Bash(4.4 及以上版本)、Zsh 和 Fish 的 Shell 自动补全功能。此功能仅适用于 click 8.0 及以上版本(使用 pip install click==8.0.4 进行安装)。

安装 SkyPilot 后要启用 Shell 自动补全,您需要修改您的 Shell 配置。SkyPilot 使用 --install-shell-completion 选项自动化此过程,您应使用相应的 Shell 名称或 auto 调用它

sky --install-shell-completion auto
# sky --install-shell-completion zsh
# sky --install-shell-completion bash
# sky --install-shell-completion fish

Shell 自动补全在某些 Shell 和机器上可能表现不佳。如果在安装后遇到任何问题,您可以使用 --uninstall-shell-completion 选项卸载它,同样应使用相应的 Shell 名称或 auto 调用此选项。

sky --uninstall-shell-completion auto
# sky --uninstall-shell-completion zsh
# sky --uninstall-shell-completion bash
# sky --uninstall-shell-completion fish