Installation
Contents
Installation¶
Install SkyPilot using pip:
$ # SkyPilot requires python >= 3.6.
$ # Recommended: use a new conda env to avoid package conflicts.
$ conda create -y -n sky python=3.7
$ conda activate sky
$ # Choose an extra (default: [aws])
$ pip install skypilot
$ # pip install "skypilot[gcp]"
$ # pip install "skypilot[azure]"
$ # pip install "skypilot[all]"
SkyPilot currently supports three major cloud providers: AWS, GCP, and Azure. If you
only have access to certain clouds, use any combination of
"[aws,azure,gcp]"
(e.g., "[aws,gcp]"
) to reduce the
dependencies installed.
You may also install SkyPilot from source.
$ git clone https://github.com/skypilot-org/skypilot.git
$ cd skypilot
$ pip install ".[all]"
Note
For Macs, macOS >= 10.15 is required to install SkyPilot. Apple Silicon-based devices (e.g. Apple M1) must run conda install grpcio=1.43.0
prior to installing SkyPilot.
Note
As an alternative to installing SkyPilot on your laptop, we also provide a Docker image as a quick way to try out SkyPilot. See instructions below on running SkyPilot in a container.
Cloud account setup¶
Configure access to at least one cloud:
AWS
To get the AWS access key required by aws configure
, please go to the AWS IAM Management Console and click on the “Access keys” dropdown (detailed instructions here). The Default region name [None]: and Default output format [None]: fields are optional and can be left blank to choose defaults.
$ # Install boto
$ pip install boto3
$ # Configure your AWS credentials
$ aws configure
Note: If you are using AWS IAM Identity Center (AWS SSO), you will need pip install awscli>=1.27.10
. See here for instructions on how to configure AWS SSO.
GCP
$ pip install google-api-python-client
$ 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
If running conda install -c conda-forge google-cloud-sdk
produces the error “RemoveError: ‘requests’ is a dependency of conda and cannot be removed from conda’s operating environment”, try conda update --force conda
first and rerun the command.
Note: if you encounter Authorization Error (Error 400: invalid_request) with the url generated by gcloud auth login
, try installing the latest version of the Google Cloud SDK (e.g., with conda install -c conda-forge google-cloud-sdk
) on your local machine (which opened the browser) and rerun the command.
Note
If you are using multiple GCP projects, list all the configs by gcloud config configurations list
and activate one by gcloud config configurations activate <CONFIG_NAME>
(See GCP docs).
Azure
$ # Login
$ az login
$ # Set the subscription to use
$ az account set -s <subscription_id>
Hint: run az account subscription list
to get a list of subscription IDs under your account.
Verifying cloud setup
After configuring the desired clouds, you can optionally run sky check
to verify that credentials are correctly set up:
$ sky check
This will produce a summary like:
Checking credentials to enable clouds for SkyPilot.
AWS: enabled
GCP: enabled
Azure: enabled
SkyPilot will use only the enabled clouds to run tasks. To change this, configure cloud credentials, and run sky check.
Requesting quotas for first time users¶
If your cloud account has not been used to launch instances before, the respective quotas are likely set to zero or a low limit. This is especially true for GPU instances.
Please follow Requesting Quota Increase to check quotas and request quota increases before proceeding.
Quick alternative: trying in Docker¶
As a quick alternative to installing SkyPilot on your laptop, we also provide a Docker image with SkyPilot and its dependencies installed for users to quickly try out SkyPilot. You can simply run:
$ docker run -td --name sky --rm -v "$HOME/.sky:/root/.sky:rw" -v "$HOME/.aws:/root/.aws:rw" -v "$HOME/.config/gcloud:/root/.config/gcloud:rw" -v "$HOME/.azure:/root/.azure:rw" public.ecr.aws/a9w6z7w5/sky:latest
$ docker exec -it sky /bin/bash
If your cloud CLIs are already setup, your credentials will be mounted to the container and you can proceed to Quickstart. Else you can follow the instructions in Cloud account setup inside the container to setup your cloud accounts.
If you exit from the shell in the container, the container will keep running
in the background. You can start a new shell with docker exec -it sky /bin/bash
.
Once you are done with experimenting with sky, remember to delete any clusters and storage resources you may have created using the following commands:
# Run inside the container
$ sky down -a -y
$ sky storage delete -a -y
Finally, you can stop the container with:
$ docker stop sky
Enabling shell completion¶
SkyPilot supports shell completion for Bash (Version 4.4 and up), Zsh and Fish. This is only available for click
versions 8.0 and up (use pip install click==8.0.4
to install).
To enable shell completion after installing SkyPilot, you will need to modify your shell configuration.
SkyPilot automates this process using the --install-shell-completion
option, which you should call using the appropriate shell name or auto
:
$ sky --install-shell-completion auto
$ # sky --install-shell-completion zsh
$ # sky --install-shell-completion bash
$ # sky --install-shell-completion fish
Shell completion may perform poorly on certain shells and machines.
If you experience any issues after installation, you can use the --uninstall-shell-completion
option to uninstall it, which you should similarly call using the appropriate shell name or auto
:
$ sky --uninstall-shell-completion auto
$ # sky --uninstall-shell-completion zsh
$ # sky --uninstall-shell-completion bash
$ # sky --uninstall-shell-completion fish