skypilot-nightly 1.0.0.dev20241208__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 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 = '84f09efc3ee86089b45e19a6c668b5d7161ef0f6'
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.dev20241208'
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
- if use_spot:
74
- return []
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': resources.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,3 @@
1
+ """RunPod low level API support for spot pod."""
2
+
3
+ from sky.provision.runpod.api.commands import create_spot_pod
@@ -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
+ """
@@ -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
@@ -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) -> 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
- new_instance = runpod.runpod.create_pod(
146
- name=name,
147
- image_name=image_name,
148
- gpu_type_id=gpu_type,
149
- cloud_type=cloud_type,
150
- container_disk_in_gb=disk_size,
151
- min_vcpu_count=4 * gpu_quantity,
152
- min_memory_in_gb=gpu_specs['memoryInGb'] * gpu_quantity,
153
- gpu_count=gpu_quantity,
154
- country_code=region,
155
- ports=(f'22/tcp,'
156
- f'{custom_ports_str}'
157
- f'{constants.SKY_REMOTE_RAY_DASHBOARD_PORT}/http,'
158
- f'{constants.SKY_REMOTE_RAY_PORT}/http'),
159
- support_public_ip=True,
160
- docker_args=
161
- f'bash -c \'echo {encoded} | base64 --decode > init.sh; bash init.sh\'')
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
 
@@ -24,6 +24,8 @@ available_node_types:
24
24
  ImageId: {{image_id}}
25
25
  PublicKey: |-
26
26
  skypilot:ssh_public_key_content
27
+ Preemptible: {{use_spot}}
28
+ BidPerGPU: {{bid_per_gpu}}
27
29
 
28
30
  head_node_type: ray_head_default
29
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: skypilot-nightly
3
- Version: 1.0.0.dev20241208
3
+ Version: 1.0.0.dev20241210
4
4
  Summary: SkyPilot: An intercloud broker for the clouds
5
5
  Author: SkyPilot Team
6
6
  License: Apache 2.0
@@ -1,4 +1,4 @@
1
- sky/__init__.py,sha256=1vZ0MeBbRk7Tq5s2r3f8EofHM2dlGsWvM1_fSxvotVQ,5944
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=UlHFPQY4wGGi0gLDO-vZoeJcgbQTCYXh4Pk8mKQBNUk,11515
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=AIWzTHuAu2dw8Rk-AHc7-14hUAYPEKh_UMzAhMzjDh0,9807
162
- sky/provision/runpod/utils.py,sha256=ZjrcpjKzwS2nXQ21dW405PLxBl_V9awcfRjucGB3alw,6795
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=p3BtYBHzROtNJqnjEo1xCmGSJQfCZYdarWszhDYyl0Q,3697
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.dev20241208.dist-info/LICENSE,sha256=emRJAvE7ngL6x0RhQvlns5wJzGI3NEQ_WMjNmd9TZc4,12170
280
- skypilot_nightly-1.0.0.dev20241208.dist-info/METADATA,sha256=r00QEQANCsZD2qBywwr5k7KcH68kOKk8Q64X0N-fwZQ,20319
281
- skypilot_nightly-1.0.0.dev20241208.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
282
- skypilot_nightly-1.0.0.dev20241208.dist-info/entry_points.txt,sha256=StA6HYpuHj-Y61L2Ze-hK2IcLWgLZcML5gJu8cs6nU4,36
283
- skypilot_nightly-1.0.0.dev20241208.dist-info/top_level.txt,sha256=qA8QuiNNb6Y1OF-pCUtPEr6sLEwy2xJX06Bd_CrtrHY,4
284
- skypilot_nightly-1.0.0.dev20241208.dist-info/RECORD,,
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,,