skypilot-nightly 1.0.0.dev20241111__tar.gz → 1.0.0.dev20241113__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 (303) hide show
  1. {skypilot_nightly-1.0.0.dev20241111/skypilot_nightly.egg-info → skypilot_nightly-1.0.0.dev20241113}/PKG-INFO +2 -2
  2. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/README.md +1 -1
  3. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/__init__.py +2 -2
  4. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/backend_utils.py +1 -0
  5. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/cli.py +22 -6
  6. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/cloud.py +2 -0
  7. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/kubernetes.py +19 -3
  8. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/kubernetes_catalog.py +102 -61
  9. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/gcp_utils.py +5 -1
  10. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/core.py +2 -0
  11. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/optimizer.py +2 -0
  12. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/__init__.py +2 -0
  13. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/instance.py +125 -55
  14. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/utils.py +361 -102
  15. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/resources.py +38 -27
  16. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/serve_utils.py +79 -78
  17. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/log_lib.py +1 -4
  18. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/kubernetes-ray.yml.j2 +29 -3
  19. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/generate_kubeconfig.sh +3 -0
  20. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/gpu_labeler.py +2 -2
  21. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/log_utils.py +52 -1
  22. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/timeline.py +3 -1
  23. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113/skypilot_nightly.egg-info}/PKG-INFO +2 -2
  24. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_smoke.py +19 -0
  25. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/LICENSE +0 -0
  26. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/MANIFEST.in +0 -0
  27. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/pyproject.toml +0 -0
  28. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/setup.cfg +0 -0
  29. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/setup.py +0 -0
  30. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/__init__.py +0 -0
  31. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/aws.py +0 -0
  32. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/azure.py +0 -0
  33. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/cloudflare.py +0 -0
  34. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/common.py +0 -0
  35. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/cudo.py +0 -0
  36. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/docker.py +0 -0
  37. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/gcp.py +0 -0
  38. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/ibm.py +0 -0
  39. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/kubernetes.py +0 -0
  40. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/oci.py +0 -0
  41. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/runpod.py +0 -0
  42. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/adaptors/vsphere.py +0 -0
  43. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/admin_policy.py +0 -0
  44. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/authentication.py +0 -0
  45. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/__init__.py +0 -0
  46. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/backend.py +0 -0
  47. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/cloud_vm_ray_backend.py +0 -0
  48. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/docker_utils.py +0 -0
  49. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/local_docker_backend.py +0 -0
  50. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/monkey_patches/monkey_patch_ray_up.py +0 -0
  51. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/backends/wheel_utils.py +0 -0
  52. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/benchmark/__init__.py +0 -0
  53. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/benchmark/benchmark_state.py +0 -0
  54. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/benchmark/benchmark_utils.py +0 -0
  55. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/check.py +0 -0
  56. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/cloud_stores.py +0 -0
  57. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/__init__.py +0 -0
  58. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/aws.py +0 -0
  59. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/azure.py +0 -0
  60. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/cloud_registry.py +0 -0
  61. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/cudo.py +0 -0
  62. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/fluidstack.py +0 -0
  63. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/gcp.py +0 -0
  64. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/ibm.py +0 -0
  65. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/lambda_cloud.py +0 -0
  66. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/oci.py +0 -0
  67. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/paperspace.py +0 -0
  68. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/runpod.py +0 -0
  69. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/scp.py +0 -0
  70. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/__init__.py +0 -0
  71. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/aws_catalog.py +0 -0
  72. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/azure_catalog.py +0 -0
  73. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/common.py +0 -0
  74. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/config.py +0 -0
  75. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/constants.py +0 -0
  76. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/cudo_catalog.py +0 -0
  77. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/__init__.py +0 -0
  78. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_aws.py +0 -0
  79. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_azure.py +0 -0
  80. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_cudo.py +0 -0
  81. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +0 -0
  82. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_gcp.py +0 -0
  83. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py +0 -0
  84. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/data_fetchers/fetch_vsphere.py +0 -0
  85. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/fluidstack_catalog.py +0 -0
  86. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/gcp_catalog.py +0 -0
  87. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/ibm_catalog.py +0 -0
  88. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/lambda_catalog.py +0 -0
  89. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/oci_catalog.py +0 -0
  90. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/paperspace_catalog.py +0 -0
  91. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/runpod_catalog.py +0 -0
  92. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/scp_catalog.py +0 -0
  93. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/service_catalog/vsphere_catalog.py +0 -0
  94. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/__init__.py +0 -0
  95. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/aws_utils.py +0 -0
  96. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/azure_utils.py +0 -0
  97. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/oci_utils.py +0 -0
  98. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/utils/scp_utils.py +0 -0
  99. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/clouds/vsphere.py +0 -0
  100. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/core.py +0 -0
  101. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/dag.py +0 -0
  102. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/__init__.py +0 -0
  103. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/data_transfer.py +0 -0
  104. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/data_utils.py +0 -0
  105. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/mounting_utils.py +0 -0
  106. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/storage.py +0 -0
  107. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/data/storage_utils.py +0 -0
  108. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/exceptions.py +0 -0
  109. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/execution.py +0 -0
  110. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/global_user_state.py +0 -0
  111. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/__init__.py +0 -0
  112. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/constants.py +0 -0
  113. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/controller.py +0 -0
  114. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/dashboard/dashboard.py +0 -0
  115. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/dashboard/static/favicon.ico +0 -0
  116. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/dashboard/templates/index.html +0 -0
  117. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/recovery_strategy.py +0 -0
  118. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/state.py +0 -0
  119. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/jobs/utils.py +0 -0
  120. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/aws/__init__.py +0 -0
  121. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/aws/config.py +0 -0
  122. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/aws/instance.py +0 -0
  123. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/aws/utils.py +0 -0
  124. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/azure/__init__.py +0 -0
  125. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/azure/azure-config-template.json +0 -0
  126. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/azure/config.py +0 -0
  127. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/azure/instance.py +0 -0
  128. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/common.py +0 -0
  129. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/constants.py +0 -0
  130. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/__init__.py +0 -0
  131. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/config.py +0 -0
  132. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/cudo_machine_type.py +0 -0
  133. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/cudo_utils.py +0 -0
  134. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/cudo_wrapper.py +0 -0
  135. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/cudo/instance.py +0 -0
  136. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/docker_utils.py +0 -0
  137. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/fluidstack/__init__.py +0 -0
  138. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/fluidstack/config.py +0 -0
  139. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/fluidstack/fluidstack_utils.py +0 -0
  140. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/fluidstack/instance.py +0 -0
  141. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/__init__.py +0 -0
  142. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/config.py +0 -0
  143. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/constants.py +0 -0
  144. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/instance.py +0 -0
  145. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/instance_utils.py +0 -0
  146. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/gcp/mig_utils.py +0 -0
  147. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/instance_setup.py +0 -0
  148. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/__init__.py +0 -0
  149. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/config.py +0 -0
  150. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/manifests/smarter-device-manager-configmap.yaml +0 -0
  151. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/manifests/smarter-device-manager-daemonset.yaml +0 -0
  152. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/network.py +0 -0
  153. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/kubernetes/network_utils.py +0 -0
  154. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/lambda_cloud/__init__.py +0 -0
  155. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/lambda_cloud/config.py +0 -0
  156. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/lambda_cloud/instance.py +0 -0
  157. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/lambda_cloud/lambda_utils.py +0 -0
  158. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/logging.py +0 -0
  159. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/metadata_utils.py +0 -0
  160. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/oci/__init__.py +0 -0
  161. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/oci/config.py +0 -0
  162. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/oci/instance.py +0 -0
  163. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/oci/query_utils.py +0 -0
  164. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/paperspace/__init__.py +0 -0
  165. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/paperspace/config.py +0 -0
  166. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/paperspace/constants.py +0 -0
  167. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/paperspace/instance.py +0 -0
  168. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/paperspace/utils.py +0 -0
  169. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/provisioner.py +0 -0
  170. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/runpod/__init__.py +0 -0
  171. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/runpod/config.py +0 -0
  172. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/runpod/instance.py +0 -0
  173. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/runpod/utils.py +0 -0
  174. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/__init__.py +0 -0
  175. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/__init__.py +0 -0
  176. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/cls_api_client.py +0 -0
  177. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/cls_api_helper.py +0 -0
  178. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/custom_script.py +0 -0
  179. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/id_generator.py +0 -0
  180. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/metadata_utils.py +0 -0
  181. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/service_manager.py +0 -0
  182. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/service_manager_factory.py +0 -0
  183. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/ssl_helper.py +0 -0
  184. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/vapiconnect.py +0 -0
  185. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/common/vim_utils.py +0 -0
  186. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/config.py +0 -0
  187. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/instance.py +0 -0
  188. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/provision/vsphere/vsphere_utils.py +0 -0
  189. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/__init__.py +0 -0
  190. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/autoscalers.py +0 -0
  191. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/constants.py +0 -0
  192. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/controller.py +0 -0
  193. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/core.py +0 -0
  194. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/load_balancer.py +0 -0
  195. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/load_balancing_policies.py +0 -0
  196. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/replica_managers.py +0 -0
  197. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/serve_state.py +0 -0
  198. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/service.py +0 -0
  199. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/serve/service_spec.py +0 -0
  200. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/setup_files/MANIFEST.in +0 -0
  201. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/setup_files/setup.py +0 -0
  202. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/sky_logging.py +0 -0
  203. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/LICENSE +0 -0
  204. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/__init__.py +0 -0
  205. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/attempt_skylet.py +0 -0
  206. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/autostop_lib.py +0 -0
  207. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/configs.py +0 -0
  208. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/constants.py +0 -0
  209. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/events.py +0 -0
  210. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/job_lib.py +0 -0
  211. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/log_lib.pyi +0 -0
  212. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/__init__.py +0 -0
  213. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/command_runner.py +0 -0
  214. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/ibm/__init__.py +0 -0
  215. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/ibm/node_provider.py +0 -0
  216. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/ibm/utils.py +0 -0
  217. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/ibm/vpc_provider.py +0 -0
  218. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/scp/__init__.py +0 -0
  219. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/scp/config.py +0 -0
  220. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/providers/scp/node_provider.py +0 -0
  221. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/__init__.py +0 -0
  222. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/autoscaler.py.patch +0 -0
  223. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/cli.py.patch +0 -0
  224. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/command_runner.py.patch +0 -0
  225. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/log_monitor.py.patch +0 -0
  226. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/resource_demand_scheduler.py.patch +0 -0
  227. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/updater.py.patch +0 -0
  228. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/ray_patches/worker.py.patch +0 -0
  229. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/skylet.py +0 -0
  230. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skylet/subprocess_daemon.py +0 -0
  231. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/skypilot_config.py +0 -0
  232. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/status_lib.py +0 -0
  233. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/task.py +0 -0
  234. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/aws-ray.yml.j2 +0 -0
  235. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/azure-ray.yml.j2 +0 -0
  236. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/cudo-ray.yml.j2 +0 -0
  237. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/fluidstack-ray.yml.j2 +0 -0
  238. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/gcp-ray.yml.j2 +0 -0
  239. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/ibm-ray.yml.j2 +0 -0
  240. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/jobs-controller.yaml.j2 +0 -0
  241. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/kubernetes-ingress.yml.j2 +0 -0
  242. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/kubernetes-loadbalancer.yml.j2 +0 -0
  243. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/kubernetes-port-forward-proxy-command.sh +0 -0
  244. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/kubernetes-ssh-jump.yml.j2 +0 -0
  245. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/lambda-ray.yml.j2 +0 -0
  246. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/local-ray.yml.j2 +0 -0
  247. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/oci-ray.yml.j2 +0 -0
  248. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/paperspace-ray.yml.j2 +0 -0
  249. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/runpod-ray.yml.j2 +0 -0
  250. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/scp-ray.yml.j2 +0 -0
  251. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/sky-serve-controller.yaml.j2 +0 -0
  252. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/templates/vsphere-ray.yml.j2 +0 -0
  253. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/usage/__init__.py +0 -0
  254. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/usage/constants.py +0 -0
  255. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/usage/usage_lib.py +0 -0
  256. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/__init__.py +0 -0
  257. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/accelerator_registry.py +0 -0
  258. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/admin_policy_utils.py +0 -0
  259. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/cli_utils/__init__.py +0 -0
  260. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/cli_utils/status_utils.py +0 -0
  261. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/cluster_yaml_utils.py +0 -0
  262. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/command_runner.py +0 -0
  263. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/command_runner.pyi +0 -0
  264. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/common_utils.py +0 -0
  265. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/control_master_utils.py +0 -0
  266. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/controller_utils.py +0 -0
  267. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/dag_utils.py +0 -0
  268. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/db_utils.py +0 -0
  269. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/env_options.py +0 -0
  270. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/__init__.py +0 -0
  271. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/create_cluster.sh +0 -0
  272. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/delete_cluster.sh +0 -0
  273. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/deploy_remote_cluster.sh +0 -0
  274. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/generate_kind_config.py +0 -0
  275. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/k8s_gpu_labeler_job.yaml +0 -0
  276. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml +0 -0
  277. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/rsync_helper.sh +0 -0
  278. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes/ssh_jump_lifecycle_manager.py +0 -0
  279. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/kubernetes_enums.py +0 -0
  280. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/resources_utils.py +0 -0
  281. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/rich_utils.py +0 -0
  282. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/schemas.py +0 -0
  283. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/subprocess_utils.py +0 -0
  284. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/ux_utils.py +0 -0
  285. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/sky/utils/validator.py +0 -0
  286. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/skypilot_nightly.egg-info/SOURCES.txt +0 -0
  287. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/skypilot_nightly.egg-info/dependency_links.txt +0 -0
  288. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/skypilot_nightly.egg-info/entry_points.txt +0 -0
  289. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/skypilot_nightly.egg-info/requires.txt +0 -0
  290. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/skypilot_nightly.egg-info/top_level.txt +0 -0
  291. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_api.py +0 -0
  292. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_cli.py +0 -0
  293. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_config.py +0 -0
  294. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_global_user_state.py +0 -0
  295. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_jobs.py +0 -0
  296. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_jobs_and_serve.py +0 -0
  297. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_list_accelerators.py +0 -0
  298. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_optimizer_dryruns.py +0 -0
  299. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_optimizer_random_dag.py +0 -0
  300. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_serve_autoscaler.py +0 -0
  301. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_storage.py +0 -0
  302. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_wheels.py +0 -0
  303. {skypilot_nightly-1.0.0.dev20241111 → skypilot_nightly-1.0.0.dev20241113}/tests/test_yaml_parser.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20241111
