Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

SkyPilot

DocumentationGitHub ReleaseJoin SlackDownloads

Run AI on Any Infra — Unified, Faster, Cheaper


🔥 News 🔥

  • [Apr 2025] Spin up Qwen3 on your cluster/cloud: example
  • [Mar 2025] Run and serve Google Gemma 3 using SkyPilot example
  • [Feb 2025] Prepare and serve Retrieval Augmented Generation (RAG) with DeepSeek-R1: blog post, example
  • [Feb 2025] Run and serve DeepSeek-R1 671B using SkyPilot and SGLang with high throughput: example
  • [Feb 2025] Prepare and serve large-scale image search with vector databases: blog post, example
  • [Jan 2025] Launch and serve distilled models from DeepSeek-R1 and Janus on Kubernetes or any cloud: R1 example and Janus example
  • [Oct 2024] 🎉 SkyPilot crossed 1M+ downloads 🎉: Thank you to our community! Twitter/X
  • [Sep 2024] Point, launch and serve Llama 3.2 on Kubernetes or any cloud: example

LLM Finetuning Cookbooks: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 example and blog; Llama 3.1 example and blog


SkyPilot is an open-source framework for running AI and batch workloads on any infra.

SkyPilot is easy to use for AI users:

  • Quickly spin up compute on your own infra
  • Environment and job as code — simple and portable
  • Easy job management: queue, run, and auto-recover many jobs

SkyPilot unifies multiple clusters, clouds, and hardware:

SkyPilot cuts your cloud costs & maximizes GPU availability:

  • Autostop: automatic cleanup of idle resources
  • Spot instance support: 3-6x cost savings, with preemption auto-recovery
  • Intelligent scheduling: automatically run on the cheapest & most available infra

SkyPilot supports your existing GPU, TPU, and CPU workloads, with no code changes.

Install with pip:

# Choose your clouds:
pip install -U "skypilot[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

To get the latest features and fixes, use the nightly build or install from source:

# Choose your clouds:
pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,nebius]"

SkyPilot

Current supported infra: Kubernetes, AWS, GCP, Azure, OCI, Lambda Cloud, Fluidstack, RunPod, Cudo, Digital Ocean, Paperspace, Cloudflare, Samsung, IBM, Vast.ai, VMware vSphere, Nebius.

SkyPilot

Getting started

You can find our documentation here.

SkyPilot in 1 minute

A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.

Once written in this unified interface (YAML or Python API), the task can be launched on any available cloud. This avoids vendor lock-in, and allows easily moving jobs to a different provider.

Paste the following into a file my_task.yaml:

resources:
accelerators: A100:8 # 8x NVIDIA A100 GPUnum_nodes: 1# Number of VMs to launch# Working directory (optional) containing the project codebase.# Its contents are synced to ~/sky_workdir/ on the cluster.workdir: ~/torch_examples# Commands to be run before executing the job.# Typical use: pip install -r requirements.txt, git clone, etc.setup: | cd mnist pip install -r requirements.txt# Commands to run as a job.# Typical use: launch the main program.run: | cd mnist python main.py --epochs 1

Prepare the workdir by cloning:

git clone https://github.com/pytorch/examples.git ~/torch_examples

Launch with sky launch (note: access to GPU instances is needed for this example):

sky launch my_task.yaml

SkyPilot then performs the heavy-lifting for you, including:

  1. Find the lowest priced VM instance type across different clouds
  2. Provision the VM, with auto-failover if the cloud returned capacity errors
  3. Sync the local workdir to the VM
  4. Run the task's setup commands to prepare the VM for running the task
  5. Run the task's run commands

See Quickstart to get started with SkyPilot.

Runnable examples

See SkyPilot examples that cover: development, training, serving, LLM models, AI apps, and common frameworks.

Latest featured examples:

TaskExamples
TrainingPyTorch, DeepSpeed, Finetune Llama 3, NeMo, Ray, Unsloth, Jax/TPU
ServingvLLM, SGLang, Ollama
ModelsDeepSeek-R1, Llama 3, CodeLlama, Qwen, Mixtral
AI appsRAG, vector databases (ChromaDB, CLIP)
Common frameworksAirflow, Jupyter

Source files and more examples can be found in llm/ and examples/.

More information

To learn more, see SkyPilot Overview, SkyPilot docs, and SkyPilot blog.

Case studies and integrations: Community Spotlights

Follow updates:

Read the research:

SkyPilot was initially started at the Sky Computing Lab at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see Concept: Sky Computing.

Questions and feedback

We are excited to hear your feedback:

For general discussions, join us on the SkyPilot Slack.

Contributing

We welcome all contributions to the project! See CONTRIBUTING for how to get involved.

About

SkyPilot: Run AI and batch jobs on any infra (Kubernetes or 16+ clouds). Get unified execution, cost savings, and high GPU availability via a simple interface.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages