安装#
注意
对于 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。
创建一个计费账户。
创建一个项目。
创建一个API 密钥。
下载并安装cudoctl 命令行工具
运行
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_id
和 secret_access_key
,请使用 IBM Web 控制台
从Web 控制台创建/选择一个 COS 实例。
在“服务凭据”选项卡中,单击“新建凭据”并切换“包含 HMAC 凭据”。
将“secret_access_key”和“access_key_id”复制到文件。
最后,通过以下方式安装rclone:curl 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
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