skypilot-nightly 1.0.0.dev20241209__py3-none-any.whl → 1.0.0.dev20241210__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/clouds/runpod.py +11 -8
- sky/provision/runpod/api/__init__.py +3 -0
- sky/provision/runpod/api/commands.py +119 -0
- sky/provision/runpod/api/pods.py +142 -0
- sky/provision/runpod/instance.py +4 -1
- sky/provision/runpod/utils.py +32 -18
- sky/templates/runpod-ray.yml.j2 +2 -0
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/RECORD +14 -11
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.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 = 'e0368888b6e64fd42cbafc698835b7aef0ce1a4c'
|
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.dev20241210'
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
40
40
|
|
41
41
|
|
sky/clouds/runpod.py
CHANGED
@@ -24,8 +24,6 @@ class RunPod(clouds.Cloud):
|
|
24
24
|
_REPR = 'RunPod'
|
25
25
|
_CLOUD_UNSUPPORTED_FEATURES = {
|
26
26
|
clouds.CloudImplementationFeatures.STOP: 'Stopping not supported.',
|
27
|
-
clouds.CloudImplementationFeatures.SPOT_INSTANCE:
|
28
|
-
('Spot is not supported, as runpod API does not implement spot.'),
|
29
27
|
clouds.CloudImplementationFeatures.MULTI_NODE:
|
30
28
|
('Multi-node not supported yet, as the interconnection among nodes '
|
31
29
|
'are non-trivial on RunPod.'),
|
@@ -70,11 +68,8 @@ class RunPod(clouds.Cloud):
|
|
70
68
|
zone: Optional[str]) -> List[clouds.Region]:
|
71
69
|
assert zone is None, 'RunPod does not support zones.'
|
72
70
|
del accelerators, zone # unused
|
73
|
-
|
74
|
-
|
75
|
-
else:
|
76
|
-
regions = service_catalog.get_region_zones_for_instance_type(
|
77
|
-
instance_type, use_spot, 'runpod')
|
71
|
+
regions = service_catalog.get_region_zones_for_instance_type(
|
72
|
+
instance_type, use_spot, 'runpod')
|
78
73
|
|
79
74
|
if region is not None:
|
80
75
|
regions = [r for r in regions if r.name == region]
|
@@ -176,11 +171,19 @@ class RunPod(clouds.Cloud):
|
|
176
171
|
else:
|
177
172
|
image_id = r.image_id[r.region]
|
178
173
|
|
174
|
+
instance_type = resources.instance_type
|
175
|
+
use_spot = resources.use_spot
|
176
|
+
|
177
|
+
hourly_cost = self.instance_type_to_hourly_cost(
|
178
|
+
instance_type=instance_type, use_spot=use_spot)
|
179
|
+
|
179
180
|
return {
|
180
|
-
'instance_type':
|
181
|
+
'instance_type': instance_type,
|
181
182
|
'custom_resources': custom_resources,
|
182
183
|
'region': region.name,
|
183
184
|
'image_id': image_id,
|
185
|
+
'use_spot': use_spot,
|
186
|
+
'bid_per_gpu': str(hourly_cost),
|
184
187
|
}
|
185
188
|
|
186
189
|
def _get_feasible_launchable_resources(
|
@@ -0,0 +1,119 @@
|
|
1
|
+
"""This module provides functions to generate GraphQL mutations for deploying
|
2
|
+
spot instance Pods on RunPod.
|
3
|
+
|
4
|
+
Reference:
|
5
|
+
https://github.com/runpod/runpod-python/blob/main/runpod/api/ctl_commands.py
|
6
|
+
|
7
|
+
Functions:
|
8
|
+
generate_spot_pod_deployment_mutation: Generates a GraphQL mutation string
|
9
|
+
for deploying a spot instance Pod on RunPod.
|
10
|
+
|
11
|
+
Example:
|
12
|
+
>>> mutation = generate_spot_pod_deployment_mutation(
|
13
|
+
name='test',
|
14
|
+
image_name='runpod/stack',
|
15
|
+
gpu_type_id='NVIDIA GeForce RTX 3070',
|
16
|
+
bid_per_gpu=0.3
|
17
|
+
)
|
18
|
+
"""
|
19
|
+
from typing import List, Optional
|
20
|
+
|
21
|
+
from sky.adaptors import runpod
|
22
|
+
from sky.provision.runpod.api.pods import generate_spot_pod_deployment_mutation
|
23
|
+
|
24
|
+
_INTERRUPTABLE_POD_FIELD: str = 'podRentInterruptable'
|
25
|
+
_RESPONSE_DATA_FIELD: str = 'data'
|
26
|
+
|
27
|
+
|
28
|
+
def create_spot_pod(
|
29
|
+
name: str,
|
30
|
+
image_name: str,
|
31
|
+
gpu_type_id: str,
|
32
|
+
bid_per_gpu: float,
|
33
|
+
cloud_type: str = 'ALL',
|
34
|
+
volume_mount_path: str = '/runpod-volume',
|
35
|
+
gpu_count: Optional[int] = 1,
|
36
|
+
min_memory_in_gb: Optional[int] = 1,
|
37
|
+
min_vcpu_count: Optional[int] = 1,
|
38
|
+
container_disk_in_gb: Optional[int] = None,
|
39
|
+
volume_in_gb: Optional[int] = 0,
|
40
|
+
ports: Optional[str] = None,
|
41
|
+
start_ssh: Optional[bool] = True,
|
42
|
+
start_jupyter: Optional[bool] = False,
|
43
|
+
env: Optional[dict] = None,
|
44
|
+
docker_args: Optional[str] = '',
|
45
|
+
support_public_ip: Optional[bool] = True,
|
46
|
+
terminate_after: Optional[str] = None,
|
47
|
+
stop_after: Optional[str] = None,
|
48
|
+
data_center_id: Optional[str] = None,
|
49
|
+
country_code: Optional[str] = None,
|
50
|
+
network_volume_id: Optional[str] = None,
|
51
|
+
allowed_cuda_versions: Optional[List[str]] = None,
|
52
|
+
min_download: Optional[int] = None,
|
53
|
+
min_upload: Optional[int] = None,
|
54
|
+
cuda_version: Optional[str] = None,
|
55
|
+
template_id: Optional[str] = None,
|
56
|
+
volume_key: Optional[str] = None,
|
57
|
+
) -> dict:
|
58
|
+
"""This module provides functions to generate GraphQL mutations for
|
59
|
+
deploying spot instance Pods on RunPod.
|
60
|
+
|
61
|
+
Functions:
|
62
|
+
generate_spot_pod_deployment_mutation: Generates a GraphQL mutation
|
63
|
+
string for deploying a spot instance Pod on RunPod.
|
64
|
+
|
65
|
+
Example:
|
66
|
+
>>> mutation = generate_spot_pod_deployment_mutation(
|
67
|
+
name='test',
|
68
|
+
image_name='runpod/stack',
|
69
|
+
gpu_type_id='NVIDIA GeForce RTX 3070',
|
70
|
+
bid_per_gpu=0.3
|
71
|
+
)
|
72
|
+
"""
|
73
|
+
runpod.runpod.get_gpu(gpu_type_id)
|
74
|
+
# refer to https://graphql-spec.runpod.io/#definition-CloudTypeEnum
|
75
|
+
if cloud_type not in ['ALL', 'COMMUNITY', 'SECURE']:
|
76
|
+
raise ValueError('cloud_type must be one of ALL, COMMUNITY or SECURE')
|
77
|
+
|
78
|
+
if network_volume_id and data_center_id is None:
|
79
|
+
user_info = runpod.runpod.get_user()
|
80
|
+
for network_volume in user_info['networkVolumes']:
|
81
|
+
if network_volume['id'] == network_volume_id:
|
82
|
+
data_center_id = network_volume['dataCenterId']
|
83
|
+
break
|
84
|
+
|
85
|
+
if container_disk_in_gb is None and template_id is None:
|
86
|
+
container_disk_in_gb = 10
|
87
|
+
|
88
|
+
mutation = generate_spot_pod_deployment_mutation(
|
89
|
+
name=name,
|
90
|
+
image_name=image_name,
|
91
|
+
gpu_type_id=gpu_type_id,
|
92
|
+
bid_per_gpu=bid_per_gpu,
|
93
|
+
cloud_type=cloud_type,
|
94
|
+
gpu_count=gpu_count,
|
95
|
+
min_memory_in_gb=min_memory_in_gb,
|
96
|
+
min_vcpu_count=min_vcpu_count,
|
97
|
+
container_disk_in_gb=container_disk_in_gb,
|
98
|
+
volume_in_gb=volume_in_gb,
|
99
|
+
volume_mount_path=volume_mount_path,
|
100
|
+
ports=ports,
|
101
|
+
start_ssh=start_ssh,
|
102
|
+
start_jupyter=start_jupyter,
|
103
|
+
env=env,
|
104
|
+
docker_args=docker_args,
|
105
|
+
support_public_ip=support_public_ip,
|
106
|
+
terminate_after=terminate_after,
|
107
|
+
stop_after=stop_after,
|
108
|
+
data_center_id=data_center_id,
|
109
|
+
country_code=country_code,
|
110
|
+
network_volume_id=network_volume_id,
|
111
|
+
allowed_cuda_versions=allowed_cuda_versions,
|
112
|
+
min_download=min_download,
|
113
|
+
min_upload=min_upload,
|
114
|
+
cuda_version=cuda_version,
|
115
|
+
template_id=template_id,
|
116
|
+
volume_key=volume_key,
|
117
|
+
)
|
118
|
+
response = runpod.runpod.api.graphql.run_graphql_query(mutation)
|
119
|
+
return response[_RESPONSE_DATA_FIELD][_INTERRUPTABLE_POD_FIELD]
|
@@ -0,0 +1,142 @@
|
|
1
|
+
"""This module provides functions to generate GraphQL mutations for deploying
|
2
|
+
spot instance Pods on RunPod.
|
3
|
+
|
4
|
+
Reference:
|
5
|
+
https://github.com/runpod/runpod-python/blob/main/runpod/api/mutations/pods.py
|
6
|
+
|
7
|
+
Functions:
|
8
|
+
generate_spot_pod_deployment_mutation: Generates a GraphQL mutation string
|
9
|
+
for deploying a spot instance Pod on RunPod.
|
10
|
+
Example:
|
11
|
+
>>> mutation = generate_spot_pod_deployment_mutation(
|
12
|
+
name='test',
|
13
|
+
image_name='runpod/stack',
|
14
|
+
gpu_type_id='NVIDIA GeForce RTX 3070',
|
15
|
+
bid_per_gpu=0.3
|
16
|
+
)
|
17
|
+
"""
|
18
|
+
|
19
|
+
from typing import List, Optional
|
20
|
+
|
21
|
+
|
22
|
+
# refer to https://graphql-spec.runpod.io/#definition-PodRentInterruptableInput
|
23
|
+
def generate_spot_pod_deployment_mutation(
|
24
|
+
name: str,
|
25
|
+
image_name: str,
|
26
|
+
gpu_type_id: str,
|
27
|
+
bid_per_gpu: float,
|
28
|
+
volume_mount_path: str,
|
29
|
+
cloud_type: str = 'ALL',
|
30
|
+
gpu_count: Optional[int] = None,
|
31
|
+
min_memory_in_gb: Optional[int] = None,
|
32
|
+
min_vcpu_count: Optional[int] = None,
|
33
|
+
container_disk_in_gb: Optional[int] = None,
|
34
|
+
volume_in_gb: Optional[int] = None,
|
35
|
+
ports: Optional[str] = None,
|
36
|
+
start_ssh: Optional[bool] = True,
|
37
|
+
start_jupyter: Optional[bool] = False,
|
38
|
+
env: Optional[dict] = None,
|
39
|
+
docker_args: Optional[str] = None,
|
40
|
+
support_public_ip: Optional[bool] = True,
|
41
|
+
terminate_after: Optional[str] = None,
|
42
|
+
stop_after: Optional[str] = None,
|
43
|
+
data_center_id: Optional[str] = None,
|
44
|
+
country_code: Optional[str] = None,
|
45
|
+
network_volume_id: Optional[str] = None,
|
46
|
+
allowed_cuda_versions: Optional[List[str]] = None,
|
47
|
+
min_download: Optional[int] = None,
|
48
|
+
min_upload: Optional[int] = None,
|
49
|
+
cuda_version: Optional[str] = None,
|
50
|
+
template_id: Optional[str] = None,
|
51
|
+
volume_key: Optional[str] = None,
|
52
|
+
) -> str:
|
53
|
+
input_fields = []
|
54
|
+
|
55
|
+
# Required Fields
|
56
|
+
input_fields.append(f'name: "{name}"')
|
57
|
+
input_fields.append(f'imageName: "{image_name}"')
|
58
|
+
input_fields.append(f'gpuTypeId: "{gpu_type_id}"')
|
59
|
+
input_fields.append(f'bidPerGpu: {bid_per_gpu}')
|
60
|
+
input_fields.append(f'volumeMountPath: "{volume_mount_path}"')
|
61
|
+
|
62
|
+
# Default Fields
|
63
|
+
input_fields.append(f'cloudType: {cloud_type}')
|
64
|
+
|
65
|
+
if start_ssh:
|
66
|
+
input_fields.append('startSsh: true')
|
67
|
+
if start_jupyter:
|
68
|
+
input_fields.append('startJupyter: true')
|
69
|
+
if support_public_ip:
|
70
|
+
input_fields.append('supportPublicIp: true')
|
71
|
+
else:
|
72
|
+
input_fields.append('supportPublicIp: false')
|
73
|
+
|
74
|
+
# Optional Fields
|
75
|
+
if gpu_count is not None:
|
76
|
+
input_fields.append(f'gpuCount: {gpu_count}')
|
77
|
+
if min_memory_in_gb is not None:
|
78
|
+
input_fields.append(f'minMemoryInGb: {min_memory_in_gb}')
|
79
|
+
if min_vcpu_count is not None:
|
80
|
+
input_fields.append(f'minVcpuCount: {min_vcpu_count}')
|
81
|
+
if container_disk_in_gb is not None:
|
82
|
+
input_fields.append(f'containerDiskInGb: {container_disk_in_gb}')
|
83
|
+
if volume_in_gb is not None:
|
84
|
+
input_fields.append(f'volumeInGb: {volume_in_gb}')
|
85
|
+
if ports is not None:
|
86
|
+
ports = ports.replace(' ', '')
|
87
|
+
input_fields.append(f'ports: "{ports}"')
|
88
|
+
if docker_args is not None:
|
89
|
+
input_fields.append(f'dockerArgs: "{docker_args}"')
|
90
|
+
if terminate_after is not None:
|
91
|
+
input_fields.append(f'terminateAfter: "{terminate_after}"')
|
92
|
+
if stop_after is not None:
|
93
|
+
input_fields.append(f'stopAfter: "{stop_after}"')
|
94
|
+
if data_center_id is not None:
|
95
|
+
input_fields.append(f'dataCenterId: "{data_center_id}"')
|
96
|
+
if country_code is not None:
|
97
|
+
input_fields.append(f'countryCode: "{country_code}"')
|
98
|
+
if network_volume_id is not None:
|
99
|
+
input_fields.append(f'networkVolumeId: "{network_volume_id}"')
|
100
|
+
if allowed_cuda_versions is not None:
|
101
|
+
allowed_cuda_versions_string = ', '.join(
|
102
|
+
[f'"{version}"' for version in allowed_cuda_versions])
|
103
|
+
input_fields.append(
|
104
|
+
f'allowedCudaVersions: [{allowed_cuda_versions_string}]')
|
105
|
+
if min_download is not None:
|
106
|
+
input_fields.append(f'minDownload: {min_download}')
|
107
|
+
if min_upload is not None:
|
108
|
+
input_fields.append(f'minUpload: {min_upload}')
|
109
|
+
if cuda_version is not None:
|
110
|
+
input_fields.append(f'cudaVersion: "{cuda_version}"')
|
111
|
+
if template_id is not None:
|
112
|
+
input_fields.append(f'templateId: "{template_id}"')
|
113
|
+
if volume_key is not None:
|
114
|
+
input_fields.append(f'volumeKey: "{volume_key}"')
|
115
|
+
|
116
|
+
if env is not None:
|
117
|
+
env_string = ', '.join([
|
118
|
+
f'{{ key: "{key}", value: "{value}" }}'
|
119
|
+
for key, value in env.items()
|
120
|
+
])
|
121
|
+
input_fields.append(f'env: [{env_string}]')
|
122
|
+
|
123
|
+
# Format input fields
|
124
|
+
input_string = ', '.join(input_fields)
|
125
|
+
return f"""
|
126
|
+
mutation {{
|
127
|
+
podRentInterruptable(
|
128
|
+
input: {{
|
129
|
+
{input_string}
|
130
|
+
}}
|
131
|
+
) {{
|
132
|
+
id
|
133
|
+
desiredStatus
|
134
|
+
imageName
|
135
|
+
env
|
136
|
+
machineId
|
137
|
+
machine {{
|
138
|
+
podHostId
|
139
|
+
}}
|
140
|
+
}}
|
141
|
+
}}
|
142
|
+
"""
|
sky/provision/runpod/instance.py
CHANGED
@@ -89,7 +89,10 @@ def run_instances(region: str, cluster_name_on_cloud: str,
|
|
89
89
|
disk_size=config.node_config['DiskSize'],
|
90
90
|
image_name=config.node_config['ImageId'],
|
91
91
|
ports=config.ports_to_open_on_launch,
|
92
|
-
public_key=config.node_config['PublicKey']
|
92
|
+
public_key=config.node_config['PublicKey'],
|
93
|
+
preemptible=config.node_config['Preemptible'],
|
94
|
+
bid_per_gpu=config.node_config['BidPerGPU'],
|
95
|
+
)
|
93
96
|
except Exception as e: # pylint: disable=broad-except
|
94
97
|
logger.warning(f'run_instances error: {e}')
|
95
98
|
raise
|
sky/provision/runpod/utils.py
CHANGED
@@ -6,6 +6,7 @@ from typing import Any, Dict, List, Optional
|
|
6
6
|
|
7
7
|
from sky import sky_logging
|
8
8
|
from sky.adaptors import runpod
|
9
|
+
import sky.provision.runpod.api.commands as runpod_commands
|
9
10
|
from sky.skylet import constants
|
10
11
|
from sky.utils import common_utils
|
11
12
|
|
@@ -100,7 +101,8 @@ def list_instances() -> Dict[str, Dict[str, Any]]:
|
|
100
101
|
|
101
102
|
|
102
103
|
def launch(name: str, instance_type: str, region: str, disk_size: int,
|
103
|
-
image_name: str, ports: Optional[List[int]], public_key: str
|
104
|
+
image_name: str, ports: Optional[List[int]], public_key: str,
|
105
|
+
preemptible: Optional[bool], bid_per_gpu: float) -> str:
|
104
106
|
"""Launches an instance with the given parameters.
|
105
107
|
|
106
108
|
Converts the instance_type to the RunPod GPU name, finds the specs for the
|
@@ -142,23 +144,35 @@ def launch(name: str, instance_type: str, region: str, disk_size: int,
|
|
142
144
|
if ports is not None:
|
143
145
|
custom_ports_str = ''.join([f'{p}/tcp,' for p in ports])
|
144
146
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
147
|
+
docker_args = (f'bash -c \'echo {encoded} | base64 --decode > init.sh; '
|
148
|
+
f'bash init.sh\'')
|
149
|
+
ports = (f'22/tcp,'
|
150
|
+
f'{custom_ports_str}'
|
151
|
+
f'{constants.SKY_REMOTE_RAY_DASHBOARD_PORT}/http,'
|
152
|
+
f'{constants.SKY_REMOTE_RAY_PORT}/http')
|
153
|
+
|
154
|
+
params = {
|
155
|
+
'name': name,
|
156
|
+
'image_name': image_name,
|
157
|
+
'gpu_type_id': gpu_type,
|
158
|
+
'cloud_type': cloud_type,
|
159
|
+
'container_disk_in_gb': disk_size,
|
160
|
+
'min_vcpu_count': 4 * gpu_quantity,
|
161
|
+
'min_memory_in_gb': gpu_specs['memoryInGb'] * gpu_quantity,
|
162
|
+
'gpu_count': gpu_quantity,
|
163
|
+
'country_code': region,
|
164
|
+
'ports': ports,
|
165
|
+
'support_public_ip': True,
|
166
|
+
'docker_args': docker_args,
|
167
|
+
}
|
168
|
+
|
169
|
+
if preemptible is None or not preemptible:
|
170
|
+
new_instance = runpod.runpod.create_pod(**params)
|
171
|
+
else:
|
172
|
+
new_instance = runpod_commands.create_spot_pod(
|
173
|
+
bid_per_gpu=bid_per_gpu,
|
174
|
+
**params,
|
175
|
+
)
|
162
176
|
|
163
177
|
return new_instance['id']
|
164
178
|
|
sky/templates/runpod-ray.yml.j2
CHANGED
{skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/RECORD
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
sky/__init__.py,sha256=
|
1
|
+
sky/__init__.py,sha256=05hMlopZ8yY2MUPk7Nh6ktc5fkssA2b6JBLzWhylH6Q,5944
|
2
2
|
sky/admin_policy.py,sha256=hPo02f_A32gCqhUueF0QYy1fMSSKqRwYEg_9FxScN_s,3248
|
3
3
|
sky/authentication.py,sha256=kACHmiZgWgRpYd1wx1ofbXRMErfMcFmWrkw4a9NxYrY,20988
|
4
4
|
sky/check.py,sha256=D3Y3saIFAYVvPxuBHnVgJEO0fUVDxgjwuMBaO-D778k,9472
|
@@ -52,7 +52,7 @@ sky/clouds/kubernetes.py,sha256=ozXABwLpZBm7mr342GC_OODq4pvttZWz-CQ9bdcNA28,3154
|
|
52
52
|
sky/clouds/lambda_cloud.py,sha256=42AmcN2X_wdBMuAw606nR_pQCBAy5QFiAo711_WRqDE,12672
|
53
53
|
sky/clouds/oci.py,sha256=OzGWoU3DiMbFujMQLXgCr94Oqb9EyP0CsM4gMYOeU9s,26553
|
54
54
|
sky/clouds/paperspace.py,sha256=0UxOcv_NaLY5hrFoAA_ZienclZUOqzf0yxXXZu4jXG0,10896
|
55
|
-
sky/clouds/runpod.py,sha256=
|
55
|
+
sky/clouds/runpod.py,sha256=XNma1xe02N7v5FBcMQukOoLOAgau_l-3FX6Ua3rKLCc,11587
|
56
56
|
sky/clouds/scp.py,sha256=JHyMqkAAqr9lJq79IVjj3rU1g-ZCCGLZTJEzIhYsw7c,15845
|
57
57
|
sky/clouds/vsphere.py,sha256=LzO-Mc-zDgpaDYZxNKGdEFa0eR5DHpTgKsPX60mPi10,12280
|
58
58
|
sky/clouds/service_catalog/__init__.py,sha256=p4V0GGeumT8yt01emqDM7Au45H5jvPfGNqdI6L2W3uM,14750
|
@@ -158,8 +158,11 @@ sky/provision/paperspace/instance.py,sha256=YAIzHEYdO8MRK8iLdweMpY2U28OMCoUvPEwf
|
|
158
158
|
sky/provision/paperspace/utils.py,sha256=uOmxbDKjV6skFizC4gYXSxRuEqso5ck2kF7MbtNmhEs,9580
|
159
159
|
sky/provision/runpod/__init__.py,sha256=6HYvHI27EaLrX1SS0vWVhdLu5HDBeZCdvAeDJuwM5pk,556
|
160
160
|
sky/provision/runpod/config.py,sha256=9ulZJVL7nHuxhTdoj8D7lNn7SdicJ5zc6FIcHIG9tcg,321
|
161
|
-
sky/provision/runpod/instance.py,sha256=
|
162
|
-
sky/provision/runpod/utils.py,sha256=
|
161
|
+
sky/provision/runpod/instance.py,sha256=S8GP00dQgp55oP4Hq3K-LUsYg36oJGMxeRhQwFFt7EA,9945
|
162
|
+
sky/provision/runpod/utils.py,sha256=yWI4rjdjAp23-Zc-kr76qkt2KsMdU2wtNrn2ATOEibE,7227
|
163
|
+
sky/provision/runpod/api/__init__.py,sha256=eJwjPeQZ5B7chf4-Bl4YeI2Uo9aLX4M1rr2NmPk89_E,112
|
164
|
+
sky/provision/runpod/api/commands.py,sha256=oh77PS0H0wZudHV8II9ceRuaFQ8FN4NJ4S3-6_PeqPM,4238
|
165
|
+
sky/provision/runpod/api/pods.py,sha256=GMwxgNr9NnHPfyh2Y9b8S_vLhrLY4h7LybFBBQNAyfw,4948
|
163
166
|
sky/provision/vsphere/__init__.py,sha256=5icB8-kfs926S9DVfNJSCBVr7z7cmCEDr04-YHX89_4,788
|
164
167
|
sky/provision/vsphere/config.py,sha256=f_ojGmi_vbnwJ8Ri48cqhZHBOuIkj41j9bFbq-ldPOo,504
|
165
168
|
sky/provision/vsphere/instance.py,sha256=4nB6uOIWCYOpGYLigKBeH3jMN2FWVyHmTTU6kdqlHEs,24488
|
@@ -235,7 +238,7 @@ sky/templates/lambda-ray.yml.j2,sha256=HyvO_tX2vxwSsc4IFVSqGuIbjLMk0bevP9bcxb8ZQ
|
|
235
238
|
sky/templates/local-ray.yml.j2,sha256=FNHeyHF6nW9nU9QLIZceUWfvrFTTcO51KqhTnYCEFaA,1185
|
236
239
|
sky/templates/oci-ray.yml.j2,sha256=92dvXGaUd2Kwep9fgTjOsAPJiBLr8GQTjy7pFvuPAyE,4562
|
237
240
|
sky/templates/paperspace-ray.yml.j2,sha256=HQjZNamrB_a4fOMCxQXSVdV5JIHtbGtAE0JzEO8uuVQ,4021
|
238
|
-
sky/templates/runpod-ray.yml.j2,sha256=
|
241
|
+
sky/templates/runpod-ray.yml.j2,sha256=9rOgWHrvzxSKRuh3hmFlWprpVKLFMLbH6vpM5eY73KE,3762
|
239
242
|
sky/templates/scp-ray.yml.j2,sha256=I9u8Ax-lit-d6UrCC9BVU8avst8w1cwK6TrzZBcz_JM,5608
|
240
243
|
sky/templates/sky-serve-controller.yaml.j2,sha256=V1IiYhArv_D_7JzC3sVN4nKlSCCCL1AYtIdxFSa-f4c,1628
|
241
244
|
sky/templates/vsphere-ray.yml.j2,sha256=cOQ-qdpxGA2FHajMMhTJI-SmlYzdPterX4Gsiq-nkb0,3587
|
@@ -276,9 +279,9 @@ sky/utils/kubernetes/k8s_gpu_labeler_job.yaml,sha256=k0TBoQ4zgf79-sVkixKSGYFHQ7Z
|
|
276
279
|
sky/utils/kubernetes/k8s_gpu_labeler_setup.yaml,sha256=VLKT2KKimZu1GDg_4AIlIt488oMQvhRZWwsj9vBbPUg,3812
|
277
280
|
sky/utils/kubernetes/rsync_helper.sh,sha256=h4YwrPFf9727CACnMJvF3EyK_0OeOYKKt4su_daKekw,1256
|
278
281
|
sky/utils/kubernetes/ssh_jump_lifecycle_manager.py,sha256=RFLJ3k7MR5UN4SKHykQ0lV9SgXumoULpKYIAt1vh-HU,6560
|
279
|
-
skypilot_nightly-1.0.0.
|
280
|
-
skypilot_nightly-1.0.0.
|
281
|
-
skypilot_nightly-1.0.0.
|
282
|
-
skypilot_nightly-1.0.0.
|
283
|
-
skypilot_nightly-1.0.0.
|
284
|
-
skypilot_nightly-1.0.0.
|
282
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
|
283
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/METADATA,sha256=4U3HsBiyppcOD_by-3kOVykqqWiwT8swLEyxn3nqENc,20319
|
284
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
285
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
|
286
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
|
287
|
+
skypilot_nightly-1.0.0.dev20241210.dist-info/RECORD,,
|
File without changes
|
{skypilot_nightly-1.0.0.dev20241209.dist-info → skypilot_nightly-1.0.0.dev20241210.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|