skypilot-nightly 1.0.0.dev20250302__py3-none-any.whl → 1.0.0.dev20250304__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/backends/cloud_vm_ray_backend.py +16 -8
- sky/cli.py +35 -17
- sky/client/cli.py +35 -17
- sky/client/sdk.py +32 -9
- sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py +4 -2
- sky/core.py +55 -6
- sky/exceptions.py +80 -1
- sky/jobs/client/sdk.py +7 -2
- sky/jobs/constants.py +1 -1
- sky/jobs/server/core.py +11 -6
- sky/jobs/utils.py +51 -21
- sky/provision/fluidstack/instance.py +1 -1
- sky/server/constants.py +1 -1
- sky/server/requests/payloads.py +16 -8
- sky/server/server.py +15 -2
- sky/skylet/constants.py +1 -1
- sky/skylet/job_lib.py +10 -1
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/METADATA +28 -41
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/RECORD +24 -24
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/top_level.txt +0 -0
sky/jobs/client/sdk.py
CHANGED
@@ -184,7 +184,7 @@ def tail_logs(name: Optional[str] = None,
|
|
184
184
|
follow: bool = True,
|
185
185
|
controller: bool = False,
|
186
186
|
refresh: bool = False,
|
187
|
-
output_stream: Optional['io.TextIOBase'] = None) ->
|
187
|
+
output_stream: Optional['io.TextIOBase'] = None) -> int:
|
188
188
|
"""Tails logs of managed jobs.
|
189
189
|
|
190
190
|
You can provide either a job name or a job ID to tail logs. If both are not
|
@@ -199,6 +199,11 @@ def tail_logs(name: Optional[str] = None,
|
|
199
199
|
output_stream: The stream to write the logs to. If None, print to the
|
200
200
|
console.
|
201
201
|
|
202
|
+
Returns:
|
203
|
+
Exit code based on success or failure of the job. 0 if success,
|
204
|
+
100 if the job failed. See exceptions.JobExitCode for possible exit
|
205
|
+
codes.
|
206
|
+
|
202
207
|
Request Raises:
|
203
208
|
ValueError: invalid arguments.
|
204
209
|
sky.exceptions.ClusterNotUpError: the jobs controller is not up.
|
@@ -217,7 +222,7 @@ def tail_logs(name: Optional[str] = None,
|
|
217
222
|
timeout=(5, None),
|
218
223
|
)
|
219
224
|
request_id = server_common.get_request_id(response)
|
220
|
-
sdk.stream_response(request_id, response, output_stream)
|
225
|
+
return sdk.stream_response(request_id, response, output_stream)
|
221
226
|
|
222
227
|
|
223
228
|
@usage_lib.entrypoint
|
sky/jobs/constants.py
CHANGED
@@ -40,7 +40,7 @@ JOBS_CLUSTER_NAME_PREFIX_LENGTH = 25
|
|
40
40
|
# The version of the lib files that jobs/utils use. Whenever there is an API
|
41
41
|
# change for the jobs/utils, we need to bump this version and update
|
42
42
|
# job.utils.ManagedJobCodeGen to handle the version update.
|
43
|
-
MANAGED_JOBS_VERSION =
|
43
|
+
MANAGED_JOBS_VERSION = 3
|
44
44
|
|
45
45
|
# The command for setting up the jobs dashboard on the controller. It firstly
|
46
46
|
# checks if the systemd services are available, and if not (e.g., Kubernetes
|
sky/jobs/server/core.py
CHANGED
@@ -460,12 +460,17 @@ def cancel(name: Optional[str] = None,
|
|
460
460
|
|
461
461
|
@usage_lib.entrypoint
|
462
462
|
def tail_logs(name: Optional[str], job_id: Optional[int], follow: bool,
|
463
|
-
controller: bool, refresh: bool) ->
|
463
|
+
controller: bool, refresh: bool) -> int:
|
464
464
|
# NOTE(dev): Keep the docstring consistent between the Python API and CLI.
|
465
465
|
"""Tail logs of managed jobs.
|
466
466
|
|
467
467
|
Please refer to sky.cli.job_logs for documentation.
|
468
468
|
|
469
|
+
Returns:
|
470
|
+
Exit code based on success or failure of the job. 0 if success,
|
471
|
+
100 if the job failed. See exceptions.JobExitCode for possible exit
|
472
|
+
codes.
|
473
|
+
|
469
474
|
Raises:
|
470
475
|
ValueError: invalid arguments.
|
471
476
|
sky.exceptions.ClusterNotUpError: the jobs controller is not up.
|
@@ -494,11 +499,11 @@ def tail_logs(name: Optional[str], job_id: Optional[int], follow: bool,
|
|
494
499
|
backend = backend_utils.get_backend_from_handle(handle)
|
495
500
|
assert isinstance(backend, backends.CloudVmRayBackend), backend
|
496
501
|
|
497
|
-
backend.tail_managed_job_logs(handle,
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
+
return backend.tail_managed_job_logs(handle,
|
503
|
+
job_id=job_id,
|
504
|
+
job_name=name,
|
505
|
+
follow=follow,
|
506
|
+
controller=controller)
|
502
507
|
|
503
508
|
|
504
509
|
def start_dashboard_forwarding(refresh: bool = False) -> Tuple[int, int]:
|
sky/jobs/utils.py
CHANGED
@@ -511,8 +511,14 @@ def cancel_job_by_name(job_name: str) -> str:
|
|
511
511
|
return f'Job {job_name!r} is scheduled to be cancelled.'
|
512
512
|
|
513
513
|
|
514
|
-
def stream_logs_by_id(job_id: int, follow: bool = True) -> str:
|
515
|
-
"""Stream logs by job id.
|
514
|
+
def stream_logs_by_id(job_id: int, follow: bool = True) -> Tuple[str, int]:
|
515
|
+
"""Stream logs by job id.
|
516
|
+
|
517
|
+
Returns:
|
518
|
+
A tuple containing the log message and an exit code based on success or
|
519
|
+
failure of the job. 0 if success, 100 if the job failed.
|
520
|
+
See exceptions.JobExitCode for possible exit codes.
|
521
|
+
"""
|
516
522
|
|
517
523
|
def should_keep_logging(status: managed_job_state.ManagedJobStatus) -> bool:
|
518
524
|
# If we see CANCELLING, just exit - we could miss some job logs but the
|
@@ -547,13 +553,16 @@ def stream_logs_by_id(job_id: int, follow: bool = True) -> str:
|
|
547
553
|
start_streaming = True
|
548
554
|
if start_streaming:
|
549
555
|
print(line, end='', flush=True)
|
550
|
-
return ''
|
556
|
+
return '', exceptions.JobExitCode.from_managed_job_status(
|
557
|
+
managed_job_status)
|
551
558
|
return (f'{colorama.Fore.YELLOW}'
|
552
559
|
f'Job {job_id} is already in terminal state '
|
553
560
|
f'{managed_job_status.value}. For more details, run: '
|
554
561
|
f'sky jobs logs --controller {job_id}'
|
555
562
|
f'{colorama.Style.RESET_ALL}'
|
556
|
-
f'{job_msg}'
|
563
|
+
f'{job_msg}',
|
564
|
+
exceptions.JobExitCode.from_managed_job_status(
|
565
|
+
managed_job_status))
|
557
566
|
backend = backends.CloudVmRayBackend()
|
558
567
|
task_id, managed_job_status = (
|
559
568
|
managed_job_state.get_latest_task_id_status(job_id))
|
@@ -604,11 +613,12 @@ def stream_logs_by_id(job_id: int, follow: bool = True) -> str:
|
|
604
613
|
job_id=None,
|
605
614
|
managed_job_id=job_id,
|
606
615
|
follow=follow)
|
607
|
-
if returncode
|
608
|
-
# If the log tailing
|
609
|
-
#
|
610
|
-
#
|
611
|
-
#
|
616
|
+
if returncode in [rc.value for rc in exceptions.JobExitCode]:
|
617
|
+
# If the log tailing exits with a known exit code we can safely
|
618
|
+
# break the loop because it indicates the tailing process
|
619
|
+
# succeeded (even though the real job can be SUCCEEDED or
|
620
|
+
# FAILED). We use the status in job queue to show the
|
621
|
+
# information, as the ManagedJobStatus is not updated yet.
|
612
622
|
job_statuses = backend.get_job_status(handle, stream_logs=False)
|
613
623
|
job_status = list(job_statuses.values())[0]
|
614
624
|
assert job_status is not None, 'No job found.'
|
@@ -728,18 +738,25 @@ def stream_logs_by_id(job_id: int, follow: bool = True) -> str:
|
|
728
738
|
logger.info(
|
729
739
|
ux_utils.finishing_message(f'Managed job finished: {job_id} '
|
730
740
|
f'(status: {managed_job_status.value}).'))
|
731
|
-
return ''
|
741
|
+
return '', exceptions.JobExitCode.from_managed_job_status(
|
742
|
+
managed_job_status)
|
732
743
|
|
733
744
|
|
734
745
|
def stream_logs(job_id: Optional[int],
|
735
746
|
job_name: Optional[str],
|
736
747
|
controller: bool = False,
|
737
|
-
follow: bool = True) -> str:
|
738
|
-
"""Stream logs by job id or job name.
|
748
|
+
follow: bool = True) -> Tuple[str, int]:
|
749
|
+
"""Stream logs by job id or job name.
|
750
|
+
|
751
|
+
Returns:
|
752
|
+
A tuple containing the log message and the exit code based on success
|
753
|
+
or failure of the job. 0 if success, 100 if the job failed.
|
754
|
+
See exceptions.JobExitCode for possible exit codes.
|
755
|
+
"""
|
739
756
|
if job_id is None and job_name is None:
|
740
757
|
job_id = managed_job_state.get_latest_job_id()
|
741
758
|
if job_id is None:
|
742
|
-
return 'No managed job found.'
|
759
|
+
return 'No managed job found.', exceptions.JobExitCode.NOT_FOUND
|
743
760
|
|
744
761
|
if controller:
|
745
762
|
if job_id is None:
|
@@ -754,7 +771,8 @@ def stream_logs(job_id: Optional[int],
|
|
754
771
|
if job['job_name'] == job_name
|
755
772
|
}
|
756
773
|
if not managed_job_ids:
|
757
|
-
return f'No managed job found with name {job_name!r}.'
|
774
|
+
return (f'No managed job found with name {job_name!r}.',
|
775
|
+
exceptions.JobExitCode.NOT_FOUND)
|
758
776
|
if len(managed_job_ids) > 1:
|
759
777
|
job_ids_str = ', '.join(
|
760
778
|
str(job_id) for job_id in managed_job_ids)
|
@@ -776,7 +794,7 @@ def stream_logs(job_id: Optional[int],
|
|
776
794
|
if not follow:
|
777
795
|
# Assume that the log file hasn't been written yet. Since we
|
778
796
|
# aren't following, just return.
|
779
|
-
return ''
|
797
|
+
return '', exceptions.JobExitCode.SUCCEEDED
|
780
798
|
|
781
799
|
job_status = managed_job_state.get_status(job_id)
|
782
800
|
if job_status is None:
|
@@ -787,7 +805,8 @@ def stream_logs(job_id: Optional[int],
|
|
787
805
|
# point, it never will be. This job may have been submitted
|
788
806
|
# using an old version that did not create the log file, so this
|
789
807
|
# is not considered an exceptional case.
|
790
|
-
return ''
|
808
|
+
return '', exceptions.JobExitCode.from_managed_job_status(
|
809
|
+
job_status)
|
791
810
|
|
792
811
|
time.sleep(log_lib.SKY_LOG_WAITING_GAP_SECONDS)
|
793
812
|
|
@@ -833,15 +852,17 @@ def stream_logs(job_id: Optional[int],
|
|
833
852
|
|
834
853
|
if follow:
|
835
854
|
return ux_utils.finishing_message(
|
836
|
-
f'Job finished (status: {job_status}).'
|
855
|
+
f'Job finished (status: {job_status}).'
|
856
|
+
), exceptions.JobExitCode.from_managed_job_status(job_status)
|
837
857
|
|
838
|
-
return ''
|
858
|
+
return '', exceptions.JobExitCode.SUCCEEDED
|
839
859
|
|
840
860
|
if job_id is None:
|
841
861
|
assert job_name is not None
|
842
862
|
job_ids = managed_job_state.get_nonterminal_job_ids_by_name(job_name)
|
843
863
|
if not job_ids:
|
844
|
-
return f'No running managed job found with name {job_name!r}.'
|
864
|
+
return (f'No running managed job found with name {job_name!r}.',
|
865
|
+
exceptions.JobExitCode.NOT_FOUND)
|
845
866
|
if len(job_ids) > 1:
|
846
867
|
raise ValueError(
|
847
868
|
f'Multiple running jobs found with name {job_name!r}.')
|
@@ -1167,6 +1188,7 @@ class ManagedJobCodeGen:
|
|
1167
1188
|
>> codegen = ManagedJobCodeGen.show_jobs(...)
|
1168
1189
|
"""
|
1169
1190
|
_PREFIX = textwrap.dedent("""\
|
1191
|
+
import sys
|
1170
1192
|
from sky.jobs import utils
|
1171
1193
|
from sky.jobs import state as managed_job_state
|
1172
1194
|
from sky.jobs import constants as managed_job_constants
|
@@ -1222,9 +1244,17 @@ class ManagedJobCodeGen:
|
|
1222
1244
|
follow: bool = True,
|
1223
1245
|
controller: bool = False) -> str:
|
1224
1246
|
code = textwrap.dedent(f"""\
|
1225
|
-
|
1247
|
+
result = utils.stream_logs(job_id={job_id!r}, job_name={job_name!r},
|
1226
1248
|
follow={follow}, controller={controller})
|
1227
|
-
|
1249
|
+
if managed_job_version < 3:
|
1250
|
+
# Versions 2 and older did not return a retcode, so we just print
|
1251
|
+
# the result.
|
1252
|
+
# TODO: Remove compatibility before 0.12.0
|
1253
|
+
print(result, flush=True)
|
1254
|
+
else:
|
1255
|
+
msg, retcode = result
|
1256
|
+
print(msg, flush=True)
|
1257
|
+
sys.exit(retcode)
|
1228
1258
|
""")
|
1229
1259
|
return cls._build(code)
|
1230
1260
|
|
@@ -298,7 +298,7 @@ def query_instances(
|
|
298
298
|
'pending': status_lib.ClusterStatus.INIT,
|
299
299
|
'stopped': status_lib.ClusterStatus.STOPPED,
|
300
300
|
'running': status_lib.ClusterStatus.UP,
|
301
|
-
'
|
301
|
+
'failed': status_lib.ClusterStatus.INIT,
|
302
302
|
'terminated': None,
|
303
303
|
}
|
304
304
|
statuses: Dict[str, Optional[status_lib.ClusterStatus]] = {}
|
sky/server/constants.py
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# API server version, whenever there is a change in API server that requires a
|
4
4
|
# restart of the local API server or error out when the client does not match
|
5
5
|
# the server version.
|
6
|
-
API_VERSION = '
|
6
|
+
API_VERSION = '3'
|
7
7
|
|
8
8
|
# Prefix for API request names.
|
9
9
|
REQUEST_NAME_PREFIX = 'sky.'
|
sky/server/requests/payloads.py
CHANGED
@@ -12,6 +12,7 @@ from typing import Any, Dict, List, Optional, Tuple, Union
|
|
12
12
|
|
13
13
|
import pydantic
|
14
14
|
|
15
|
+
from sky import admin_policy
|
15
16
|
from sky import serve
|
16
17
|
from sky import sky_logging
|
17
18
|
from sky import skypilot_config
|
@@ -113,15 +114,9 @@ class CheckBody(RequestBody):
|
|
113
114
|
verbose: bool
|
114
115
|
|
115
116
|
|
116
|
-
class
|
117
|
-
"""
|
118
|
-
dag: str
|
119
|
-
|
120
|
-
|
121
|
-
class OptimizeBody(RequestBody):
|
122
|
-
"""The request body for the optimize endpoint."""
|
117
|
+
class DagRequestBody(RequestBody):
|
118
|
+
"""Request body base class for endpoints with a dag."""
|
123
119
|
dag: str
|
124
|
-
minimize: common_lib.OptimizeTarget = common_lib.OptimizeTarget.COST
|
125
120
|
|
126
121
|
def to_kwargs(self) -> Dict[str, Any]:
|
127
122
|
# Import here to avoid requirement of the whole SkyPilot dependency on
|
@@ -139,6 +134,19 @@ class OptimizeBody(RequestBody):
|
|
139
134
|
return kwargs
|
140
135
|
|
141
136
|
|
137
|
+
class ValidateBody(DagRequestBody):
|
138
|
+
"""The request body for the validate endpoint."""
|
139
|
+
dag: str
|
140
|
+
request_options: Optional[admin_policy.RequestOptions]
|
141
|
+
|
142
|
+
|
143
|
+
class OptimizeBody(DagRequestBody):
|
144
|
+
"""The request body for the optimize endpoint."""
|
145
|
+
dag: str
|
146
|
+
minimize: common_lib.OptimizeTarget = common_lib.OptimizeTarget.COST
|
147
|
+
request_options: Optional[admin_policy.RequestOptions]
|
148
|
+
|
149
|
+
|
142
150
|
class LaunchBody(RequestBody):
|
143
151
|
"""The request body for the launch endpoint."""
|
144
152
|
task: str
|
sky/server/server.py
CHANGED
@@ -27,7 +27,6 @@ from sky import core
|
|
27
27
|
from sky import exceptions
|
28
28
|
from sky import execution
|
29
29
|
from sky import global_user_state
|
30
|
-
from sky import optimizer
|
31
30
|
from sky import sky_logging
|
32
31
|
from sky.clouds import service_catalog
|
33
32
|
from sky.data import storage_utils
|
@@ -42,6 +41,7 @@ from sky.server.requests import payloads
|
|
42
41
|
from sky.server.requests import requests as requests_lib
|
43
42
|
from sky.skylet import constants
|
44
43
|
from sky.usage import usage_lib
|
44
|
+
from sky.utils import admin_policy_utils
|
45
45
|
from sky.utils import common as common_lib
|
46
46
|
from sky.utils import common_utils
|
47
47
|
from sky.utils import dag_utils
|
@@ -258,9 +258,22 @@ async def validate(validate_body: payloads.ValidateBody) -> None:
|
|
258
258
|
"""Validates the user's DAG."""
|
259
259
|
# TODO(SKY-1035): validate if existing cluster satisfies the requested
|
260
260
|
# resources, e.g. sky exec --gpus V100:8 existing-cluster-with-no-gpus
|
261
|
+
|
262
|
+
# TODO: Our current launch process is split into three calls:
|
263
|
+
# validate, optimize, and launch. This requires us to apply the admin policy
|
264
|
+
# in each step, which may be an expensive operation. We should consolidate
|
265
|
+
# these into a single call or have a TTL cache for (task, admin_policy)
|
266
|
+
# pairs.
|
261
267
|
logger.debug(f'Validating tasks: {validate_body.dag}')
|
262
268
|
try:
|
263
269
|
dag = dag_utils.load_chain_dag_from_yaml_str(validate_body.dag)
|
270
|
+
# TODO: Admin policy may contain arbitrary code, which may be expensive
|
271
|
+
# to run and may block the server thread. However, moving it into the
|
272
|
+
# executor adds a ~150ms penalty on the local API server because of
|
273
|
+
# added RTTs. For now, we stick to doing the validation inline in the
|
274
|
+
# server thread.
|
275
|
+
dag, _ = admin_policy_utils.apply(
|
276
|
+
dag, request_options=validate_body.request_options)
|
264
277
|
for task in dag.tasks:
|
265
278
|
# Will validate workdir and file_mounts in the backend, as those
|
266
279
|
# need to be validated after the files are uploaded to the SkyPilot
|
@@ -283,7 +296,7 @@ async def optimize(optimize_body: payloads.OptimizeBody,
|
|
283
296
|
request_name='optimize',
|
284
297
|
request_body=optimize_body,
|
285
298
|
ignore_return_value=True,
|
286
|
-
func=
|
299
|
+
func=core.optimize,
|
287
300
|
schedule_type=requests_lib.ScheduleType.SHORT,
|
288
301
|
)
|
289
302
|
|
sky/skylet/constants.py
CHANGED
@@ -93,7 +93,7 @@ SKYLET_VERSION = '12'
|
|
93
93
|
# The version of the lib files that skylet/jobs use. Whenever there is an API
|
94
94
|
# change for the job_lib or log_lib, we need to bump this version, so that the
|
95
95
|
# user can be notified to update their SkyPilot version on the remote cluster.
|
96
|
-
SKYLET_LIB_VERSION =
|
96
|
+
SKYLET_LIB_VERSION = 3
|
97
97
|
SKYLET_VERSION_FILE = '~/.sky/skylet_version'
|
98
98
|
|
99
99
|
# `sky jobs dashboard`-related
|
sky/skylet/job_lib.py
CHANGED
@@ -938,7 +938,9 @@ class JobLibCodeGen:
|
|
938
938
|
_PREFIX = [
|
939
939
|
'import os',
|
940
940
|
'import getpass',
|
941
|
-
'
|
941
|
+
'import sys',
|
942
|
+
'from sky import exceptions',
|
943
|
+
'from sky.skylet import log_lib, job_lib, constants',
|
942
944
|
]
|
943
945
|
|
944
946
|
@classmethod
|
@@ -1033,6 +1035,13 @@ class JobLibCodeGen:
|
|
1033
1035
|
f'tail_log_kwargs = {{"job_id": job_id, "log_dir": log_dir, "managed_job_id": {managed_job_id!r}, "follow": {follow}}}',
|
1034
1036
|
f'{_LINUX_NEW_LINE}if getattr(constants, "SKYLET_LIB_VERSION", 1) > 1: tail_log_kwargs["tail"] = {tail}',
|
1035
1037
|
f'{_LINUX_NEW_LINE}log_lib.tail_logs(**tail_log_kwargs)',
|
1038
|
+
# After tailing, check the job status and exit with appropriate code
|
1039
|
+
'job_status = job_lib.get_status(job_id)',
|
1040
|
+
# Backward compatibility for returning exit code: Skylet versions 2
|
1041
|
+
# and older did not have JobExitCode, so we use 0 for those versions
|
1042
|
+
# TODO: Remove this special handling after 0.10.0.
|
1043
|
+
'exit_code = exceptions.JobExitCode.from_job_status(job_status) if getattr(constants, "SKYLET_LIB_VERSION", 1) > 2 else 0',
|
1044
|
+
'sys.exit(exit_code)',
|
1036
1045
|
]
|
1037
1046
|
return cls._build(code)
|
1038
1047
|
|
@@ -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.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
|
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
|
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
|
-
|
302
|
+
See [Quickstart](https://docs.skypilot.co/en/latest/getting-started/quickstart.html) to get started with SkyPilot.
|
303
303
|
|
304
|
-
##
|
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
|
-
|
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
|
-
- [
|
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
|
-
##
|
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
|
|
{skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/RECORD
RENAMED
@@ -1,12 +1,12 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=nBS4cQvvG4s3GLt8Ueva04qVaT4Zdxdxpq8oD7kS2SI,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
|
5
|
-
sky/cli.py,sha256
|
5
|
+
sky/cli.py,sha256=FDCSA5L__Djdk2Dc5eAmbE0YsfEu9zdE8vSu51oA19Q,221469
|
6
6
|
sky/cloud_stores.py,sha256=kEHXd2divyra-1c3EusHxKyM5yTQlTXc6cKVXofsefA,23978
|
7
|
-
sky/core.py,sha256=
|
7
|
+
sky/core.py,sha256=MU9hcTdh8baMGrr2ZXmbxx12vNlhajrkeyg5QtV717c,47609
|
8
8
|
sky/dag.py,sha256=Yl7Ry26Vql5cv4YMz8g9kOUgtoCihJnw7c8NgZYakMY,3242
|
9
|
-
sky/exceptions.py,sha256=
|
9
|
+
sky/exceptions.py,sha256=MrDCfAmxmkTRSrUhOTLNNAYqEZLus_aErJm8b9SvbLk,16077
|
10
10
|
sky/execution.py,sha256=0M4RTEzWn-B9oz221XdZOIGH12XOACmNq0j-WGUT_No,28023
|
11
11
|
sky/global_user_state.py,sha256=sUDdSsJeiJkbgmZNwy8YGFK0XeNh-RBr1VDUvbmjf0g,33246
|
12
12
|
sky/models.py,sha256=4xSW05BdDPEjW8Ubvj3VlVOVnzv0TbrolsFvR5R5v1U,638
|
@@ -34,7 +34,7 @@ sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
|
34
34
|
sky/backends/__init__.py,sha256=UDjwbUgpTRApbPJnNfR786GadUuwgRk3vsWoVu5RB_c,536
|
35
35
|
sky/backends/backend.py,sha256=4BOqKZ-bwBTpjNnZF4JAHX2m2Iga7EmEn8Ao3tEivaM,7527
|
36
36
|
sky/backends/backend_utils.py,sha256=B_46tG9PyrppxLWdg4mWGuuIr3TEcWTz6qhYXjAY2bw,133452
|
37
|
-
sky/backends/cloud_vm_ray_backend.py,sha256=
|
37
|
+
sky/backends/cloud_vm_ray_backend.py,sha256=KIU4IkUTBGE__7MC3ayjYMwE14mSxeiHjrGnK7wAQXw,247773
|
38
38
|
sky/backends/docker_utils.py,sha256=Hyw1YY20EyghhEbYx6O2FIMDcGkNzBzV9TM7LFynei8,8358
|
39
39
|
sky/backends/local_docker_backend.py,sha256=nSYCjms3HOPjPNOrcCqsUKm1WV3AAovRFjEQ7hcEXW4,17021
|
40
40
|
sky/backends/wheel_utils.py,sha256=5BUzBqfYz7p1ME6_0PXGmcsAkLVb8NrFt317p7a4X8s,8278
|
@@ -43,9 +43,9 @@ sky/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
sky/benchmark/benchmark_state.py,sha256=X8CXmuU9KgsDRhKedhFgjeRMUFWtQsjFs1qECvPG2yg,8723
|
44
44
|
sky/benchmark/benchmark_utils.py,sha256=o4RymqSceq5mLEZL0upQM6NVEzJJQzj9s9tTm49uUTc,26365
|
45
45
|
sky/client/__init__.py,sha256=pz6xvVSd9X-gwqbsDL0E9QOojYqM0KAD0j-NCyCIF1k,38
|
46
|
-
sky/client/cli.py,sha256
|
46
|
+
sky/client/cli.py,sha256=FDCSA5L__Djdk2Dc5eAmbE0YsfEu9zdE8vSu51oA19Q,221469
|
47
47
|
sky/client/common.py,sha256=axDic7WOG1e78SdFm5XIwdhX7YNvf3g4k7INrsW3X4s,14611
|
48
|
-
sky/client/sdk.py,sha256=
|
48
|
+
sky/client/sdk.py,sha256=IRx72BXqOn_WVvtOuTXfgR5zcSm_lyoXeYxa5c_2_qk,68723
|
49
49
|
sky/clouds/__init__.py,sha256=OW6mJ-9hpJSBORCgt2LippLQEYZHNfnBW1mooRNNvxo,1416
|
50
50
|
sky/clouds/aws.py,sha256=J8tczaTDL239UowN9tUlhI92SeHw01wtFucSckvG63w,54112
|
51
51
|
sky/clouds/azure.py,sha256=bawEw6wOLAVyrjxMD-4UjLCuMj1H5_jH8qggpfZYS54,31703
|
@@ -89,7 +89,7 @@ sky/clouds/service_catalog/data_fetchers/analyze.py,sha256=VdksJQs3asFE8H5T3ZV1F
|
|
89
89
|
sky/clouds/service_catalog/data_fetchers/fetch_aws.py,sha256=Zj4bqWPiDcT_ZFyHxQw_k7ORxWZrx91euar9kL0VPaI,23343
|
90
90
|
sky/clouds/service_catalog/data_fetchers/fetch_azure.py,sha256=7YVnoGDGGZI2TK02bj_LOoD4E5J5CFl6eqz2XlR4Vy8,12790
|
91
91
|
sky/clouds/service_catalog/data_fetchers/fetch_cudo.py,sha256=52P48lvWN0s1ArjeLPeLemPRpxjSRcHincRle0nqdm4,3440
|
92
|
-
sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py,sha256=
|
92
|
+
sky/clouds/service_catalog/data_fetchers/fetch_fluidstack.py,sha256=hsqpQi_YUI-qil3zLCEGatrR7BkWzywr4otRdHrd-4k,7350
|
93
93
|
sky/clouds/service_catalog/data_fetchers/fetch_gcp.py,sha256=JnugFifzHPQITlbDKoKexE8NqgagOEfQWTxon7P6vJ0,30935
|
94
94
|
sky/clouds/service_catalog/data_fetchers/fetch_lambda_cloud.py,sha256=MUzogyLruLQmIt-To6TsfnGPgv_nnlp49XYbeshsd7I,5003
|
95
95
|
sky/clouds/service_catalog/data_fetchers/fetch_vast.py,sha256=zR9icM3ty5C8tGw13pQbsBtQQMgG4kl1j_jSGqqrgOA,4741
|
@@ -107,19 +107,19 @@ sky/data/mounting_utils.py,sha256=i79Y-DZXVR88fjG_MBPB8EgsZBnHdpf1LGnJSm_VhAg,16
|
|
107
107
|
sky/data/storage.py,sha256=mTgMGdfSV6Gia076Dvgmc18ZlqF6eObima558UShiXA,207165
|
108
108
|
sky/data/storage_utils.py,sha256=zB99nRTJjh8isU0UmqERmlwwRNgfig91IwrwVH8CcNw,12383
|
109
109
|
sky/jobs/__init__.py,sha256=qoI53-xXE0-SOkrLWigvhgFXjk7dWE0OTqGPYIk-kmM,1458
|
110
|
-
sky/jobs/constants.py,sha256=
|
110
|
+
sky/jobs/constants.py,sha256=1XiIqdR5dEgGgepLKWkZCRT3MYSsMBR-dO7N4RTsjwg,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=8k2ieJ1TTvJ0TOalnklJtrMwFuatsh-ojoPMBgFRBlI,13119
|
114
114
|
sky/jobs/state.py,sha256=tDULLH6DVs4oKUIKhh0UAn3RzyVGuIUtEq5kW7K1Ojw,44585
|
115
|
-
sky/jobs/utils.py,sha256=
|
115
|
+
sky/jobs/utils.py,sha256=O1cOXeWXzZNxQzEZ4xwadskQr1Azm1pCRe4Ju0dfvfg,55845
|
116
116
|
sky/jobs/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
|
-
sky/jobs/client/sdk.py,sha256=
|
117
|
+
sky/jobs/client/sdk.py,sha256=4STtriCWLUq1mm-tEsh_iXC7r-U7_PY0R9X6-DNpaXs,10122
|
118
118
|
sky/jobs/dashboard/dashboard.py,sha256=JaVrNUEFQPLmsDZnrR76Uo8QqcAHdgYzx7GZTxDfl9M,7885
|
119
119
|
sky/jobs/dashboard/static/favicon.ico,sha256=uYlvgxSM7gjBmXpZ8wydvZUPAbJiiix-rc2Xe5mma9s,15086
|
120
120
|
sky/jobs/dashboard/templates/index.html,sha256=tz95q8O2pF7IvfY6yv0rnPyhj4DX8WX4RIVVxqFKV1Y,28519
|
121
121
|
sky/jobs/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
122
|
-
sky/jobs/server/core.py,sha256=
|
122
|
+
sky/jobs/server/core.py,sha256=s6A3KJsSQz1GlD6qfJ-XiEg6scc3sqMTqVd1Kr6ZTIU,25113
|
123
123
|
sky/jobs/server/dashboard_utils.py,sha256=2Mbx40W1pQqPEPHsSDbHeaF0j5cgyKy-_A9Owdwp_AQ,2315
|
124
124
|
sky/jobs/server/server.py,sha256=vdVxl4ZkBRlfOdsUO5Ttxon_-NE9XoMVMSo8fJ-Y73Y,7803
|
125
125
|
sky/provision/__init__.py,sha256=LzOo5LjkRXwSf29dUqN14YbjzQu3liXLQcmweTeZ4dE,6457
|
@@ -152,7 +152,7 @@ sky/provision/do/utils.py,sha256=ytRi-t8UtS8hoqoXAqrP9I5PVkDJdLd9wygRygSDe5c,103
|
|
152
152
|
sky/provision/fluidstack/__init__.py,sha256=h2df4JHCHtBMYZwtC05WM0VnLbAsRO-T3GFTf6NpY04,592
|
153
153
|
sky/provision/fluidstack/config.py,sha256=hDqesKEVjIhXLTWej3fDdpbHtKBXoybxFGgC6T8U5uo,326
|
154
154
|
sky/provision/fluidstack/fluidstack_utils.py,sha256=dYEHRRY86nCxQtZ_GIV6WhkNvvnkIuqDDKJqf1CouKY,5729
|
155
|
-
sky/provision/fluidstack/instance.py,sha256=
|
155
|
+
sky/provision/fluidstack/instance.py,sha256=TCGLojd5mEuEaUQ1BnmRvXMOSSBjltyf7dhPG3OLdgQ,13787
|
156
156
|
sky/provision/gcp/__init__.py,sha256=zlgjR2JoaGD7sStGStMRu9bJ62f-8NKEIyb-bFHBlzM,528
|
157
157
|
sky/provision/gcp/config.py,sha256=rNpnRFNZqqvEHjzjSdwMoI7Fq7RW9w_dL2vIaubj3Dc,33319
|
158
158
|
sky/provision/gcp/constants.py,sha256=9eLZatVSW2uGqxrvFGaWK2A_Ab0o_4S4GdgUuI7mfsk,7441
|
@@ -229,13 +229,13 @@ sky/serve/server/core.py,sha256=pRvFadEIH_WTUkTtSmuFoPBP4JFq8Obt68ifi9DWuog,3686
|
|
229
229
|
sky/serve/server/server.py,sha256=gQGVU9nHYdGbaLhGjIUNIYn4xwKjRASRJkiiTL5AI1Y,3283
|
230
230
|
sky/server/__init__.py,sha256=MPPBqFzXz6Jv5QSk6td_IcvnfXfNErDZVcizu4MLRow,27
|
231
231
|
sky/server/common.py,sha256=pEa-q3P5aOm6RMlit0pVzlDoJnZU_6zViO7aK_7htn0,17843
|
232
|
-
sky/server/constants.py,sha256=
|
233
|
-
sky/server/server.py,sha256=
|
232
|
+
sky/server/constants.py,sha256=_ZNrxYh8vmgbf3DmkGDduxjvO2y43ZSPTkH5rCNsVjU,770
|
233
|
+
sky/server/server.py,sha256=VOro33c4ZybLeZF57ANiZRWUjtyUvCDEeQMX7yd_HYE,43271
|
234
234
|
sky/server/stream_utils.py,sha256=-3IX1YCgxAFfcvQIV0TCvOn1wbRLWovAx3ckCrsExWU,5651
|
235
235
|
sky/server/html/log.html,sha256=TSGZktua9Ysl_ysg3w60rjxAxhH61AJnsYDHdtqrjmI,6929
|
236
236
|
sky/server/requests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
237
237
|
sky/server/requests/executor.py,sha256=Jk8RJoQlicDqaHhgVWMH3UiL-dJS7lGSGd05GPv-Lrc,19781
|
238
|
-
sky/server/requests/payloads.py,sha256=
|
238
|
+
sky/server/requests/payloads.py,sha256=nVb7vr1SNAq6ay2dNe9301zLHp7NrM79M7nsWAECBms,16340
|
239
239
|
sky/server/requests/requests.py,sha256=aMdjiK5kjSYP36pxdXFU6qgKOXcOmtViHbFm3V8Dvf8,19590
|
240
240
|
sky/server/requests/queues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
241
241
|
sky/server/requests/queues/mp_queue.py,sha256=_7AFas__0b1L8e7Bwy4lu0VYU18R85YwMlDHPhQCfh0,2998
|
@@ -250,9 +250,9 @@ sky/skylet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
250
250
|
sky/skylet/attempt_skylet.py,sha256=GZ6ITjjA0m-da3IxXXfoHR6n4pjp3X3TOXUqVvSrV0k,2136
|
251
251
|
sky/skylet/autostop_lib.py,sha256=W4CtMira6QnmYToFT5kYTGjNPRZNC-bZPfsF1k3tluE,4480
|
252
252
|
sky/skylet/configs.py,sha256=UtnpmEL0F9hH6PSjhsps7xgjGZ6qzPOfW1p2yj9tSng,1887
|
253
|
-
sky/skylet/constants.py,sha256=
|
253
|
+
sky/skylet/constants.py,sha256=6I_JGIQXHGDNodNCQYLqflmJotDVnFUt4R48BASyUN0,18037
|
254
254
|
sky/skylet/events.py,sha256=pnV3ZiwWhXqTHpU5B5Y9Xwam_7FQDI6IrxgSx7X_NVA,12743
|
255
|
-
sky/skylet/job_lib.py,sha256=
|
255
|
+
sky/skylet/job_lib.py,sha256=j_VRDWcEGIStLLEC0cD9B3JxggPJOZaDAaNKe50uhy4,44319
|
256
256
|
sky/skylet/log_lib.py,sha256=DzOrgY8C7RdEMLC9O9kEKV-iLMb9wVMPSnDha8eMx28,20900
|
257
257
|
sky/skylet/log_lib.pyi,sha256=rRk4eUX0RHGs1QL9CXsJq6RE7FqqxZlfuPJOLXTvg7I,4453
|
258
258
|
sky/skylet/skylet.py,sha256=mWmqCvxSlfdVU_L8NL6P52jmCt3smd8K0HdyNBfMPeI,1234
|
@@ -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=otzHzpliHDCpzYT-nU9Q0ZExbiFpDPWvhxwkvchZj7k,10073
|
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.dev20250304.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
348
|
+
skypilot_nightly-1.0.0.dev20250304.dist-info/METADATA,sha256=jiLF-ux0ZwUp4eKySgZB9QR7PrPU24Iavg7gSuzVKcw,18173
|
349
|
+
skypilot_nightly-1.0.0.dev20250304.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
350
|
+
skypilot_nightly-1.0.0.dev20250304.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
351
|
+
skypilot_nightly-1.0.0.dev20250304.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
352
|
+
skypilot_nightly-1.0.0.dev20250304.dist-info/RECORD,,
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250302.dist-info → skypilot_nightly-1.0.0.dev20250304.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|