v0.5.0
skypilot-org/skypilotv0.5.0Feb 27, 2024by Michaelvll
AI Summary
SkyPilot v0.5.0 is a major release introducing SkyServe for deploying and scaling HTTP services across clouds, a new provisioner that is 2x faster and supports 100+ node clusters, comprehensive LLM serving recipes for models like Gemma, Mixtral, and Mistral, improved Kubernetes support with multi-node and custom image capabilities, and 4 new cloud providers (VMWare vSphere, RunPod, Fluidstack, and Cudo Compute).
Key Highlights
- SkyServe: New serving system for deploying and scaling AI models across multiple regions/clouds with autoscaling, load balancing, and rolling updates
- New provisioner: 2x faster provisioning with support for 100+ node clusters and reduced cloud dependencies
- LLM Recipes: Added support for 10+ models including Gemma, SGLang (5x throughput), Mixtral 8x7B, Mistral 7B, CodeLlama, vLLM, and TGI
- Kubernetes improvements: Multi-node support, open ports, custom images, H100 80GB support, and local cluster launching with `sky local up`
- 4 new cloud providers: VMWare vSphere, RunPod, Fluidstack, and Cudo Compute (now 13 total clouds)
Breaking Changes
- Deprecated `cpunode/gpunode/tpunode` and hidden `admin` command (#2800)
- Removed deprecated `Local` cloud - replaced by Kubernetes support (#3037, #3186)
New Features
- Multiple candidate resources for failover with `any_of` or `ordered` in resources configuration
- New provisioner with >2x speed improvement and 100+ node cluster support
- Best disk tier for optimal performance and cost
- 2x concurrent spot jobs support
- Storage mounting after cluster restart
- SkyServe autoscaling (rate-based, scale-to-zero)
- Rolling updates for existing services
- Environment variable support in services
- Override task configurations with CLI arguments
- GCP: Custom VPC support, private IP with proxy jump, L4 accelerator support
- AWS: Trainium accelerator support, job scheduling on Inferentia/Trainium
- Azure: Spot instances support, H100 support
- Kubernetes: Multi-node, open ports, custom images, H100 80GB, k3s/Rancher support
- CLI: `sky status --endpoints`, improved `sky show-gpus`, `--commit` and `--version` flags
- RunPod, Fluidstack, Cudo Compute, VMWare vSphere cloud integrations
Full Release Notes
## SkyPilot v0.5.0: SkyServe, New Provisioner, LLMs, Kubernetes, and More Clouds We are excited to release SkyPilot v0.5.0, where we introduce a significant amount of new features and enhancements, including: * SkyPilot Serving * New provisioner * LLM recipes for the latest open models and engines * Kubernetes support improvement * 4 new clouds (contributed by the cloud providers!) and more! ## Release Highlights ### **New Features** * [**Multiple candidate resources**](https://skypilot.readthedocs.io/en/latest/examples/auto-failover.html#multiple-candidate-resources): SkyPilot now supports multiple candidate resources for a single task (using multiple accelerators, `any_of` or `ordered` in `resources`), allowing users to significantly enlarge the resource pool and get higher availability. * [**New Provisioner**](https://docs.google.com/document/d/1oWox3qb3Kz3wXXSGg9ZJWwijoa99a3PIQUHBR8UgEGs/edit?usp=sharing): Provisioner gets a new implementation, which is **2x faster and more reliable** for supported clouds. Support launching clusters with more than **100 nodes**. Dependency requirements for clouds are also significantly reduced. * **Disk Tier**: Introducing `best` disk tier for the best performance and cost, so you can choose the best disk for any cloud. (#2434) * Allow **2x spot jobs** to be run concurrently * Mount storage back after cluster restart ### SkyServe [SkyServe](https://skypilot.readthedocs.io/en/latest/serving/sky-serve.html) is a serving system on top of SkyPilot that deploys and scales any HTTP services across one or more regions or clouds, with autoscaling, load balancing, and more. * Introducing SkyServe: deploy and scale your AI models across multiple regions or clouds. (#2458) * Autoscaler: Request rate based autoscaling policy. (#2868, #2878) * Autoscaler: Support scaling to 0 when no requests (#2938) * Rolling update: Support rolling update for existing services (#2935, #3057) **Other Enhancements** * Environment variable support in services field (#3078) * Override task configurations with CLI arguments (#2979) * Logging improvement for replicas (#2924, #2949) * Smoke tests for SkyServe (#2911) * [Documents](https://skypilot.readthedocs.io/en/latest/serving/sky-serve.html) for SkyServe (#3022, #2794, #2864, #2894, #2922, #2989, #3182) * UX improvements for SkyServe (#2895, #2940, #2961, #3054, #3176, #3094) * Bug fixes and robustness improvement (#2811, #2822, #2860, #2995, #2983, #3058, #3075, #3226) ### New LLM Recipes * [Gemma](https://github.com/skypilot-org/skypilot/tree/master/llm/gemma): Serve your Gemma on any cloud (#3207, #3220) * [SGLang](https://github.com/skypilot-org/skypilot/tree/master/llm/sglang): Speed up your LLM deployments with [SGLang](https://github.com/sgl-project/sglang) for 5x throughput on SkyServe (#3126, #3140, #3170, #3145) * [Mixtral 8x7B](https://github.com/skypilot-org/skypilot/tree/master/llm/mixtral): Serving and scaling Mixtral 8x7B model on any regions/clouds (#2857, #2888, #3017, #3067, #2882) * [Mistral 7B](https://mistral.ai/news/announcing-mistral-7b/): Official docs for hosting Mistral 7B from mistral.ai (#2615, #2856) * [CodeLlama](https://github.com/skypilot-org/skypilot/tree/master/llm/codellama): Hosting CodeLlama model with SkyServe and accessing it with API, chat or VSCode (#3050, #3143) * [LoRAX](https://github.com/skypilot-org/skypilot/tree/master/llm/lorax): efficient multi-lora LLM inference (#2883) * [axolotl](https://github.com/skypilot-org/skypilot/tree/master/llm/axolotl): a latest LLM tool for finetuning AI models running on SkyPilot (#2784, #2789) * [Tabby](https://github.com/skypilot-org/skypilot/tree/master/llm/tabby): Self-host coding assistant Tabby on SkyPilot (#2597, #3068) * [vLLM](https://github.com/skypilot-org/skypilot/tree/master/llm/vllm): Serve with vLLM to expose OpenAI API for Vicuna and Mixtral (#2614, #2643, #2616, #2786, #2791, #2948,#3118) * [TGI](https://github.com/skypilot-org/skypilot/tree/master/examples/serve/huggingface-tgi.yaml): Scale the inference engine TGI with SkyServe (#3121) ### Kubernetes Kubernetes support received a number of **New Features** and **Enhancements**. * Multi-node support for Kubernetes (#2609, #3019) * Open ports support for Kubernetes (#2588, #2713, #2997, #3200) * Support Coreweave label for GPUs in Kubernetes (Coreweave support under development) (#2650) * Starting a kubernetes GPU cluster locally with `sky local up` (#2890) * Custom Image Support for Kubernetes Instances (#2729, #3019, #3210) * New provisioner for kubernets for better performance and robustneess (#3019) * Supporting Kubernetes cluster launched with k3s and Rancher (#3148) **Other Enhancements** * Support H100 80GB in Kubernetes (#2840) * Share SSH jump pod across users to reduce resources consumption (#2826) * Allow `KUBECONFIG` env var for config file specification (#3169) * Robustify the kubernetes cluster removement (#3043) * Fixes GPU labeller (#2636, #2653) * UX and Robustness improvement (#2638, #2712, #2589, #2785, #2551, #2795, #2884, #2913, #2795) * Documents improvement (#2595, #2705, #2957, #2991, #2997, #3119) ### More Clouds SkyPilot now supports 13 cloud providers, including 4 new provider-contributed clouds: **VMWare vSphere**, **RunPod**, **Fluidstack** and **Cudo Compute**. * [RunPod](https://www.runpod.io/): RunPod is a specialized AI cloud, with additional capacities for high-end GPUs. (#2980, #3018) * [Fluidstack](https://www.fluidstack.io/): Fluidstack offers accessible GPUs for AI with low cost. (#3086, #3224) * [Cudo Compute](https://www.cudocompute.com/): GPU cloud provides low cost GPUs powered with green energy. (#2975, #3224) * [VMWare vSphere](https://www.vmware.com/products/vsphere.html): you can now bring your own vSphere cluster to SkyPilot. ([docs](https://skypilot.readthedocs.io/en/latest/cloud-setup/cloud-permissions/vsphere.html)) (#3000) ## Clouds ### AWS **New Features** * New provisioner for AWS: >2x faster for multi-node provisioning and more reliable for cluster launching. (#1702, #2719, #2792) * Support for AWS Trainium accelerator (#2690) * Support null for proxy command to filter regions (#2756) * Support CUDA 12.1 with default image updates (#2788) * Job scheduling on Inferentia and Trainium (#2969, #2798) * Allow specifying security_group (#3133) **Enhancements** * Make public / private subnet selection robust (#2867) * Avoid hanging for restarting an instance in STOPPING state (#2998) * Remove sunset instance types (#2610) * Add docs for custom VPC support (#2776) **Fixes** * Fix conda installation on AWS default image (#3206) * Robustify the custom image support (#3216) * Fix subnet selection for AWS and autodown for spot instances (#2921) * Fix minimal permission for AWS (#2978) * Improve opening ports for AWS (#2716) * Autstop with new provisioner (#2719) ### GCP **New Features** * Security: Custom VPC support for GCP. (#2764, #2772, #2854, #2944) * Security: Support private IP with proxy jump on GCP. (#2819) * New provisioner: Adopted new provisioner for GCP with >2x faster and more robust provisioning (#2681, #2719, #2943) * Automatically use reserved instances from multiple reserved pools (#2836, #2681) * Support L4 accelerator for GCP (#2724) * Allow stopping spot clusters on GCP (#2877) **Enhancements** * Allow stopping VM with local SSD (#2587) * Update default runtime version for TPU node (#2601, #2602) * Handling transient error during launching GCP clusters (#2669) * Update GCSFuse version to 1.3.0 for GCS storage mount (#2887) * Set TPU VM the default option for TPU accelerators (#1758) * Ignore missing gcp credentials for latest gcloud and avoid duplicating credentials (#3028, #3172, #3234) **Fixes** * Fix custom docker image support (#3218) * Fix minimal roles required for GCP (#2704) * Robustify the catalog fetching (#3141) * Fix ports on TPU VM and cluster launched before 0.4.0 (#2641) * Fix backward compatibility issue with GCP clusters (#2604) * Fix `--disk-size` for Custom Machine Images (#2718) * Update catalog fetcher with more options (#2562) * Assign GCP VMs with service account (#2972) * Fix machine image support (#3030, #3236) * Fix error handling for failed provisioning (#2852) * Leave out TPU v5 in catalog as it is not supported (#2656) * Fix GCP minimal permission (#2947, #2770, #2761) ### Azure **Enhancements** * Make ports openning more robust (#2649, #2891, #3084) * Additional arguments for Azure catalog fetcher and support H100 (#2561, #2844, #2847) * Support CUDA 12.1 with default image updates (#2468) * Support spot instances on Azure (#2871) **Fixes** * Fix custom docker image support (#3218) * UX: Fix Azure disk tier explicitly shown in resources str (#3064) * Fix status query for Azure (#3015) ### SCP * Fix SCP error raised in `sky check` (#3038) ## CLI & Core interfaces **New Features** * Multi-node jobs fail fast fast for single node failure (#3081) * Add configurations for not uploading credentials (#2904) * Adding `sky status --endpoints` CLI (#3199) * Support more characters in cluster name (#3130) * Show all regions and more accurate price in `sky show-gpus` (#2583, #2892, #2933, #2946, #3083, #3149, #3113) * Allow infering cloud from region or zone (#2632) * Add `--commit` and `--version` for `sky` CLI (#2720, #2731, #2733) **Enhancements** * Robustify runtime initialization on remote cluster (#3132) * Better error message for YAML parsing (#3040) * Smarter GPU name completion (#3014) * Speed up retry until up by not doing exponential backoff (#2821) * Add schema validation for config (#2645) * Allow `--disk-tier none` override (#2906) * `sky check` improvement (#3174, #3212, #3160) * Better logging for CLIs (#2535, #2691, #2728, #3139, #3175) **Fixes** * Fix permission issues for SSH config file on specific linux distributions (#3151) * Fix `sky_logs` and mounting directory (#2667, #2845) * Fix job related commands (#2662, #2767) * Fix `sky logs` with `--sync-down` (#2660) **Deprecations** * Deprecate `cpunode/gpunode/tpunode`, hide `admin` (#2800) * Remove deprecated `Local` cloud which is now replaced by Kubernetes support (#3037, #3186) ## Backend/Provisioner **New Features** * Support multiple candidate resources (#2498, #2803, #2833, #2886, #3107) * Support launching 100-node cluster for AWS, GCP, Kubernetes, and RunPod (#3004, #3005) * Support spaces in paths (#2762) * Support long local username with special characters (#3105, #3130) **Enhancements** * Robustify termination of failed clusters during failover (#2990) * Improve the ssh check for clusters just provisioned (#2797) * Robustify failover to avoid terminating clusters that has user data (#2977) * Move ssh config to `~/.ssh/generated/ssh` instead of directly editing `~/.ssh/config` (#2706, #3069) * Code refactoring and cleanup (#2541, #2736, #3046, #2633, #2870, #2925, #3087, #3088, #3153) * Improve usage collection (#2654, #2672) * Better explanation of failover in docs (#2850, #2834) **Fixes** * Avoid backward compatibility issue with provisioner (#2682) * Fix cloud provisioning internal file mount cache (#2715) * Fix optimization for DAG when some resources provided are not feasible (#2657) * Fix runtime installation on remote VM (#2909, #2912) * Fix cluster termination when the cluster is not fully UP (#3025) * Fixes for tests (#2651, #2976, #3023, #3166, #3167, #3202) * Improve logging (#2594, #2678, #2696, #3003) ## Managed spot **New Features** * Allow 2x spot jobs to be run concurrently (#3191, #3208) **Enhancements** * Better logging and UX (#2630) * Add docs for customizing spot controller (#2753) * Add spot pipeline docs (#2936) **Fixes** * Fix private VPC support for spot jobs (#2874) * Fix `~/.sky/config.yaml` for spot jobs (#2876) * Fix OOM for long running spot jobs (#2675) * Fix AWS NoCredentialError caused by credential rotation (#2695) * Fix Azure dependency on spot controller (#2875) ## Storage **New Features** * Mount storage back to clusters after restarted (#2322, #2804) **Enhancements** * Clarify the syntax for external and managed storage (#3162, #2804) * Confirmation prompt for sky storage delete, and --yes flag to skip it (#2726) * Refactor and clean up storage code (#2774, #2986) **Fixes** * Fix permission issue for S3 mounting on specific images (#3215) * Fix spaces in source path for storages (#2835) ## Dependencies * Recommand nightly build in docs for better performance and robustness (#2984) * Automatic build for nightly Docker image (#2229) * Avoid ray dependency locally for AWS, GCP, and Kubernetes (#2625, #2943, #3019) * Remove AWS dependency by default for better setup time and less confliction (#2841, #2942) * Fix GCP dependency by updating google-api-python-client (#2577, #2759) * Pin remote dependency for ray job (#2659) * Robustify dependencies (#2642, #2679, #3024) ## Examples * NeMo distributed training for BERT and GPT3 (#2533) * Add docker compose example to run multiple containers (#2745) * Distributed ray train example (#2828) * Benchmark Torch DDP (#2987) * Example updates for supported models (#2637, #2825) **Full Changelog**: https://github.com/skypilot-org/skypilot/compare/v0.4.0...v0.5.0 ## Thanks to all contributors! New contributors: @rtalaricw, @jackyk02, @Vaibhav2001, @rohanvaidya45, @Shrinandan, @manishiitg, @amitkumarj441, @tgaddair, @aseriesof-tubes, @changxiaohui, @thams, @kishb87, @PratikKumar125, @mmcclean, @dtran24, @davidwagnerkc, @mjibril, @kbrgl, @msehsah1, @JungleCatSW, @Ying1123 Many thanks to all contributors who contributed to this release! Contributors: @Michaelvll, @concretevitamin, @cblmemo, @romilbhardwaj, @MaoZiming, @landscapepainter, @sunny0826, @suquark, @Vaibhav2001, @infwinston, @hemildesai, @asaiacai, @Shrinandan, @kishb87, @rtalaricw, @iojw, @aseriesof-tubes, @manishiitg, @jackyk02, @mmcclean, @thams, @amitkumarj441, @rohanvaidya45, @saihtaungkham, @tgaddair, @davidwagnerkc, @PratikKumar125, @dtran24, @changxiaohui, @mjibril, @kbrgl, @msehsah1, @JungleCatSW, @Ying1123