3
+ Version: 1.0.0.dev20241113
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -319,7 +319,7 @@ Runnable examples:
319
319
  - [LocalGPT](./llm/localgpt)
320
320
  - [Falcon](./llm/falcon)
321
321
  - Add yours here & see more in [`llm/`](./llm)!
322
- - Framework examples: [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/nemo.yaml), [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).
322
+ - Framework examples: [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).
323
323
 
324
324
  Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
325
325
 
@@ -183,7 +183,7 @@ Runnable examples:
183
183
  - [LocalGPT](./llm/localgpt)
184
184
  - [Falcon](./llm/falcon)
185
185
  - Add yours here & see more in [`llm/`](./llm)!
186
- - Framework examples: [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/nemo.yaml), [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).
186
+ - Framework examples: [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).
187
187
 
188
188
  Case Studies and Integrations: [Community Spotlights](https://blog.skypilot.co/community/)
189
189
 
@@ -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 = '91323d86baaeb1341c6953e15bbf19f2896b67ad'
8
+ _SKYPILOT_COMMIT_SHA = 'eea13cc624a10bd4319eace0f48dcceb9d0287cd'
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.dev20241111'
38
+ __version__ = '1.0.0.dev20241113'
39
39
  __root_dir__ = os.path.dirname(os.path.abspath(__file__))
40
40
 
41
41
 
@@ -1418,6 +1418,7 @@ def check_network_connection():
1418
1418
  'Network seems down.') from e
