skypilot-nightly 1.0.0.dev20250303__tar.gz → 1.0.0.dev20250304__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.
Files changed (372) hide show
  1. {skypilot_nightly-1.0.0.dev20250303/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20250304}/PKG-INFO +28 -41
  2. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/README.md +27 -40
  3. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/__init__.py +2 -2
  4. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/cloud_vm_ray_backend.py +16 -8
  5. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/cli.py +35 -17
  6. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/client/cli.py +35 -17
  7. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/client/sdk.py +32 -9
  8. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/core.py +55 -6
  9. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/exceptions.py +80 -1
  10. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/client/sdk.py +7 -2
  11. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/constants.py +1 -1
  12. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/server/core.py +11 -6
  13. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/utils.py +51 -21
  14. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/constants.py +1 -1
  15. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/payloads.py +16 -8
  16. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/server.py +15 -2
  17. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/constants.py +1 -1
  18. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/job_lib.py +10 -1
  19. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304/skypilot_nightly.egg-info}/PKG-INFO +28 -41
  20. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/LICENSE +0 -0
  21. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/MANIFEST.in +0 -0
  22. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/pyproject.toml +0 -0
  23. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/setup.cfg +0 -0
  24. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/setup.py +0 -0
  25. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/__init__.py +0 -0
  26. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/aws.py +0 -0
  27. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/azure.py +0 -0
  28. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/cloudflare.py +0 -0
  29. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/common.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/cudo.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/do.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/docker.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/gcp.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/ibm.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/kubernetes.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/nebius.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/oci.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/runpod.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/vast.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/adaptors/vsphere.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/admin_policy.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/authentication.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/__init__.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/backend.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/backend_utils.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/docker_utils.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/local_docker_backend.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/backends/wheel_utils.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/benchmark/__init__.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/benchmark/benchmark_state.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/benchmark/benchmark_utils.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/check.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/client/__init__.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/client/common.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/cloud_stores.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/__init__.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/aws.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/azure.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/cloud.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/cudo.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/do.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/fluidstack.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/gcp.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/ibm.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/kubernetes.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/lambda_cloud.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/nebius.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/oci.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/paperspace.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/runpod.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/scp.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/__init__.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/common.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/config.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/constants.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_vast.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/do_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/kubernetes_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/nebius_catalog.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/vast_catalog.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/__init__.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/aws_utils.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/azure_utils.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/gcp_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/oci_utils.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/utils/scp_utils.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/vast.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/clouds/vsphere.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/dag.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/__init__.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/data_transfer.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/data_utils.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/mounting_utils.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/storage.py +0 -0
  116. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/data/storage_utils.py +0 -0
  117. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/execution.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/global_user_state.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/__init__.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/client/__init__.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/controller.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/dashboard/dashboard.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/dashboard/static/favicon.ico +0 -0
  124. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/dashboard/templates/index.html +0 -0
  125. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/recovery_strategy.py +0 -0
  126. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/scheduler.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/server/__init__.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/server/dashboard_utils.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/server/server.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/jobs/state.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/models.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/optimizer.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/__init__.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/aws/__init__.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/aws/config.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/aws/instance.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/aws/utils.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/azure/__init__.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/azure/azure-config-template.json +0 -0
  140. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/azure/config.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/azure/instance.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/common.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/__init__.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/config.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/cudo_machine_type.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/cudo_utils.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/cudo_wrapper.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/cudo/instance.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/do/__init__.py +0 -0
  151. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/do/config.py +0 -0
  152. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/do/constants.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/do/instance.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/do/utils.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/docker_utils.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/fluidstack/__init__.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/fluidstack/config.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/fluidstack/instance.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/__init__.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/config.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/constants.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/instance.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/instance_utils.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/gcp/mig_utils.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/instance_setup.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/__init__.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/config.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/constants.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/instance.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  172. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  173. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/network.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/network_utils.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/kubernetes/utils.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/lambda_cloud/__init__.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/lambda_cloud/config.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/lambda_cloud/instance.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/logging.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/metadata_utils.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/nebius/__init__.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/nebius/config.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/nebius/instance.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/nebius/utils.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/oci/__init__.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/oci/config.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/oci/instance.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/oci/query_utils.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/paperspace/__init__.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/paperspace/config.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/paperspace/constants.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/paperspace/instance.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/paperspace/utils.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/provisioner.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/__init__.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/api/__init__.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/api/commands.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/api/pods.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/config.py +0 -0
  201. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/instance.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/runpod/utils.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vast/__init__.py +0 -0
  204. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vast/config.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vast/instance.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vast/utils.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/__init__.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/__init__.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/custom_script.py +0 -0
  212. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/id_generator.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/service_manager.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/common/vim_utils.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/config.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/instance.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/provision/vsphere/vsphere_utils.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/resources.py +0 -0
  223. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/__init__.py +0 -0
  224. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/autoscalers.py +0 -0
  225. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/client/__init__.py +0 -0
  226. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/client/sdk.py +0 -0
  227. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/constants.py +0 -0
  228. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/controller.py +0 -0
  229. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/load_balancer.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/load_balancing_policies.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/replica_managers.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/serve_state.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/serve_utils.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/server/__init__.py +0 -0
  235. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/server/core.py +0 -0
  236. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/server/server.py +0 -0
  237. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/service.py +0 -0
  238. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/serve/service_spec.py +0 -0
  239. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/__init__.py +0 -0
  240. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/common.py +0 -0
  241. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/html/log.html +0 -0
  242. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/__init__.py +0 -0
  243. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/executor.py +0 -0
  244. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/queues/__init__.py +0 -0
  245. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/queues/mp_queue.py +0 -0
  246. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/requests.py +0 -0
  247. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/serializers/__init__.py +0 -0
  248. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/serializers/decoders.py +0 -0
  249. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/requests/serializers/encoders.py +0 -0
  250. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/server/stream_utils.py +0 -0
  251. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/setup_files/MANIFEST.in +0 -0
  252. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/setup_files/dependencies.py +0 -0
  253. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/setup_files/setup.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/sky_logging.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/LICENSE +0 -0
  256. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/attempt_skylet.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/autostop_lib.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/configs.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/events.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/log_lib.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/log_lib.pyi +0 -0
  263. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/__init__.py +0 -0
  264. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/command_runner.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/ibm/__init__.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/ibm/node_provider.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/ibm/utils.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/scp/__init__.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/scp/config.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/providers/scp/node_provider.py +0 -0
  272. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/__init__.py +0 -0
  273. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  274. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/cli.py.patch +0 -0
  275. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  276. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  277. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  278. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/updater.py.patch +0 -0
  279. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/ray_patches/worker.py.patch +0 -0
  280. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/skylet.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skylet/subprocess_daemon.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/skypilot_config.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/task.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/aws-ray.yml.j2 +0 -0
  285. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/azure-ray.yml.j2 +0 -0
  286. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/cudo-ray.yml.j2 +0 -0
  287. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/do-ray.yml.j2 +0 -0
  288. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  289. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/gcp-ray.yml.j2 +0 -0
  290. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/ibm-ray.yml.j2 +0 -0
  291. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/jobs-controller.yaml.j2 +0 -0
  292. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  293. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  294. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  295. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/kubernetes-ray.yml.j2 +0 -0
  296. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  297. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/lambda-ray.yml.j2 +0 -0
  298. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/local-ray.yml.j2 +0 -0
  299. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/nebius-ray.yml.j2 +0 -0
  300. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/oci-ray.yml.j2 +0 -0
  301. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/paperspace-ray.yml.j2 +0 -0
  302. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/runpod-ray.yml.j2 +0 -0
  303. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/scp-ray.yml.j2 +0 -0
  304. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  305. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/skypilot-server-kubernetes-proxy.sh +0 -0
  306. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/vast-ray.yml.j2 +0 -0
  307. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/vsphere-ray.yml.j2 +0 -0
  308. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/templates/websocket_proxy.py +0 -0
  309. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/usage/__init__.py +0 -0
  310. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/usage/constants.py +0 -0
  311. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/usage/usage_lib.py +0 -0
  312. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/__init__.py +0 -0
  313. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/accelerator_registry.py +0 -0
  314. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/admin_policy_utils.py +0 -0
  315. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/annotations.py +0 -0
  316. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/cli_utils/__init__.py +0 -0
  317. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/cli_utils/status_utils.py +0 -0
  318. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/cluster_utils.py +0 -0
  319. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/command_runner.py +0 -0
  320. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/command_runner.pyi +0 -0
  321. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/common.py +0 -0
  322. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/common_utils.py +0 -0
  323. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/config_utils.py +0 -0
  324. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/control_master_utils.py +0 -0
  325. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/controller_utils.py +0 -0
  326. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/dag_utils.py +0 -0
  327. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/db_utils.py +0 -0
  328. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/env_options.py +0 -0
  329. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/__init__.py +0 -0
  330. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/create_cluster.sh +0 -0
  331. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  332. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  333. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/exec_kubeconfig_converter.py +0 -0
  334. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  335. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/generate_kubeconfig.sh +0 -0
  336. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/gpu_labeler.py +0 -0
  337. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  338. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  339. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/kubernetes_deploy_utils.py +0 -0
  340. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  341. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  342. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/kubernetes_enums.py +0 -0
  343. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/log_utils.py +0 -0
  344. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/message_utils.py +0 -0
  345. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/registry.py +0 -0
  346. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/resources_utils.py +0 -0
  347. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/rich_utils.py +0 -0
  348. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/schemas.py +0 -0
  349. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/status_lib.py +0 -0
  350. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/subprocess_utils.py +0 -0
  351. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/timeline.py +0 -0
  352. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/ux_utils.py +0 -0
  353. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/sky/utils/validator.py +0 -0
  354. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  355. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  356. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  357. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/skypilot_nightly.egg-info/requires.txt +0 -0
  358. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/skypilot_nightly.egg-info/top_level.txt +0 -0
  359. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_api.py +0 -0
  360. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_cli.py +0 -0
  361. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_config.py +0 -0
  362. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_global_user_state.py +0 -0
  363. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_jobs.py +0 -0
  364. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_jobs_and_serve.py +0 -0
  365. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_list_accelerators.py +0 -0
  366. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_optimizer_dryruns.py +0 -0
  367. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_optimizer_random_dag.py +0 -0
  368. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_serve_autoscaler.py +0 -0
  369. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_smoke.py +0 -0
  370. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_storage.py +0 -0
  371. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_wheels.py +0 -0
  372. {skypilot_nightly-1.0.0.dev20250303 → skypilot_nightly-1.0.0.dev20250304}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20250303
