安装#

注意

对于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[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[kubernetes]"
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[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[kubernetes]"
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 ".[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 ".[kubernetes]"
pip install -e ".[all]"

要使用多个云,请组合 pip 附加功能:

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

另外,我们还提供了一个Docker镜像作为快速尝试SkyPilot的方法。

验证云访问#

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

sky check

这将产生一个类似于以下的摘要:

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

SkyPilot will use only the enabled clouds to run tasks. To change this, configure cloud credentials, and run sky check.

如果缺少任何云的凭据或依赖项,sky check 将输出如何解决它们的提示。您也可以参考下面的云设置部分 below

提示

如果你的云显示 enabled — 🎉 🎉 恭喜你! 🎉 🎉 你现在可以前往 Quickstart 开始使用 SkyPilot。

提示

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

云账户设置#

SkyPilot 目前支持这些云服务提供商:AWS、GCP、Azure、OCI、Lambda Cloud、RunPod、Fluidstack、Paperspace、Cudo、IBM、SCP、VMware vSphere 和 Cloudflare(用于 R2 对象存储)。

如果您已经在本地机器上设置了云访问,请运行 sky check验证 SkyPilot 是否可以正确访问您启用的云服务

否则,请按照以下指南配置至少一个云的访问权限。

亚马逊网络服务 (AWS)#

要获取aws configure所需的AWS访问密钥,请前往AWS IAM管理控制台并点击“访问密钥”下拉菜单(详细说明此处)。默认区域名称 [无]:默认输出格式 [无]: 字段是可选的,可以留空以选择默认值。

# Install boto
pip install boto3

# Configure your AWS credentials
aws configure

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

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

谷歌云平台 (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 激活一个项目(参见GCP文档)。

Common GCP installation errors

以下是一些常见的错误及其修复方法:

  • RemoveError: 'requests' conda 的依赖项,无法从 conda 的操作环境中移除 当运行 conda install -c conda-forge google-cloud-sdk 时 — 先运行 conda update --force conda 然后重新运行命令。

  • Authorization Error (Error 400: invalid_request) 与由 gcloud auth login 生成的URL — 在本地机器(打开了浏览器的机器)上安装最新版本的 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列表。

Oracle 云基础设施 (OCI)#

要访问Oracle云基础设施(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中。要指定非根的compartment,请创建/编辑文件~/.sky/config.yaml,将compartment的OCID放入其中,如下所示:

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

Lambda 云#

Lambda Cloud 是一家提供低成本GPU的云服务提供商。要配置Lambda Cloud访问权限,请前往Lambda控制台的API Keys页面生成一个密钥,然后将其添加到~/.lambda_cloud/lambda_keys中:

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

论文空间#

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

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

RunPod#

RunPod 是一家专门提供低成本 GPU 的 AI 云服务提供商。要配置 RunPod 访问权限,请前往 RunPod 控制台的 设置 页面并生成一个 API 密钥。然后,运行:

pip install "runpod>=1.5.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 计算#

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

  1. 创建一个计费账户

  2. 创建一个项目

  3. 创建一个API Key

  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"
    

如果你想使用不同的Cudo Compute账户或项目来使用SkyPilot,请再次运行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的云对象存储(COS),请将以下字段附加到凭据文件中:

access_key_id: <access_key_id>
secret_access_key: <secret_key_id>

要获取 access_key_idsecret_access_key,请使用 IBM 网页控制台:

  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)#

三星云平台(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的必要准备工作。请参阅本指南以获取更多信息:Cloud Preparation for 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 访问密钥 ID 和秘密访问密钥(参见生成 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仪表板获取您的Account ID并将其存储在~/.cloudflare/accountid中,使用以下命令:

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

注意

对R2的支持目前处于测试阶段。请在Github上报告问题,或在Slack上联系我们。

Kubernetes#

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

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

更多信息请参见SkyPilot on Kubernetes

首次用户申请配额#

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

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

快速替代方案:在Docker中尝试#

作为在笔记本电脑上安装SkyPilot的快速替代方案,我们还提供了一个Docker镜像,其中自动克隆了SkyPilot的主分支。 你可以简单地运行:

# 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