lightning-sdk 0.2.4__py3-none-any.whl → 0.2.5__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.
- lightning_sdk/__init__.py +1 -1
- lightning_sdk/ai_hub.py +3 -1
- lightning_sdk/api/ai_hub_api.py +15 -0
- lightning_sdk/api/studio_api.py +0 -8
- lightning_sdk/deployment/deployment.py +32 -4
- lightning_sdk/lightning_cloud/openapi/__init__.py +49 -1
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +4 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +537 -0
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +10 -6
- lightning_sdk/lightning_cloud/openapi/api/lit_dataset_service_api.py +1973 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +20 -20
- lightning_sdk/lightning_cloud/openapi/api/pipeline_templates_service_api.py +339 -0
- lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +5 -1
- lightning_sdk/lightning_cloud/openapi/api/schedules_service_api.py +573 -0
- lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +202 -0
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +45 -1
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_slurmusers_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/dataset_id_versions_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/dataset_id_visibility_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/environmenttemplates_id_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +69 -69
- lightning_sdk/lightning_cloud/openapi/models/litdatasets_dataset_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +69 -17
- lightning_sdk/lightning_cloud/openapi/models/pipelinetemplates_id_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_litdatasets_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +17 -17
- lightning_sdk/lightning_cloud/openapi/models/project_id_schedules_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/schedules_id_body.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/upload_id_complete_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/upload_id_parts_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +124 -20
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_multi_part_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_complete_lit_dataset_upload_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_lit_dataset_multi_part_upload_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_pipeline_template_request.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_project_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_pipeline_schedule.py → v1_delete_cloud_space_environment_template_response.py} +32 -32
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_lit_dataset_version_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_schedule_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_size_response.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_file_upload_urls_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_files_url_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_instance_overprovisioning_spec.py +79 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_environment_templates_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_dataset_versions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_lit_datasets_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_schedules_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_slurm_cluster_users_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_file.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_version_archive.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +69 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_placement_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_parameter_type.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_template_visibility_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule_resource_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_cluster_user.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +58 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +31 -291
- lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_dataset_visibility_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +157 -105
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +203 -0
- lightning_sdk/lightning_cloud/openapi/models/version_default_body.py +29 -29
- lightning_sdk/lightning_cloud/openapi/models/version_default_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/version_uploads_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/versions_version_body1.py +123 -0
- lightning_sdk/lightning_cloud/rest_client.py +2 -0
- lightning_sdk/pipeline/types.py +28 -2
- lightning_sdk/pipeline/utils.py +1 -1
- lightning_sdk/plugin.py +0 -6
- lightning_sdk/utils/resolve.py +1 -0
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/METADATA +1 -1
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/RECORD +103 -55
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/WHEEL +1 -1
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/entry_points.txt +0 -0
- {lightning_sdk-0.2.4.dist-info → lightning_sdk-0.2.5.dist-info}/top_level.txt +0 -0
lightning_sdk/pipeline/types.py
CHANGED
|
@@ -152,12 +152,20 @@ class Job:
|
|
|
152
152
|
self.wait_for = wait_for
|
|
153
153
|
|
|
154
154
|
def to_proto(self, teamspace: "Teamspace", cloud_account: str, shared_filesystem: bool) -> V1PipelineStep:
|
|
155
|
+
studio = _get_studio(self.studio)
|
|
156
|
+
if isinstance(studio, Studio):
|
|
157
|
+
if self.cloud_account is None:
|
|
158
|
+
self.cloud_account = studio.cloud_account
|
|
159
|
+
elif studio.cloud_account != self.cloud_account:
|
|
160
|
+
raise ValueError("The provided cloud account doesn't match the studio")
|
|
161
|
+
|
|
155
162
|
_validate_cloud_account(cloud_account, self.cloud_account, shared_filesystem)
|
|
163
|
+
|
|
156
164
|
body = JobApiV2._create_job_body(
|
|
157
165
|
name=self.name,
|
|
158
166
|
command=self.command,
|
|
159
167
|
cloud_account=self.cloud_account or cloud_account,
|
|
160
|
-
studio_id=None,
|
|
168
|
+
studio_id=studio._studio.id if isinstance(studio, Studio) else None,
|
|
161
169
|
image=self.image,
|
|
162
170
|
machine=self.machine,
|
|
163
171
|
interruptible=self.interruptible,
|
|
@@ -220,13 +228,21 @@ class MMT:
|
|
|
220
228
|
self.wait_for = wait_for
|
|
221
229
|
|
|
222
230
|
def to_proto(self, teamspace: "Teamspace", cloud_account: str, shared_filesystem: bool) -> V1PipelineStep:
|
|
231
|
+
studio = _get_studio(self.studio)
|
|
232
|
+
if isinstance(studio, Studio):
|
|
233
|
+
if self.cloud_account is None:
|
|
234
|
+
self.cloud_account = studio.cloud_account
|
|
235
|
+
elif studio.cloud_account != self.cloud_account:
|
|
236
|
+
raise ValueError("The provided cloud account doesn't match the studio")
|
|
237
|
+
|
|
223
238
|
_validate_cloud_account(cloud_account, self.cloud_account, shared_filesystem)
|
|
239
|
+
|
|
224
240
|
body = MMTApiV2._create_mmt_body(
|
|
225
241
|
name=self.name,
|
|
226
242
|
num_machines=self.num_machines,
|
|
227
243
|
command=self.command,
|
|
228
244
|
cloud_account=self.cloud_account or cloud_account,
|
|
229
|
-
studio_id=
|
|
245
|
+
studio_id=studio._studio.id if isinstance(studio, Studio) else None,
|
|
230
246
|
image=self.image,
|
|
231
247
|
machine=self.machine,
|
|
232
248
|
interruptible=self.interruptible,
|
|
@@ -266,3 +282,13 @@ def _validate_cloud_account(pipeline_cloud_account: str, step_cloud_account: str
|
|
|
266
282
|
"With shared filesystem enabled, all the pipeline steps wait_for to be on the same cluster."
|
|
267
283
|
f" Found {pipeline_cloud_account} and {step_cloud_account}"
|
|
268
284
|
)
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
def _get_studio(studio: Union["Studio", str, None]) -> Union[Studio, None]:
|
|
288
|
+
if studio is None:
|
|
289
|
+
return None
|
|
290
|
+
|
|
291
|
+
if isinstance(studio, Studio):
|
|
292
|
+
return studio
|
|
293
|
+
|
|
294
|
+
return Studio(studio)
|
lightning_sdk/pipeline/utils.py
CHANGED
|
@@ -43,7 +43,7 @@ def prepare_steps(steps: List["V1PipelineStep"]) -> List["V1PipelineStep"]:
|
|
|
43
43
|
else:
|
|
44
44
|
for name in current_step.wait_for:
|
|
45
45
|
if current_step.name == name:
|
|
46
|
-
raise ValueError("You can only reference prior steps")
|
|
46
|
+
raise ValueError(f"You can only reference prior steps. Found {current_step.name}")
|
|
47
47
|
|
|
48
48
|
if name not in name_to_step:
|
|
49
49
|
raise ValueError(f"The step {current_step_idx} doesn't have a valid wait_for. Found {name}")
|
lightning_sdk/plugin.py
CHANGED
|
@@ -303,7 +303,6 @@ class SlurmJobsPlugin(_Plugin):
|
|
|
303
303
|
name: Optional[str] = None,
|
|
304
304
|
cluster_id: Optional[str] = None,
|
|
305
305
|
work_dir: str = "/home/lightning_manager",
|
|
306
|
-
num_gpus: int = 1,
|
|
307
306
|
sync_env: bool = True,
|
|
308
307
|
cache_id: Optional[str] = None,
|
|
309
308
|
) -> "Externalv1LightningappInstance":
|
|
@@ -315,7 +314,6 @@ class SlurmJobsPlugin(_Plugin):
|
|
|
315
314
|
cluster_id: The name of the SLURM Cluster to submit the job on.
|
|
316
315
|
If the cluster_id isn't provided, the oldest running SLURM cluster will be selected.
|
|
317
316
|
work_dir: The position where the the files will be created on the SLURM cluster.
|
|
318
|
-
num_gpus: The number of GPUs requested.
|
|
319
317
|
sync_env: Whether to force an environement sync.
|
|
320
318
|
cache_id: A string to avoid re-downloading the Studio files to the SLURM cluster.
|
|
321
319
|
If you update your files and don't change the cache_id, they won't be used.
|
|
@@ -326,9 +324,6 @@ class SlurmJobsPlugin(_Plugin):
|
|
|
326
324
|
if work_dir == "":
|
|
327
325
|
raise ValueError("The argument `work_dir` needs to be a proper path on the SLURM Cluster.")
|
|
328
326
|
|
|
329
|
-
if num_gpus <= 0:
|
|
330
|
-
raise ValueError("The argument `num_gpus` needs to be strictly positive.")
|
|
331
|
-
|
|
332
327
|
if name is None:
|
|
333
328
|
name = _run_name("slurm")
|
|
334
329
|
|
|
@@ -392,7 +387,6 @@ class SlurmJobsPlugin(_Plugin):
|
|
|
392
387
|
sync_env=sync_env,
|
|
393
388
|
work_dir=work_dir,
|
|
394
389
|
service_id=service_id,
|
|
395
|
-
num_gpus=num_gpus,
|
|
396
390
|
cache_id=cache_id,
|
|
397
391
|
),
|
|
398
392
|
)
|
lightning_sdk/utils/resolve.py
CHANGED