lightning-sdk 0.1.49__py3-none-any.whl → 2025.11.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 +19 -9
- lightning_sdk/__version__.py +3 -0
- lightning_sdk/agents.py +2 -1
- lightning_sdk/ai_hub.py +43 -38
- lightning_sdk/api/__init__.py +2 -0
- lightning_sdk/api/ai_hub_api.py +49 -6
- lightning_sdk/api/base_studio_api.py +90 -0
- lightning_sdk/api/cloud_account_api.py +225 -0
- lightning_sdk/api/deployment_api.py +133 -27
- lightning_sdk/api/job_api.py +147 -34
- lightning_sdk/api/license_api.py +37 -0
- lightning_sdk/api/lit_container_api.py +231 -19
- lightning_sdk/api/llm_api.py +306 -0
- lightning_sdk/api/mmt_api.py +112 -28
- lightning_sdk/api/pipeline_api.py +120 -0
- lightning_sdk/api/studio_api.py +440 -89
- lightning_sdk/api/teamspace_api.py +269 -31
- lightning_sdk/api/user_api.py +56 -2
- lightning_sdk/api/utils.py +185 -52
- lightning_sdk/base_studio.py +123 -0
- lightning_sdk/cli/__init__.py +1 -0
- lightning_sdk/cli/base_studio/__init__.py +10 -0
- lightning_sdk/cli/base_studio/list.py +43 -0
- lightning_sdk/cli/config/__init__.py +14 -0
- lightning_sdk/cli/config/get.py +57 -0
- lightning_sdk/cli/config/set.py +92 -0
- lightning_sdk/cli/config/show.py +9 -0
- lightning_sdk/cli/entrypoint.py +98 -56
- lightning_sdk/cli/groups.py +56 -0
- lightning_sdk/cli/job/__init__.py +7 -0
- lightning_sdk/cli/legacy/__init__.py +0 -0
- lightning_sdk/cli/legacy/ai_hub.py +65 -0
- lightning_sdk/cli/legacy/clusters_menu.py +49 -0
- lightning_sdk/cli/legacy/configure.py +129 -0
- lightning_sdk/cli/legacy/connect.py +34 -0
- lightning_sdk/cli/legacy/create.py +115 -0
- lightning_sdk/cli/legacy/delete.py +131 -0
- lightning_sdk/cli/legacy/deploy/__init__.py +0 -0
- lightning_sdk/cli/legacy/deploy/_auth.py +196 -0
- lightning_sdk/cli/legacy/deploy/devbox.py +163 -0
- lightning_sdk/cli/legacy/deploy/serve.py +452 -0
- lightning_sdk/cli/legacy/docker_cli.py +22 -0
- lightning_sdk/cli/legacy/download.py +322 -0
- lightning_sdk/cli/legacy/entrypoint.py +110 -0
- lightning_sdk/cli/legacy/generate.py +52 -0
- lightning_sdk/cli/legacy/inspection.py +45 -0
- lightning_sdk/cli/{job_and_mmt_action.py → legacy/job_and_mmt_action.py} +6 -6
- lightning_sdk/cli/{jobs_menu.py → legacy/jobs_menu.py} +3 -2
- lightning_sdk/cli/legacy/list.py +326 -0
- lightning_sdk/cli/{mmts_menu.py → legacy/mmts_menu.py} +3 -2
- lightning_sdk/cli/legacy/open.py +81 -0
- lightning_sdk/cli/legacy/run.py +443 -0
- lightning_sdk/cli/legacy/start.py +107 -0
- lightning_sdk/cli/legacy/stop.py +107 -0
- lightning_sdk/cli/{studios_menu.py → legacy/studios_menu.py} +24 -1
- lightning_sdk/cli/legacy/switch.py +63 -0
- lightning_sdk/cli/{teamspace_menu.py → legacy/teamspace_menu.py} +12 -3
- lightning_sdk/cli/legacy/upload.py +382 -0
- lightning_sdk/cli/license/__init__.py +14 -0
- lightning_sdk/cli/license/get.py +15 -0
- lightning_sdk/cli/license/list.py +45 -0
- lightning_sdk/cli/license/set.py +13 -0
- lightning_sdk/cli/mmt/__init__.py +7 -0
- lightning_sdk/cli/studio/__init__.py +24 -0
- lightning_sdk/cli/studio/connect.py +139 -0
- lightning_sdk/cli/studio/create.py +96 -0
- lightning_sdk/cli/studio/delete.py +49 -0
- lightning_sdk/cli/studio/list.py +85 -0
- lightning_sdk/cli/studio/ssh.py +64 -0
- lightning_sdk/cli/studio/start.py +115 -0
- lightning_sdk/cli/studio/stop.py +45 -0
- lightning_sdk/cli/studio/switch.py +66 -0
- lightning_sdk/cli/utils/__init__.py +7 -0
- lightning_sdk/cli/utils/cloud_account_map.py +10 -0
- lightning_sdk/cli/utils/coloring.py +60 -0
- lightning_sdk/cli/utils/get_base_studio.py +24 -0
- lightning_sdk/cli/utils/handle_machine_and_gpus_args.py +69 -0
- lightning_sdk/cli/utils/logging.py +122 -0
- lightning_sdk/cli/utils/owner_selection.py +110 -0
- lightning_sdk/cli/utils/resolve.py +28 -0
- lightning_sdk/cli/utils/richt_print.py +35 -0
- lightning_sdk/cli/utils/save_to_config.py +27 -0
- lightning_sdk/cli/utils/ssh_connection.py +59 -0
- lightning_sdk/cli/utils/studio_selection.py +113 -0
- lightning_sdk/cli/utils/teamspace_selection.py +125 -0
- lightning_sdk/cli/vm/__init__.py +20 -0
- lightning_sdk/cli/vm/create.py +33 -0
- lightning_sdk/cli/vm/delete.py +25 -0
- lightning_sdk/cli/vm/list.py +30 -0
- lightning_sdk/cli/vm/ssh.py +31 -0
- lightning_sdk/cli/vm/start.py +60 -0
- lightning_sdk/cli/vm/stop.py +25 -0
- lightning_sdk/cli/vm/switch.py +38 -0
- lightning_sdk/constants.py +1 -0
- lightning_sdk/deployment/__init__.py +4 -0
- lightning_sdk/deployment/deployment.py +208 -28
- lightning_sdk/helpers.py +73 -34
- lightning_sdk/job/base.py +112 -12
- lightning_sdk/job/job.py +73 -44
- lightning_sdk/job/v1.py +28 -35
- lightning_sdk/job/v2.py +54 -17
- lightning_sdk/job/work.py +7 -3
- lightning_sdk/lightning_cloud/login.py +325 -18
- lightning_sdk/lightning_cloud/openapi/__init__.py +346 -26
- lightning_sdk/lightning_cloud/openapi/api/__init__.py +14 -0
- lightning_sdk/lightning_cloud/openapi/api/assistants_service_api.py +1801 -384
- lightning_sdk/lightning_cloud/openapi/api/auth_service_api.py +376 -0
- lightning_sdk/lightning_cloud/openapi/api/billing_service_api.py +414 -2
- lightning_sdk/lightning_cloud/openapi/api/blog_posts_service_api.py +533 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_environment_template_service_api.py +638 -0
- lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +2563 -866
- lightning_sdk/lightning_cloud/openapi/api/cloudy_service_api.py +327 -0
- lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +1720 -347
- lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +210 -4
- lightning_sdk/lightning_cloud/openapi/api/endpoint_service_api.py +126 -2119
- lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +283 -0
- lightning_sdk/lightning_cloud/openapi/api/git_credentials_service_api.py +497 -0
- lightning_sdk/lightning_cloud/openapi/api/incidents_service_api.py +1058 -0
- lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +2326 -492
- lightning_sdk/lightning_cloud/openapi/api/k8_s_cluster_service_api.py +2273 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_dataset_service_api.py +1973 -0
- lightning_sdk/lightning_cloud/openapi/api/lit_logger_service_api.py +17 -5
- lightning_sdk/lightning_cloud/openapi/api/lit_registry_service_api.py +473 -5
- lightning_sdk/lightning_cloud/openapi/api/markets_service_api.py +145 -0
- lightning_sdk/lightning_cloud/openapi/api/models_store_api.py +24 -24
- lightning_sdk/lightning_cloud/openapi/api/organizations_service_api.py +105 -0
- lightning_sdk/lightning_cloud/openapi/api/pipeline_templates_service_api.py +339 -0
- lightning_sdk/lightning_cloud/openapi/api/pipelines_service_api.py +795 -0
- lightning_sdk/lightning_cloud/openapi/api/product_license_service_api.py +525 -0
- lightning_sdk/lightning_cloud/openapi/api/projects_service_api.py +106 -5
- lightning_sdk/lightning_cloud/openapi/api/schedules_service_api.py +924 -0
- lightning_sdk/lightning_cloud/openapi/api/sdk_command_history_service_api.py +141 -0
- lightning_sdk/lightning_cloud/openapi/api/slurm_jobs_user_service_api.py +202 -0
- lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +1508 -251
- lightning_sdk/lightning_cloud/openapi/api/user_service_api.py +121 -97
- lightning_sdk/lightning_cloud/openapi/api/volume_service_api.py +258 -0
- lightning_sdk/lightning_cloud/openapi/configuration.py +4 -20
- lightning_sdk/lightning_cloud/openapi/models/__init__.py +332 -26
- lightning_sdk/lightning_cloud/openapi/models/agentmanagedendpoints_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/agents_id_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/alertingevents_id_body.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/alerts_config_billing.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/alerts_config_studios.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/assistant_id_conversations_body.py +303 -17
- lightning_sdk/lightning_cloud/openapi/models/blogposts_id_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_systemmetrics_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspace_id_visibility_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/cloudspaces_id_body.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityblock_body.py +15 -15
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_capacityreservations_body.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_kubernetestemplates_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_metrics_body.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_slurmusers_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/cluster_id_usagerestrictions_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/conversations_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/create.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/create_deployment_request_defines_a_spec_for_the_job_that_allows_for_autoscaling_jobs.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/create_machine_request_represents_the_request_to_create_a_machine.py +461 -0
- lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/credits_autoreplenish_body1.py +175 -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/deployment_id_alertingpolicies_body.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/deployment_id_alertingpolicies_body1.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +315 -3
- lightning_sdk/lightning_cloud/openapi/models/endpoints_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cloud_space_instance_status.py +199 -69
- lightning_sdk/lightning_cloud/openapi/models/externalv1_cluster.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/externalv1_user_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +1 -53
- lightning_sdk/lightning_cloud/openapi/models/id_contactowner_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/id_fork_body1.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/id_render_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_reportrestarttimings_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_sleepconfig_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_transfer_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/id_visibility_body2.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/incident_id_messages_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/incidents_id_body.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_service_executions_response.py → job_id_reportroutingtelemetry_body.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/kubernetestemplates_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/license_key_validate_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/litdatasets_dataset_id_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/litregistry_lit_repo_name_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/message_id_actions_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/messages_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/messages_message_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_create_body.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/metricsstream_id_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/model_id_versions_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/model_id_visibility_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/models_id_body.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body.py +109 -31
- lightning_sdk/lightning_cloud/openapi/models/models_model_id_body1.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/org_id_memberships_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +627 -3
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/pipelines_id_body1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/pipelinetemplates_id_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_agents_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_cloudspaces_body.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_litdatasets_body.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_litregistry_body.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_pipelines_body.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_schedules_body.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/project_id_storage_body.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/project_id_storagetransfers_body.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/project_tab_management_messages.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +523 -3
- lightning_sdk/lightning_cloud/openapi/models/{service_artifact_artifact_kind.py → protobuf_null_value.py} +7 -9
- lightning_sdk/lightning_cloud/openapi/models/schedules_id_body.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/server_id_alerts_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/setup.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/slurm_jobs_body.py +93 -15
- lightning_sdk/lightning_cloud/openapi/models/storage_complete_body.py +41 -15
- lightning_sdk/lightning_cloud/openapi/models/storagetransfers_validate_body.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/update.py +233 -129
- lightning_sdk/lightning_cloud/openapi/models/update1.py +383 -0
- 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/uploads_upload_id_body.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/uploads_upload_id_body1.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/usagerestrictions_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/user_id_affiliatelinks_body.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/user_id_upgradetrigger_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/user_user_id_body.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_abort_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_agent_job.py +188 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_aggregated_pod_metrics.py +799 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ai_pod_v1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_alert_method.py +102 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_alerts_config.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_artifact.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_model_status.py +6 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_assistant_session_daily_aggregated.py +383 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_author.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_aws_direct_v1.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_billing_subscription.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_billing_tier.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_blog_post.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cancel_running_cloud_space_instance_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_capacity_block_offering.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_check_cluster_name_availability_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_provider.py +117 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +313 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_artifact_event_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics.py +669 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_cold_start_metrics_stats.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_config.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_session.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_source_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_state.py +1 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_transfer_metadata.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudflare_v1.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_expert.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cloudy_settings.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_accelerator.py +445 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_capacity_reservation.py +211 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_deletion_options.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_metrics.py +1527 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_security_options.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_spec.py +521 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_status.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_tagging_options.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_response.py → v1_cluster_upload.py} +34 -34
- lightning_sdk/lightning_cloud/openapi/models/v1_cluster_usage_restriction.py +227 -0
- 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_complete_running_cloud_space_instance_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{id_complete_body.py → v1_complete_upload_temporary_artifact_request.py} +29 -29
- lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_reason.py +102 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_contact_assistant_owner_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_container_metrics.py +461 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_conversation_response_chunk.py +107 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_create_billing_upgrade_trigger_record_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_blog_post_request.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_checkout_session_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_cluster_capacity_reservation_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_request.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_deployment_template_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_git_credentials_request.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_incident_request.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_job_request.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_license_request.py +175 -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_machine_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_managed_endpoint_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_model_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_multi_machine_job_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_organization_request.py +105 -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 +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_sdk_command_history_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_server_alert_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_create_subscription_checkout_session_request.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_daily_model_metrics.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_daily_usage.py +81 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +261 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_data_connection_tier.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_blog_post_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cloud_space_environment_template_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_cluster_usage_restriction_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_deployment_alerting_policy_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_git_credentials_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_message_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_incident_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_template_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_license_response.py +97 -0
- 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_lit_registry_repository_image_artifact_version_by_digest_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_machine_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_file_endpoint_response.py → v1_delete_pipeline_response.py} +25 -25
- lightning_sdk/lightning_cloud/openapi/models/v1_delete_schedule_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +315 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_event.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy.py +409 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_frequency.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_operation.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_severity.py +106 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_type.py +112 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_recipients.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_api.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_details.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_state.py +4 -2
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_status.py +47 -21
- lightning_sdk/lightning_cloud/openapi/models/v1_deployment_template.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_endpoint.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_external_cluster_spec.py +931 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_external_search_user.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filestore_data_connection.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_job.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metric.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_metrics.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_filesystem_mmt.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_find_capacity_block_offering_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/{id_uploads_body1.py → v1_firewall_rule.py} +53 -53
- lightning_sdk/lightning_cloud/openapi/models/v1_function_call.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_function_tool.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_file_endpoints_response.py → v1_gcp_data_connection_setup.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_gcp_direct_vpc.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_ge_list_deployment_routing_telemetry_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_get_assistant_session_daily_aggregated_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_cold_start_metrics_stats_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_open_ports_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_instance_system_metrics_aggregate_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_required_balance_status_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_size_response.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cloud_space_transfer_estimate_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_accelerator_demand_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_cluster_health_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_deployment_routing_telemetry_content_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_job_stats_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_latest_model_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_upload_service_execution_artifact_parts_response.py → v1_get_lit_dataset_file_upload_urls_response.py} +16 -16
- lightning_sdk/lightning_cloud/openapi/models/v1_get_lit_dataset_files_url_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_machine_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_market_pricing_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_model_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_organization_storage_metadata_response.py +487 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_balance_response.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +263 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_get_temp_bucket_credentials_response.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +235 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_get_volume_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_git_credentials.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +185 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_group_node_metrics.py +1215 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_group_pod_metrics.py +1241 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_request.py +177 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_guest_login_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_service_artifact.py → v1_guest_user.py} +60 -60
- lightning_sdk/lightning_cloud/openapi/models/v1_incident.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_detail.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_event.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_message.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_severity.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_incident_type.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_instance_overprovisioning_spec.py +95 -41
- lightning_sdk/lightning_cloud/openapi/models/v1_job.py +237 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_job_artifacts_type.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_resource.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_job_spec.py +209 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_job_timing.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_job_type.py +109 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_k8s_incident_indexes.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kai_scheduler_queue_metrics.py +627 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_aws_config.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_settings_v1.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1_status.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_template_property.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lambda_labs_direct_v1.py +67 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_license.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_elastic_cluster_v1.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lightning_run.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lightningapp_instance_artifact.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_like_status.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_aggregated_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_download_service_execution_artifact_response.py → v1_list_blog_posts_response.py} +41 -41
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_cold_start_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloud_space_environment_templates_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cloudy_experts_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metric_timestamps_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_namespace_user_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_cluster_usage_restrictions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_clusters_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_container_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_conversation_message_actions_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_deployment_alerting_policies_response.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_filesystem_mm_ts_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_git_credentials_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_group_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_events_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incident_messages_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_incidents_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_job_resources_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_kai_scheduler_queues_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_templates_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_license_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_lit_registry_repository_image_artifact_versions_response.py +257 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_machines_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_node_file_system_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_node_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_notification_dialogs_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_pipelines_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_platform_notifications_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_pod_metrics_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_project_clusters_response.py +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_list_published_managed_endpoints_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_list_schedule_runs_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_list_storage_transfers_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset.py +539 -0
- lightning_sdk/lightning_cloud/openapi/models/{id_storage_body.py → v1_lit_dataset_file.py} +49 -49
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_dataset_version_archive.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_artifact.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_registry_project.py +35 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lit_repository.py +81 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_lite_published_cloud_space_response.py +513 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_lustre_data_connection.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +617 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_machine_direct_v1.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_magic_link_login_response.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_endpoint.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_managed_model.py +341 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_market_price.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +121 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_message.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_message_action.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_metadata.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_metrics_stream.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_model.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_model_metrics.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_delete_service_execution_response.py → v1_modify_filesystem_volume_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_multi_machine_job_state.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_namespace_metrics.py +591 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_namespace_user_metrics.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_nebius_direct_v1.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +695 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_notification_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +837 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_path_mapping.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pause_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline.py +591 -0
- 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_state.py +111 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_status.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pipeline_step_type.py +104 -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_platform_notification.py +279 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_pod_metrics.py +747 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_post_cloud_space_artifact_events_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_project.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_cluster_binding.py +53 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +121 -17
- lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +525 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +235 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_project_tab.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_purchase_annual_upsell_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_quote_annual_upsell_response.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_quote_subscription_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_r2_data_connection.py +305 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_render_kubernetes_template_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_stop_at_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_cloud_space_instance_system_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_deployment_routing_telemetry_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_k8s_cluster_metrics_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_report_restart_timings_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_request_cloud_space_access_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_required_balance_reason.py +107 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reservation_details.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_request.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_reset_api_key_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resource_visibility.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_resources.py +55 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_response_choice.py +29 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_restart_timing.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_resume_storage_transfer_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_routing_telemetry.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +5 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule.py +565 -0
- lightning_sdk/lightning_cloud/openapi/models/{command_argument_command_argument_type.py → v1_schedule_action_type.py} +9 -8
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule_resource_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_schedule_run.py +357 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_severity.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sdk_command_history_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_secret_type.py +2 -0
- lightning_sdk/lightning_cloud/openapi/models/{v1_get_service_execution_status_response.py → v1_server_alert.py} +74 -48
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_phase.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_severity.py +103 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_server_alert_type.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_service_health.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_setup_data_connection_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_shared_filesystem.py +331 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slack_notifier_type.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_sleep_server_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_cluster_user.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_job.py +84 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_node.py +31 -291
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_slurm_v1_status.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +159 -3
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +4 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer.py +435 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_storage_transfer_status.py +108 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_subnet_spec.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_system_metrics_aggregated.py +227 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_login_request.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_login_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_owner_type.py +104 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_token_usage.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_tool.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_tool_call.py +175 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_transfer_cloud_space_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_trigger_filesystem_upgrade_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_instance_config_request.py +253 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_cloud_space_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_like_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_conversation_message_like_response.py +149 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_deployment_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_job_visibility_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_dataset_visibility_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_lit_repository_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_metrics_stream_visibility_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_model_visibility_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_complete_upload_service_execution_artifact_response.py → v1_update_organization_credits_auto_replenish_response.py} +6 -6
- lightning_sdk/lightning_cloud/openapi/models/v1_update_project_tab_order_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_credits_auto_replenish_response.py +97 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_update_user_request.py +131 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_update_volume_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_upload_project_artifact_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/{v1_list_new_features_for_user_response.py → v1_upload_temporary_artifact_request.py} +23 -23
- lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +105 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_usage_report.py +79 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +894 -842
- lightning_sdk/lightning_cloud/openapi/models/v1_user_requested_compute_config.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_data_connection_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_deployment_image_request.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_license_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_managed_endpoint_response.py +27 -1
- lightning_sdk/lightning_cloud/openapi/models/v1_validate_storage_transfer_response.py +123 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_voltage_park_direct_v1.py +229 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +513 -45
- lightning_sdk/lightning_cloud/openapi/models/v1_volume_state.py +105 -0
- lightning_sdk/lightning_cloud/openapi/models/v1_vultr_direct_v1.py +1 -27
- lightning_sdk/lightning_cloud/openapi/models/v1_weka_data_connection.py +201 -0
- lightning_sdk/lightning_cloud/openapi/models/validate.py +53 -1
- 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/openapi/models/volumes_id_body.py +123 -0
- lightning_sdk/lightning_cloud/rest_client.py +61 -48
- lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +8 -3
- lightning_sdk/lightning_cloud/utils/data_connection.py +234 -7
- lightning_sdk/lit_container.py +68 -9
- lightning_sdk/llm/__init__.py +3 -0
- lightning_sdk/llm/llm.py +497 -0
- lightning_sdk/llm/public_assistants.py +54 -0
- lightning_sdk/machine.py +221 -30
- lightning_sdk/mmt/base.py +67 -32
- lightning_sdk/mmt/mmt.py +68 -50
- lightning_sdk/mmt/v1.py +16 -32
- lightning_sdk/mmt/v2.py +47 -18
- lightning_sdk/models.py +74 -24
- lightning_sdk/organization.py +4 -0
- lightning_sdk/owner.py +2 -1
- lightning_sdk/pipeline/__init__.py +14 -0
- lightning_sdk/pipeline/pipeline.py +163 -0
- lightning_sdk/pipeline/printer.py +124 -0
- lightning_sdk/pipeline/schedule.py +859 -0
- lightning_sdk/pipeline/steps.py +365 -0
- lightning_sdk/pipeline/utils.py +116 -0
- lightning_sdk/plugin.py +39 -20
- lightning_sdk/sandbox.py +160 -0
- lightning_sdk/serve.py +309 -0
- lightning_sdk/services/__init__.py +1 -1
- lightning_sdk/services/file_endpoint.py +3 -4
- lightning_sdk/services/utilities.py +16 -2
- lightning_sdk/studio.py +515 -41
- lightning_sdk/teamspace.py +335 -30
- lightning_sdk/user.py +19 -1
- lightning_sdk/utils/config.py +179 -0
- lightning_sdk/utils/license.py +13 -0
- lightning_sdk/utils/logging.py +79 -0
- lightning_sdk/utils/names.py +1179 -0
- lightning_sdk/utils/progress.py +283 -0
- lightning_sdk/utils/resolve.py +149 -13
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/METADATA +14 -11
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/RECORD +649 -250
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/WHEEL +1 -1
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/entry_points.txt +1 -0
- lightning_sdk/cli/ai_hub.py +0 -49
- lightning_sdk/cli/delete.py +0 -58
- lightning_sdk/cli/download.py +0 -132
- lightning_sdk/cli/inspect.py +0 -31
- lightning_sdk/cli/legacy.py +0 -135
- lightning_sdk/cli/list.py +0 -112
- lightning_sdk/cli/run.py +0 -225
- lightning_sdk/cli/serve.py +0 -218
- lightning_sdk/cli/stop.py +0 -37
- lightning_sdk/cli/upload.py +0 -255
- lightning_sdk/lightning_cloud/openapi/models/fileendpoints_id_body.py +0 -409
- lightning_sdk/lightning_cloud/openapi/models/project_id_fileendpoints_body.py +0 -357
- lightning_sdk/lightning_cloud/openapi/models/project_id_serviceexecution_body.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/serviceexecution_id_body.py +0 -331
- lightning_sdk/lightning_cloud/openapi/models/v1_command_argument.py +0 -305
- lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +0 -279
- lightning_sdk/lightning_cloud/openapi/models/v1_file_endpoint.py +0 -461
- lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_response.py +0 -201
- lightning_sdk/lightning_cloud/openapi/models/v1_list_service_execution_lightningapp_instances_response.py +0 -175
- lightning_sdk/lightning_cloud/openapi/models/v1_service_execution.py +0 -383
- /lightning_sdk/cli/{exceptions.py → legacy/exceptions.py} +0 -0
- /lightning_sdk/services/{finetune/__init__.py → finetune_llm.py} +0 -0
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/LICENSE +0 -0
- {lightning_sdk-0.1.49.dist-info → lightning_sdk-2025.11.5.dist-info}/top_level.txt +0 -0
lightning_sdk/mmt/mmt.py
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
from functools import lru_cache
|
|
2
1
|
from typing import TYPE_CHECKING, Any, Dict, Optional, Tuple, Union
|
|
3
2
|
|
|
4
|
-
from lightning_sdk.api.
|
|
5
|
-
from lightning_sdk.job.job import _has_jobs_v2
|
|
3
|
+
from lightning_sdk.api.cloud_account_api import CloudAccountApi
|
|
6
4
|
from lightning_sdk.mmt.base import MMTMachine, _BaseMMT
|
|
7
5
|
from lightning_sdk.mmt.v1 import _MMTV1
|
|
8
6
|
from lightning_sdk.mmt.v2 import _MMTV2
|
|
9
7
|
from lightning_sdk.utils.resolve import _setup_logger
|
|
10
8
|
|
|
11
9
|
if TYPE_CHECKING:
|
|
12
|
-
from lightning_sdk.machine import Machine
|
|
10
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
13
11
|
from lightning_sdk.organization import Organization
|
|
14
12
|
from lightning_sdk.status import Status
|
|
15
13
|
from lightning_sdk.studio import Studio
|
|
@@ -19,25 +17,12 @@ if TYPE_CHECKING:
|
|
|
19
17
|
_logger = _setup_logger(__name__)
|
|
20
18
|
|
|
21
19
|
|
|
22
|
-
@lru_cache(maxsize=None)
|
|
23
|
-
def _has_mmt_v2() -> bool:
|
|
24
|
-
# users need both mmtv2 and jobsv2 flags in order for mmtv2 to work correctly
|
|
25
|
-
if not _has_jobs_v2():
|
|
26
|
-
return False
|
|
27
|
-
|
|
28
|
-
api = UserApi()
|
|
29
|
-
try:
|
|
30
|
-
return api._get_feature_flags().mmt_v2
|
|
31
|
-
except Exception:
|
|
32
|
-
return False
|
|
33
|
-
|
|
34
|
-
|
|
35
20
|
class MMT(_BaseMMT):
|
|
36
21
|
"""Class to submit and manage multi-machine jobs on the Lightning AI Platform."""
|
|
37
22
|
|
|
38
|
-
_force_v1: (
|
|
39
|
-
|
|
40
|
-
)
|
|
23
|
+
_force_v1: bool = (
|
|
24
|
+
False # required for studio plugin still working correctly as v2 currently does not support the studio env
|
|
25
|
+
)
|
|
41
26
|
|
|
42
27
|
def __init__(
|
|
43
28
|
self,
|
|
@@ -59,7 +44,7 @@ class MMT(_BaseMMT):
|
|
|
59
44
|
"""
|
|
60
45
|
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
61
46
|
|
|
62
|
-
if
|
|
47
|
+
if not self._force_v1:
|
|
63
48
|
# try with v2 and fall back to v1
|
|
64
49
|
try:
|
|
65
50
|
mmt = _MMTV2(
|
|
@@ -91,13 +76,14 @@ class MMT(_BaseMMT):
|
|
|
91
76
|
)
|
|
92
77
|
|
|
93
78
|
self._internal_mmt = mmt
|
|
79
|
+
self._cloud_account_api = CloudAccountApi()
|
|
94
80
|
|
|
95
81
|
@classmethod
|
|
96
82
|
def run(
|
|
97
83
|
cls,
|
|
98
84
|
name: str,
|
|
99
85
|
num_machines: int,
|
|
100
|
-
machine: "Machine",
|
|
86
|
+
machine: Union["Machine", str],
|
|
101
87
|
command: Optional[str] = None,
|
|
102
88
|
studio: Union["Studio", str, None] = None,
|
|
103
89
|
image: Union[str, None] = None,
|
|
@@ -105,21 +91,25 @@ class MMT(_BaseMMT):
|
|
|
105
91
|
org: Union[str, "Organization", None] = None,
|
|
106
92
|
user: Union[str, "User", None] = None,
|
|
107
93
|
cloud_account: Optional[str] = None,
|
|
94
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
108
95
|
env: Optional[Dict[str, str]] = None,
|
|
109
96
|
interruptible: bool = False,
|
|
110
97
|
image_credentials: Optional[str] = None,
|
|
111
98
|
cloud_account_auth: bool = False,
|
|
99
|
+
entrypoint: str = "sh -c",
|
|
100
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
101
|
+
max_runtime: Optional[int] = None,
|
|
112
102
|
artifacts_local: Optional[str] = None,
|
|
113
103
|
artifacts_remote: Optional[str] = None,
|
|
114
|
-
entrypoint: str = "sh -c",
|
|
115
104
|
cluster: Optional[str] = None, # deprecated in favor of cloud_account
|
|
105
|
+
reuse_snapshot: bool = True,
|
|
116
106
|
) -> "MMT":
|
|
117
107
|
"""Run async workloads using a docker image across multiple machines.
|
|
118
108
|
|
|
119
109
|
Args:
|
|
120
110
|
name: The name of the job. Needs to be unique within the teamspace.
|
|
121
111
|
machine: The machine type to run the job on. One of {", ".join(_MACHINE_VALUES)}.
|
|
122
|
-
|
|
112
|
+
num_machines: The number of machines to run on.
|
|
123
113
|
command: The command to run inside your job. Required if using a studio. Optional if using an image.
|
|
124
114
|
If not provided for images, will run the container entrypoint and default command.
|
|
125
115
|
studio: The studio env to run the job with. Mutually exclusive with image.
|
|
@@ -129,26 +119,31 @@ class MMT(_BaseMMT):
|
|
|
129
119
|
user: The user owning the teamspace (if any). Defaults to the current user.
|
|
130
120
|
cloud_account: The cloud account to run the job on.
|
|
131
121
|
Defaults to the studio cloud account if running with studio compute env.
|
|
132
|
-
If not provided
|
|
122
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
123
|
+
will fall back to the teamspaces default cloud account.
|
|
124
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
125
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
126
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
133
127
|
env: Environment variables to set inside the job.
|
|
134
128
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
135
129
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
136
130
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
137
131
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
138
132
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
139
|
-
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
140
|
-
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
141
|
-
Only supported for jobs with a docker image compute environment.
|
|
142
|
-
artifacts_remote: The remote storage to persist your artifacts to.
|
|
143
|
-
Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
|
|
144
|
-
PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
|
|
145
|
-
E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
|
|
146
|
-
within it.
|
|
147
|
-
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
148
|
-
Only supported for jobs with a docker image compute environment.
|
|
149
133
|
entrypoint: The entrypoint of your docker container. Defaults to sh -c.
|
|
150
134
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
151
135
|
Only applicable when submitting docker jobs.
|
|
136
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
137
|
+
represents the data-connection name and the path inside that connection.
|
|
138
|
+
Should be of form
|
|
139
|
+
{
|
|
140
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
141
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
142
|
+
}
|
|
143
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
144
|
+
Only applicable when submitting docker jobs.
|
|
145
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
146
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
152
147
|
"""
|
|
153
148
|
ret_val = super().run(
|
|
154
149
|
name=name,
|
|
@@ -161,13 +156,18 @@ class MMT(_BaseMMT):
|
|
|
161
156
|
org=org,
|
|
162
157
|
user=user,
|
|
163
158
|
cloud_account=cloud_account,
|
|
159
|
+
cloud_provider=cloud_provider,
|
|
164
160
|
env=env,
|
|
165
161
|
interruptible=interruptible,
|
|
166
162
|
image_credentials=image_credentials,
|
|
167
163
|
cloud_account_auth=cloud_account_auth,
|
|
164
|
+
entrypoint=entrypoint,
|
|
165
|
+
path_mappings=path_mappings,
|
|
168
166
|
artifacts_local=artifacts_local,
|
|
169
167
|
artifacts_remote=artifacts_remote,
|
|
170
168
|
cluster=cluster, # deprecated in favor of cloud_account
|
|
169
|
+
max_runtime=max_runtime,
|
|
170
|
+
reuse_snapshot=reuse_snapshot,
|
|
171
171
|
)
|
|
172
172
|
# required for typing with "MMT"
|
|
173
173
|
assert isinstance(ret_val, cls)
|
|
@@ -180,18 +180,22 @@ class MMT(_BaseMMT):
|
|
|
180
180
|
def _submit(
|
|
181
181
|
self,
|
|
182
182
|
num_machines: int,
|
|
183
|
-
machine: "Machine",
|
|
183
|
+
machine: Union["Machine", str],
|
|
184
184
|
command: Optional[str] = None,
|
|
185
185
|
studio: Optional["Studio"] = None,
|
|
186
186
|
image: Optional[str] = None,
|
|
187
187
|
env: Optional[Dict[str, str]] = None,
|
|
188
188
|
interruptible: bool = False,
|
|
189
189
|
cloud_account: Optional[str] = None,
|
|
190
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
190
191
|
image_credentials: Optional[str] = None,
|
|
191
192
|
cloud_account_auth: bool = False,
|
|
192
|
-
artifacts_local: Optional[str] = None,
|
|
193
|
-
artifacts_remote: Optional[str] = None,
|
|
194
193
|
entrypoint: str = "sh -c",
|
|
194
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
195
|
+
max_runtime: Optional[int] = None,
|
|
196
|
+
artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
|
|
197
|
+
artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
|
|
198
|
+
reuse_snapshot: bool = True,
|
|
195
199
|
) -> "MMT":
|
|
196
200
|
"""Submit a new multi-machine job to the Lightning AI platform.
|
|
197
201
|
|
|
@@ -206,30 +210,40 @@ class MMT(_BaseMMT):
|
|
|
206
210
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
207
211
|
cloud_account: The cloud account to run the job on.
|
|
208
212
|
Defaults to the studio cloud account if running with studio compute env.
|
|
209
|
-
If not provided
|
|
213
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
214
|
+
will fall back to the teamspaces default cloud account.
|
|
215
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
216
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
217
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
210
218
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
211
219
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
212
220
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
213
221
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
214
|
-
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
215
|
-
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
216
|
-
Only supported for jobs with a docker image compute environment.
|
|
217
|
-
artifacts_remote: The remote storage to persist your artifacts to.
|
|
218
|
-
Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
|
|
219
|
-
PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
|
|
220
|
-
E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
|
|
221
|
-
within it.
|
|
222
|
-
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
223
|
-
Only supported for jobs with a docker image compute environment.
|
|
224
222
|
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
225
223
|
just runs the provided command in a standard shell.
|
|
226
224
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
227
225
|
Only applicable when submitting docker jobs.
|
|
226
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
227
|
+
represents the data-connection name and the path inside that connection.
|
|
228
|
+
Should be of form
|
|
229
|
+
{
|
|
230
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
231
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
232
|
+
}
|
|
233
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
234
|
+
Only applicable when submitting docker jobs.
|
|
235
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
236
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
237
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
238
|
+
Defaults to 3h
|
|
239
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
240
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
228
241
|
"""
|
|
229
242
|
self._job = self._internal_mmt._submit(
|
|
230
243
|
num_machines=num_machines,
|
|
231
244
|
machine=machine,
|
|
232
245
|
cloud_account=cloud_account,
|
|
246
|
+
cloud_provider=cloud_provider,
|
|
233
247
|
command=command,
|
|
234
248
|
studio=studio,
|
|
235
249
|
image=image,
|
|
@@ -237,8 +251,12 @@ class MMT(_BaseMMT):
|
|
|
237
251
|
interruptible=interruptible,
|
|
238
252
|
image_credentials=image_credentials,
|
|
239
253
|
cloud_account_auth=cloud_account_auth,
|
|
254
|
+
entrypoint=entrypoint,
|
|
255
|
+
path_mappings=path_mappings,
|
|
240
256
|
artifacts_local=artifacts_local,
|
|
241
257
|
artifacts_remote=artifacts_remote,
|
|
258
|
+
max_runtime=max_runtime,
|
|
259
|
+
reuse_snapshot=reuse_snapshot,
|
|
242
260
|
)
|
|
243
261
|
return self
|
|
244
262
|
|
|
@@ -264,7 +282,7 @@ class MMT(_BaseMMT):
|
|
|
264
282
|
return self._internal_mmt.machines
|
|
265
283
|
|
|
266
284
|
@property
|
|
267
|
-
def machine(self) -> "Machine":
|
|
285
|
+
def machine(self) -> Union["Machine", str]:
|
|
268
286
|
"""Returns the machine type this job is running on."""
|
|
269
287
|
return self._internal_mmt.machine
|
|
270
288
|
|
lightning_sdk/mmt/v1.py
CHANGED
|
@@ -7,7 +7,7 @@ from lightning_sdk.job.work import Work
|
|
|
7
7
|
from lightning_sdk.status import Status
|
|
8
8
|
|
|
9
9
|
if TYPE_CHECKING:
|
|
10
|
-
from lightning_sdk.machine import Machine
|
|
10
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
11
11
|
from lightning_sdk.organization import Organization
|
|
12
12
|
from lightning_sdk.studio import Studio
|
|
13
13
|
from lightning_sdk.teamspace import Teamspace
|
|
@@ -43,18 +43,22 @@ class _MMTV1(_BaseMMT):
|
|
|
43
43
|
def _submit(
|
|
44
44
|
self,
|
|
45
45
|
num_machines: int,
|
|
46
|
-
machine: "Machine",
|
|
46
|
+
machine: Union["Machine", str],
|
|
47
47
|
command: Optional[str] = None,
|
|
48
48
|
studio: Optional["Studio"] = None,
|
|
49
49
|
image: Optional[str] = None,
|
|
50
50
|
env: Optional[Dict[str, str]] = None,
|
|
51
51
|
interruptible: bool = False,
|
|
52
52
|
cloud_account: Optional[str] = None,
|
|
53
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
53
54
|
image_credentials: Optional[str] = None,
|
|
54
55
|
cloud_account_auth: bool = False,
|
|
56
|
+
entrypoint: str = "sh -c",
|
|
57
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
58
|
+
max_runtime: Optional[int] = None,
|
|
55
59
|
artifacts_local: Optional[str] = None,
|
|
56
60
|
artifacts_remote: Optional[str] = None,
|
|
57
|
-
|
|
61
|
+
reuse_snapshot: bool = True,
|
|
58
62
|
) -> "_MMTV1":
|
|
59
63
|
"""Submit a new multi-machine job to the Lightning AI platform.
|
|
60
64
|
|
|
@@ -88,35 +92,15 @@ class _MMTV1(_BaseMMT):
|
|
|
88
92
|
just runs the provided command in a standard shell.
|
|
89
93
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
90
94
|
Only applicable when submitting docker jobs.
|
|
95
|
+
path_mappings: The mappings from data connection inside your container (not supported)
|
|
96
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
97
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
98
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
99
|
+
Defaults to 3h
|
|
100
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
101
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
91
102
|
"""
|
|
92
|
-
|
|
93
|
-
raise ValueError("Studio is required for submitting jobs")
|
|
94
|
-
if image is not None or image_credentials is not None or cloud_account_auth or entrypoint != "sh -c":
|
|
95
|
-
raise ValueError("Image is not supported for submitting jobs")
|
|
96
|
-
|
|
97
|
-
if artifacts_local is not None or artifacts_remote is not None:
|
|
98
|
-
raise ValueError("Specifying how to persist artifacts is not yet supported with jobs")
|
|
99
|
-
|
|
100
|
-
if env is not None:
|
|
101
|
-
raise ValueError("Environment variables are not supported for submitting jobs")
|
|
102
|
-
if command is None:
|
|
103
|
-
raise ValueError("Command is required for submitting multi-machine jobs")
|
|
104
|
-
|
|
105
|
-
_submitted = self._job_api.submit_job(
|
|
106
|
-
name=self._name,
|
|
107
|
-
num_machines=num_machines,
|
|
108
|
-
command=command,
|
|
109
|
-
studio_id=studio._studio.id,
|
|
110
|
-
teamspace_id=self._teamspace.id,
|
|
111
|
-
cloud_account=cloud_account or "",
|
|
112
|
-
machine=machine,
|
|
113
|
-
interruptible=interruptible,
|
|
114
|
-
strategy="parallel",
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
self._name = _submitted.name
|
|
118
|
-
self._job = _submitted
|
|
119
|
-
return self
|
|
103
|
+
raise NotImplementedError("Cannot submit new mmts with MMTV1!")
|
|
120
104
|
|
|
121
105
|
def _update_internal_job(self) -> None:
|
|
122
106
|
try:
|
|
@@ -166,7 +150,7 @@ class _MMTV1(_BaseMMT):
|
|
|
166
150
|
return f"/teamspace/jobs/{self.name}/snapshot"
|
|
167
151
|
|
|
168
152
|
@property
|
|
169
|
-
def machine(self) -> "Machine":
|
|
153
|
+
def machine(self) -> Union["Machine", str]:
|
|
170
154
|
"""Returns the machine type this job is running on."""
|
|
171
155
|
return self.machines[0].machine
|
|
172
156
|
|
lightning_sdk/mmt/v2.py
CHANGED
|
@@ -3,10 +3,11 @@ from typing import TYPE_CHECKING, Dict, Optional, Tuple, Union
|
|
|
3
3
|
from lightning_sdk.api.mmt_api import MMTApiV2
|
|
4
4
|
from lightning_sdk.api.utils import _get_cloud_url
|
|
5
5
|
from lightning_sdk.status import Status
|
|
6
|
+
from lightning_sdk.utils.resolve import _get_org_id
|
|
6
7
|
|
|
7
8
|
if TYPE_CHECKING:
|
|
8
9
|
from lightning_sdk.job.job import Job
|
|
9
|
-
from lightning_sdk.machine import Machine
|
|
10
|
+
from lightning_sdk.machine import CloudProvider, Machine
|
|
10
11
|
from lightning_sdk.organization import Organization
|
|
11
12
|
from lightning_sdk.studio import Studio
|
|
12
13
|
from lightning_sdk.teamspace import Teamspace
|
|
@@ -42,18 +43,22 @@ class _MMTV2(_BaseMMT):
|
|
|
42
43
|
def _submit(
|
|
43
44
|
self,
|
|
44
45
|
num_machines: int,
|
|
45
|
-
machine: "Machine",
|
|
46
|
+
machine: Union["Machine", str],
|
|
46
47
|
command: Optional[str] = None,
|
|
47
48
|
studio: Optional["Studio"] = None,
|
|
48
49
|
image: Optional[str] = None,
|
|
49
50
|
env: Optional[Dict[str, str]] = None,
|
|
50
51
|
interruptible: bool = False,
|
|
51
52
|
cloud_account: Optional[str] = None,
|
|
53
|
+
cloud_provider: Optional[Union["CloudProvider", str]] = None,
|
|
52
54
|
image_credentials: Optional[str] = None,
|
|
53
55
|
cloud_account_auth: bool = False,
|
|
54
|
-
artifacts_local: Optional[str] = None,
|
|
55
|
-
artifacts_remote: Optional[str] = None,
|
|
56
56
|
entrypoint: str = "sh -c",
|
|
57
|
+
path_mappings: Optional[Dict[str, str]] = None,
|
|
58
|
+
max_runtime: Optional[int] = None,
|
|
59
|
+
artifacts_local: Optional[str] = None, # deprecated in favor of path_mappings
|
|
60
|
+
artifacts_remote: Optional[str] = None, # deprecated in favor of path_mappings
|
|
61
|
+
reuse_snapshot: bool = True,
|
|
57
62
|
) -> "_MMTV2":
|
|
58
63
|
"""Submit a new multi-machine job to the Lightning AI platform.
|
|
59
64
|
|
|
@@ -68,25 +73,34 @@ class _MMTV2(_BaseMMT):
|
|
|
68
73
|
interruptible: Whether the job should run on interruptible instances. They are cheaper but can be preempted.
|
|
69
74
|
cloud_account: The cloud account to run the job on.
|
|
70
75
|
Defaults to the studio cloud account if running with studio compute env.
|
|
71
|
-
If not provided
|
|
76
|
+
If not provided and `cloud_account_provider` is set, will resolve cluster from this, else
|
|
77
|
+
will fall back to the teamspaces default cloud account.
|
|
78
|
+
cloud_account_provider: The provider to select the cloud-account from.
|
|
79
|
+
If set, must be in agreement with the provider from the cloud_account (if specified).
|
|
80
|
+
If not specified, falls backto the teamspace default cloud account.
|
|
72
81
|
image_credentials: The credentials used to pull the image. Required if the image is private.
|
|
73
82
|
This should be the name of the respective credentials secret created on the Lightning AI platform.
|
|
74
83
|
cloud_account_auth: Whether to authenticate with the cloud account to pull the image.
|
|
75
84
|
Required if the registry is part of a cloud provider (e.g. ECR).
|
|
76
|
-
artifacts_local: The path of inside the docker container, you want to persist images from.
|
|
77
|
-
CAUTION: When setting this to "/", it will effectively erase your container.
|
|
78
|
-
Only supported for jobs with a docker image compute environment.
|
|
79
|
-
artifacts_remote: The remote storage to persist your artifacts to.
|
|
80
|
-
Should be of format <CONNECTION_TYPE>:<CONNECTION_NAME>:<PATH_WITHIN_CONNECTION>.
|
|
81
|
-
PATH_WITHIN_CONNECTION hereby is a path relative to the connection's root.
|
|
82
|
-
E.g. efs:data:some-path would result in an EFS connection named `data` and to the path `some-path`
|
|
83
|
-
within it.
|
|
84
|
-
Note that the connection needs to be added to the teamspace already in order for it to be found.
|
|
85
|
-
Only supported for jobs with a docker image compute environment.
|
|
86
85
|
entrypoint: The entrypoint of your docker container. Defaults to `sh -c` which
|
|
87
86
|
just runs the provided command in a standard shell.
|
|
88
87
|
To use the pre-defined entrypoint of the provided image, set this to an empty string.
|
|
89
88
|
Only applicable when submitting docker jobs.
|
|
89
|
+
path_mappings: Dictionary of path mappings. The keys are the path inside the container whereas the value
|
|
90
|
+
represents the data-connection name and the path inside that connection.
|
|
91
|
+
Should be of form
|
|
92
|
+
{
|
|
93
|
+
"<CONTAINER_PATH_1>": "<CONNECTION_NAME_1>:<PATH_WITHIN_CONNECTION_1>",
|
|
94
|
+
"<CONTAINER_PATH_2>": "<CONNECTION_NAME_2>"
|
|
95
|
+
}
|
|
96
|
+
If the path inside the connection is omitted it's assumed to be the root path of that connection.
|
|
97
|
+
Only applicable when submitting docker jobs.
|
|
98
|
+
max_runtime: the duration (in seconds) for which to allocate the machine.
|
|
99
|
+
Irrelevant for most machines, required for some of the top-end machines on GCP.
|
|
100
|
+
If in doubt, set it. Won't have an effect on machines not requiring it.
|
|
101
|
+
Defaults to 3h
|
|
102
|
+
reuse_snapshot: Whether the job should reuse a Studio snapshot when multiple jobs for the same Studio are
|
|
103
|
+
submitted. Turning this off may result in longer job startup times. Defaults to True.
|
|
90
104
|
"""
|
|
91
105
|
# Command is required if Studio is provided to know what to run
|
|
92
106
|
# Image is mutually exclusive with Studio
|
|
@@ -104,6 +118,14 @@ class _MMTV2(_BaseMMT):
|
|
|
104
118
|
studio_id = None
|
|
105
119
|
if image is None:
|
|
106
120
|
raise ValueError("either image or studio must be provided")
|
|
121
|
+
|
|
122
|
+
cloud_account = self._cloud_account_api.resolve_cloud_account(
|
|
123
|
+
self._teamspace.id,
|
|
124
|
+
cloud_account=cloud_account,
|
|
125
|
+
cloud_provider=cloud_provider,
|
|
126
|
+
default_cloud_account=self._teamspace.default_cloud_account,
|
|
127
|
+
)
|
|
128
|
+
|
|
107
129
|
submitted = self._job_api.submit_job(
|
|
108
130
|
name=self.name,
|
|
109
131
|
num_machines=num_machines,
|
|
@@ -117,9 +139,12 @@ class _MMTV2(_BaseMMT):
|
|
|
117
139
|
env=env,
|
|
118
140
|
image_credentials=image_credentials,
|
|
119
141
|
cloud_account_auth=cloud_account_auth,
|
|
142
|
+
entrypoint=entrypoint,
|
|
143
|
+
path_mappings=path_mappings,
|
|
120
144
|
artifacts_local=artifacts_local,
|
|
121
145
|
artifacts_remote=artifacts_remote,
|
|
122
|
-
|
|
146
|
+
max_runtime=max_runtime,
|
|
147
|
+
reuse_snapshot=reuse_snapshot,
|
|
123
148
|
)
|
|
124
149
|
self._job = submitted
|
|
125
150
|
self._name = submitted.name
|
|
@@ -169,9 +194,13 @@ class _MMTV2(_BaseMMT):
|
|
|
169
194
|
raise NotImplementedError
|
|
170
195
|
|
|
171
196
|
@property
|
|
172
|
-
def machine(self) -> "Machine":
|
|
197
|
+
def machine(self) -> Union["Machine", str]:
|
|
173
198
|
"""Returns the machine type this job is running on."""
|
|
174
|
-
return self._job_api._get_job_machine_from_spec(
|
|
199
|
+
return self._job_api._get_job_machine_from_spec(
|
|
200
|
+
self._guaranteed_job.spec,
|
|
201
|
+
self.teamspace.id,
|
|
202
|
+
_get_org_id(self.teamspace),
|
|
203
|
+
)
|
|
175
204
|
|
|
176
205
|
def _update_internal_job(self) -> None:
|
|
177
206
|
if getattr(self, "_job", None) is None:
|
lightning_sdk/models.py
CHANGED
|
@@ -4,10 +4,11 @@ from pathlib import Path
|
|
|
4
4
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
|
|
5
5
|
|
|
6
6
|
from lightning_sdk.api import OrgApi, TeamspaceApi, UserApi
|
|
7
|
+
from lightning_sdk.lightning_cloud.openapi import V1ModelVersionArchive
|
|
7
8
|
from lightning_sdk.lightning_cloud.openapi.models import V1Membership, V1OwnerType
|
|
8
9
|
from lightning_sdk.lightning_cloud.openapi.rest import ApiException
|
|
9
10
|
from lightning_sdk.user import User
|
|
10
|
-
from lightning_sdk.utils.resolve import _get_authed_user
|
|
11
|
+
from lightning_sdk.utils.resolve import _get_authed_user, _resolve_teamspace
|
|
11
12
|
|
|
12
13
|
if TYPE_CHECKING:
|
|
13
14
|
from lightning_sdk.teamspace import Teamspace
|
|
@@ -72,24 +73,37 @@ def _get_teamspace(name: str, organization: str) -> "Teamspace":
|
|
|
72
73
|
raise RuntimeError(f"Teamspace `{requested_teamspace}` not found. Available teamspaces: {os.linesep}\t{options}")
|
|
73
74
|
|
|
74
75
|
|
|
75
|
-
def
|
|
76
|
+
def _extend_model_name_with_teamspace(name: str) -> str:
|
|
77
|
+
"""Extend the model name with the teamspace if it can be determined from env. variables."""
|
|
78
|
+
if "/" in name:
|
|
79
|
+
return name
|
|
80
|
+
# do some magic if you run studio
|
|
81
|
+
teamspace = _resolve_teamspace(None, None, None)
|
|
82
|
+
if not teamspace:
|
|
83
|
+
raise ValueError(
|
|
84
|
+
f"Model name must be in the format `organization/teamspace/model_name` but you provided '{name}'."
|
|
85
|
+
)
|
|
86
|
+
return f"{teamspace.owner.name}/{teamspace.name}/{name}"
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _parse_org_teamspace_model_version(name: str) -> Tuple[str, str, str, Optional[str]]:
|
|
76
90
|
"""Parse the name argument into its components."""
|
|
77
91
|
try:
|
|
78
92
|
org_name, teamspace_name, model_name = name.split("/")
|
|
79
|
-
parts = model_name.split(":")
|
|
80
|
-
if len(parts) == 1:
|
|
81
|
-
return org_name, teamspace_name, parts[0], "latest"
|
|
82
|
-
if len(parts) == 2:
|
|
83
|
-
return org_name, teamspace_name, parts[0], parts[1]
|
|
84
|
-
# The rest of the validation for name and version happens in the backend
|
|
85
|
-
raise ValueError(
|
|
86
|
-
"Model version is expected to be in the format `entity/modelname:version` separated by a"
|
|
87
|
-
f" single colon, but got: {name}"
|
|
88
|
-
)
|
|
89
93
|
except ValueError as err:
|
|
90
94
|
raise ValueError(
|
|
91
|
-
f"Model name must be in the format
|
|
95
|
+
f"Model name must be in the format `organization/teamspace/model_name` but you provided '{name}'."
|
|
92
96
|
) from err
|
|
97
|
+
parts = model_name.split(":")
|
|
98
|
+
if len(parts) == 1:
|
|
99
|
+
return org_name, teamspace_name, parts[0], None
|
|
100
|
+
if len(parts) == 2:
|
|
101
|
+
return org_name, teamspace_name, parts[0], parts[1]
|
|
102
|
+
# The rest of the validation for name and version happens in the backend
|
|
103
|
+
raise ValueError(
|
|
104
|
+
"Model version is expected to be in the format `organization/teamspace/model_name:version`"
|
|
105
|
+
f" separated by a single colon, but got: {name}"
|
|
106
|
+
)
|
|
93
107
|
|
|
94
108
|
|
|
95
109
|
def download_model(
|
|
@@ -105,33 +119,33 @@ def download_model(
|
|
|
105
119
|
download_dir: The directory where the Model should be downloaded.
|
|
106
120
|
progress_bar: Whether to show a progress bar when downloading.
|
|
107
121
|
"""
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
download_dir = Path(download_dir)
|
|
111
|
-
|
|
122
|
+
name = _extend_model_name_with_teamspace(name)
|
|
123
|
+
teamspace_owner_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
|
|
112
124
|
api = TeamspaceApi()
|
|
113
125
|
|
|
114
126
|
try:
|
|
115
127
|
return api.download_model_files(
|
|
116
128
|
name=model_name,
|
|
117
129
|
version=version,
|
|
118
|
-
download_dir=download_dir,
|
|
130
|
+
download_dir=Path(download_dir).expanduser().resolve(),
|
|
119
131
|
teamspace_name=teamspace_name,
|
|
120
132
|
teamspace_owner_name=teamspace_owner_name,
|
|
121
133
|
progress_bar=progress_bar,
|
|
122
134
|
)
|
|
123
135
|
except ApiException as e:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
136
|
+
if e.status == 404:
|
|
137
|
+
raise RuntimeError(
|
|
138
|
+
f"Model '{name}' not found. Either the model doesn't exist or you don't have access to it."
|
|
139
|
+
) from None
|
|
140
|
+
raise RuntimeError(f"Error downloading model. Status code: {e.status}.") from None
|
|
128
141
|
|
|
129
142
|
|
|
130
143
|
def upload_model(
|
|
131
144
|
name: str,
|
|
132
|
-
path: Union[Path, str] = ".",
|
|
145
|
+
path: Union[str, Path, List[Union[str, Path]]] = ".",
|
|
133
146
|
cloud_account: Optional[str] = None,
|
|
134
147
|
progress_bar: bool = True,
|
|
148
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
135
149
|
) -> UploadedModelInfo:
|
|
136
150
|
"""Upload a Model.
|
|
137
151
|
|
|
@@ -142,12 +156,48 @@ def upload_model(
|
|
|
142
156
|
cloud_account: The name of the cloud account to store the Model in.
|
|
143
157
|
If not provided, the default cloud account for the Teamspace will be used.
|
|
144
158
|
progress_bar: Whether to show a progress bar for the upload.
|
|
159
|
+
metadata: Metadata to attach to the uploaded model.
|
|
160
|
+
If not provided, an empty dictionary will be used.
|
|
145
161
|
"""
|
|
146
|
-
|
|
162
|
+
name = _extend_model_name_with_teamspace(name)
|
|
163
|
+
org_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
|
|
147
164
|
teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
|
|
148
165
|
return teamspace.upload_model(
|
|
149
166
|
path=path,
|
|
150
167
|
name=model_name,
|
|
168
|
+
version=version,
|
|
151
169
|
cloud_account=cloud_account,
|
|
152
170
|
progress_bar=progress_bar,
|
|
171
|
+
metadata=metadata,
|
|
153
172
|
)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def delete_model(
|
|
176
|
+
name: str,
|
|
177
|
+
) -> None:
|
|
178
|
+
"""Delete a model or a version of model.
|
|
179
|
+
|
|
180
|
+
Args:
|
|
181
|
+
name: The name of the model you want to delete or with specified version it deltes only that version.
|
|
182
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME> for full model deletion
|
|
183
|
+
or <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>:<VERSION> for version deletion.
|
|
184
|
+
"""
|
|
185
|
+
name = _extend_model_name_with_teamspace(name)
|
|
186
|
+
org_name, teamspace_name, model_name, version = _parse_org_teamspace_model_version(name)
|
|
187
|
+
teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
|
|
188
|
+
teamspace.delete_model(name=f"{model_name}:{version}" if version else model_name)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def list_model_versions(
|
|
192
|
+
name: str,
|
|
193
|
+
) -> List[V1ModelVersionArchive]:
|
|
194
|
+
"""List all versions of a model.
|
|
195
|
+
|
|
196
|
+
Args:
|
|
197
|
+
name: The name of the model you want to list versions for.
|
|
198
|
+
This should have the format <ORGANIZATION-NAME>/<TEAMSPACE-NAME>/<MODEL-NAME>.
|
|
199
|
+
"""
|
|
200
|
+
name = _extend_model_name_with_teamspace(name)
|
|
201
|
+
org_name, teamspace_name, model_name, _ = _parse_org_teamspace_model_version(name)
|
|
202
|
+
teamspace = _get_teamspace(name=teamspace_name, organization=org_name)
|
|
203
|
+
return teamspace.list_model_versions(name=model_name)
|
lightning_sdk/organization.py
CHANGED
|
@@ -40,6 +40,10 @@ class Organization(Owner):
|
|
|
40
40
|
"""The organization's ID."""
|
|
41
41
|
return self._org.id
|
|
42
42
|
|
|
43
|
+
@property
|
|
44
|
+
def default_cloud_account(self) -> Optional[str]:
|
|
45
|
+
return self._org.preferred_cluster or None
|
|
46
|
+
|
|
43
47
|
def __repr__(self) -> str:
|
|
44
48
|
"""Returns reader friendly representation."""
|
|
45
49
|
return f"Organization(name={self.name})"
|
lightning_sdk/owner.py
CHANGED
|
@@ -2,12 +2,13 @@ from abc import ABC, abstractmethod
|
|
|
2
2
|
from typing import TYPE_CHECKING, List
|
|
3
3
|
|
|
4
4
|
from lightning_sdk.api import TeamspaceApi
|
|
5
|
+
from lightning_sdk.utils.logging import TrackCallsABCMeta
|
|
5
6
|
|
|
6
7
|
if TYPE_CHECKING:
|
|
7
8
|
from lightning_sdk.teamspace import Teamspace
|
|
8
9
|
|
|
9
10
|
|
|
10
|
-
class Owner(ABC):
|
|
11
|
+
class Owner(ABC, metaclass=TrackCallsABCMeta):
|
|
11
12
|
"""Represents an owner of teamspaces and studios."""
|
|
12
13
|
|
|
13
14
|
def __init__(self) -> None:
|