skypilot-nightly 1.0.0.dev20241017__tar.gz → 1.0.0.dev20241019__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {skypilot_nightly-1.0.0.dev20241017/sky/setup_files → skypilot_nightly-1.0.0.dev20241019}/MANIFEST.in +0 -1
- {skypilot_nightly-1.0.0.dev20241017/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20241019}/PKG-INFO +23 -21
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/README.md +22 -20
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/__init__.py +2 -2
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/authentication.py +1 -1
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/backend_utils.py +4 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/aws.py +15 -4
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/lambda_cloud.py +4 -1
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/aws_catalog.py +11 -1
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +6 -4
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/__init__.py +3 -0
- skypilot_nightly-1.0.0.dev20241019/sky/provision/lambda_cloud/__init__.py +11 -0
- skypilot_nightly-1.0.0.dev20241019/sky/provision/lambda_cloud/config.py +10 -0
- skypilot_nightly-1.0.0.dev20241019/sky/provision/lambda_cloud/instance.py +261 -0
- {skypilot_nightly-1.0.0.dev20241017/sky/clouds/utils → skypilot_nightly-1.0.0.dev20241019/sky/provision/lambda_cloud}/lambda_utils.py +19 -18
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019/sky/setup_files}/MANIFEST.in +0 -1
- skypilot_nightly-1.0.0.dev20241019/sky/templates/lambda-ray.yml.j2 +80 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019/skypilot_nightly.egg-info}/PKG-INFO +23 -21
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/skypilot_nightly.egg-info/SOURCES.txt +4 -3
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_smoke.py +5 -5
- skypilot_nightly-1.0.0.dev20241017/sky/skylet/providers/lambda_cloud/__init__.py +0 -2
- skypilot_nightly-1.0.0.dev20241017/sky/skylet/providers/lambda_cloud/node_provider.py +0 -320
- skypilot_nightly-1.0.0.dev20241017/sky/templates/lambda-ray.yml.j2 +0 -111
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/pyproject.toml +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/setup.cfg +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/aws.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/cloudflare.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/docker.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/adaptors/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/admin_policy.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/cloud_vm_ray_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/local_docker_backend.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/backends/wheel_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/benchmark/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/benchmark/benchmark_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/benchmark/benchmark_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/check.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/cloud_stores.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/cloud_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/ibm.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/kubernetes.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/oci.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/paperspace.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/runpod.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/scp.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/azure_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/oci_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/scp_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/utils/aws_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/utils/gcp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/utils/oci_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/utils/scp_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/vsphere.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/data_transfer.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/data_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/mounting_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/data/storage_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/exceptions.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/execution.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/dashboard/dashboard.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/dashboard/static/favicon.ico +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/dashboard/templates/index.html +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/recovery_strategy.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/state.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/jobs/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/optimizer.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/aws/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/aws/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/aws/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/aws/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/azure/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/azure/azure-config-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/azure/azure-vm-template.json +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/azure/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/azure/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/common.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/cudo_machine_type.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/cudo_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/cudo_wrapper.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/cudo/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/docker_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/fluidstack/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/fluidstack/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/fluidstack/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/instance_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/gcp/mig_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/instance_setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/network.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/network_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/kubernetes/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/paperspace/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/paperspace/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/paperspace/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/paperspace/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/paperspace/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/provisioner.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/runpod/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/runpod/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/runpod/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/runpod/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/cls_api_client.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/custom_script.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/id_generator.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/metadata_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/service_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/ssl_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/vapiconnect.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/common/vim_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/instance.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/vsphere/vsphere_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/resources.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/autoscalers.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/controller.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/core.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/load_balancer.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/load_balancing_policies.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/replica_managers.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/serve_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/serve_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/service.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/serve/service_spec.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/setup_files/setup.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/sky_logging.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/attempt_skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/autostop_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/configs.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/events.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/job_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/log_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/log_lib.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/ibm/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/ibm/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/ibm/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/oci/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/oci/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/oci/query_helper.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/oci/utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/scp/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/scp/config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/providers/scp/node_provider.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/cli.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/updater.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/ray_patches/worker.py.patch +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/skylet.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skylet/subprocess_daemon.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/skypilot_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/status_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/task.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/aws-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/azure-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/cudo-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/fluidstack-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/gcp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/ibm-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/jobs-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/kubernetes-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/local-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/oci-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/paperspace-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/runpod-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/scp-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/templates/vsphere-ray.yml.j2 +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/usage/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/usage/constants.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/usage/usage_lib.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/accelerator_registry.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/admin_policy_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/cli_utils/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/cli_utils/status_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/cluster_yaml_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/command_runner.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/command_runner.pyi +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/common_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/controller_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/dag_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/db_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/env_options.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/__init__.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/create_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/delete_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/generate_kind_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/gpu_labeler.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/rsync_helper.sh +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/kubernetes_enums.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/log_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/resources_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/rich_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/schemas.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/subprocess_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/timeline.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/ux_utils.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/utils/validator.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/skypilot_nightly.egg-info/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/skypilot_nightly.egg-info/requires.txt +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/skypilot_nightly.egg-info/top_level.txt +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_api.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_cli.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_config.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_global_user_state.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_jobs.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_jobs_and_serve.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_list_accelerators.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_optimizer_dryruns.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_optimizer_random_dag.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_serve_autoscaler.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_storage.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_wheels.py +0 -0
- {skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/tests/test_yaml_parser.py +0 -0
@@ -6,7 +6,6 @@ include sky/setup_files/*
|
|
6
6
|
include sky/skylet/*.sh
|
7
7
|
include sky/skylet/LICENSE
|
8
8
|
include sky/skylet/providers/ibm/*
|
9
|
-
include sky/skylet/providers/lambda_cloud/*
|
10
9
|
include sky/skylet/providers/oci/*
|
11
10
|
include sky/skylet/providers/scp/*
|
12
11
|
include sky/skylet/providers/*.py
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20241019
|
4
4
|
Summary: SkyPilot: An intercloud broker for the clouds
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -163,30 +163,32 @@ Requires-Dist: pyvmomi==8.0.1.0.2; extra == "all"
|
|
163
163
|
|
164
164
|
----
|
165
165
|
:fire: *News* :fire:
|
166
|
-
- [
|
167
|
-
- [Sep
|
168
|
-
- [
|
169
|
-
- [Jun
|
170
|
-
- [Apr
|
171
|
-
- [Apr
|
172
|
-
- [Feb
|
173
|
-
- [Feb
|
174
|
-
- [Dec
|
175
|
-
- [Nov
|
166
|
+
- [Oct 2024] :tada: **SkyPilot crossed 1M+ downloads** :tada:: Thank you to our community! [**Twitter/X**](https://x.com/skypilot_org/status/1844770841718067638)
|
167
|
+
- [Sep 2024] Point, Launch and Serve **Llama 3.2** on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
|
168
|
+
- [Sep 2024] Run and deploy [**Pixtral**](./llm/pixtral), the first open-source multimodal model from Mistral AI.
|
169
|
+
- [Jun 2024] Reproduce **GPT** with [llm.c](https://github.com/karpathy/llm.c/discussions/481) on any cloud: [**guide**](./llm/gpt-2/)
|
170
|
+
- [Apr 2024] Serve [**Qwen-110B**](https://qwenlm.github.io/blog/qwen1.5-110b/) on your infra: [**example**](./llm/qwen/)
|
171
|
+
- [Apr 2024] Using [**Ollama**](https://github.com/ollama/ollama) to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
|
172
|
+
- [Feb 2024] Deploying and scaling [**Gemma**](https://blog.google/technology/developers/gemma-open-models/) with SkyServe: [**example**](./llm/gemma/)
|
173
|
+
- [Feb 2024] Serving [**Code Llama 70B**](https://ai.meta.com/blog/code-llama-large-language-model-coding/) with vLLM and SkyServe: [**example**](./llm/codellama/)
|
174
|
+
- [Dec 2023] [**Mixtral 8x7B**](https://mistral.ai/news/mixtral-of-experts/), a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
|
175
|
+
- [Nov 2023] Using [**Axolotl**](https://github.com/OpenAccess-AI-Collective/axolotl) to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
|
176
|
+
|
177
|
+
**LLM Finetuning Cookbooks**: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 [**example**](./llm/vicuna-llama-2/) and [**blog**](https://blog.skypilot.co/finetuning-llama2-operational-guide/); Llama 3.1 [**example**](./llm/llama-3_1-finetuning/) and [**blog**](https://blog.skypilot.co/finetune-llama-3_1-on-your-infra/)
|
176
178
|
|
177
179
|
<details>
|
178
180
|
<summary>Archived</summary>
|
179
181
|
|
180
|
-
- [
|
181
|
-
- [
|
182
|
-
- [
|
183
|
-
- [
|
184
|
-
- [
|
185
|
-
- [Sep
|
186
|
-
- [
|
187
|
-
- [
|
188
|
-
- [
|
189
|
-
- [
|
182
|
+
- [Jul 2024] [**Finetune**](./llm/llama-3_1-finetuning/) and [**serve**](./llm/llama-3_1/) **Llama 3.1** on your infra
|
183
|
+
- [Apr 2024] Serve and finetune [**Llama 3**](https://skypilot.readthedocs.io/en/latest/gallery/llms/llama-3.html) on any cloud or Kubernetes: [**example**](./llm/llama-3/)
|
184
|
+
- [Mar 2024] Serve and deploy [**Databricks DBRX**](https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm) on your infra: [**example**](./llm/dbrx/)
|
185
|
+
- [Feb 2024] Speed up your LLM deployments with [**SGLang**](https://github.com/sgl-project/sglang) for 5x throughput on SkyServe: [**example**](./llm/sglang/)
|
186
|
+
- [Dec 2023] Using [**LoRAX**](https://github.com/predibase/lorax) to serve 1000s of finetuned LLMs on a single instance in the cloud: [**example**](./llm/lorax/)
|
187
|
+
- [Sep 2023] [**Mistral 7B**](https://mistral.ai/news/announcing-mistral-7b/), a high-quality open LLM, was released! Deploy via SkyPilot on any cloud: [**Mistral docs**](https://docs.mistral.ai/self-deployment/skypilot)
|
188
|
+
- [Sep 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
|
189
|
+
- [Jul 2023] Self-Hosted **Llama-2 Chatbot** on Any Cloud: [**example**](./llm/llama-2/)
|
190
|
+
- [Jun 2023] Serving LLM 24x Faster On the Cloud [**with vLLM**](https://vllm.ai/) and SkyPilot: [**example**](./llm/vllm/), [**blog post**](https://blog.skypilot.co/serving-llm-24x-faster-on-the-cloud-with-vllm-and-skypilot/)
|
191
|
+
- [Apr 2023] [SkyPilot YAMLs](./llm/vicuna/) for finetuning & serving the [Vicuna LLM](https://lmsys.org/blog/2023-03-30-vicuna/) with a single command!
|
190
192
|
|
191
193
|
</details>
|
192
194
|
|
@@ -26,30 +26,32 @@
|
|
26
26
|
|
27
27
|
----
|
28
28
|
:fire: *News* :fire:
|
29
|
-
- [
|
30
|
-
- [Sep
|
31
|
-
- [
|
32
|
-
- [Jun
|
33
|
-
- [Apr
|
34
|
-
- [Apr
|
35
|
-
- [Feb
|
36
|
-
- [Feb
|
37
|
-
- [Dec
|
38
|
-
- [Nov
|
29
|
+
- [Oct 2024] :tada: **SkyPilot crossed 1M+ downloads** :tada:: Thank you to our community! [**Twitter/X**](https://x.com/skypilot_org/status/1844770841718067638)
|
30
|
+
- [Sep 2024] Point, Launch and Serve **Llama 3.2** on Kubernetes or Any Cloud: [**example**](./llm/llama-3_2/)
|
31
|
+
- [Sep 2024] Run and deploy [**Pixtral**](./llm/pixtral), the first open-source multimodal model from Mistral AI.
|
32
|
+
- [Jun 2024] Reproduce **GPT** with [llm.c](https://github.com/karpathy/llm.c/discussions/481) on any cloud: [**guide**](./llm/gpt-2/)
|
33
|
+
- [Apr 2024] Serve [**Qwen-110B**](https://qwenlm.github.io/blog/qwen1.5-110b/) on your infra: [**example**](./llm/qwen/)
|
34
|
+
- [Apr 2024] Using [**Ollama**](https://github.com/ollama/ollama) to deploy quantized LLMs on CPUs and GPUs: [**example**](./llm/ollama/)
|
35
|
+
- [Feb 2024] Deploying and scaling [**Gemma**](https://blog.google/technology/developers/gemma-open-models/) with SkyServe: [**example**](./llm/gemma/)
|
36
|
+
- [Feb 2024] Serving [**Code Llama 70B**](https://ai.meta.com/blog/code-llama-large-language-model-coding/) with vLLM and SkyServe: [**example**](./llm/codellama/)
|
37
|
+
- [Dec 2023] [**Mixtral 8x7B**](https://mistral.ai/news/mixtral-of-experts/), a high quality sparse mixture-of-experts model, was released by Mistral AI! Deploy via SkyPilot on any cloud: [**example**](./llm/mixtral/)
|
38
|
+
- [Nov 2023] Using [**Axolotl**](https://github.com/OpenAccess-AI-Collective/axolotl) to finetune Mistral 7B on the cloud (on-demand and spot): [**example**](./llm/axolotl/)
|
39
|
+
|
40
|
+
**LLM Finetuning Cookbooks**: Finetuning Llama 2 / Llama 3.1 in your own cloud environment, privately: Llama 2 [**example**](./llm/vicuna-llama-2/) and [**blog**](https://blog.skypilot.co/finetuning-llama2-operational-guide/); Llama 3.1 [**example**](./llm/llama-3_1-finetuning/) and [**blog**](https://blog.skypilot.co/finetune-llama-3_1-on-your-infra/)
|
39
41
|
|
40
42
|
<details>
|
41
43
|
<summary>Archived</summary>
|
42
44
|
|
43
|
-
- [
|
44
|
-
- [
|
45
|
-
- [
|
46
|
-
- [
|
47
|
-
- [
|
48
|
-
- [Sep
|
49
|
-
- [
|
50
|
-
- [
|
51
|
-
- [
|
52
|
-
- [
|
45
|
+
- [Jul 2024] [**Finetune**](./llm/llama-3_1-finetuning/) and [**serve**](./llm/llama-3_1/) **Llama 3.1** on your infra
|
46
|
+
- [Apr 2024] Serve and finetune [**Llama 3**](https://skypilot.readthedocs.io/en/latest/gallery/llms/llama-3.html) on any cloud or Kubernetes: [**example**](./llm/llama-3/)
|
47
|
+
- [Mar 2024] Serve and deploy [**Databricks DBRX**](https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm) on your infra: [**example**](./llm/dbrx/)
|
48
|
+
- [Feb 2024] Speed up your LLM deployments with [**SGLang**](https://github.com/sgl-project/sglang) for 5x throughput on SkyServe: [**example**](./llm/sglang/)
|
49
|
+
- [Dec 2023] Using [**LoRAX**](https://github.com/predibase/lorax) to serve 1000s of finetuned LLMs on a single instance in the cloud: [**example**](./llm/lorax/)
|
50
|
+
- [Sep 2023] [**Mistral 7B**](https://mistral.ai/news/announcing-mistral-7b/), a high-quality open LLM, was released! Deploy via SkyPilot on any cloud: [**Mistral docs**](https://docs.mistral.ai/self-deployment/skypilot)
|
51
|
+
- [Sep 2023] Case study: [**Covariant**](https://covariant.ai/) transformed AI development on the cloud using SkyPilot, delivering models 4x faster cost-effectively: [**read the case study**](https://blog.skypilot.co/covariant/)
|
52
|
+
- [Jul 2023] Self-Hosted **Llama-2 Chatbot** on Any Cloud: [**example**](./llm/llama-2/)
|
53
|
+
- [Jun 2023] Serving LLM 24x Faster On the Cloud [**with vLLM**](https://vllm.ai/) and SkyPilot: [**example**](./llm/vllm/), [**blog post**](https://blog.skypilot.co/serving-llm-24x-faster-on-the-cloud-with-vllm-and-skypilot/)
|
54
|
+
- [Apr 2023] [SkyPilot YAMLs](./llm/vicuna/) for finetuning & serving the [Vicuna LLM](https://lmsys.org/blog/2023-03-30-vicuna/) with a single command!
|
53
55
|
|
54
56
|
</details>
|
55
57
|
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '9201def0ff1ac73681a82a26d46f56d0b027b03b'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20241019'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
{skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/authentication.py
RENAMED
@@ -43,9 +43,9 @@ from sky.adaptors import gcp
|
|
43
43
|
from sky.adaptors import ibm
|
44
44
|
from sky.adaptors import kubernetes
|
45
45
|
from sky.adaptors import runpod
|
46
|
-
from sky.clouds.utils import lambda_utils
|
47
46
|
from sky.provision.fluidstack import fluidstack_utils
|
48
47
|
from sky.provision.kubernetes import utils as kubernetes_utils
|
48
|
+
from sky.provision.lambda_cloud import lambda_utils
|
49
49
|
from sky.utils import common_utils
|
50
50
|
from sky.utils import kubernetes_enums
|
51
51
|
from sky.utils import subprocess_utils
|
@@ -2772,6 +2772,10 @@ def get_endpoints(cluster: str,
|
|
2772
2772
|
cluster_records = get_clusters(include_controller=True,
|
2773
2773
|
refresh=False,
|
2774
2774
|
cluster_names=[cluster])
|
2775
|
+
if not cluster_records:
|
2776
|
+
with ux_utils.print_exception_no_traceback():
|
2777
|
+
raise exceptions.ClusterNotUpError(
|
2778
|
+
f'Cluster {cluster!r} not found.', cluster_status=None)
|
2775
2779
|
assert len(cluster_records) == 1, cluster_records
|
2776
2780
|
cluster_record = cluster_records[0]
|
2777
2781
|
if (not skip_status_check and
|
@@ -32,6 +32,14 @@ if typing.TYPE_CHECKING:
|
|
32
32
|
|
33
33
|
logger = sky_logging.init_logger(__name__)
|
34
34
|
|
35
|
+
# Image ID tags
|
36
|
+
_DEFAULT_CPU_IMAGE_ID = 'skypilot:custom-cpu-ubuntu'
|
37
|
+
# For GPU-related package version,
|
38
|
+
# see sky/clouds/service_catalog/images/provisioners/cuda.sh
|
39
|
+
_DEFAULT_GPU_IMAGE_ID = 'skypilot:custom-gpu-ubuntu'
|
40
|
+
_DEFAULT_GPU_K80_IMAGE_ID = 'skypilot:k80-ubuntu-2004'
|
41
|
+
_DEFAULT_NEURON_IMAGE_ID = 'skypilot:neuron-ubuntu-2204'
|
42
|
+
|
35
43
|
# This local file (under ~/.aws/) will be uploaded to remote nodes (any
|
36
44
|
# cloud), if all of the following conditions hold:
|
37
45
|
# - the current user identity is not using AWS SSO
|
@@ -217,17 +225,20 @@ class AWS(clouds.Cloud):
|
|
217
225
|
@classmethod
|
218
226
|
def _get_default_ami(cls, region_name: str, instance_type: str) -> str:
|
219
227
|
acc = cls.get_accelerators_from_instance_type(instance_type)
|
220
|
-
image_id = service_catalog.get_image_id_from_tag(
|
221
|
-
|
228
|
+
image_id = service_catalog.get_image_id_from_tag(_DEFAULT_CPU_IMAGE_ID,
|
229
|
+
region_name,
|
230
|
+
clouds='aws')
|
222
231
|
if acc is not None:
|
232
|
+
image_id = service_catalog.get_image_id_from_tag(
|
233
|
+
_DEFAULT_GPU_IMAGE_ID, region_name, clouds='aws')
|
223
234
|
assert len(acc) == 1, acc
|
224
235
|
acc_name = list(acc.keys())[0]
|
225
236
|
if acc_name == 'K80':
|
226
237
|
image_id = service_catalog.get_image_id_from_tag(
|
227
|
-
|
238
|
+
_DEFAULT_GPU_K80_IMAGE_ID, region_name, clouds='aws')
|
228
239
|
if acc_name in ['Trainium', 'Inferentia']:
|
229
240
|
image_id = service_catalog.get_image_id_from_tag(
|
230
|
-
|
241
|
+
_DEFAULT_NEURON_IMAGE_ID, region_name, clouds='aws')
|
231
242
|
if image_id is not None:
|
232
243
|
return image_id
|
233
244
|
# Raise ResourcesUnavailableError to make sure the failover in
|
{skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/clouds/lambda_cloud.py
RENAMED
@@ -8,7 +8,7 @@ import requests
|
|
8
8
|
from sky import clouds
|
9
9
|
from sky import status_lib
|
10
10
|
from sky.clouds import service_catalog
|
11
|
-
from sky.
|
11
|
+
from sky.provision.lambda_cloud import lambda_utils
|
12
12
|
from sky.utils import resources_utils
|
13
13
|
|
14
14
|
if typing.TYPE_CHECKING:
|
@@ -48,6 +48,9 @@ class Lambda(clouds.Cloud):
|
|
48
48
|
clouds.CloudImplementationFeatures.HOST_CONTROLLERS: f'Host controllers are not supported in {_REPR}.',
|
49
49
|
}
|
50
50
|
|
51
|
+
PROVISIONER_VERSION = clouds.ProvisionerVersion.SKYPILOT
|
52
|
+
STATUS_VERSION = clouds.StatusVersion.SKYPILOT
|
53
|
+
|
51
54
|
@classmethod
|
52
55
|
def _unsupported_features_for_resources(
|
53
56
|
cls, resources: 'resources_lib.Resources'
|
@@ -308,7 +308,17 @@ def list_accelerators(
|
|
308
308
|
|
309
309
|
def get_image_id_from_tag(tag: str, region: Optional[str]) -> Optional[str]:
|
310
310
|
"""Returns the image id from the tag."""
|
311
|
-
|
311
|
+
global _image_df
|
312
|
+
|
313
|
+
image_id = common.get_image_id_from_tag_impl(_image_df, tag, region)
|
314
|
+
if image_id is None:
|
315
|
+
# Refresh the image catalog and try again, if the image tag is not
|
316
|
+
# found.
|
317
|
+
logger.debug('Refreshing the image catalog and trying again.')
|
318
|
+
_image_df = common.read_catalog('aws/images.csv',
|
319
|
+
pull_frequency_hours=0)
|
320
|
+
image_id = common.get_image_id_from_tag_impl(_image_df, tag, region)
|
321
|
+
return image_id
|
312
322
|
|
313
323
|
|
314
324
|
def is_image_tag_valid(tag: str, region: Optional[str]) -> bool:
|
@@ -538,11 +538,13 @@ if __name__ == '__main__':
|
|
538
538
|
instance_df.to_csv('aws/vms.csv', index=False)
|
539
539
|
print('AWS Service Catalog saved to aws/vms.csv')
|
540
540
|
|
541
|
-
|
542
|
-
|
541
|
+
# Disable refreshing images.csv as we are using skypilot custom AMIs
|
542
|
+
# See sky/clouds/service_catalog/images/README.md for more details.
|
543
|
+
# image_df = get_all_regions_images_df(user_regions)
|
544
|
+
# _check_regions_integrity(image_df, 'images')
|
543
545
|
|
544
|
-
image_df.to_csv('aws/images.csv', index=False)
|
545
|
-
print('AWS Images saved to aws/images.csv')
|
546
|
+
# image_df.to_csv('aws/images.csv', index=False)
|
547
|
+
# print('AWS Images saved to aws/images.csv')
|
546
548
|
|
547
549
|
if args.az_mappings:
|
548
550
|
az_mappings_df = fetch_availability_zone_mappings()
|
{skypilot_nightly-1.0.0.dev20241017 → skypilot_nightly-1.0.0.dev20241019}/sky/provision/__init__.py
RENAMED
@@ -19,6 +19,7 @@ from sky.provision import cudo
|
|
19
19
|
from sky.provision import fluidstack
|
20
20
|
from sky.provision import gcp
|
21
21
|
from sky.provision import kubernetes
|
22
|
+
from sky.provision import lambda_cloud
|
22
23
|
from sky.provision import runpod
|
23
24
|
from sky.provision import vsphere
|
24
25
|
from sky.utils import command_runner
|
@@ -39,6 +40,8 @@ def _route_to_cloud_impl(func):
|
|
39
40
|
provider_name = kwargs.pop('provider_name')
|
40
41
|
|
41
42
|
module_name = provider_name.lower()
|
43
|
+
if module_name == 'lambda':
|
44
|
+
module_name = 'lambda_cloud'
|
42
45
|
module = globals().get(module_name)
|
43
46
|
assert module is not None, f'Unknown provider: {module_name}'
|
44
47
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"""Lambda provisioner for SkyPilot."""
|
2
|
+
|
3
|
+
from sky.provision.lambda_cloud.config import bootstrap_instances
|
4
|
+
from sky.provision.lambda_cloud.instance import cleanup_ports
|
5
|
+
from sky.provision.lambda_cloud.instance import get_cluster_info
|
6
|
+
from sky.provision.lambda_cloud.instance import open_ports
|
7
|
+
from sky.provision.lambda_cloud.instance import query_instances
|
8
|
+
from sky.provision.lambda_cloud.instance import run_instances
|
9
|
+
from sky.provision.lambda_cloud.instance import stop_instances
|
10
|
+
from sky.provision.lambda_cloud.instance import terminate_instances
|
11
|
+
from sky.provision.lambda_cloud.instance import wait_instances
|
@@ -0,0 +1,10 @@
|
|
1
|
+
"""Lambda Cloud configuration bootstrapping"""
|
2
|
+
|
3
|
+
from sky.provision import common
|
4
|
+
|
5
|
+
|
6
|
+
def bootstrap_instances(
|
7
|
+
region: str, cluster_name: str,
|
8
|
+
config: common.ProvisionConfig) -> common.ProvisionConfig:
|
9
|
+
del region, cluster_name # unused
|
10
|
+
return config
|
@@ -0,0 +1,261 @@
|
|
1
|
+
"""Lambda instance provisioning."""
|
2
|
+
|
3
|
+
import time
|
4
|
+
from typing import Any, Dict, List, Optional
|
5
|
+
|
6
|
+
from sky import authentication as auth
|
7
|
+
from sky import sky_logging
|
8
|
+
from sky import status_lib
|
9
|
+
from sky.provision import common
|
10
|
+
import sky.provision.lambda_cloud.lambda_utils as lambda_utils
|
11
|
+
from sky.utils import common_utils
|
12
|
+
from sky.utils import ux_utils
|
13
|
+
|
14
|
+
POLL_INTERVAL = 1
|
15
|
+
|
16
|
+
logger = sky_logging.init_logger(__name__)
|
17
|
+
_lambda_client = None
|
18
|
+
|
19
|
+
|
20
|
+
def _get_lambda_client():
|
21
|
+
global _lambda_client
|
22
|
+
if _lambda_client is None:
|
23
|
+
_lambda_client = lambda_utils.LambdaCloudClient()
|
24
|
+
return _lambda_client
|
25
|
+
|
26
|
+
|
27
|
+
def _filter_instances(
|
28
|
+
cluster_name_on_cloud: str,
|
29
|
+
status_filters: Optional[List[str]]) -> Dict[str, Dict[str, Any]]:
|
30
|
+
lambda_client = _get_lambda_client()
|
31
|
+
instances = lambda_client.list_instances()
|
32
|
+
possible_names = [
|
33
|
+
f'{cluster_name_on_cloud}-head',
|
34
|
+
f'{cluster_name_on_cloud}-worker',
|
35
|
+
]
|
36
|
+
|
37
|
+
filtered_instances = {}
|
38
|
+
for instance in instances:
|
39
|
+
if (status_filters is not None and
|
40
|
+
instance['status'] not in status_filters):
|
41
|
+
continue
|
42
|
+
if instance.get('name') in possible_names:
|
43
|
+
filtered_instances[instance['id']] = instance
|
44
|
+
return filtered_instances
|
45
|
+
|
46
|
+
|
47
|
+
def _get_head_instance_id(instances: Dict[str, Any]) -> Optional[str]:
|
48
|
+
head_instance_id = None
|
49
|
+
for instance_id, instance in instances.items():
|
50
|
+
if instance['name'].endswith('-head'):
|
51
|
+
head_instance_id = instance_id
|
52
|
+
break
|
53
|
+
return head_instance_id
|
54
|
+
|
55
|
+
|
56
|
+
def _get_ssh_key_name(prefix: str = '') -> str:
|
57
|
+
lambda_client = _get_lambda_client()
|
58
|
+
_, public_key_path = auth.get_or_generate_keys()
|
59
|
+
with open(public_key_path, 'r', encoding='utf-8') as f:
|
60
|
+
public_key = f.read()
|
61
|
+
name, exists = lambda_client.get_unique_ssh_key_name(prefix, public_key)
|
62
|
+
if not exists:
|
63
|
+
raise lambda_utils.LambdaCloudError('SSH key not found')
|
64
|
+
return name
|
65
|
+
|
66
|
+
|
67
|
+
def run_instances(region: str, cluster_name_on_cloud: str,
|
68
|
+
config: common.ProvisionConfig) -> common.ProvisionRecord:
|
69
|
+
"""Runs instances for the given cluster"""
|
70
|
+
lambda_client = _get_lambda_client()
|
71
|
+
pending_status = ['booting']
|
72
|
+
while True:
|
73
|
+
instances = _filter_instances(cluster_name_on_cloud, pending_status)
|
74
|
+
if not instances:
|
75
|
+
break
|
76
|
+
logger.info(f'Waiting for {len(instances)} instances to be ready.')
|
77
|
+
time.sleep(POLL_INTERVAL)
|
78
|
+
exist_instances = _filter_instances(cluster_name_on_cloud, ['active'])
|
79
|
+
head_instance_id = _get_head_instance_id(exist_instances)
|
80
|
+
|
81
|
+
to_start_count = config.count - len(exist_instances)
|
82
|
+
if to_start_count < 0:
|
83
|
+
raise RuntimeError(
|
84
|
+
f'Cluster {cluster_name_on_cloud} already has '
|
85
|
+
f'{len(exist_instances)} nodes, but {config.count} are required.')
|
86
|
+
if to_start_count == 0:
|
87
|
+
if head_instance_id is None:
|
88
|
+
raise RuntimeError(
|
89
|
+
f'Cluster {cluster_name_on_cloud} has no head node.')
|
90
|
+
logger.info(f'Cluster {cluster_name_on_cloud} already has '
|
91
|
+
f'{len(exist_instances)} nodes, no need to start more.')
|
92
|
+
return common.ProvisionRecord(
|
93
|
+
provider_name='lambda',
|
94
|
+
cluster_name=cluster_name_on_cloud,
|
95
|
+
region=region,
|
96
|
+
zone=None,
|
97
|
+
head_instance_id=head_instance_id,
|
98
|
+
resumed_instance_ids=[],
|
99
|
+
created_instance_ids=[],
|
100
|
+
)
|
101
|
+
|
102
|
+
created_instance_ids = []
|
103
|
+
ssh_key_name = _get_ssh_key_name()
|
104
|
+
|
105
|
+
def launch_nodes(node_type: str, quantity: int) -> List[str]:
|
106
|
+
try:
|
107
|
+
instance_ids = lambda_client.create_instances(
|
108
|
+
instance_type=config.node_config['InstanceType'],
|
109
|
+
region=region,
|
110
|
+
name=f'{cluster_name_on_cloud}-{node_type}',
|
111
|
+
quantity=quantity,
|
112
|
+
ssh_key_name=ssh_key_name,
|
113
|
+
)
|
114
|
+
logger.info(f'Launched {len(instance_ids)} {node_type} node(s), '
|
115
|
+
f'instance_ids: {instance_ids}')
|
116
|
+
return instance_ids
|
117
|
+
except Exception as e:
|
118
|
+
logger.warning(f'run_instances error: {e}')
|
119
|
+
raise
|
120
|
+
|
121
|
+
if head_instance_id is None:
|
122
|
+
instance_ids = launch_nodes('head', 1)
|
123
|
+
assert len(instance_ids) == 1
|
124
|
+
created_instance_ids.append(instance_ids[0])
|
125
|
+
head_instance_id = instance_ids[0]
|
126
|
+
|
127
|
+
assert head_instance_id is not None, 'head_instance_id should not be None'
|
128
|
+
|
129
|
+
worker_node_count = to_start_count - 1
|
130
|
+
if worker_node_count > 0:
|
131
|
+
instance_ids = launch_nodes('worker', worker_node_count)
|
132
|
+
created_instance_ids.extend(instance_ids)
|
133
|
+
|
134
|
+
while True:
|
135
|
+
instances = _filter_instances(cluster_name_on_cloud, ['active'])
|
136
|
+
if len(instances) == config.count:
|
137
|
+
break
|
138
|
+
|
139
|
+
time.sleep(POLL_INTERVAL)
|
140
|
+
|
141
|
+
return common.ProvisionRecord(
|
142
|
+
provider_name='lambda',
|
143
|
+
cluster_name=cluster_name_on_cloud,
|
144
|
+
region=region,
|
145
|
+
zone=None,
|
146
|
+
head_instance_id=head_instance_id,
|
147
|
+
resumed_instance_ids=[],
|
148
|
+
created_instance_ids=created_instance_ids,
|
149
|
+
)
|
150
|
+
|
151
|
+
|
152
|
+
def wait_instances(region: str, cluster_name_on_cloud: str,
|
153
|
+
state: Optional[status_lib.ClusterStatus]) -> None:
|
154
|
+
del region, cluster_name_on_cloud, state # Unused.
|
155
|
+
|
156
|
+
|
157
|
+
def stop_instances(
|
158
|
+
cluster_name_on_cloud: str,
|
159
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
160
|
+
worker_only: bool = False,
|
161
|
+
) -> None:
|
162
|
+
raise NotImplementedError(
|
163
|
+
'stop_instances is not supported for Lambda Cloud')
|
164
|
+
|
165
|
+
|
166
|
+
def terminate_instances(
|
167
|
+
cluster_name_on_cloud: str,
|
168
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
169
|
+
worker_only: bool = False,
|
170
|
+
) -> None:
|
171
|
+
"""See sky/provision/__init__.py"""
|
172
|
+
del provider_config
|
173
|
+
lambda_client = _get_lambda_client()
|
174
|
+
instances = _filter_instances(cluster_name_on_cloud, None)
|
175
|
+
|
176
|
+
instance_ids_to_terminate = []
|
177
|
+
for instance_id, instance in instances.items():
|
178
|
+
if worker_only and not instance['name'].endswith('-worker'):
|
179
|
+
continue
|
180
|
+
instance_ids_to_terminate.append(instance_id)
|
181
|
+
|
182
|
+
try:
|
183
|
+
logger.debug(
|
184
|
+
f'Terminating instances {", ".join(instance_ids_to_terminate)}')
|
185
|
+
lambda_client.remove_instances(instance_ids_to_terminate)
|
186
|
+
except Exception as e: # pylint: disable=broad-except
|
187
|
+
with ux_utils.print_exception_no_traceback():
|
188
|
+
raise RuntimeError(
|
189
|
+
f'Failed to terminate instances {instance_ids_to_terminate}: '
|
190
|
+
f'{common_utils.format_exception(e, use_bracket=False)}') from e
|
191
|
+
|
192
|
+
|
193
|
+
def get_cluster_info(
|
194
|
+
region: str,
|
195
|
+
cluster_name_on_cloud: str,
|
196
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
197
|
+
) -> common.ClusterInfo:
|
198
|
+
del region # unused
|
199
|
+
running_instances = _filter_instances(cluster_name_on_cloud, ['active'])
|
200
|
+
instances: Dict[str, List[common.InstanceInfo]] = {}
|
201
|
+
head_instance_id = None
|
202
|
+
for instance_id, instance_info in running_instances.items():
|
203
|
+
instances[instance_id] = [
|
204
|
+
common.InstanceInfo(
|
205
|
+
instance_id=instance_id,
|
206
|
+
internal_ip=instance_info['private_ip'],
|
207
|
+
external_ip=instance_info['ip'],
|
208
|
+
ssh_port=22,
|
209
|
+
tags={},
|
210
|
+
)
|
211
|
+
]
|
212
|
+
if instance_info['name'].endswith('-head'):
|
213
|
+
head_instance_id = instance_id
|
214
|
+
|
215
|
+
return common.ClusterInfo(
|
216
|
+
instances=instances,
|
217
|
+
head_instance_id=head_instance_id,
|
218
|
+
provider_name='lambda',
|
219
|
+
provider_config=provider_config,
|
220
|
+
)
|
221
|
+
|
222
|
+
|
223
|
+
def query_instances(
|
224
|
+
cluster_name_on_cloud: str,
|
225
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
226
|
+
non_terminated_only: bool = True,
|
227
|
+
) -> Dict[str, Optional[status_lib.ClusterStatus]]:
|
228
|
+
"""See sky/provision/__init__.py"""
|
229
|
+
assert provider_config is not None, (cluster_name_on_cloud, provider_config)
|
230
|
+
instances = _filter_instances(cluster_name_on_cloud, None)
|
231
|
+
|
232
|
+
status_map = {
|
233
|
+
'booting': status_lib.ClusterStatus.INIT,
|
234
|
+
'active': status_lib.ClusterStatus.UP,
|
235
|
+
'unhealthy': status_lib.ClusterStatus.INIT,
|
236
|
+
'terminating': status_lib.ClusterStatus.INIT,
|
237
|
+
}
|
238
|
+
statuses: Dict[str, Optional[status_lib.ClusterStatus]] = {}
|
239
|
+
for instance_id, instance in instances.items():
|
240
|
+
status = status_map.get(instance['status'])
|
241
|
+
if non_terminated_only and status is None:
|
242
|
+
continue
|
243
|
+
statuses[instance_id] = status
|
244
|
+
return statuses
|
245
|
+
|
246
|
+
|
247
|
+
def open_ports(
|
248
|
+
cluster_name_on_cloud: str,
|
249
|
+
ports: List[str],
|
250
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
251
|
+
) -> None:
|
252
|
+
raise NotImplementedError('open_ports is not supported for Lambda Cloud')
|
253
|
+
|
254
|
+
|
255
|
+
def cleanup_ports(
|
256
|
+
cluster_name_on_cloud: str,
|
257
|
+
ports: List[str],
|
258
|
+
provider_config: Optional[Dict[str, Any]] = None,
|
259
|
+
) -> None:
|
260
|
+
"""See sky/provision/__init__.py"""
|
261
|
+
del cluster_name_on_cloud, ports, provider_config # Unused.
|