3
+ Version: 1.0.0.dev20250304
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -241,13 +241,13 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidst
241
241
  </p>
242
242
 
243
243
 
244
- ## Getting Started
244
+ ## Getting started
245
245
  You can find our documentation [here](https://docs.skypilot.co/).
246
246
  - [Installation](https://docs.skypilot.co/en/latest/getting-started/installation.html)
247
247
  - [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html)
248
248
  - [CLI reference](https://docs.skypilot.co/en/latest/reference/cli.html)
249
249
 
250
- ## SkyPilot in 1 Minute
250
+ ## SkyPilot in 1 minute
251
251
 
252
252
  A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.
253
253
 
@@ -299,59 +299,46 @@ SkyPilot then performs the heavy-lifting for you, including:
299
299
  </p>
300
300
 
301
301
 
302
- Refer to [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
302
+ See [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
303
303
 
304
- ## More Information
304
+ ## Runnable examples
305
+
306
+ See [**SkyPilot examples**](https://docs.skypilot.co/en/docs-examples/examples/index.html) that cover: development, training, serving, LLM models, AI apps, and common frameworks.
307
+
308
+ Latest featured examples:
309
+
310
+ | Task | Examples |
311
+ |----------|----------|
312
+ | Training | [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.html), [Finetune Llama 3](https://docs.skypilot.co/en/latest/examples/training/llama-3_1-finetuning.html), [NeMo](https://docs.skypilot.co/en/latest/examples/training/nemo.html), [Ray](https://docs.skypilot.co/en/latest/examples/training/ray.html), [Unsloth](https://docs.skypilot.co/en/latest/examples/training/unsloth.html), [Jax/TPU](https://docs.skypilot.co/en/latest/examples/training/tpu.html) |
313
+ | Serving | [vLLM](https://docs.skypilot.co/en/latest/examples/serving/vllm.html), [SGLang](https://docs.skypilot.co/en/latest/examples/serving/sglang.html), [Ollama](https://docs.skypilot.co/en/latest/examples/serving/ollama.html) |
314
+ | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 3](https://docs.skypilot.co/en/latest/examples/models/llama-3.html), [CodeLlama](https://docs.skypilot.co/en/latest/examples/models/codellama.html), [Qwen](https://docs.skypilot.co/en/latest/examples/models/qwen.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
315
+ | AI apps | [RAG](https://docs.skypilot.co/en/latest/examples/applications/rag.html), [vector databases](https://docs.skypilot.co/en/latest/examples/applications/vector_database.html) (ChromaDB, CLIP) |
316
+ | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html) |
317
+
318
+ Source files and more examples can be found in [`llm/`](https://github.com/skypilot-org/skypilot/tree/master/llm) and [`examples/`](https://github.com/skypilot-org/skypilot/tree/master/examples).
319
+
320
+ ## More information
305
321
  To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
306
322
 
307
- <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
308
- Runnable examples:
309
- - [**AI Gallery**](https://docs.skypilot.co/en/latest/gallery/index.html)
310
- - LLMs on SkyPilot
311
- - [DeepSeek-R1](./llm/deepseek-r1/)
312
- - [DeepSeek-Janus](./llm/deepseek-janus/)
313
- - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
314
- - [Pixtral](./llm/pixtral/)
315
- - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
316
- - [GPT-2 via `llm.c`](./llm/gpt-2/)
317
- - [Llama 3](./llm/llama-3/)
318
- - [Qwen](./llm/qwen/)
319
- - [Databricks DBRX](./llm/dbrx/)
320
- - [Gemma](./llm/gemma/)
321
- - [Mixtral 8x7B](./llm/mixtral/); [Mistral 7B](https://docs.mistral.ai/self-deployment/skypilot/) (from official Mistral team)
322
- - [Code Llama](./llm/codellama/)
323
- - [vLLM: Serving LLM 24x Faster On the Cloud](./llm/vllm/) (from official vLLM team)
324
- - [SGLang: Fast and Expressive LLM Serving On the Cloud](./llm/sglang/) (from official SGLang team)
325
- - [Vicuna chatbots: Training & Serving](./llm/vicuna/) (from official Vicuna team)
326
- - [Train your own Vicuna on Llama-2](./llm/vicuna-llama-2/)
327
- - [Self-Hosted Llama-2 Chatbot](./llm/llama-2/)
328
- - [Ollama: Quantized LLMs on CPUs](./llm/ollama/)
329
- - [LoRAX](./llm/lorax/)
330
- - [QLoRA](https://github.com/artidoro/qlora/pull/132)
331
- - [LLaMA-LoRA-Tuner](https://github.com/zetavg/LLaMA-LoRA-Tuner#run-on-a-cloud-service-via-skypilot)
332
- - [Tabby: Self-hosted AI coding assistant](https://github.com/TabbyML/tabby/blob/bed723fcedb44a6b867ce22a7b1f03d2f3531c1e/experimental/eval/skypilot.yaml)
333
- - [LocalGPT](./llm/localgpt)
334
- - [Falcon](./llm/falcon)
335
- - Add yours here & see more in [`llm/`](./llm)!
336
- - Framework examples: [Vector Database](./examples/vector_database/), [PyTorch DDP](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_torch.yaml), [DeepSpeed](./examples/deepspeed-multinode/sky.yaml), [JAX/Flax on TPU](https://github.com/skypilot-org/skypilot/blob/master/examples/tpu/tpuvm_mnist.yaml), [Stable Diffusion](https://github.com/skypilot-org/skypilot/tree/master/examples/stable_diffusion), [Detectron2](https://github.com/skypilot-org/skypilot/blob/master/examples/detectron2_docker.yaml), [Distributed](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_tf_app.py) [TensorFlow](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_app_storage.yaml), [Ray Train](examples/distributed_ray_train/ray_train.yaml), [NeMo](https://github.com/skypilot-org/skypilot/blob/master/examples/nemo/), [programmatic grid search](https://github.com/skypilot-org/skypilot/blob/master/examples/huggingface_glue_imdb_grid_search_app.py), [Docker](https://github.com/skypilot-org/skypilot/blob/master/examples/docker/echo_app.yaml), [Cog](https://github.com/skypilot-org/skypilot/blob/master/examples/cog/), [Unsloth](https://github.com/skypilot-org/skypilot/blob/master/examples/unsloth/unsloth.yaml), [Ollama](https://github.com/skypilot-org/skypilot/blob/master/llm/ollama), [llm.c](https://github.com/skypilot-org/skypilot/tree/master/llm/gpt-2), [Airflow](./examples/airflow/training_workflow) and [many more (`examples/`)](./examples).
337
-
338
- Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
323
+ Case studies and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
339
324
 
340
325
  Follow updates:
341
- - [Twitter](https://twitter.com/skypilot_org)
342
326
  - [Slack](http://slack.skypilot.co)
327
+ - [X / Twitter](https://twitter.com/skypilot_org)
328
+ - [LinkedIn](https://www.linkedin.com/company/skypilot-oss/)
343
329
  - [SkyPilot Blog](https://blog.skypilot.co/) ([Introductory blog post](https://blog.skypilot.co/introducing-skypilot/))
344
330
 
345
331
  Read the research:
346
332
  - [SkyPilot paper](https://www.usenix.org/system/files/nsdi23-yang-zongheng.pdf) and [talk](https://www.usenix.org/conference/nsdi23/presentation/yang-zongheng) (NSDI 2023)
347
333
  - [Sky Computing whitepaper](https://arxiv.org/abs/2205.07147)
348
334
  - [Sky Computing vision paper](https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s02-stoica.pdf) (HotOS 2021)
349
- - [Policy for Managed Spot Jobs](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
335
+ - [SkyServe: AI serving across regions and clouds](https://arxiv.org/pdf/2411.01438) (EuroSys 2025)
336
+ - [Managed jobs spot instance policy](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
350
337
 
351
338
  SkyPilot was initially started at the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see [Concept: Sky Computing](https://docs.skypilot.co/en/latest/sky-computing.html).
352
339
 
353
- ## Support and Questions
354
- We are excited to hear your feedback!
340
+ ## Questions and feedback
341
+ We are excited to hear your feedback:
355
342
  * For issues and feature requests, please [open a GitHub issue](https://github.com/skypilot-org/skypilot/issues/new).
356
343
  * For questions, please use [GitHub Discussions](https://github.com/skypilot-org/skypilot/discussions).
357
344
 
@@ -84,13 +84,13 @@ pip install "skypilot-nightly[kubernetes,aws,gcp,azure,oci,lambda,runpod,fluidst
84
84
  </p>
85
85
 
86
86
 
87
- ## Getting Started
87
+ ## Getting started
88
88
  You can find our documentation [here](https://docs.skypilot.co/).
89
89
  - [Installation](https://docs.skypilot.co/en/latest/getting-started/installation.html)
90
90
  - [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html)
91
91
  - [CLI reference](https://docs.skypilot.co/en/latest/reference/cli.html)
92
92
 
93
- ## SkyPilot in 1 Minute
93
+ ## SkyPilot in 1 minute
94
94
 
95
95
  A SkyPilot task specifies: resource requirements, data to be synced, setup commands, and the task commands.
96
96
 
@@ -142,59 +142,46 @@ SkyPilot then performs the heavy-lifting for you, including:
142
142
  </p>
143
143
 
144
144
 
145
- Refer to [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
145
+ See [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
146
146
 
147
- ## More Information
147
+ ## Runnable examples
148
+
149
+ See [**SkyPilot examples**](https://docs.skypilot.co/en/docs-examples/examples/index.html) that cover: development, training, serving, LLM models, AI apps, and common frameworks.
150
+
151
+ Latest featured examples:
152
+
153
+ | Task | Examples |
154
+ |----------|----------|
155
+ | Training | [PyTorch](https://docs.skypilot.co/en/latest/getting-started/tutorial.html), [DeepSpeed](https://docs.skypilot.co/en/latest/examples/training/deepspeed.html), [Finetune Llama 3](https://docs.skypilot.co/en/latest/examples/training/llama-3_1-finetuning.html), [NeMo](https://docs.skypilot.co/en/latest/examples/training/nemo.html), [Ray](https://docs.skypilot.co/en/latest/examples/training/ray.html), [Unsloth](https://docs.skypilot.co/en/latest/examples/training/unsloth.html), [Jax/TPU](https://docs.skypilot.co/en/latest/examples/training/tpu.html) |
156
+ | Serving | [vLLM](https://docs.skypilot.co/en/latest/examples/serving/vllm.html), [SGLang](https://docs.skypilot.co/en/latest/examples/serving/sglang.html), [Ollama](https://docs.skypilot.co/en/latest/examples/serving/ollama.html) |
157
+ | Models | [DeepSeek-R1](https://docs.skypilot.co/en/latest/examples/models/deepseek-r1.html), [Llama 3](https://docs.skypilot.co/en/latest/examples/models/llama-3.html), [CodeLlama](https://docs.skypilot.co/en/latest/examples/models/codellama.html), [Qwen](https://docs.skypilot.co/en/latest/examples/models/qwen.html), [Mixtral](https://docs.skypilot.co/en/latest/examples/models/mixtral.html) |
158
+ | AI apps | [RAG](https://docs.skypilot.co/en/latest/examples/applications/rag.html), [vector databases](https://docs.skypilot.co/en/latest/examples/applications/vector_database.html) (ChromaDB, CLIP) |
159
+ | Common frameworks | [Airflow](https://docs.skypilot.co/en/latest/examples/frameworks/airflow.html), [Jupyter](https://docs.skypilot.co/en/latest/examples/frameworks/jupyter.html) |
160
+
161
+ Source files and more examples can be found in [`llm/`](https://github.com/skypilot-org/skypilot/tree/master/llm) and [`examples/`](https://github.com/skypilot-org/skypilot/tree/master/examples).
162
+
163
+ ## More information
148
164
  To learn more, see [SkyPilot Overview](https://docs.skypilot.co/en/latest/overview.html), [SkyPilot docs](https://docs.skypilot.co/en/latest/), and [SkyPilot blog](https://blog.skypilot.co/).
149
165
 
150
- <!-- Keep this section in sync with index.rst in SkyPilot Docs -->
151
- Runnable examples:
152
- - [**AI Gallery**](https://docs.skypilot.co/en/latest/gallery/index.html)
153
- - LLMs on SkyPilot
154
- - [DeepSeek-R1](./llm/deepseek-r1/)
155
- - [DeepSeek-Janus](./llm/deepseek-janus/)
156
- - [Llama 3.2: lightweight and vision models](./llm/llama-3_2/)
157
- - [Pixtral](./llm/pixtral/)
158
- - [Llama 3.1 finetuning](./llm/llama-3_1-finetuning/) and [serving](./llm/llama-3_1/)
159
- - [GPT-2 via `llm.c`](./llm/gpt-2/)
160
- - [Llama 3](./llm/llama-3/)
161
- - [Qwen](./llm/qwen/)
162
- - [Databricks DBRX](./llm/dbrx/)
163
- - [Gemma](./llm/gemma/)
164
- - [Mixtral 8x7B](./llm/mixtral/); [Mistral 7B](https://docs.mistral.ai/self-deployment/skypilot/) (from official Mistral team)
165
- - [Code Llama](./llm/codellama/)
166
- - [vLLM: Serving LLM 24x Faster On the Cloud](./llm/vllm/) (from official vLLM team)
167
- - [SGLang: Fast and Expressive LLM Serving On the Cloud](./llm/sglang/) (from official SGLang team)
168
- - [Vicuna chatbots: Training & Serving](./llm/vicuna/) (from official Vicuna team)
169
- - [Train your own Vicuna on Llama-2](./llm/vicuna-llama-2/)
170
- - [Self-Hosted Llama-2 Chatbot](./llm/llama-2/)
171
- - [Ollama: Quantized LLMs on CPUs](./llm/ollama/)
172
- - [LoRAX](./llm/lorax/)
173
- - [QLoRA](https://github.com/artidoro/qlora/pull/132)
174
- - [LLaMA-LoRA-Tuner](https://github.com/zetavg/LLaMA-LoRA-Tuner#run-on-a-cloud-service-via-skypilot)
175
- - [Tabby: Self-hosted AI coding assistant](https://github.com/TabbyML/tabby/blob/bed723fcedb44a6b867ce22a7b1f03d2f3531c1e/experimental/eval/skypilot.yaml)
176
- - [LocalGPT](./llm/localgpt)
177
- - [Falcon](./llm/falcon)
178
- - Add yours here & see more in [`llm/`](./llm)!
179
- - Framework examples: [Vector Database](./examples/vector_database/), [PyTorch DDP](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_torch.yaml), [DeepSpeed](./examples/deepspeed-multinode/sky.yaml), [JAX/Flax on TPU](https://github.com/skypilot-org/skypilot/blob/master/examples/tpu/tpuvm_mnist.yaml), [Stable Diffusion](https://github.com/skypilot-org/skypilot/tree/master/examples/stable_diffusion), [Detectron2](https://github.com/skypilot-org/skypilot/blob/master/examples/detectron2_docker.yaml), [Distributed](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_distributed_tf_app.py) [TensorFlow](https://github.com/skypilot-org/skypilot/blob/master/examples/resnet_app_storage.yaml), [Ray Train](examples/distributed_ray_train/ray_train.yaml), [NeMo](https://github.com/skypilot-org/skypilot/blob/master/examples/nemo/), [programmatic grid search](https://github.com/skypilot-org/skypilot/blob/master/examples/huggingface_glue_imdb_grid_search_app.py), [Docker](https://github.com/skypilot-org/skypilot/blob/master/examples/docker/echo_app.yaml), [Cog](https://github.com/skypilot-org/skypilot/blob/master/examples/cog/), [Unsloth](https://github.com/skypilot-org/skypilot/blob/master/examples/unsloth/unsloth.yaml), [Ollama](https://github.com/skypilot-org/skypilot/blob/master/llm/ollama), [llm.c](https://github.com/skypilot-org/skypilot/tree/master/llm/gpt-2), [Airflow](./examples/airflow/training_workflow) and [many more (`examples/`)](./examples).
180
-
181
- Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
166
+ Case studies and integrations: [Community Spotlights](https://blog.skypilot.co/community/)
182
167
 
183
168
  Follow updates:
184
- - [Twitter](https://twitter.com/skypilot_org)
185
169
  - [Slack](http://slack.skypilot.co)
170
+ - [X / Twitter](https://twitter.com/skypilot_org)
171
+ - [LinkedIn](https://www.linkedin.com/company/skypilot-oss/)
186
172
  - [SkyPilot Blog](https://blog.skypilot.co/) ([Introductory blog post](https://blog.skypilot.co/introducing-skypilot/))
187
173
 
188
174
  Read the research:
189
175
  - [SkyPilot paper](https://www.usenix.org/system/files/nsdi23-yang-zongheng.pdf) and [talk](https://www.usenix.org/conference/nsdi23/presentation/yang-zongheng) (NSDI 2023)
190
176
  - [Sky Computing whitepaper](https://arxiv.org/abs/2205.07147)
191
177
  - [Sky Computing vision paper](https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s02-stoica.pdf) (HotOS 2021)
192
- - [Policy for Managed Spot Jobs](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
178
+ - [SkyServe: AI serving across regions and clouds](https://arxiv.org/pdf/2411.01438) (EuroSys 2025)
179
+ - [Managed jobs spot instance policy](https://www.usenix.org/conference/nsdi24/presentation/wu-zhanghao) (NSDI 2024)
193
180
 
194
181
  SkyPilot was initially started at the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley and has since gained many industry contributors. To read about the project's origin and vision, see [Concept: Sky Computing](https://docs.skypilot.co/en/latest/sky-computing.html).
195
182
 
196
- ## Support and Questions
197
- We are excited to hear your feedback!
183
+ ## Questions and feedback
184
+ We are excited to hear your feedback:
198
185
  * For issues and feature requests, please [open a GitHub issue](https://github.com/skypilot-org/skypilot/issues/new).
199
186
  * For questions, please use [GitHub Discussions](https://github.com/skypilot-org/skypilot/discussions).
200
187
 
@@ -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 = '50bbf9162d3516d5eb4e59e071822a4f3c38622c'
8
+ _SKYPILOT_COMMIT_SHA = '5c126400a3a3791b34beebd5e7b5a3717efd9505'
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.dev20250303'
38
+ __version__ = '1.0.0.dev20250304'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -3823,6 +3823,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3823
3823
  follow: Whether to follow the logs.
3824
3824
  tail: The number of lines to display from the end of the
3825
3825
  log file. If 0, print all lines.
3826
+
3827
+ Returns:
3828
+ The exit code of the tail command. Returns code 100 if the job has
3829
+ failed. See exceptions.JobExitCode for possible return codes.
3826
3830
  """
3827
3831
  code = job_lib.JobLibCodeGen.tail_logs(job_id,
3828
3832
  managed_job_id=managed_job_id,
@@ -3856,7 +3860,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3856
3860
  job_id: Optional[int] = None,
3857
3861
  job_name: Optional[str] = None,
3858
3862
  controller: bool = False,
3859
- follow: bool = True) -> None:
3863
+ follow: bool = True) -> int:
3860
3864
  # if job_name is not None, job_id should be None
3861
3865
  assert job_name is None or job_id is None, (job_name, job_id)
3862
3866
  code = managed_jobs.ManagedJobCodeGen.stream_logs(
@@ -3869,13 +3873,17 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
3869
3873
  signal.signal(signal.SIGTSTP, backend_utils.stop_handler)
3870
3874
 
3871
3875
  # Refer to the notes in tail_logs.
3872
- self.run_on_head(
3873
- handle,
3874
- code,
3875
- stream_logs=True,
3876
- process_stream=False,
3877
- ssh_mode=command_runner.SshMode.INTERACTIVE,
3878
- )
3876
+ try:
3877
+ returncode = self.run_on_head(
3878
+ handle,
3879
+ code,
3880
+ stream_logs=True,
3881
+ process_stream=False,
3882
+ ssh_mode=command_runner.SshMode.INTERACTIVE,
3883
+ )
3884
+ except SystemExit as e:
3885
+ returncode = e.code
3886
+ return returncode
3879
3887
 
3880
3888
  def sync_down_managed_job_logs(
3881
3889
  self,
@@ -1227,11 +1227,15 @@ def launch(
1227
1227
  clusters=[handle.get_cluster_name()])
1228
1228
  # job_id will be None if no job was submitted (e.g. no entrypoint
1229
1229
  # provided)
1230
+ returncode = 0
1230
1231
  if not detach_run and job_id is not None:
1231
- sdk.tail_logs(handle.get_cluster_name(), job_id, follow=True)
1232
+ returncode = sdk.tail_logs(handle.get_cluster_name(),
1233
+ job_id,
1234
+ follow=True)
1232
1235
  click.secho(
1233
1236
  ux_utils.command_hint_messages(ux_utils.CommandHintType.CLUSTER_JOB,
1234
1237
  job_id, handle.get_cluster_name()))
1238
+ sys.exit(returncode)
1235
1239
 
1236
1240
 
1237
1241
  @cli.command(cls=_DocumentedCodeCommand)
@@ -1377,7 +1381,8 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
1377
1381
  job_id_handle = _async_call_or_wait(request_id, async_call, 'sky.exec')
1378
1382
  if not async_call and not detach_run:
1379
1383
  job_id, _ = job_id_handle
1380
- sdk.tail_logs(cluster, job_id, follow=True)
1384
+ returncode = sdk.tail_logs(cluster, job_id, follow=True)
1385
+ sys.exit(returncode)
1381
1386
 
1382
1387
 
1383
1388
  def _handle_jobs_queue_request(
@@ -2121,12 +2126,20 @@ def logs(
2121
2126
  one job_id can be provided.
2122
2127
 
2123
2128
  2. If ``--status`` is specified, print the status of the job and exit with
2124
- returncode 0 if the job succeeded, or 1 otherwise. At most one job_id can
2125
- be specified.
2129
+ returncode 0 if the job succeeded. At most one job_id can
2130
+ be specified. Other possible return codes:
2131
+
2132
+ - 100: job failed.
2133
+ - 101: job not finished.
2134
+ - 102: job not found.
2135
+ - 103: job was cancelled by the user.
2126
2136
 
2127
2137
  3. If ``--sync-down`` is specified, the logs of the job will be downloaded
2128
2138
  from the cluster and saved to the local machine under
2129
- ``~/sky_logs``. Mulitple job_ids can be specified.
2139
+ ``~/sky_logs``. Multiple job_ids can be specified.
2140
+
2141
+ 4. If the job fails or fetching the logs fails, the command will exit with
2142
+ a non-zero return code.
2130
2143
  """
2131
2144
  if sync_down and status:
2132
2145
  raise click.UsageError(
@@ -2174,17 +2187,18 @@ def logs(
2174
2187
  # it will return {None: None}.
2175
2188
  if job_id is None:
2176
2189
  click.secho(f'No job found on cluster {cluster!r}.', fg='red')
2177
- sys.exit(1)
2190
+ sys.exit(exceptions.JobExitCode.NOT_FOUND)
2178
2191
  job_status = list(job_statuses.values())[0]
2179
2192
  job_status_str = job_status.value if job_status is not None else 'None'
2180
2193
  click.echo(f'Job {job_id}: {job_status_str}')
2181
2194
  if job_status == job_lib.JobStatus.SUCCEEDED:
2182
2195
  return
2183
2196
  else:
2197
+ returncode = exceptions.JobExitCode.from_job_status(job_status)
2184
2198
  if job_status is None:
2185
2199
  id_str = '' if job_id is None else f'{job_id} '
2186
2200
  click.secho(f'Job {id_str}not found', fg='red')
2187
- sys.exit(1)
2201
+ sys.exit(returncode)
2188
2202
 
2189
2203
  job_str = f'job {job_id}'
2190
2204
  if job_id is None:
@@ -2194,7 +2208,8 @@ def logs(
2194
2208
  f'{colorama.Style.RESET_ALL}')
2195
2209
 
2196
2210
  # Stream logs from the server.
2197
- sdk.tail_logs(cluster, job_id, follow, tail=tail)
2211
+ returncode = sdk.tail_logs(cluster, job_id, follow, tail=tail)
2212
+ sys.exit(returncode)
2198
2213
 
2199
2214
 
2200
2215
  @cli.command()
@@ -3729,6 +3744,7 @@ def storage_delete(names: List[str], all: bool, yes: bool, async_call: bool): #
3729
3744
  if not storages:
3730
3745
  click.echo('No storage(s) to delete.')
3731
3746
  return
3747
+ names = [storage['name'] for storage in storages]
3732
3748
  else:
3733
3749
  names = _get_glob_storages(names)
3734
3750
  if names:
@@ -3893,10 +3909,11 @@ def jobs_launch(
3893
3909
  'sky.jobs.launch')
3894
3910
  if not async_call and not detach_run:
3895
3911
  job_id = job_id_handle[0]
3896
- managed_jobs.tail_logs(name=None,
3897
- job_id=job_id,
3898
- follow=True,
3899
- controller=False)
3912
+ returncode = managed_jobs.tail_logs(name=None,
3913
+ job_id=job_id,
3914
+ follow=True,
3915
+ controller=False)
3916
+ sys.exit(returncode)
3900
3917
 
3901
3918
 
3902
3919
  @jobs.command('queue', cls=_DocumentedCodeCommand)
@@ -4127,11 +4144,12 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
4127
4144
  logger.info(f'{fore.CYAN}Job {job} logs{controller_str}: '
4128
4145
  f'{log_local_path}{style.RESET_ALL}')
4129
4146
  else:
4130
- managed_jobs.tail_logs(name=name,
4131
- job_id=job_id,
4132
- follow=follow,
4133
- controller=controller,
4134
- refresh=refresh)
4147
+ returncode = managed_jobs.tail_logs(name=name,
4148
+ job_id=job_id,
4149
+ follow=follow,
4150
+ controller=controller,
4151
+ refresh=refresh)
4152
+ sys.exit(returncode)
4135
4153
  except exceptions.ClusterNotUpError:
4136
4154
  with ux_utils.print_exception_no_traceback():
4137
4155
  raise
@@ -1227,11 +1227,15 @@ def launch(
1227
1227
  clusters=[handle.get_cluster_name()])
1228
1228
  # job_id will be None if no job was submitted (e.g. no entrypoint
1229
1229
  # provided)
1230
+ returncode = 0
1230
1231
  if not detach_run and job_id is not None:
1231
- sdk.tail_logs(handle.get_cluster_name(), job_id, follow=True)
1232
+ returncode = sdk.tail_logs(handle.get_cluster_name(),
1233
+ job_id,
1234
+ follow=True)
1232
1235
  click.secho(
1233
1236
  ux_utils.command_hint_messages(ux_utils.CommandHintType.CLUSTER_JOB,
1234
1237
  job_id, handle.get_cluster_name()))
1238
+ sys.exit(returncode)
1235
1239
 
1236
1240
 
1237
1241
  @cli.command(cls=_DocumentedCodeCommand)
@@ -1377,7 +1381,8 @@ def exec(cluster: Optional[str], cluster_option: Optional[str],
1377
1381
  job_id_handle = _async_call_or_wait(request_id, async_call, 'sky.exec')
1378
1382
  if not async_call and not detach_run:
1379
1383
  job_id, _ = job_id_handle
1380
- sdk.tail_logs(cluster, job_id, follow=True)
1384
+ returncode = sdk.tail_logs(cluster, job_id, follow=True)
1385
+ sys.exit(returncode)
1381
1386
 
1382
1387
 
1383
1388
  def _handle_jobs_queue_request(
@@ -2121,12 +2126,20 @@ def logs(
2121
2126
  one job_id can be provided.
2122
2127
 
2123
2128
  2. If ``--status`` is specified, print the status of the job and exit with
2124
- returncode 0 if the job succeeded, or 1 otherwise. At most one job_id can
2125
- be specified.
2129
+ returncode 0 if the job succeeded. At most one job_id can
2130
+ be specified. Other possible return codes:
2131
+
2132
+ - 100: job failed.
2133
+ - 101: job not finished.
2134
+ - 102: job not found.
2135
+ - 103: job was cancelled by the user.
2126
2136
 
2127
2137
  3. If ``--sync-down`` is specified, the logs of the job will be downloaded
2128
2138
  from the cluster and saved to the local machine under
2129
- ``~/sky_logs``. Mulitple job_ids can be specified.
2139
+ ``~/sky_logs``. Multiple job_ids can be specified.
2140
+
2141
+ 4. If the job fails or fetching the logs fails, the command will exit with
2142
+ a non-zero return code.
2130
2143
  """
2131
2144
  if sync_down and status:
2132
2145
  raise click.UsageError(
@@ -2174,17 +2187,18 @@ def logs(
2174
2187
  # it will return {None: None}.
2175
2188
  if job_id is None:
2176
2189
  click.secho(f'No job found on cluster {cluster!r}.', fg='red')
2177
- sys.exit(1)
2190
+ sys.exit(exceptions.JobExitCode.NOT_FOUND)
2178
2191
  job_status = list(job_statuses.values())[0]
2179
2192
  job_status_str = job_status.value if job_status is not None else 'None'
2180
2193
  click.echo(f'Job {job_id}: {job_status_str}')
2181
2194
  if job_status == job_lib.JobStatus.SUCCEEDED:
2182
2195
  return
2183
2196
  else:
2197
+ returncode = exceptions.JobExitCode.from_job_status(job_status)
2184
2198
  if job_status is None:
2185
2199
  id_str = '' if job_id is None else f'{job_id} '
2186
2200
  click.secho(f'Job {id_str}not found', fg='red')
2187
- sys.exit(1)
2201
+ sys.exit(returncode)
2188
2202
 
2189
2203
  job_str = f'job {job_id}'
2190
2204
  if job_id is None:
@@ -2194,7 +2208,8 @@ def logs(
2194
2208
  f'{colorama.Style.RESET_ALL}')
2195
2209
 
2196
2210
  # Stream logs from the server.
2197
- sdk.tail_logs(cluster, job_id, follow, tail=tail)
2211
+ returncode = sdk.tail_logs(cluster, job_id, follow, tail=tail)
2212
+ sys.exit(returncode)
2198
2213
 
2199
2214
 
2200
2215
  @cli.command()
@@ -3729,6 +3744,7 @@ def storage_delete(names: List[str], all: bool, yes: bool, async_call: bool): #
3729
3744
  if not storages:
3730
3745
  click.echo('No storage(s) to delete.')
3731
3746
  return
3747
+ names = [storage['name'] for storage in storages]
3732
3748
  else:
3733
3749
  names = _get_glob_storages(names)
3734
3750
  if names:
@@ -3893,10 +3909,11 @@ def jobs_launch(
3893
3909
  'sky.jobs.launch')
3894
3910
  if not async_call and not detach_run:
3895
3911
  job_id = job_id_handle[0]
3896
- managed_jobs.tail_logs(name=None,
3897
- job_id=job_id,
3898
- follow=True,
3899
- controller=False)
3912
+ returncode = managed_jobs.tail_logs(name=None,
3913
+ job_id=job_id,
3914
+ follow=True,
3915
+ controller=False)
3916
+ sys.exit(returncode)
3900
3917
 
3901
3918
 
3902
3919
  @jobs.command('queue', cls=_DocumentedCodeCommand)
@@ -4127,11 +4144,12 @@ def jobs_logs(name: Optional[str], job_id: Optional[int], follow: bool,
4127
4144
  logger.info(f'{fore.CYAN}Job {job} logs{controller_str}: '
4128
4145
  f'{log_local_path}{style.RESET_ALL}')
4129
4146
  else:
4130
- managed_jobs.tail_logs(name=name,
4131
- job_id=job_id,
4132
- follow=follow,
4133
- controller=controller,
4134
- refresh=refresh)
4147
+ returncode = managed_jobs.tail_logs(name=name,
4148
+ job_id=job_id,
4149
+ follow=follow,
4150
+ controller=controller,
4151
+ refresh=refresh)
4152
+ sys.exit(returncode)
4135
4153
  except exceptions.ClusterNotUpError:
4136
4154
  with ux_utils.print_exception_no_traceback():
4137
4155
  raise
@@ -25,6 +25,7 @@ import filelock
25
25
  import psutil
26
26
  import requests
27
27
 
28
+ from sky import admin_policy
28
29
  from sky import backends
29
30
  from sky import exceptions
30
31
  from sky import sky_logging
@@ -212,13 +213,17 @@ def list_accelerator_counts(
212
213
  @annotations.client_api
213
214
  def optimize(
214
215
  dag: 'sky.Dag',
215
- minimize: common.OptimizeTarget = common.OptimizeTarget.COST
216
+ minimize: common.OptimizeTarget = common.OptimizeTarget.COST,
217
+ admin_policy_request_options: Optional[admin_policy.RequestOptions] = None
216
218
  ) -> server_common.RequestId:
217
219
  """Finds the best execution plan for the given DAG.
218
220
 
219
221
  Args:
220
222
  dag: the DAG to optimize.
221
223
  minimize: whether to minimize cost or time.
224
+ admin_policy_request_options: Request options used for admin policy
225
+ validation. This is only required when a admin policy is in use,
226
+ see: https://docs.skypilot.co/en/latest/cloud-setup/policy.html
222
227
 
223
228
  Returns:
224
229
  The request ID of the optimize request.
@@ -233,7 +238,9 @@ def optimize(
233
238
  """
234
239
  dag_str = dag_utils.dump_chain_dag_to_yaml_str(dag)
235
240
 
236
- body = payloads.OptimizeBody(dag=dag_str, minimize=minimize)
241
+ body = payloads.OptimizeBody(dag=dag_str,
242
+ minimize=minimize,
243
+ request_options=admin_policy_request_options)
237
244
  response = requests.post(f'{server_common.get_server_url()}/optimize',
238
245
  json=json.loads(body.model_dump_json()))
239
246
  return server_common.get_request_id(response)
@@ -242,7 +249,11 @@ def optimize(
242
249
  @usage_lib.entrypoint
243
250
  @server_common.check_server_healthy_or_start
244
251
  @annotations.client_api
245
- def validate(dag: 'sky.Dag', workdir_only: bool = False) -> None:
252
+ def validate(
253
+ dag: 'sky.Dag',
254
+ workdir_only: bool = False,
255
+ admin_policy_request_options: Optional[admin_policy.RequestOptions] = None
256
+ ) -> None:
246
257
  """Validates the tasks.
247
258
 
248
259
  The file paths (workdir and file_mounts) are validated on the client side
@@ -254,13 +265,17 @@ def validate(dag: 'sky.Dag', workdir_only: bool = False) -> None:
254
265
  dag: the DAG to validate.
255
266
  workdir_only: whether to only validate the workdir. This is used for
256
267
  `exec` as it does not need other files/folders in file_mounts.
268
+ admin_policy_request_options: Request options used for admin policy
269
+ validation. This is only required when a admin policy is in use,
270
+ see: https://docs.skypilot.co/en/latest/cloud-setup/policy.html
257
271
  """
258
272
  for task in dag.tasks:
259
273
  task.expand_and_validate_workdir()
260
274
  if not workdir_only:
261
275
  task.expand_and_validate_file_mounts()
262
276
  dag_str = dag_utils.dump_chain_dag_to_yaml_str(dag)
263
- body = payloads.ValidateBody(dag=dag_str)
277
+ body = payloads.ValidateBody(dag=dag_str,
278
+ request_options=admin_policy_request_options)
264
279
  response = requests.post(f'{server_common.get_server_url()}/validate',
265
280
  json=json.loads(body.model_dump_json()))
266
281
  if response.status_code == 400:
@@ -386,7 +401,12 @@ def launch(
386
401
  'Please contact the SkyPilot team if you '
387
402
  'need this feature at slack.skypilot.co.')
388
403
  dag = dag_utils.convert_entrypoint_to_dag(task)
389
- validate(dag)
404
+ request_options = admin_policy.RequestOptions(
405
+ cluster_name=cluster_name,
406
+ idle_minutes_to_autostop=idle_minutes_to_autostop,
407
+ down=down,
408
+ dryrun=dryrun)
409
+ validate(dag, admin_policy_request_options=request_options)
390
410
 
391
411
  confirm_shown = False
392
412
  if _need_confirmation:
@@ -400,7 +420,8 @@ def launch(
400
420
  if not clusters:
401
421
  # Show the optimize log before the prompt if the cluster does not
402
422
  # exist.
403
- request_id = optimize(dag)
423
+ request_id = optimize(dag,
424
+ admin_policy_request_options=request_options)
404
425
  stream_and_get(request_id)
405
426
  else:
406
427
  cluster_record = clusters[0]
@@ -562,7 +583,7 @@ def tail_logs(cluster_name: str,
562
583
  job_id: Optional[int],
563
584
  follow: bool,
564
585
  tail: int = 0,
565
- output_stream: Optional['io.TextIOBase'] = None) -> None:
586
+ output_stream: Optional['io.TextIOBase'] = None) -> int:
566
587
  """Tails the logs of a job.
567
588
 
568
589
  Args:
@@ -575,7 +596,9 @@ def tail_logs(cluster_name: str,
575
596
  console.
576
597
 
577
598
  Returns:
578
- None
599
+ Exit code based on success or failure of the job. 0 if success,
600
+ 100 if the job failed. See exceptions.JobExitCode for possible exit
601
+ codes.
579
602
 
580
603
  Request Raises:
581
604
  ValueError: if arguments are invalid or the cluster is not supported.
@@ -601,7 +624,7 @@ def tail_logs(cluster_name: str,
601
624
  timeout=(client_common.API_SERVER_REQUEST_CONNECTION_TIMEOUT_SECONDS,
602
625
  None))
603
626
  request_id = server_common.get_request_id(response)
604
- stream_response(request_id, response, output_stream)
627
+ return stream_response(request_id, response, output_stream)
605
628
 
606
629
 
607
630
  @usage_lib.entrypoint