1419
1419
 
1420
1420
 
1421
+ @timeline.event
1421
1422
  def check_owner_identity(cluster_name: str) -> None:
1422
1423
  """Check if current user is the same as the user who created the cluster.
1423
1424
 
@@ -3102,6 +3102,7 @@ def show_gpus(
3102
3102
  kubernetes_autoscaling = kubernetes_utils.get_autoscaler_type() is not None
3103
3103
  kubernetes_is_enabled = sky_clouds.cloud_in_iterable(
3104
3104
  sky_clouds.Kubernetes(), global_user_state.get_cached_enabled_clouds())
3105
+ no_permissions_str = '<no permissions>'
3105
3106
 
3106
3107
  def _list_to_str(lst):
3107
3108
  return ', '.join([str(e) for e in lst])
@@ -3142,13 +3143,16 @@ def show_gpus(
3142
3143
  'in Kubernetes cluster. ')
3143
3144
  debug_msg = ('To show available accelerators on kubernetes,'
3144
3145
  ' run: sky show-gpus --cloud kubernetes ')
3145
- full_err_msg = (err_msg + kubernetes_utils.NO_GPU_HELP_MESSAGE +
3146
+ full_err_msg = (err_msg +
3147
+ kubernetes_utils.NO_ACCELERATOR_HELP_MESSAGE +
3146
3148
  debug_msg)
3147
3149
  raise ValueError(full_err_msg)
3148
3150
  for gpu, _ in sorted(counts.items()):
3151
+ available_qty = available[gpu] if available[gpu] != -1 else (
3152
+ no_permissions_str)
3149
3153
  realtime_gpu_table.add_row([
3150
3154
  gpu,
3151
- _list_to_str(counts.pop(gpu)), capacity[gpu], available[gpu]
3155
+ _list_to_str(counts.pop(gpu)), capacity[gpu], available_qty
3152
3156
  ])
3153
3157
  return realtime_gpu_table
3154
3158
 
@@ -3158,10 +3162,12 @@ def show_gpus(
3158
3162
 
3159
3163
  node_info_dict = kubernetes_utils.get_kubernetes_node_info(context)
3160
3164
  for node_name, node_info in node_info_dict.items():
3165
+ available = node_info.free[
3166
+ 'accelerators_available'] if node_info.free[
3167
+ 'accelerators_available'] != -1 else no_permissions_str
3161
3168
  node_table.add_row([
3162
- node_name, node_info.gpu_type,
3163
- node_info.total['nvidia.com/gpu'],
3164
- node_info.free['nvidia.com/gpu']
3169
+ node_name, node_info.accelerator_type,
3170
+ node_info.total['accelerator_count'], available
3165
3171
  ])
3166
3172
  return node_table
3167
3173
 
@@ -3216,8 +3222,18 @@ def show_gpus(
3216
3222
  yield from k8s_realtime_table.get_string()
3217
3223
  k8s_node_table = _get_kubernetes_node_info_table(context)
3218
3224
  yield '\n\n'
3225
+ # TODO(Doyoung): Update the message with the multi-host TPU
3226
+ # support.
3227
+ k8s_per_node_acc_message = (
3228
+ 'Kubernetes per node accelerator availability ')
3229
+ if kubernetes_utils.multi_host_tpu_exists_in_cluster(
3230
+ context):
3231
+ k8s_per_node_acc_message += (
3232
+ '(Note: Multi-host TPUs are detected and excluded '
3233
+ 'from the display as multi-host TPUs are not '
3234
+ 'supported.)')
3219
3235
  yield (f'{colorama.Fore.CYAN}{colorama.Style.BRIGHT}'
3220
- f'Kubernetes per node GPU availability'
3236
+ f'{k8s_per_node_acc_message}'
3221
3237
  f'{colorama.Style.RESET_ALL}\n')
3222
3238
  yield from k8s_node_table.get_string()
3223
3239
  if kubernetes_autoscaling:
@@ -18,6 +18,7 @@ from sky import skypilot_config
18
18
  from sky.clouds import service_catalog
19
19
  from sky.utils import log_utils
20
20
  from sky.utils import resources_utils
21
+ from sky.utils import timeline
21
22
  from sky.utils import ux_utils
22
23
 
23
24
  if typing.TYPE_CHECKING:
@@ -366,6 +367,7 @@ class Cloud:
366
367
  del label_key, label_value
367
368
  return True, None
368
369
 
370
+ @timeline.event
369
371
  def get_feasible_launchable_resources(
370
372
  self,
371
373
  resources: 'resources_lib.Resources',
@@ -362,11 +362,23 @@ class Kubernetes(clouds.Cloud):
362
362
 
363
363
  k8s_acc_label_key = None
364
364
  k8s_acc_label_value = None
365
+ k8s_topology_label_key = None
366
+ k8s_topology_label_value = None
367
+ k8s_resource_key = None
368
+ tpu_requested = False
365
369
 
366
- # If GPUs are requested, set node label to match the GPU type.
370
+ # If GPU/TPUs are requested, set node label to match the GPU/TPU type.
367
371
  if acc_count > 0 and acc_type is not None:
368
- k8s_acc_label_key, k8s_acc_label_value = \
369
- kubernetes_utils.get_gpu_label_key_value(context, acc_type)
372
+ (k8s_acc_label_key, k8s_acc_label_value, k8s_topology_label_key,
373
+ k8s_topology_label_value) = (
374
+ kubernetes_utils.get_accelerator_label_key_value(
375
+ context, acc_type, acc_count))
376
+ if (k8s_acc_label_key ==
377
+ kubernetes_utils.GKELabelFormatter.TPU_LABEL_KEY):
378
+ tpu_requested = True
379
+ k8s_resource_key = kubernetes_utils.TPU_RESOURCE_KEY
380
+ else:
381
+ k8s_resource_key = kubernetes_utils.GPU_RESOURCE_KEY
370
382
 
371
383
  port_mode = network_utils.get_port_mode(None)
372
384
 
@@ -428,6 +440,10 @@ class Kubernetes(clouds.Cloud):
428
440
  'k8s_skypilot_system_namespace': _SKYPILOT_SYSTEM_NAMESPACE,
429
441
  'k8s_spot_label_key': spot_label_key,
430
442
  'k8s_spot_label_value': spot_label_value,
443
+ 'tpu_requested': tpu_requested,
444
+ 'k8s_topology_label_key': k8s_topology_label_key,
445
+ 'k8s_topology_label_value': k8s_topology_label_value,
446
+ 'k8s_resource_key': k8s_resource_key,
431
447
  'image_id': image_id,
432
448
  }
433
449
 
@@ -10,6 +10,7 @@ from typing import Dict, List, Optional, Set, Tuple
10
10
  from sky import check as sky_check
11
11
  from sky import sky_logging
12
12
  from sky.adaptors import common as adaptors_common
13
+ from sky.adaptors import kubernetes
13
14
  from sky.clouds import Kubernetes
14
15
  from sky.clouds.service_catalog import CloudFilter
15
16
  from sky.clouds.service_catalog import common
@@ -22,6 +23,8 @@ if typing.TYPE_CHECKING:
22
23
  else:
23
24
  pd = adaptors_common.LazyImport('pandas')
24
25
 
26
+ logger = sky_logging.init_logger(__name__)
27
+
25
28
  _PULL_FREQUENCY_HOURS = 7
26
29
 
27
30
  # We keep pull_frequency_hours so we can remotely update the default image paths
@@ -77,6 +80,11 @@ def list_accelerators_realtime(
77
80
  require_price: bool = True
78
81
  ) -> Tuple[Dict[str, List[common.InstanceTypeInfo]], Dict[str, int], Dict[str,
79
82
  int]]:
83
+ """List accelerators in the Kubernetes cluster.
84
+
85
+ If the user does not have sufficient permissions to list pods in all
86
+ namespaces, the function will return free GPUs as -1.
87
+ """
80
88
  # TODO(romilb): This should be refactored to use get_kubernetes_node_info()
81
89
  # function from kubernetes_utils.
82
90
  del all_regions, require_price # Unused.
@@ -96,19 +104,29 @@ def list_accelerators_realtime(
96
104
  ) or not kubernetes_utils.check_credentials(context)[0]:
97
105
  return {}, {}, {}
98
106
 
99
- has_gpu = kubernetes_utils.detect_gpu_resource(context)
107
+ has_gpu = kubernetes_utils.detect_accelerator_resource(context)
100
108
  if not has_gpu:
101
109
  return {}, {}, {}
102
110
 
103
- label_formatter, _ = kubernetes_utils.detect_gpu_label_formatter(context)
104
- if not label_formatter:
111
+ lf, _ = kubernetes_utils.detect_gpu_label_formatter(context)
112
+ if not lf:
105
113
  return {}, {}, {}
106
114
 
107
115
  accelerators_qtys: Set[Tuple[str, int]] = set()
108
- key = label_formatter.get_label_key()
116
+ keys = lf.get_label_keys()
109
117
  nodes = kubernetes_utils.get_kubernetes_nodes(context)
110
118
  # Get the pods to get the real-time GPU usage
111
- pods = kubernetes_utils.get_all_pods_in_kubernetes_cluster(context)
119
+ try:
120
+ pods = kubernetes_utils.get_all_pods_in_kubernetes_cluster(context)
121
+ except kubernetes.api_exception() as e:
122
+ if e.status == 403:
123
+ logger.warning('Failed to get pods in the Kubernetes cluster '
124
+ '(forbidden). Please check if your account has '
125
+ 'necessary permissions to list pods. Realtime GPU '
126
+ 'availability information may be incorrect.')
127
+ pods = None
128
+ else:
129
+ raise
112
130
  # Total number of GPUs in the cluster
113
131
  total_accelerators_capacity: Dict[str, int] = {}
114
132
  # Total number of GPUs currently available in the cluster
@@ -116,62 +134,85 @@ def list_accelerators_realtime(
116
134
  min_quantity_filter = quantity_filter if quantity_filter else 1
117
135
 
118
136
  for node in nodes:
119
- if key in node.metadata.labels:
120
- allocated_qty = 0
121
- accelerator_name = label_formatter.get_accelerator_from_label_value(
122
- node.metadata.labels.get(key))
123
-
124
- # Check if name_filter regex matches the accelerator_name
125
- regex_flags = 0 if case_sensitive else re.IGNORECASE
126
- if name_filter and not re.match(
127
- name_filter, accelerator_name, flags=regex_flags):
128
- continue
129
-
130
- accelerator_count = int(
131
- node.status.allocatable.get('nvidia.com/gpu', 0))
132
-
133
- # Generate the GPU quantities for the accelerators
134
- if accelerator_name and accelerator_count > 0:
135
- count = 1
136
- while count <= accelerator_count:
137
- accelerators_qtys.add((accelerator_name, count))
138
- count *= 2
139
- # Add the accelerator count if it's not already in the set
140
- # (e.g., if there's 12 GPUs, we should have qtys 1, 2, 4, 8, 12)
141
- if accelerator_count not in accelerators_qtys:
142
- accelerators_qtys.add((accelerator_name, accelerator_count))
143
-
144
- for pod in pods:
145
- # Get all the pods running on the node
146
- if (pod.spec.node_name == node.metadata.name and
147
- pod.status.phase in ['Running', 'Pending']):
148
- # Iterate over all the containers in the pod and sum the
149
- # GPU requests
150
- for container in pod.spec.containers:
151
- if container.resources.requests:
152
- allocated_qty += int(
153
- container.resources.requests.get(
154
- 'nvidia.com/gpu', 0))
155
-
156
- accelerators_available = accelerator_count - allocated_qty
157
-
158
- if accelerator_count >= min_quantity_filter:
159
- quantized_count = (min_quantity_filter *
160
- (accelerator_count // min_quantity_filter))
161
- if accelerator_name not in total_accelerators_capacity:
162
- total_accelerators_capacity[
163
- accelerator_name] = quantized_count
164
- else:
165
- total_accelerators_capacity[
166
- accelerator_name] += quantized_count
167
-
168
- if accelerator_name not in total_accelerators_available:
169
- total_accelerators_available[accelerator_name] = 0
170
- if accelerators_available >= min_quantity_filter:
171
- quantized_availability = min_quantity_filter * (
172
- accelerators_available // min_quantity_filter)
173
- total_accelerators_available[
174
- accelerator_name] += quantized_availability
137
+ for key in keys:
138
+ if key in node.metadata.labels:
139
+ allocated_qty = 0
140
+ accelerator_name = lf.get_accelerator_from_label_value(
141
+ node.metadata.labels.get(key))
142
+
143
+ # Exclude multi-host TPUs from being processed.
144
+ # TODO(Doyoung): Remove the logic when adding support for
145
+ # multi-host TPUs.
146
+ if kubernetes_utils.is_multi_host_tpu(node.metadata.labels):
147
+ continue
148
+
149
+ # Check if name_filter regex matches the accelerator_name
150
+ regex_flags = 0 if case_sensitive else re.IGNORECASE
151
+ if name_filter and not re.match(
152
+ name_filter, accelerator_name, flags=regex_flags):
153
+ continue
154
+
155
+ # Generate the accelerator quantities
156
+ accelerator_count = (
157
+ kubernetes_utils.get_node_accelerator_count(
158
+ node.status.allocatable))
159
+
160
+ if accelerator_name and accelerator_count > 0:
161
+ # TPUs are counted in a different way compared to GPUs.
162
+ # Multi-node GPUs can be split into smaller units and be
163
+ # provisioned, but TPUs are considered as an atomic unit.
164
+ if kubernetes_utils.is_tpu_on_gke(accelerator_name):
165
+ accelerators_qtys.add(
166
+ (accelerator_name, accelerator_count))
167
+ else:
168
+ count = 1
169
+ while count <= accelerator_count:
170
+ accelerators_qtys.add((accelerator_name, count))
171
+ count *= 2
172
+ # Add the accelerator count if it's not already in the
173
+ # set (e.g., if there's 12 GPUs, we should have qtys 1,
174
+ # 2, 4, 8, 12)
175
+ if accelerator_count not in accelerators_qtys:
176
+ accelerators_qtys.add(
177
+ (accelerator_name, accelerator_count))
178
+
179
+ if accelerator_count >= min_quantity_filter:
180
+ quantized_count = (
181
+ min_quantity_filter *
182
+ (accelerator_count // min_quantity_filter))
183
+ if accelerator_name not in total_accelerators_capacity:
184
+ total_accelerators_capacity[
185
+ accelerator_name] = quantized_count
186
+ else:
187
+ total_accelerators_capacity[
188
+ accelerator_name] += quantized_count
189
+
190
+ if pods is None:
191
+ # If we can't get the pods, we can't get the GPU usage
192
+ total_accelerators_available[accelerator_name] = -1
193
+ continue
194
+
195
+ for pod in pods:
196
+ # Get all the pods running on the node
197
+ if (pod.spec.node_name == node.metadata.name and
198
+ pod.status.phase in ['Running', 'Pending']):
199
+ # Iterate over all the containers in the pod and sum
200
+ # the GPU requests
201
+ for container in pod.spec.containers:
202
+ if container.resources.requests:
203
+ allocated_qty += (
204
+ kubernetes_utils.get_node_accelerator_count(
205
+ container.resources.requests))
206
+
207
+ accelerators_available = accelerator_count - allocated_qty
208
+
209
+ if accelerator_name not in total_accelerators_available:
210
+ total_accelerators_available[accelerator_name] = 0
211
+ if accelerators_available >= min_quantity_filter:
212
+ quantized_availability = min_quantity_filter * (
213
+ accelerators_available // min_quantity_filter)
214
+ total_accelerators_available[
215
+ accelerator_name] += quantized_availability
175
216
 
176
217
  result = []
177
218
 
@@ -17,6 +17,7 @@ import cachetools
17
17
  from sky import sky_logging
18
18
  from sky import skypilot_config
19
19
  from sky.provision.gcp import constants
20
+ from sky.provision.kubernetes import utils as kubernetes_utils
20
21
  from sky.utils import subprocess_utils
21
22
 
22
23
  if typing.TYPE_CHECKING:
@@ -35,7 +36,10 @@ def is_tpu(resources: Optional['resources_lib.Resources']) -> bool:
35
36
  def is_tpu_vm(resources: Optional['resources_lib.Resources']) -> bool:
36
37
  if not is_tpu(resources):
37
38
  return False
38
- assert resources is not None
39
+ assert (resources is not None and len(resources.accelerators) == 1)
40
+ acc, _ = list(resources.accelerators.items())[0]
41
+ if kubernetes_utils.is_tpu_on_gke(acc):
42
+ return False
39
43
  if resources.accelerator_args is None:
40
44
  return True
41
45
  return resources.accelerator_args.get('tpu_vm', True)
@@ -26,9 +26,11 @@ from sky.utils import controller_utils
26
26
  from sky.utils import dag_utils
27
27
  from sky.utils import rich_utils
28
28
  from sky.utils import subprocess_utils
29
+ from sky.utils import timeline
29
30
  from sky.utils import ux_utils
30
31
 
31
32
 
33
+ @timeline.event
32
34
  @usage_lib.entrypoint
33
35
  def launch(
34
36
  task: Union['sky.Task', 'sky.Dag'],
@@ -22,6 +22,7 @@ from sky.utils import log_utils
22
22
  from sky.utils import resources_utils
23
23
  from sky.utils import rich_utils
24
24
  from sky.utils import subprocess_utils
25
+ from sky.utils import timeline
25
26
  from sky.utils import ux_utils
26
27
 
27
28
  if typing.TYPE_CHECKING:
@@ -105,6 +106,7 @@ class Optimizer:
105
106
  return egress_time
106
107
 
107
108
  @staticmethod
109
+ @timeline.event
108
110
  def optimize(dag: 'dag_lib.Dag',
109
111
  minimize: OptimizeTarget = OptimizeTarget.COST,
110
112
  blocked_resources: Optional[Iterable[
@@ -24,6 +24,7 @@ from sky.provision import oci
24
24
  from sky.provision import runpod
25
25
  from sky.provision import vsphere
26
26
  from sky.utils import command_runner
27
+ from sky.utils import timeline
27
28
 
28
29
  logger = sky_logging.init_logger(__name__)
29
30
 
@@ -59,6 +60,7 @@ def _route_to_cloud_impl(func):
59
60
  # pylint: disable=unused-argument
60
61
 
61
62
 
63
+ @timeline.event
62
64
  @_route_to_cloud_impl
63
65
  def query_instances(
64
66
  provider_name: str,