skypilot-nightly 1.0.0.dev20250224__py3-none-any.whl → 1.0.0.dev20250226__py3-none-any.whl
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.
- sky/__init__.py +2 -2
- sky/adaptors/nebius.py +15 -0
- sky/clouds/nebius.py +4 -1
- sky/global_user_state.py +3 -3
- sky/jobs/state.py +3 -0
- sky/provision/nebius/utils.py +11 -3
- sky/utils/common_utils.py +94 -14
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/METADATA +2 -1
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/RECORD +13 -13
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/WHEEL +1 -1
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
@@ -5,7 +5,7 @@ from typing import Optional
|
|
5
5
|
import urllib.request
|
6
6
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
8
|
+
_SKYPILOT_COMMIT_SHA = '107180a5a0ec2ffd9bc6f619fc707c49103f3942'
|
9
9
|
|
10
10
|
|
11
11
|
def _get_git_commit():
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
35
35
|
|
36
36
|
|
37
37
|
__commit__ = _get_git_commit()
|
38
|
-
__version__ = '1.0.0.
|
38
|
+
__version__ = '1.0.0.dev20250226'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/adaptors/nebius.py
CHANGED
@@ -5,8 +5,10 @@ from sky.adaptors import common
|
|
5
5
|
|
6
6
|
NEBIUS_TENANT_ID_FILENAME = 'NEBIUS_TENANT_ID.txt'
|
7
7
|
NEBIUS_IAM_TOKEN_FILENAME = 'NEBIUS_IAM_TOKEN.txt'
|
8
|
+
NEBIUS_PROJECT_ID_FILENAME = 'NEBIUS_PROJECT_ID.txt'
|
8
9
|
NEBIUS_TENANT_ID_PATH = '~/.nebius/' + NEBIUS_TENANT_ID_FILENAME
|
9
10
|
NEBIUS_IAM_TOKEN_PATH = '~/.nebius/' + NEBIUS_IAM_TOKEN_FILENAME
|
11
|
+
NEBIUS_PROJECT_ID_PATH = '~/.nebius/' + NEBIUS_PROJECT_ID_FILENAME
|
10
12
|
|
11
13
|
MAX_RETRIES_TO_DISK_CREATE = 120
|
12
14
|
MAX_RETRIES_TO_INSTANCE_STOP = 120
|
@@ -20,6 +22,7 @@ POLL_INTERVAL = 5
|
|
20
22
|
|
21
23
|
_iam_token = None
|
22
24
|
_tenant_id = None
|
25
|
+
_project_id = None
|
23
26
|
|
24
27
|
nebius = common.LazyImport(
|
25
28
|
'nebius',
|
@@ -69,6 +72,18 @@ def get_iam_token():
|
|
69
72
|
return _iam_token
|
70
73
|
|
71
74
|
|
75
|
+
def get_project_id():
|
76
|
+
global _project_id
|
77
|
+
if _project_id is None:
|
78
|
+
try:
|
79
|
+
with open(os.path.expanduser(NEBIUS_PROJECT_ID_PATH),
|
80
|
+
encoding='utf-8') as file:
|
81
|
+
_project_id = file.read().strip()
|
82
|
+
except FileNotFoundError:
|
83
|
+
return None
|
84
|
+
return _project_id
|
85
|
+
|
86
|
+
|
72
87
|
def get_tenant_id():
|
73
88
|
global _tenant_id
|
74
89
|
if _tenant_id is None:
|
sky/clouds/nebius.py
CHANGED
@@ -15,7 +15,8 @@ if typing.TYPE_CHECKING:
|
|
15
15
|
_CREDENTIAL_FILES = [
|
16
16
|
# credential files for Nebius
|
17
17
|
nebius.NEBIUS_TENANT_ID_FILENAME,
|
18
|
-
nebius.NEBIUS_IAM_TOKEN_FILENAME
|
18
|
+
nebius.NEBIUS_IAM_TOKEN_FILENAME,
|
19
|
+
nebius.NEBIUS_PROJECT_ID_FILENAME,
|
19
20
|
]
|
20
21
|
|
21
22
|
|
@@ -255,6 +256,8 @@ class Nebius(clouds.Cloud):
|
|
255
256
|
token_msg = (' Credentials can be set up by running: \n'\
|
256
257
|
f' $ nebius iam get-access-token > {nebius.NEBIUS_IAM_TOKEN_PATH} \n') # pylint: disable=line-too-long
|
257
258
|
tenant_msg = (' Copy your tenat ID from the web console and save it to file \n' # pylint: disable=line-too-long
|
259
|
+
f' $ echo $NEBIUS_TENANT_ID_PATH > {nebius.NEBIUS_TENANT_ID_PATH} \n' # pylint: disable=line-too-long
|
260
|
+
' Or if you have 1 tenant you can run:\n' # pylint: disable=line-too-long
|
258
261
|
f' $ nebius --format json iam whoami|jq -r \'.user_profile.tenants[0].tenant_id\' > {nebius.NEBIUS_TENANT_ID_PATH} \n') # pylint: disable=line-too-long
|
259
262
|
if token is None:
|
260
263
|
return False, f'{token_msg}'
|
sky/global_user_state.py
CHANGED
@@ -60,7 +60,7 @@ def create_table(cursor, conn):
|
|
60
60
|
last_use TEXT,
|
61
61
|
status TEXT,
|
62
62
|
autostop INTEGER DEFAULT -1,
|
63
|
-
metadata TEXT DEFAULT
|
63
|
+
metadata TEXT DEFAULT '{}',
|
64
64
|
to_down INTEGER DEFAULT 0,
|
65
65
|
owner TEXT DEFAULT null,
|
66
66
|
cluster_hash TEXT DEFAULT null,
|
@@ -118,7 +118,7 @@ def create_table(cursor, conn):
|
|
118
118
|
'INTEGER DEFAULT -1')
|
119
119
|
|
120
120
|
db_utils.add_column_to_table(cursor, conn, 'clusters', 'metadata',
|
121
|
-
'TEXT DEFAULT
|
121
|
+
'TEXT DEFAULT \'{}\'')
|
122
122
|
|
123
123
|
db_utils.add_column_to_table(cursor, conn, 'clusters', 'to_down',
|
124
124
|
'INTEGER DEFAULT 0')
|
@@ -271,7 +271,7 @@ def add_or_update_cluster(cluster_name: str,
|
|
271
271
|
# Keep the old metadata value if it exists, otherwise set it to
|
272
272
|
# default {}.
|
273
273
|
'COALESCE('
|
274
|
-
'(SELECT metadata FROM clusters WHERE name=?),
|
274
|
+
'(SELECT metadata FROM clusters WHERE name=?), \'{}\'),'
|
275
275
|
# Keep the old owner value if it exists, otherwise set it to
|
276
276
|
# default null.
|
277
277
|
'COALESCE('
|
sky/jobs/state.py
CHANGED
@@ -212,6 +212,7 @@ class ManagedJobStatus(enum.Enum):
|
|
212
212
|
is dedicated to a managed job, i.e. there should always be enough resource
|
213
213
|
to run the job and the job will be immediately transitioned to RUNNING.
|
214
214
|
|
215
|
+
You can see a state diagram for ManagedJobStatus in sky/jobs/README.md.
|
215
216
|
"""
|
216
217
|
# PENDING: Waiting for the jobs controller to have a slot to run the
|
217
218
|
# controller process.
|
@@ -332,6 +333,8 @@ class ManagedJobScheduleState(enum.Enum):
|
|
332
333
|
to transition directly from WAITING or even INACTIVE to DONE if the job is
|
333
334
|
cancelled.
|
334
335
|
|
336
|
+
You can see a state diagram in sky/jobs/README.md.
|
337
|
+
|
335
338
|
There is no well-defined mapping from the managed job status to schedule
|
336
339
|
state or vice versa. (In fact, schedule state is defined on the job and
|
337
340
|
status on the task.)
|
sky/provision/nebius/utils.py
CHANGED
@@ -44,13 +44,21 @@ def get_project_by_region(region: str) -> str:
|
|
44
44
|
# Project id looks like project-e00xxxxxxxxxxxxxx where
|
45
45
|
# e00 - id of region 'eu-north1'
|
46
46
|
# e01 - id of region 'eu-west1'
|
47
|
+
region_ids = {'eu-north1': 'e00', 'eu-west1': 'e01'}
|
47
48
|
# TODO(SalikovAlex): fix when info about region will be in projects list
|
48
49
|
# Currently, Nebius cloud supports 2 regions. We manually enumerate
|
49
50
|
# them here. Reference: https://docs.nebius.com/overview/regions
|
51
|
+
|
52
|
+
# Check is there project if in config
|
53
|
+
preferable_project_id = nebius.get_project_id()
|
54
|
+
if preferable_project_id is not None:
|
55
|
+
if preferable_project_id[8:11] == region_ids[region]:
|
56
|
+
return preferable_project_id
|
57
|
+
logger.warning(
|
58
|
+
f'Can\'t use customized NEBIUS_PROJECT_ID ({preferable_project_id})'
|
59
|
+
f' for region {region}. Please check if the project ID is correct.')
|
50
60
|
for project in projects.items:
|
51
|
-
if
|
52
|
-
return project.metadata.id
|
53
|
-
if region == 'eu-west1' and project.metadata.id[8:11] == 'e01':
|
61
|
+
if project.metadata.id[8:11] == region_ids[region]:
|
54
62
|
return project.metadata.id
|
55
63
|
raise Exception(f'No project found for region "{region}".')
|
56
64
|
|
sky/utils/common_utils.py
CHANGED
@@ -774,13 +774,10 @@ def is_port_available(port: int, reuse_addr: bool = True) -> bool:
|
|
774
774
|
return False
|
775
775
|
|
776
776
|
|
777
|
-
# TODO(aylei): should be aware of cgroups
|
778
777
|
def get_cpu_count() -> int:
|
779
|
-
"""Get the number of CPUs.
|
780
|
-
|
781
|
-
|
782
|
-
number of CPUs is provided by the downward API.
|
783
|
-
"""
|
778
|
+
"""Get the number of CPUs, with cgroup awareness."""
|
779
|
+
# This env-var is kept since it is still useful for limiting the resource
|
780
|
+
# of SkyPilot in non-containerized environments.
|
784
781
|
cpu_count = os.getenv('SKYPILOT_POD_CPU_CORE_LIMIT')
|
785
782
|
if cpu_count is not None:
|
786
783
|
try:
|
@@ -790,16 +787,11 @@ def get_cpu_count() -> int:
|
|
790
787
|
raise ValueError(
|
791
788
|
f'Failed to parse the number of CPUs from {cpu_count}'
|
792
789
|
) from e
|
793
|
-
return
|
790
|
+
return _cpu_count()
|
794
791
|
|
795
792
|
|
796
|
-
# TODO(aylei): should be aware of cgroups
|
797
793
|
def get_mem_size_gb() -> float:
|
798
|
-
"""Get the memory size in GB.
|
799
|
-
|
800
|
-
If the API server is deployed as a pod in k8s cluster, we assume the
|
801
|
-
memory size is provided by the downward API.
|
802
|
-
"""
|
794
|
+
"""Get the memory size in GB, with cgroup awareness."""
|
803
795
|
mem_size = os.getenv('SKYPILOT_POD_MEMORY_GB_LIMIT')
|
804
796
|
if mem_size is not None:
|
805
797
|
try:
|
@@ -808,4 +800,92 @@ def get_mem_size_gb() -> float:
|
|
808
800
|
with ux_utils.print_exception_no_traceback():
|
809
801
|
raise ValueError(
|
810
802
|
f'Failed to parse the memory size from {mem_size}') from e
|
811
|
-
return
|
803
|
+
return _mem_size_gb()
|
804
|
+
|
805
|
+
|
806
|
+
def _cpu_count() -> int:
|
807
|
+
# host cpu cores (logical)
|
808
|
+
cpu = psutil.cpu_count()
|
809
|
+
# cpu affinity on Linux
|
810
|
+
if hasattr(os, 'sched_getaffinity'):
|
811
|
+
# just for safe, length of CPU set should always <= logical cpu cores
|
812
|
+
cpu = min(cpu, len(os.sched_getaffinity(0)))
|
813
|
+
cgroup_cpu = _get_cgroup_cpu_limit()
|
814
|
+
if cgroup_cpu is not None:
|
815
|
+
cpu = min(cpu, int(cgroup_cpu))
|
816
|
+
return cpu
|
817
|
+
|
818
|
+
|
819
|
+
def _mem_size_gb() -> float:
|
820
|
+
# host memory limit
|
821
|
+
mem = psutil.virtual_memory().total
|
822
|
+
cgroup_mem = _get_cgroup_memory_limit()
|
823
|
+
if cgroup_mem is not None:
|
824
|
+
mem = min(mem, cgroup_mem)
|
825
|
+
return mem / (1024**3)
|
826
|
+
|
827
|
+
|
828
|
+
# Refer to:
|
829
|
+
# - https://docs.kernel.org/admin-guide/cgroup-v1/index.html
|
830
|
+
# - https://docs.kernel.org/admin-guide/cgroup-v2.html
|
831
|
+
# for the standards of handler files in cgroupv1 and v2.
|
832
|
+
# Since all those paths are well-known standards that are unlikely to change,
|
833
|
+
# we use string literals instead of defining extra constants.
|
834
|
+
def _get_cgroup_cpu_limit() -> Optional[float]:
|
835
|
+
"""Return cpu limit from cgroups in cores.
|
836
|
+
|
837
|
+
Returns:
|
838
|
+
The cpu limit in cores as a float (can be fractional), or None if there
|
839
|
+
is no limit in cgroups.
|
840
|
+
"""
|
841
|
+
try:
|
842
|
+
if _is_cgroup_v2():
|
843
|
+
with open('/sys/fs/cgroup/cpu.max', 'r', encoding='utf-8') as f:
|
844
|
+
quota_str, period_str = f.read().strip().split()
|
845
|
+
if quota_str == 'max':
|
846
|
+
return None
|
847
|
+
quota = float(quota_str)
|
848
|
+
period = float(period_str)
|
849
|
+
return quota / period if quota > 0 else None
|
850
|
+
else:
|
851
|
+
# cgroup v1
|
852
|
+
with open('/sys/fs/cgroup/cpu/cpu.cfs_quota_us',
|
853
|
+
'r',
|
854
|
+
encoding='utf-8') as f:
|
855
|
+
quota = float(f.read().strip())
|
856
|
+
with open('/sys/fs/cgroup/cpu/cpu.cfs_period_us',
|
857
|
+
'r',
|
858
|
+
encoding='utf-8') as f:
|
859
|
+
period = float(f.read().strip())
|
860
|
+
# Return unlimited if cpu quota is not set.
|
861
|
+
# Note that we do not use cpu.shares since it is a relative weight
|
862
|
+
# instead of a hard limit. It is okay to get CPU throttling under
|
863
|
+
# high contention. And unlimited enables the server to use as much
|
864
|
+
# CPU as available if there is no contention.
|
865
|
+
return quota / period if (quota > 0 and period > 0) else None
|
866
|
+
except (OSError, ValueError):
|
867
|
+
return None
|
868
|
+
|
869
|
+
|
870
|
+
def _get_cgroup_memory_limit() -> Optional[int]:
|
871
|
+
"""Return memory limit from cgroups in bytes.
|
872
|
+
|
873
|
+
Returns:
|
874
|
+
The memory limit in bytes, or None if there is no limit in cgroups.
|
875
|
+
"""
|
876
|
+
try:
|
877
|
+
path = ('/sys/fs/cgroup/memory.max' if _is_cgroup_v2() else
|
878
|
+
'/sys/fs/cgroup/memory/memory.limit_in_bytes')
|
879
|
+
with open(path, 'r', encoding='utf-8') as f:
|
880
|
+
value = f.read().strip()
|
881
|
+
if value == 'max' or not value:
|
882
|
+
return None
|
883
|
+
limit = int(value)
|
884
|
+
return limit if limit > 0 else None
|
885
|
+
except (OSError, ValueError):
|
886
|
+
return None
|
887
|
+
|
888
|
+
|
889
|
+
def _is_cgroup_v2() -> bool:
|
890
|
+
"""Return True if the environment is running cgroup v2."""
|
891
|
+
return os.path.isfile('/sys/fs/cgroup/cgroup.controllers')
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: skypilot-nightly
|
3
|
-
Version: 1.0.0.
|
3
|
+
Version: 1.0.0.dev20250226
|
4
4
|
Summary: SkyPilot: An intercloud broker for the clouds
|
5
5
|
Author: SkyPilot Team
|
6
6
|
License: Apache 2.0
|
@@ -192,6 +192,7 @@ Dynamic: summary
|
|
192
192
|
|
193
193
|
----
|
194
194
|
:fire: *News* :fire:
|
195
|
+
- [Feb 2025] Prepare and serve **Retrieval Augmented Generation (RAG) with DeepSeek-R1**: [**blog post**](https://blog.skypilot.co/deepseek-rag), [**example**](./llm/rag/)
|
195
196
|
- [Feb 2025] Run and serve **DeepSeek-R1 671B** using SkyPilot and SGLang with high throughput: [**example**](./llm/deepseek-r1/)
|
196
197
|
- [Feb 2025] Prepare and serve large-scale image search with **vector databases**: [**blog post**](https://blog.skypilot.co/large-scale-vector-database/), [**example**](./examples/vector_database/)
|
197
198
|
- [Jan 2025] Launch and serve distilled models from **[DeepSeek-R1](https://github.com/deepseek-ai/DeepSeek-R1)** and **[Janus](https://github.com/deepseek-ai/DeepSeek-Janus)** on Kubernetes or any cloud: [**R1 example**](./llm/deepseek-r1-distilled/) and [**Janus example**](./llm/deepseek-janus/)
|
{skypilot_nightly-1.0.0.dev20250224.dist-info → skypilot_nightly-1.0.0.dev20250226.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=yBzHHts3hZ_4Ijs5pLgwKb4bQ250dNPA-xL6EE_jbIU,6428
|
2
2
|
sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
|
3
3
|
sky/authentication.py,sha256=hCEqi77nprQEg3ktfRL51xiiw16zwZOmFEDB_Z7fWVU,22384
|
4
4
|
sky/check.py,sha256=NDKx_Zm7YRxPjMv82wz3ESLnGIPljaACyqVdVNM0PzY,11258
|
@@ -8,7 +8,7 @@ sky/core.py,sha256=X83hdpPTiWyEJLamrguCd03PUjkRiGgqTFfEBEQkzWc,45471
|
|
8
8
|
sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
|
9
9
|
sky/exceptions.py,sha256=cGepNlBkjjgvi3fazc3DbdYLKhhF_sHCuGX0-hu_QMQ,13685
|
10
10
|
sky/execution.py,sha256=0M4RTEzWn-B9oz221XdZOIGH12XOACmNq0j-WGUT_No,28023
|
11
|
-
sky/global_user_state.py,sha256=
|
11
|
+
sky/global_user_state.py,sha256=sUDdSsJeiJkbgmZNwy8YGFK0XeNh-RBr1VDUvbmjf0g,33246
|
12
12
|
sky/models.py,sha256=4xSW05BdDPEjW8Ubvj3VlVOVnzv0TbrolsFvR5R5v1U,638
|
13
13
|
sky/optimizer.py,sha256=C82l9N3umdrJ2AaM-pSg0aK5rpOAX3lEAfFU7r6hqPo,60183
|
14
14
|
sky/resources.py,sha256=f2Qo_Wt0kFruKmYm6cgYbICH_wn0Zkb8uIv6LA82SRs,72153
|
@@ -26,7 +26,7 @@ sky/adaptors/docker.py,sha256=_kzpZ0fkWHqqQAVVl0llTsCE31KYz3Sjn8psTBQHVkA,468
|
|
26
26
|
sky/adaptors/gcp.py,sha256=OQ9RaqjR0r0iaWYpjvEtIx5vnEhyB4LhUCwbtdxsmVk,3115
|
27
27
|
sky/adaptors/ibm.py,sha256=H87vD6izq_wQI8oQC7cx9iVtRgPi_QkAcrfa1Z3PNqU,4906
|
28
28
|
sky/adaptors/kubernetes.py,sha256=fvNeqqyW4WbUDT-isU_fWLN-zqywayyRkVsj7sJ4Vc8,6645
|
29
|
-
sky/adaptors/nebius.py,sha256=
|
29
|
+
sky/adaptors/nebius.py,sha256=JOvwniQT-Pkp9-af6IdL_FUkjIbsEAUXVNUkwdaEeb0,2732
|
30
30
|
sky/adaptors/oci.py,sha256=LfMSFUmkkNT6Yoz9FZHNl6UFSg4X1lJO4-x4ZbDdXTs,2831
|
31
31
|
sky/adaptors/runpod.py,sha256=4Nt_BfZhJAKQNA3wO8cxvvNI8x4NsDGHu_4EhRDlGYQ,225
|
32
32
|
sky/adaptors/vast.py,sha256=tpvmHi7IkQNzbbHVkeo04kUSajoEpSzXr2XgeO_I1LU,695
|
@@ -57,7 +57,7 @@ sky/clouds/gcp.py,sha256=0QpsI0Dso1xs3LhGlUq-Sq6WK-u11wN-57-vfcyhI5I,55154
|
|
57
57
|
sky/clouds/ibm.py,sha256=R4JR96YfXstZ2B_IgFNVEX2SBAq3q0lSWz4y7FoFoeE,21474
|
58
58
|
sky/clouds/kubernetes.py,sha256=7ki_zJZKnkhOPrHgVFq6azy5UhNKeeBOCSTjKCgj3vk,31709
|
59
59
|
sky/clouds/lambda_cloud.py,sha256=ejqA_Wj5-325Y_QjQ__FY4HMO8sv_2tSRsufmaldcmI,12699
|
60
|
-
sky/clouds/nebius.py,sha256=
|
60
|
+
sky/clouds/nebius.py,sha256=4180IruRMib7L9o60lrxrUDJtYhpX4lWFfAznbZoY6Q,12560
|
61
61
|
sky/clouds/oci.py,sha256=irINbQsQ6YxRxGTMaCNsms3mZkIun2oJMMA1fMCRJyA,27072
|
62
62
|
sky/clouds/paperspace.py,sha256=O7bH8YaHBLFuyj6rDz2bPDz_6OYWmNB9OLqnZH70yfY,10922
|
63
63
|
sky/clouds/runpod.py,sha256=hzYB4td6qaged83xMAVKZ96bH40oZnrHXL7a_CKxXIw,11926
|
@@ -111,7 +111,7 @@ sky/jobs/constants.py,sha256=HrQbQA41Khor89ZoH112kjHRgehge-k4o0R9T9UbbaM,3088
|
|
111
111
|
sky/jobs/controller.py,sha256=4G1CKI7M7D1BgJLbJMeqzg0iDDv7FR4ObB1BKZFFjhk,29585
|
112
112
|
sky/jobs/recovery_strategy.py,sha256=RLrqq8B1likxTknPzt3_BqO26sFVpoatxzUuGfwc18A,26170
|
113
113
|
sky/jobs/scheduler.py,sha256=IUW0a_69Pkvs4jqsWCXkeMDIZn-TTuPNyZvPLGRUYUM,12306
|
114
|
-
sky/jobs/state.py,sha256=
|
114
|
+
sky/jobs/state.py,sha256=dIONpSuo5oolbCH1j7IWPlK97s5-NSl3whxH5Gn5DYI,43660
|
115
115
|
sky/jobs/utils.py,sha256=SEeoXDWM-n2kg-eLd39kLWXbK7cavMst9s3xFVqaJg4,52580
|
116
116
|
sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
117
|
sky/jobs/client/sdk.py,sha256=mblI0hRH1It-I1hfs2_TdQTh_mtixcYJEZCWyKbqaaE,9707
|
@@ -175,7 +175,7 @@ sky/provision/lambda_cloud/lambda_utils.py,sha256=H2Qx4xdJyyEu2IXaj5AyppuPJW385n
|
|
175
175
|
sky/provision/nebius/__init__.py,sha256=30I3181mu0W5g9fNvaWMPoBJZoGZ9RibuTpBH9P2pDg,558
|
176
176
|
sky/provision/nebius/config.py,sha256=LK9kTDp2w6zZrn3vNdcSGgsgS-dL_j63Nh4_u3pqNiA,321
|
177
177
|
sky/provision/nebius/instance.py,sha256=kfpZqwh56XV7h6XsX5dGJYilsVdRhC1EUgk0flaCo_E,11889
|
178
|
-
sky/provision/nebius/utils.py,sha256=
|
178
|
+
sky/provision/nebius/utils.py,sha256=o1Jr_pzH-2uk34obt9pSGXf2i2tljOo-uhXcryfFUxs,13145
|
179
179
|
sky/provision/oci/__init__.py,sha256=5E6EUtTK3mqGVREw5TuVl5DxteBYTZigIii7c8gHExU,612
|
180
180
|
sky/provision/oci/config.py,sha256=diSDTyHLokcuXGB2XgZCHFvsXa8bah1PP2XuMouW_UU,1650
|
181
181
|
sky/provision/oci/instance.py,sha256=rVGee5y0qkoeLIP5vPDmLq1N8G1n8mru62VHb0Bv5iY,16784
|
@@ -310,7 +310,7 @@ sky/utils/cluster_utils.py,sha256=s6DFRXktv6_gF_DnwDEXJ7CniifHp8CAPeGciRCbXgI,14
|
|
310
310
|
sky/utils/command_runner.py,sha256=-7vxLvwZnTvYMQ_nScmuQWY6ZvQYv69yvvIp2uOaOqU,39063
|
311
311
|
sky/utils/command_runner.pyi,sha256=mJOzCgcYZAfHwnY_6Wf1YwlTEJGb9ihzc2f0rE0Kw98,7751
|
312
312
|
sky/utils/common.py,sha256=P4oVXFATUYgkruHX92cN12SJBtfb8DiOOYZtbN1kvP0,1927
|
313
|
-
sky/utils/common_utils.py,sha256=
|
313
|
+
sky/utils/common_utils.py,sha256=1KfqF_hgH9l1ieyV-_3fJd6ma41-tOstj-ihAQcEDIM,31162
|
314
314
|
sky/utils/config_utils.py,sha256=VQ2E3DQ2XysD-kul-diSrxn_pXWsDMfKAev91OiJQ1Q,9041
|
315
315
|
sky/utils/control_master_utils.py,sha256=iD4M0onjYOdZ2RuxjwMBl4KhafHXJzuHjvqlBUnu-VE,1450
|
316
316
|
sky/utils/controller_utils.py,sha256=Wth_esy2NX9nco-MK01bgQMIChAYky0Uq4T35jQkXxY,48472
|
@@ -344,9 +344,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488
|
|
344
344
|
sky/utils/kubernetes/kubernetes_deploy_utils.py,sha256=iAjfyPclOs8qlALACcfxLpRAO9CZ-h16leFqXZ6tNaY,10096
|
345
345
|
sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
|
346
346
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=Kq1MDygF2IxFmu9FXpCxqucXLmeUrvs6OtRij6XTQbo,6554
|
347
|
-
skypilot_nightly-1.0.0.
|
348
|
-
skypilot_nightly-1.0.0.
|
349
|
-
skypilot_nightly-1.0.0.
|
350
|
-
skypilot_nightly-1.0.0.
|
351
|
-
skypilot_nightly-1.0.0.
|
352
|
-
skypilot_nightly-1.0.0.
|
347
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
348
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/METADATA,sha256=zi9_kttCT3c1fDXvbH5gpMqHwoT_jYd_oli7tbLYw2k,19227
|
349
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
|
350
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
351
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
352
|
+
skypilot_nightly-1.0.0.dev20250226.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|