SkyPilot is a system designed to run, manage, and scale AI workloads on any AI infrastructure. It offers a unified interface to leverage reserved GPUs, Kubernetes clusters, Slurm clusters, or over 20 cloud providers, abstracting away complex infrastructure burdens. The `skypilot-nightly` package provides the very latest features, bug fixes, and development builds, focusing on maximizing cost savings, GPU availability, and providing managed execution for AI tasks.
pip install skypilot-nightlyVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates how to define a simple task using the SkyPilot Python SDK and launch it on AWS. The task runs a basic 'Hello, SkyPilot!' command. SkyPilot automatically handles resource provisioning, setup, and execution. You can omit the `cloud=sky.AWS()` specification to allow SkyPilot to automatically select the cheapest and most available cloud resource.
Upgrade your Python environment to 3.9, 3.10, 3.11, 3.12, or 3.13. Create a new virtual environment if necessary.
Migrate to `sky.jobs.queue(version=2)` to receive richer job metadata as dictionaries.
Follow the API server upgrade instructions provided in the release notes or documentation for your specific deployment method (e.g., Helm upgrade).
For stability, use the stable `skypilot` package (`pip install skypilot`). If using nightly, frequently check GitHub issues and releases for updates and potential workarounds.
Reduce concurrent SkyPilot operations. For team deployments or high-concurrency use cases, consider configuring SkyPilot to use an external PostgreSQL database instead of SQLite.
Ensure your private SSH key (`~/.ssh/id_rsa` or similar) has `600` permissions (`chmod 600 ~/.ssh/id_rsa`) and the `.ssh` directory has `700` permissions (`chmod 700 ~/.ssh`).
Restart the SkyPilot API server (`sky api stop; sky api start`). If the issue persists with heavy usage, configure SkyPilot to use an external PostgreSQL database for the API server. For temporary local fixes, reduce concurrent `sky` commands.
Upgrade your `skypilot-nightly` installation to the latest version, which should include the necessary `uvicorn` dependency pinning or compatibility fixes. If not, manually pin `uvicorn<0.36.0`.
Set appropriate permissions: `chmod 700 ~/.ssh/` for the directory and `chmod 600 ~/.ssh/id_rsa` for your private key. Ensure the public key on the remote server (`~/.ssh/authorized_keys`) also has correct permissions (`chmod 600 ~/.ssh/authorized_keys`).
Ensure that the Kubernetes service account SkyPilot uses (or your `kubeconfig` context if running locally) has the necessary `Role` and `RoleBinding` permissions to manage resources (pods, services, deployments, etc.) in the target namespace. For transient errors, SkyPilot v0.10.3.post2 and later include retries and fallbacks. Verify `kubectl get nodes` works without errors.