skypilot-nightly 1.0.0.dev20250824__py3-none-any.whl → 1.0.0.dev20250826__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.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- sky/__init__.py +2 -2
- sky/backends/cloud_vm_ray_backend.py +35 -2
- sky/catalog/data_fetchers/fetch_lambda_cloud.py +1 -0
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs/pools/[pool].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/provision/kubernetes/utils.py +3 -0
- sky/serve/autoscalers.py +347 -5
- sky/serve/controller.py +36 -6
- sky/serve/load_balancer.py +49 -16
- sky/serve/load_balancing_policies.py +115 -1
- sky/serve/service.py +2 -1
- sky/serve/service_spec.py +26 -4
- sky/server/rest.py +11 -8
- sky/utils/schemas.py +18 -2
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/RECORD +36 -36
- /sky/dashboard/out/_next/static/{P-Au_yHqNENhnPF3shEpK → TPMkEeuj85tHTmIW7Gu3S}/_buildManifest.js +0 -0
- /sky/dashboard/out/_next/static/{P-Au_yHqNENhnPF3shEpK → TPMkEeuj85tHTmIW7Gu3S}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/top_level.txt +0 -0
|
@@ -3,7 +3,7 @@ import collections
|
|
|
3
3
|
import random
|
|
4
4
|
import threading
|
|
5
5
|
import typing
|
|
6
|
-
from typing import Dict, List, Optional
|
|
6
|
+
from typing import Any, Dict, List, Optional
|
|
7
7
|
|
|
8
8
|
from sky import sky_logging
|
|
9
9
|
|
|
@@ -146,3 +146,117 @@ class LeastLoadPolicy(LoadBalancingPolicy, name='least_load', default=True):
|
|
|
146
146
|
del request # Unused.
|
|
147
147
|
with self.lock:
|
|
148
148
|
self.load_map[replica_url] -= 1
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class InstanceAwareLeastLoadPolicy(LeastLoadPolicy,
|
|
152
|
+
name='instance_aware_least_load'):
|
|
153
|
+
"""Instance-aware least load load balancing policy.
|
|
154
|
+
|
|
155
|
+
This policy considers the accelerator type and its QPS capabilities
|
|
156
|
+
when distributing load. It normalizes the load by dividing the current
|
|
157
|
+
load by the target QPS for that accelerator type.
|
|
158
|
+
"""
|
|
159
|
+
|
|
160
|
+
def __init__(self) -> None:
|
|
161
|
+
super().__init__()
|
|
162
|
+
self.replica_info: Dict[str, Dict[str, Any]] = {} # replica_url -> info
|
|
163
|
+
self.target_qps_per_accelerator: Dict[str, float] = {
|
|
164
|
+
} # accelerator_type -> target_qps
|
|
165
|
+
|
|
166
|
+
def set_ready_replicas(self, ready_replicas: List[str]) -> None:
|
|
167
|
+
if set(self.ready_replicas) == set(ready_replicas):
|
|
168
|
+
return
|
|
169
|
+
with self.lock:
|
|
170
|
+
self.ready_replicas = ready_replicas
|
|
171
|
+
# Clean up load map for removed replicas
|
|
172
|
+
for r in list(self.load_map.keys()):
|
|
173
|
+
if r not in ready_replicas:
|
|
174
|
+
del self.load_map[r]
|
|
175
|
+
# Initialize load for new replicas
|
|
176
|
+
for replica in ready_replicas:
|
|
177
|
+
if replica not in self.load_map:
|
|
178
|
+
self.load_map[replica] = 0
|
|
179
|
+
|
|
180
|
+
def set_replica_info(self, replica_info: Dict[str, Dict[str, Any]]) -> None:
|
|
181
|
+
"""Set replica information including accelerator types.
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
replica_info: Dict mapping replica URL to replica information
|
|
185
|
+
e.g., {'http://url1': {'gpu_type': 'A100'}}
|
|
186
|
+
"""
|
|
187
|
+
with self.lock:
|
|
188
|
+
self.replica_info = replica_info
|
|
189
|
+
logger.debug('Set replica info: %s', self.replica_info)
|
|
190
|
+
|
|
191
|
+
def set_target_qps_per_accelerator(
|
|
192
|
+
self, target_qps_per_accelerator: Dict[str, float]) -> None:
|
|
193
|
+
"""Set target QPS for each accelerator type."""
|
|
194
|
+
with self.lock:
|
|
195
|
+
self.target_qps_per_accelerator = target_qps_per_accelerator
|
|
196
|
+
|
|
197
|
+
def _get_normalized_load(self, replica_url: str) -> float:
|
|
198
|
+
"""Get normalized load for a replica based on its accelerator type."""
|
|
199
|
+
current_load = self.load_map.get(replica_url, 0)
|
|
200
|
+
|
|
201
|
+
# Get accelerator type for this replica
|
|
202
|
+
replica_data = self.replica_info.get(replica_url, {})
|
|
203
|
+
accelerator_type = replica_data.get('gpu_type', 'unknown')
|
|
204
|
+
|
|
205
|
+
# Get target QPS for this accelerator type with flexible matching
|
|
206
|
+
target_qps = self._get_target_qps_for_accelerator(accelerator_type)
|
|
207
|
+
if target_qps <= 0:
|
|
208
|
+
logger.warning(
|
|
209
|
+
'Non-positive target QPS (%s) for accelerator type %s; '
|
|
210
|
+
'using default value 1.0 to avoid division by zero.',
|
|
211
|
+
target_qps, accelerator_type)
|
|
212
|
+
target_qps = 1.0
|
|
213
|
+
|
|
214
|
+
# Load is normalized by target QPS
|
|
215
|
+
normalized_load = current_load / target_qps
|
|
216
|
+
|
|
217
|
+
logger.debug(
|
|
218
|
+
'InstanceAwareLeastLoadPolicy: Replica %s - GPU type: %s, '
|
|
219
|
+
'current load: %s, target QPS: %s, normalized load: %s',
|
|
220
|
+
replica_url, accelerator_type, current_load, target_qps,
|
|
221
|
+
normalized_load)
|
|
222
|
+
|
|
223
|
+
return normalized_load
|
|
224
|
+
|
|
225
|
+
def _get_target_qps_for_accelerator(self, accelerator_type: str) -> float:
|
|
226
|
+
"""Get target QPS for accelerator type with flexible matching."""
|
|
227
|
+
# Direct match first
|
|
228
|
+
if accelerator_type in self.target_qps_per_accelerator:
|
|
229
|
+
return self.target_qps_per_accelerator[accelerator_type]
|
|
230
|
+
|
|
231
|
+
# Try matching by base name (e.g., 'A100' matches 'A100:1')
|
|
232
|
+
for config_key in self.target_qps_per_accelerator.keys():
|
|
233
|
+
# Remove count suffix (e.g., 'A100:1' -> 'A100')
|
|
234
|
+
base_name = config_key.split(':')[0]
|
|
235
|
+
if accelerator_type == base_name:
|
|
236
|
+
return self.target_qps_per_accelerator[config_key]
|
|
237
|
+
|
|
238
|
+
# Fallback to minimum QPS
|
|
239
|
+
logger.warning(
|
|
240
|
+
f'No matching QPS found for accelerator type: {accelerator_type}. '
|
|
241
|
+
f'Available types: {list(self.target_qps_per_accelerator.keys())}. '
|
|
242
|
+
f'Using default value 1.0 as fallback.')
|
|
243
|
+
return 1.0
|
|
244
|
+
|
|
245
|
+
def _select_replica(self, request: 'fastapi.Request') -> Optional[str]:
|
|
246
|
+
del request # Unused.
|
|
247
|
+
if not self.ready_replicas:
|
|
248
|
+
return None
|
|
249
|
+
with self.lock:
|
|
250
|
+
# Calculate normalized loads for all replicas
|
|
251
|
+
replica_loads = []
|
|
252
|
+
for replica in self.ready_replicas:
|
|
253
|
+
normalized_load = self._get_normalized_load(replica)
|
|
254
|
+
replica_loads.append((replica, normalized_load))
|
|
255
|
+
|
|
256
|
+
# Select replica with minimum normalized load
|
|
257
|
+
selected_replica = min(replica_loads, key=lambda x: x[1])[0]
|
|
258
|
+
logger.debug('Available replicas and loads: %s', replica_loads)
|
|
259
|
+
logger.debug('Selected replica: %s', selected_replica)
|
|
260
|
+
return selected_replica
|
|
261
|
+
|
|
262
|
+
# pre_execute_hook and post_execute_hook are inherited from LeastLoadPolicy
|
sky/serve/service.py
CHANGED
|
@@ -359,7 +359,8 @@ def _start(service_name: str, tmp_task_yaml: str, job_id: int, entrypoint: str):
|
|
|
359
359
|
load_balancer_log_file).run,
|
|
360
360
|
args=(controller_addr, load_balancer_port,
|
|
361
361
|
service_spec.load_balancing_policy,
|
|
362
|
-
service_spec.tls_credential
|
|
362
|
+
service_spec.tls_credential,
|
|
363
|
+
service_spec.target_qps_per_replica))
|
|
363
364
|
load_balancer_process.start()
|
|
364
365
|
|
|
365
366
|
if not is_recovery:
|
sky/serve/service_spec.py
CHANGED
|
@@ -3,7 +3,7 @@ import json
|
|
|
3
3
|
import os
|
|
4
4
|
import textwrap
|
|
5
5
|
import typing
|
|
6
|
-
from typing import Any, Dict, List, Optional
|
|
6
|
+
from typing import Any, Dict, List, Optional, Union
|
|
7
7
|
|
|
8
8
|
from sky import serve
|
|
9
9
|
from sky.adaptors import common as adaptors_common
|
|
@@ -33,7 +33,7 @@ class SkyServiceSpec:
|
|
|
33
33
|
max_replicas: Optional[int] = None,
|
|
34
34
|
num_overprovision: Optional[int] = None,
|
|
35
35
|
ports: Optional[str] = None,
|
|
36
|
-
target_qps_per_replica: Optional[float] = None,
|
|
36
|
+
target_qps_per_replica: Optional[Union[float, Dict[str, float]]] = None,
|
|
37
37
|
post_data: Optional[Dict[str, Any]] = None,
|
|
38
38
|
tls_credential: Optional[serve_utils.TLSCredential] = None,
|
|
39
39
|
readiness_headers: Optional[Dict[str, str]] = None,
|
|
@@ -109,7 +109,8 @@ class SkyServiceSpec:
|
|
|
109
109
|
self._max_replicas: Optional[int] = max_replicas
|
|
110
110
|
self._num_overprovision: Optional[int] = num_overprovision
|
|
111
111
|
self._ports: Optional[str] = ports
|
|
112
|
-
self._target_qps_per_replica: Optional[float
|
|
112
|
+
self._target_qps_per_replica: Optional[Union[float, Dict[
|
|
113
|
+
str, float]]] = target_qps_per_replica
|
|
113
114
|
self._post_data: Optional[Dict[str, Any]] = post_data
|
|
114
115
|
self._tls_credential: Optional[serve_utils.TLSCredential] = (
|
|
115
116
|
tls_credential)
|
|
@@ -241,6 +242,26 @@ class SkyServiceSpec:
|
|
|
241
242
|
service_config['load_balancing_policy'] = config.get(
|
|
242
243
|
'load_balancing_policy', None)
|
|
243
244
|
|
|
245
|
+
# Validate instance-aware settings
|
|
246
|
+
target_qps_per_replica = service_config['target_qps_per_replica']
|
|
247
|
+
load_balancing_policy = service_config['load_balancing_policy']
|
|
248
|
+
|
|
249
|
+
if isinstance(target_qps_per_replica, dict):
|
|
250
|
+
if load_balancing_policy != 'instance_aware_least_load':
|
|
251
|
+
with ux_utils.print_exception_no_traceback():
|
|
252
|
+
raise ValueError(
|
|
253
|
+
'When using dict type target_qps_per_replica, '
|
|
254
|
+
'load_balancing_policy must be '
|
|
255
|
+
'"instance_aware_least_load".')
|
|
256
|
+
|
|
257
|
+
if load_balancing_policy == 'instance_aware_least_load':
|
|
258
|
+
if not isinstance(target_qps_per_replica, dict):
|
|
259
|
+
with ux_utils.print_exception_no_traceback():
|
|
260
|
+
raise ValueError(
|
|
261
|
+
'When using "instance_aware_least_load" policy, '
|
|
262
|
+
'target_qps_per_replica must be a '
|
|
263
|
+
'dict mapping GPU types to QPS values.')
|
|
264
|
+
|
|
244
265
|
tls_section = config.get('tls', None)
|
|
245
266
|
if tls_section is not None:
|
|
246
267
|
service_config['tls_credential'] = serve_utils.TLSCredential(
|
|
@@ -435,7 +456,8 @@ class SkyServiceSpec:
|
|
|
435
456
|
return self._ports
|
|
436
457
|
|
|
437
458
|
@property
|
|
438
|
-
def target_qps_per_replica(
|
|
459
|
+
def target_qps_per_replica(
|
|
460
|
+
self) -> Optional[Union[float, Dict[str, float]]]:
|
|
439
461
|
return self._target_qps_per_replica
|
|
440
462
|
|
|
441
463
|
@property
|
sky/server/rest.py
CHANGED
|
@@ -48,6 +48,13 @@ _session.headers[constants.API_VERSION_HEADER] = str(constants.API_VERSION)
|
|
|
48
48
|
_session.headers[constants.VERSION_HEADER] = (
|
|
49
49
|
versions.get_local_readable_version())
|
|
50
50
|
|
|
51
|
+
# Enumerate error types that might be transient and can be addressed by
|
|
52
|
+
# retrying.
|
|
53
|
+
_transient_errors = [
|
|
54
|
+
requests.exceptions.RequestException,
|
|
55
|
+
ConnectionError,
|
|
56
|
+
]
|
|
57
|
+
|
|
51
58
|
|
|
52
59
|
class RetryContext:
|
|
53
60
|
|
|
@@ -87,14 +94,10 @@ def retry_transient_errors(max_retries: int = 3,
|
|
|
87
94
|
if isinstance(e, requests.exceptions.HTTPError):
|
|
88
95
|
# Only server error is considered as transient.
|
|
89
96
|
return e.response.status_code >= 500
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
# all other errors might be transient since we only retry for 3 times
|
|
95
|
-
# by default. For permanent errors that we do not know now, we can
|
|
96
|
-
# exclude them here in the future.
|
|
97
|
-
return True
|
|
97
|
+
for error in _transient_errors:
|
|
98
|
+
if isinstance(e, error):
|
|
99
|
+
return True
|
|
100
|
+
return False
|
|
98
101
|
|
|
99
102
|
def decorator(func: F) -> F:
|
|
100
103
|
|
sky/utils/schemas.py
CHANGED
|
@@ -668,8 +668,24 @@ def get_service_schema():
|
|
|
668
668
|
'minimum': 0,
|
|
669
669
|
},
|
|
670
670
|
'target_qps_per_replica': {
|
|
671
|
-
'
|
|
672
|
-
|
|
671
|
+
'anyOf': [
|
|
672
|
+
{
|
|
673
|
+
'type': 'number',
|
|
674
|
+
'minimum': 0,
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
'type': 'object',
|
|
678
|
+
'patternProperties': {
|
|
679
|
+
# Pattern for accelerator types like
|
|
680
|
+
# "H100:1", "A100:1", "H100", "A100"
|
|
681
|
+
'^[A-Z0-9]+(?::[0-9]+)?$': {
|
|
682
|
+
'type': 'number',
|
|
683
|
+
'minimum': 0,
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
'additionalProperties': False,
|
|
687
|
+
}
|
|
688
|
+
]
|
|
673
689
|
},
|
|
674
690
|
'dynamic_ondemand_fallback': {
|
|
675
691
|
'type': 'boolean',
|
{skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
sky/__init__.py,sha256=
|
|
1
|
+
sky/__init__.py,sha256=wU94TjC0ZwBhdANnFHf83Ng7EochDDpzei9uwvl2U3g,6615
|
|
2
2
|
sky/admin_policy.py,sha256=BeSowGnWfDj58ALiNf3cc2N4gMQWzjO6aXnX7vaqYhk,9782
|
|
3
3
|
sky/authentication.py,sha256=V7zGSV7bqcAKC_EGOOS0KhJ01ZFLnme0WnjLFO7zavs,25603
|
|
4
4
|
sky/check.py,sha256=Z7D6txaOAEL7fyEQ8q-Zxk1aWaHpEcl412Rj2mThbQ0,31025
|
|
@@ -36,7 +36,7 @@ sky/adaptors/vsphere.py,sha256=zJP9SeObEoLrpgHW2VHvZE48EhgVf8GfAEIwBeaDMfM,2129
|
|
|
36
36
|
sky/backends/__init__.py,sha256=tpa9gAygQopsiBUUuy3wVmr4E05FoPTFHIWqEo4i-u0,627
|
|
37
37
|
sky/backends/backend.py,sha256=DcZZYgBvhghjLnD1C2TvgAisPpcqT0oYNJ3p_P-0UT4,8098
|
|
38
38
|
sky/backends/backend_utils.py,sha256=TTwnjhW7hVNnrVQe8dyVxHssSxL-_4mZiT-qaFQgur8,157967
|
|
39
|
-
sky/backends/cloud_vm_ray_backend.py,sha256=
|
|
39
|
+
sky/backends/cloud_vm_ray_backend.py,sha256=7gZ_kjHYeoz_473nDxLHF4lbgBVg_3BGFr-B_ScyhMo,276537
|
|
40
40
|
sky/backends/docker_utils.py,sha256=_EhM6NStZDAwcegppQqExaB5iuSn1qL4xFFUqXAz2Uk,8392
|
|
41
41
|
sky/backends/local_docker_backend.py,sha256=i_Ff6MUNiIJKknTJw0YtQcvDlba2F7f44lx_eZKfP40,17409
|
|
42
42
|
sky/backends/wheel_utils.py,sha256=2ik8vImmlYLCygRqqTI1ukfZNpqjpdjvj2kHWznFjs8,11104
|
|
@@ -71,7 +71,7 @@ sky/catalog/data_fetchers/fetch_fluidstack.py,sha256=hsqpQi_YUI-qil3zLCEGatrR7Bk
|
|
|
71
71
|
sky/catalog/data_fetchers/fetch_gcp.py,sha256=iFOpPq52c2ENg-oV9OXqFqPMG4Dpv5VGtRhcxkMir90,31950
|
|
72
72
|
sky/catalog/data_fetchers/fetch_hyperbolic.py,sha256=VLBJXWvrKJH5QbMUiREPEMfO3x37_XsqMAmOo7bCQtc,4537
|
|
73
73
|
sky/catalog/data_fetchers/fetch_ibm.py,sha256=WPzR1y5ZaTdv-R3HLIdSUnOfWh4N9cqzKoKiKJQkjFk,7414
|
|
74
|
-
sky/catalog/data_fetchers/fetch_lambda_cloud.py,sha256=
|
|
74
|
+
sky/catalog/data_fetchers/fetch_lambda_cloud.py,sha256=9-_gMwErwSbitC5ByZWWOKrn1S6_KfOUIfFbfbJbXZo,5033
|
|
75
75
|
sky/catalog/data_fetchers/fetch_nebius.py,sha256=PeiVTWsaw0P01cfq2xDcS1tcIhLIe4ObSPF1XLO67gc,12181
|
|
76
76
|
sky/catalog/data_fetchers/fetch_vast.py,sha256=xoVDSsQVgMLzyibCFN7yDgyH1Y96gk5G53to1ZAGRyg,5017
|
|
77
77
|
sky/catalog/data_fetchers/fetch_vsphere.py,sha256=Yf7tKzwJsQ_4f64IT1EAP108C1D3Rg35RUIwp7UX8KI,21438
|
|
@@ -112,19 +112,19 @@ sky/clouds/utils/azure_utils.py,sha256=NToRBnhEyuUvb-nBnsKTxjhOBRkMcrelL8LK4w6s4
|
|
|
112
112
|
sky/clouds/utils/gcp_utils.py,sha256=09MF4Vx0EW7S-GXGpyxpl2aQlHrqeu9ioV0nyionAyk,9890
|
|
113
113
|
sky/clouds/utils/oci_utils.py,sha256=TFqAqRLggg4Z0bhxrrq8nouSSomZy-ub1frHXEkud2M,7302
|
|
114
114
|
sky/clouds/utils/scp_utils.py,sha256=VGuccVO5uFGr8-yolWSoYrgr11z6cIeDBGcqkBzAyOs,18409
|
|
115
|
-
sky/dashboard/out/404.html,sha256=
|
|
116
|
-
sky/dashboard/out/clusters.html,sha256=
|
|
117
|
-
sky/dashboard/out/config.html,sha256=
|
|
115
|
+
sky/dashboard/out/404.html,sha256=3Gvl6FWCjaT8L8TCCCiVT46IkRybXQJlAqZm6PI5jYA,1423
|
|
116
|
+
sky/dashboard/out/clusters.html,sha256=DK23NMk9Mg8ZPXn12UX-wsn0RdgYzjS_-gg6jt86kO0,1418
|
|
117
|
+
sky/dashboard/out/config.html,sha256=tc62a9w66l5sNtBf-5BeZobBvZkWKRwyiOrNjre82jI,1414
|
|
118
118
|
sky/dashboard/out/favicon.ico,sha256=XilUZZglAl_1zRsg85QsbQgmQAzGPQjcUIJ-A3AzYn8,93590
|
|
119
|
-
sky/dashboard/out/index.html,sha256=
|
|
120
|
-
sky/dashboard/out/infra.html,sha256=
|
|
121
|
-
sky/dashboard/out/jobs.html,sha256=
|
|
119
|
+
sky/dashboard/out/index.html,sha256=__o4Clp3Xp3XGx-5n6FFJgmqGVntA_ZbS-8o4QNj0cI,1407
|
|
120
|
+
sky/dashboard/out/infra.html,sha256=98bUimOMW5-Sni6kSx3wIVBiRR6js5NPN1_IiBjjYo4,1412
|
|
121
|
+
sky/dashboard/out/jobs.html,sha256=r5yMieAcXZEwVea9c2b2-97Yn0aGxtxMzvHZsocLgYg,1410
|
|
122
122
|
sky/dashboard/out/skypilot.svg,sha256=c0iRtlfLlaUm2p0rG9NFmo5FN0Qhf3pq5Xph-AeMPJw,5064
|
|
123
|
-
sky/dashboard/out/users.html,sha256=
|
|
124
|
-
sky/dashboard/out/volumes.html,sha256=
|
|
125
|
-
sky/dashboard/out/workspaces.html,sha256=
|
|
126
|
-
sky/dashboard/out/_next/static/
|
|
127
|
-
sky/dashboard/out/_next/static/
|
|
123
|
+
sky/dashboard/out/users.html,sha256=_9ETCX5JkiP4a58Whkc-NHzV9MjcKEWhYq4sg4xz6f4,1412
|
|
124
|
+
sky/dashboard/out/volumes.html,sha256=p3tUR7cOsCXet1rgJMhsYWsRdrbzdaPxr-uw4n_gPmU,1416
|
|
125
|
+
sky/dashboard/out/workspaces.html,sha256=sfzrgzwdxfvY0Ccm6xkKivKu374k3EYcZSx9fnZzxvU,1422
|
|
126
|
+
sky/dashboard/out/_next/static/TPMkEeuj85tHTmIW7Gu3S/_buildManifest.js,sha256=osxUordT3Fb32OsAF270nSx4GMgfsKF6Vc8OBBxtPgk,2428
|
|
127
|
+
sky/dashboard/out/_next/static/TPMkEeuj85tHTmIW7Gu3S/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
128
128
|
sky/dashboard/out/_next/static/chunks/1121-8afcf719ea87debc.js,sha256=fLXxFyYpxIIH-GAL9X9Ew3rc2f6zqOZqg6TjrapDZUM,8554
|
|
129
129
|
sky/dashboard/out/_next/static/chunks/1141-943efc7aff0f0c06.js,sha256=tUOoU0nIEShZeD5pBiOWrl8-czHc6PpnxxJilnDplHM,17330
|
|
130
130
|
sky/dashboard/out/_next/static/chunks/1272-1ef0bf0237faccdb.js,sha256=VJ6y-Z6Eg2T93hQIRfWAbjAkQ7nQhglmIaVbEpKSILY,38451
|
|
@@ -179,14 +179,14 @@ sky/dashboard/out/_next/static/chunks/pages/jobs/pools/[pool]-07349868f7905d37.j
|
|
|
179
179
|
sky/dashboard/out/_next/static/chunks/pages/workspace/new-3f88a1c7e86a3f86.js,sha256=83s5N5CZwIaRcmYMfqn2we60n2VRmgFw6Tbx18b8-e0,762
|
|
180
180
|
sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-de06e613e20bc977.js,sha256=8d4XLtF8E3ahNnsbdNUQkJVbM1b9sIG9wRaoRjRwMhE,1495
|
|
181
181
|
sky/dashboard/out/_next/static/css/4614e06482d7309e.css,sha256=nk6GriyGVd1aGXrLd7BcMibnN4v0z-Q_mXGxrHFWqrE,56126
|
|
182
|
-
sky/dashboard/out/clusters/[cluster].html,sha256=
|
|
183
|
-
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=
|
|
184
|
-
sky/dashboard/out/infra/[context].html,sha256=
|
|
185
|
-
sky/dashboard/out/jobs/[job].html,sha256=
|
|
186
|
-
sky/dashboard/out/jobs/pools/[pool].html,sha256=
|
|
182
|
+
sky/dashboard/out/clusters/[cluster].html,sha256=N2GvGQqYXrX6ImCQ51uGGrnaJafYx7c_mk-HrrDcpZQ,2936
|
|
183
|
+
sky/dashboard/out/clusters/[cluster]/[job].html,sha256=CTOhsQPFLQ-XK2pefCSn4Ywtx-7RqcHG0IaX2gi_YG8,2073
|
|
184
|
+
sky/dashboard/out/infra/[context].html,sha256=DJPp07oZX0EkqIg0MPFsDBTlQ3RFViC6KQyAquq0HRs,1436
|
|
185
|
+
sky/dashboard/out/jobs/[job].html,sha256=iHkradqnTT9wfFtizRvfbjNc3U1FXx-Um79YC0-PRes,2304
|
|
186
|
+
sky/dashboard/out/jobs/pools/[pool].html,sha256=ijXIK3F83uLQJJusrGJxVdKERd0vXc7qDJNqrXrrbK4,2142
|
|
187
187
|
sky/dashboard/out/videos/cursor-small.mp4,sha256=8tRdp1vjawOrXUar1cfjOc-nkaKmcwCPZx_LO0XlCvQ,203285
|
|
188
|
-
sky/dashboard/out/workspace/new.html,sha256=
|
|
189
|
-
sky/dashboard/out/workspaces/[name].html,sha256=
|
|
188
|
+
sky/dashboard/out/workspace/new.html,sha256=K0pQef1eo_m4Lc2XLP20d95hISfA27ceJO0L7Xk2p0o,1428
|
|
189
|
+
sky/dashboard/out/workspaces/[name].html,sha256=YMnimIRnIc05ryUmLHayp5TgaKCY86Wdj1Ik_m9w_yk,2759
|
|
190
190
|
sky/data/__init__.py,sha256=Nhaf1NURisXpZuwWANa2IuCyppIuc720FRwqSE2oEwY,184
|
|
191
191
|
sky/data/data_transfer.py,sha256=N8b0CQebDuHieXjvEVwlYmK6DbQxUGG1RQJEyTbh3dU,12040
|
|
192
192
|
sky/data/data_utils.py,sha256=AjEA_JRjo9NBMlv-Lq5iV4lBED_YZ1VqBR9pG6fGVWE,35179
|
|
@@ -261,7 +261,7 @@ sky/provision/kubernetes/constants.py,sha256=vZJQsAVjAgwsOskB48tIFSXtNw7IFnJOQE_
|
|
|
261
261
|
sky/provision/kubernetes/instance.py,sha256=Z9c3nUIniijD9OMQ1PO4YyuiL4764w5P_3MzSWTL-Fg,67333
|
|
262
262
|
sky/provision/kubernetes/network.py,sha256=Dgj8u7IQBHKHt-mSDhYzue1wfDk96FR_8fO89TwuZ2E,12846
|
|
263
263
|
sky/provision/kubernetes/network_utils.py,sha256=EROwcgkdVawLQVkw6cpRaEg4k2pS0V8dEoO8vh9G9Kc,12273
|
|
264
|
-
sky/provision/kubernetes/utils.py,sha256=
|
|
264
|
+
sky/provision/kubernetes/utils.py,sha256=NBIJtXTBxP1gMtps_j1TSyYhPH9jFnZ0XguZeQVcsOo,158411
|
|
265
265
|
sky/provision/kubernetes/volume.py,sha256=mChbYJw02vrUbBWw9a2mKHWlSfCBjWS4AeWs5_6MPSw,8142
|
|
266
266
|
sky/provision/kubernetes/manifests/fusermount-server-daemonset.yaml,sha256=S87GNAbDqgTrLuxF-afPAqQ0V-i41El4s_9KBZMuaag,1331
|
|
267
267
|
sky/provision/lambda_cloud/__init__.py,sha256=6EEvSgtUeEiup9ivIFevHmgv0GqleroO2X0K7TRa2nE,612
|
|
@@ -333,16 +333,16 @@ sky/schemas/generated/autostopv1_pb2.py,sha256=3w4k0woHFxK0qXvYGljLtqpp3IB-oGV15
|
|
|
333
333
|
sky/schemas/generated/autostopv1_pb2.pyi,sha256=1slXiAfgnh-Ds-yHJglvhGddatmlOPfh3AAOCheipCk,1772
|
|
334
334
|
sky/schemas/generated/autostopv1_pb2_grpc.py,sha256=sUoHZNUNjxpsiYzJhSchC7p-uvigYuh8DwhhyhgfPcE,5921
|
|
335
335
|
sky/serve/__init__.py,sha256=jlwErB4VeKh0wp9FkTIQoE5JQvc6KIB-vrqhtsJ2q-E,1810
|
|
336
|
-
sky/serve/autoscalers.py,sha256=
|
|
336
|
+
sky/serve/autoscalers.py,sha256=4qS01f3-UUMC4kPe7HI7ayyWNwX1oMKVF7lwW_DX2wk,48542
|
|
337
337
|
sky/serve/constants.py,sha256=VYQKGuwaPI9o2xC5HzB0TGKdiMeE9gOiX82K5yGEfGg,5062
|
|
338
|
-
sky/serve/controller.py,sha256=
|
|
339
|
-
sky/serve/load_balancer.py,sha256=
|
|
340
|
-
sky/serve/load_balancing_policies.py,sha256=
|
|
338
|
+
sky/serve/controller.py,sha256=lyB6EHIfEMqKg-gshFLKUHEZqs77ufsD_ev6catz10Q,13975
|
|
339
|
+
sky/serve/load_balancer.py,sha256=gQpjOwnpu2HLdymbYCeCgJodDklMEwYMGgYU9ThXHPM,15774
|
|
340
|
+
sky/serve/load_balancing_policies.py,sha256=hhPrcuwT_rEJx4DMRC6iuLpUY8wOabUtXtPK7clg1F8,10148
|
|
341
341
|
sky/serve/replica_managers.py,sha256=YaNyB8czSbxwlZP3oQqM4fOwxK0chIp9e7XVJYiTB4g,70830
|
|
342
342
|
sky/serve/serve_state.py,sha256=k9rvkz-l8tpZZN1cL7aBtb60l_DE_3dE0DVyfT4tYzg,33328
|
|
343
343
|
sky/serve/serve_utils.py,sha256=JptYHFMMlRGsHF10HjUnIiVc2MUHok393B24WJyO2Aw,69220
|
|
344
|
-
sky/serve/service.py,sha256=
|
|
345
|
-
sky/serve/service_spec.py,sha256=
|
|
344
|
+
sky/serve/service.py,sha256=mD5bOfw6VeyyqkBG-NPiM89ZP4V7I4ACTiqg4jLQaJg,18464
|
|
345
|
+
sky/serve/service_spec.py,sha256=yro9RJw62FADF-lsEQMGmyLvHancjQD9ez7B0eaPGVE,22821
|
|
346
346
|
sky/serve/spot_placer.py,sha256=auRlYZNg8uIW-lxiirxpDP-iIaJtkrhesm6OGMgwPq4,11288
|
|
347
347
|
sky/serve/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
348
348
|
sky/serve/client/impl.py,sha256=TMvZGnui5QeqhqGzCzrMrLXO_As8RDUFSZa67cDbJJs,9466
|
|
@@ -358,7 +358,7 @@ sky/server/config.py,sha256=XWf5Kw4am6vMO5wcyWevbQAFH-dmKb7AMEgDzD083-M,8538
|
|
|
358
358
|
sky/server/constants.py,sha256=yjX8t73w6gj3_SDSP4vBFdNdiOqq7dnlXT2pw3yo0jM,2321
|
|
359
359
|
sky/server/daemons.py,sha256=3cwp-Os2StWLaOF21Sv4jzJ1zkEYpKuiKF5HFkg86WA,8700
|
|
360
360
|
sky/server/metrics.py,sha256=6H6n6dq_C5HMaU97mJlRUB9bqOEA_k205PO15wE3AWk,3648
|
|
361
|
-
sky/server/rest.py,sha256=
|
|
361
|
+
sky/server/rest.py,sha256=6Qcn6fjypP3j9UHdKRgvt2-PU1LKz2VU2aVQEA1D6EI,14354
|
|
362
362
|
sky/server/server.py,sha256=YTFhgaAKMIYvxwKdgPoAc0CP7TlVEm6AvEmrMEB8uqY,78411
|
|
363
363
|
sky/server/state.py,sha256=YbVOMJ1JipQQv17gLIGyiGN7MKfnP83qlUa5MB1z0Yk,747
|
|
364
364
|
sky/server/stream_utils.py,sha256=RS4RuMxQqTGqp3uxzZVtmFWzos4d49P7hMX_VklzEVU,9189
|
|
@@ -488,7 +488,7 @@ sky/utils/resource_checker.py,sha256=0rwr7yLVkYO3Qq5FZmniyPp-p66tIXmSoK5t0ZgIfso
|
|
|
488
488
|
sky/utils/resources_utils.py,sha256=3wnzmSIldFS5NmHTx6r2viS8zaP1q20noQolgQqucUU,16722
|
|
489
489
|
sky/utils/rich_console_utils.py,sha256=wPvAlshaFHuMZSjiDnaK3OSBppZLBjAn-lj7AvxNBQk,553
|
|
490
490
|
sky/utils/rich_utils.py,sha256=Q-N5bZGfvqciU5cuQacInoNpldZcaMKCdBX2368KIDA,19971
|
|
491
|
-
sky/utils/schemas.py,sha256=
|
|
491
|
+
sky/utils/schemas.py,sha256=sqID5M6nknukfVtTlTShAp-nhptjnZJbkLBjO-i_doY,57114
|
|
492
492
|
sky/utils/serialize_utils.py,sha256=nn2x-8cTZeiVr5cgaBpLOGGpSFtms62QAJFyxs_bodI,630
|
|
493
493
|
sky/utils/status_lib.py,sha256=QGkd6COD1GX1h30Mk9RMUdyeUOMJs5971GkxTcFgdsU,1705
|
|
494
494
|
sky/utils/subprocess_utils.py,sha256=tOpFY_1ml7JkVGAN1o473lcKPklGR95qBCW61eu8kEo,15773
|
|
@@ -533,9 +533,9 @@ sky/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
533
533
|
sky/workspaces/core.py,sha256=AjwbbRwk0glzCnqICJk4sQzMoUcawixbXoQWKLB3-aQ,25372
|
|
534
534
|
sky/workspaces/server.py,sha256=Box45DS54xXGHy7I3tGKGy-JP0a8G_z6IhfvGlEXtsA,3439
|
|
535
535
|
sky/workspaces/utils.py,sha256=IIAiFoS6sdb2t0X5YoX9AietpTanZUQNTK8cePun-sY,2143
|
|
536
|
-
skypilot_nightly-1.0.0.
|
|
537
|
-
skypilot_nightly-1.0.0.
|
|
538
|
-
skypilot_nightly-1.0.0.
|
|
539
|
-
skypilot_nightly-1.0.0.
|
|
540
|
-
skypilot_nightly-1.0.0.
|
|
541
|
-
skypilot_nightly-1.0.0.
|
|
536
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/licenses/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
|
537
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/METADATA,sha256=jBNYOk9-nDPQ0vU2eZ2HoHuVvcWVnMinnhtS39yU4Vo,20310
|
|
538
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
539
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
|
540
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
|
541
|
+
skypilot_nightly-1.0.0.dev20250826.dist-info/RECORD,,
|
/sky/dashboard/out/_next/static/{P-Au_yHqNENhnPF3shEpK → TPMkEeuj85tHTmIW7Gu3S}/_buildManifest.js
RENAMED
|
File without changes
|
/sky/dashboard/out/_next/static/{P-Au_yHqNENhnPF3shEpK → TPMkEeuj85tHTmIW7Gu3S}/_ssgManifest.js
RENAMED
|
File without changes
|
{skypilot_nightly-1.0.0.dev20250824.dist-info → skypilot_nightly-1.0.0.dev20250826.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|