rhino_health.lib.endpoints.code_object.code_object_dataclass#

Module Contents#

Classes#

CodeExecutionMode

A mode the CodeObject will run in

CodeFormat

A format the code is stored and uploaded to the system

RequirementMode

The format the requirements are in

CodeTypes

Supported CodeObject Types

CodeObjectBuildStatus

The build status of the CodeObject

CodeObjectCreateInput

Input arguments for creating CodeObject

CodeObject

A CodeObject which exists on the platform

CodeObjectRunInput

Input parameters for running generalized code with multiple input and/or output datasets per container

CodeObjectRunAsyncResponse

An asynchronous code run response

CodeObjectRunSyncResponse

A synchronous code run response

ModelTrainInput

Input for training an NVFlare Model

ModelTrainAsyncResponse

Response of training an NVFlare Model

class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeExecutionMode#

Bases: str, enum.Enum

A mode the CodeObject will run in

DEFAULT = 'default'#
AUTO_CONTAINER_NVFLARE = 'nvflare'#
AUTO_CONTAINER_SNIPPET = 'snippet'#
AUTO_CONTAINER_FILE = 'file'#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeFormat#

Bases: str, enum.Enum

A format the code is stored and uploaded to the system

DEFAULT = 'single_non_binary_file'#
S3_MULTIPART_ZIP = 's3_multipart_zip'#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.RequirementMode#

Bases: str, enum.Enum

The format the requirements are in

PYTHON_PIP = 'python_pip'#
ANACONDA_ENVIRONMENT = 'anaconda_environment'#
ANACONDA_SPECFILE = 'anaconda_specfile'#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeTypes#

Bases: str, enum.Enum

Supported CodeObject Types

GENERALIZED_COMPUTE = 'Generalized Compute'#
NVIDIA_FLARE_V2_0 = 'NVIDIA FLARE v2.0'#
NVIDIA_FLARE_V2_2 = 'NVIDIA FLARE v2.2'#
NVIDIA_FLARE_V2_3 = 'NVIDIA FLARE v2.3'#
PYTHON_CODE = 'Python Code'#
INTERACTIVE_CONTAINER = 'Interactive Container'#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObjectBuildStatus#

Bases: str, enum.Enum

The build status of the CodeObject

NOT_STARTED = 'Not Started'#
IN_PROGRESS = 'In Progress'#
COMPLETE = 'Complete'#
ERROR = 'Error'#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObjectCreateInput(**data)#

Bases: rhino_health.lib.dataclass.RhinoBaseModel

Input arguments for creating CodeObject

name: str#

The name of the CodeObject

description: str#

The description of the CodeObject

input_data_schema_uids: List[str] = []#

A list of uids of data schemas this CodeObject expects input datasets to adhere to.

output_data_schema_uids: List[str | None] = []#

A list of uids of data schemas this CodeObject expects output datasets to adhere to.

project_uid: typing_extensions.Annotated[str, Field(alias='project')]#

The CodeObject project

code_type: typing_extensions.Annotated[str, Field(alias='type')]#

The code type which corresponds to the CodeTypes enum

base_version_uid: str | None = ''#

The first version of the CodeObject if multiple versions exist. You can also use add_version_if_exists=True when creating the code object in create_code_object if an existing code object with the same name exists

config: dict | None#

Additional configuration of the CodeObject. The contents will differ based on the model_type and code_run_type.

Examples

  • CodeTypes.GENERALIZED_COMPUTE and CodeTypes.INTERACTIVE_CONTAINER
    • container_image_uri: URI of the container image to use for the model

  • CodeTypes.NVIDIA_FLARE_V2_X (existing image)
    • code_execution_mode: CodeExecutionMode

    • if CodeExecutionMode.DEFAULT requires the following additional parameters
      • container_image_uri: URI of the container image to use for the model

    • if CodeExecutionMode.AUTO_CONTAINER_NVFLARE, see CodeTypes.PYTHON_CODE below

  • CodeTypes.PYTHON_CODE
    • code_execution_mode: CodeExecutionMode = CodeExecutionMode.DEFAULT - The format the code is structured in
      • CodeTypes.PYTHON_CODE supports CodeExecutionMode.DEFAULT, CodeExecutionMode.AUTO_CONTAINER_SNIPPET, and CodeExecutionMode.AUTO_CONTAINER_FILE

      • CodeTypes.NVIDIA_FLARE_V2_X only supports CodeExecutionMode.AUTO_CONTAINER_NVFLARE

    • if CodeExecutionMode.DEFAULT requires the following additional parameters
      • python_code: str - the python code to run

    • CodeExecutionMode.AUTO_CONTAINER_SNIPPET requires the following additional parameters
      • code: str - the python code to run

    • CodeExecutionMode.AUTO_CONTAINER_FILE or CodeExecutionMode.AUTO_CONTAINER_NVFLARE
      • base_image: choose one of the following
        • base_image_uri: str - the base docker image to use for the container

        or - python_version: str - the python version to use for the container - cuda_version: Optional[str] - the cuda version to use for the container

      • requirements_mode: Optional[RequirementMode] = RequirementMode.PYTHON_PIP - The format the requirements are in

      • requirements: List[str] - a list of requirements to install in the container, uses the pip/conda install format

      • code_format: CodeFormat the format used to pass in the code
        • CodeFormat.DEFAULT
          • code: str - the python code to run

        • CodeFormat.S3_MULTIPART_ZIP
          • folder_path: str | Path - the folder path to files

          • entry_point: str - name of the file to run first. Not used for auto container nvflare

class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObject(**data)#

A CodeObject which exists on the platform

property build_logs#

Logs when building the CodeObject, if building in the cloud

property input_data_schemas: List[DataSchema]#

Return the DataSchema Dataclasses associated with input_data_schema_uids

Warning

The result of this function is cached. Be careful calling this function after making changes. All dataclasses must already exist on the platform before making this call.

Returns:
input_data_schemas: List[DataSchema]

Dataclasses representing the DataSchema

property output_data_schemas: List[DataSchema]#

Return the DataSchema Dataclasses associated with output_data_schema_uids

Warning

The result of this function is cached. Be careful calling this function after making changes. All dataclasses must already exist on the platform before making this call.

Returns:
output_data_schemas: List[DataSchema]

Dataclasses representing the DataSchema

property project: Project#

Return the Project Dataclass associated with project_uid

Warning

The result of this function is cached. Be careful calling this function after making changes. All dataclasses must already exist on the platform before making this call.

Returns:
project: Project

Dataclass representing the Project

property creator: User#

Return the User Dataclass associated with creator_uid

Warning

The result of this function is cached. Be careful calling this function after making changes. All dataclasses must already exist on the platform before making this call.

Returns:
creator: User

Dataclass representing the User

uid: str#

The unique ID of the CodeObject

version: int | None#

The version of the CodeObject

build_status: CodeObjectBuildStatus#

The build status of the CodeObject

input_data_schema_uids: List[str] = []#

A list of uids of data schemas this CodeObject expects input datasets to adhere to.

output_data_schema_uids: List[str] = []#

A list of uids of data schemas this CodeObject expects output datasets to adhere to.

build_errors: List[str] | None#

Errors when building the CodeObject, if building in the cloud

name: str#

The name of the CodeObject

description: str#

The description of the CodeObject

code_type: typing_extensions.Annotated[str, Field(alias='type')]#

The code type which corresponds to the CodeTypes enum

base_version_uid: str | None = ''#

The first version of the CodeObject if multiple versions exist. You can also use add_version_if_exists=True when creating the code object in create_code_object if an existing code object with the same name exists

config: dict | None#

Additional configuration of the CodeObject. The contents will differ based on the model_type and code_run_type.

Examples

  • CodeTypes.GENERALIZED_COMPUTE and CodeTypes.INTERACTIVE_CONTAINER
    • container_image_uri: URI of the container image to use for the model

  • CodeTypes.NVIDIA_FLARE_V2_X (existing image)
    • code_execution_mode: CodeExecutionMode

    • if CodeExecutionMode.DEFAULT requires the following additional parameters
      • container_image_uri: URI of the container image to use for the model

    • if CodeExecutionMode.AUTO_CONTAINER_NVFLARE, see CodeTypes.PYTHON_CODE below

  • CodeTypes.PYTHON_CODE
    • code_execution_mode: CodeExecutionMode = CodeExecutionMode.DEFAULT - The format the code is structured in
      • CodeTypes.PYTHON_CODE supports CodeExecutionMode.DEFAULT, CodeExecutionMode.AUTO_CONTAINER_SNIPPET, and CodeExecutionMode.AUTO_CONTAINER_FILE

      • CodeTypes.NVIDIA_FLARE_V2_X only supports CodeExecutionMode.AUTO_CONTAINER_NVFLARE

    • if CodeExecutionMode.DEFAULT requires the following additional parameters
      • python_code: str - the python code to run

    • CodeExecutionMode.AUTO_CONTAINER_SNIPPET requires the following additional parameters
      • code: str - the python code to run

    • CodeExecutionMode.AUTO_CONTAINER_FILE or CodeExecutionMode.AUTO_CONTAINER_NVFLARE
      • base_image: choose one of the following
        • base_image_uri: str - the base docker image to use for the container

        or - python_version: str - the python version to use for the container - cuda_version: Optional[str] - the cuda version to use for the container

      • requirements_mode: Optional[RequirementMode] = RequirementMode.PYTHON_PIP - The format the requirements are in

      • requirements: List[str] - a list of requirements to install in the container, uses the pip/conda install format

      • code_format: CodeFormat the format used to pass in the code
        • CodeFormat.DEFAULT
          • code: str - the python code to run

        • CodeFormat.S3_MULTIPART_ZIP
          • folder_path: str | Path - the folder path to files

          • entry_point: str - name of the file to run first. Not used for auto container nvflare

creator_uid: str#

The UID of the creator of this dataclass on the system

created_at: str#

When this dataclass was created on the system

input_data_schema_names: List[str]#

The input_data_schema names

output_data_schema_names: List[str]#

The output_data_schema names

project_name: str#

The project name

creator_name: str#

The creator name

wait_for_build(timeout_seconds: int = 900, poll_frequency: int = 30, print_progress: bool = True)#

Wait for the asynchronous CodeObject to finish building

Parameters:
timeout_seconds: int = 900

How many seconds to wait before timing out. Maximum of 1800.

poll_frequency: int = 30

How frequent to check the status, in seconds

print_progress: bool = True

Whether to print how long has elapsed since the start of the wait

Returns:
code_object: CodeObject

Dataclass representing the CodeObject

class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObjectRunInput(*args, **kwargs)#

Bases: rhino_health.lib.dataclass.RhinoBaseModel

Input parameters for running generalized code with multiple input and/or output datasets per container

code_object_uid: str#

The unique ID of the CodeObject

run_params: str | None = '{}'#

The run params code you want to run on the datasets

timeout_seconds: int = 600#

The time before a timeout is declared for the run

secret_run_params: str | None#

The secrets for the CodeObject

external_storage_file_paths: List[str] | None#

The s3 bucket paths of files to be used in the run

sync: bool = False#

Highly recommended to use the default parameter

input_dataset_uids: List[List[str]]#

A list of lists of the input dataset uids.

[[first_dataset_for_first_run, second_dataset_for_first_run …], [first_dataset_for_second_run, second_dataset_for_second_run …], …] for N runs

Examples

Suppose we have the following CodeObject with 2 Input Data Schemas:

  • CodeObject
    • DataSchema 1

    • DataSchema 2

We want to run the CodeObject over two sites: Applegate and Bridgestone

The user passes in dataset UIDs for Datasets A, B, C, and D in the following order:

[[Dataset A, Dataset B], [Dataset C, Dataset D]]

The model will then be run over both sites with the following datasets passed to generalized compute:

  • Site A - Applegate:
    • Dataset A - DataSchema 1

    • Dataset B - DataSchema 2

  • Site B - Bridgestone:
    • Dataset C - DataSchema 1

    • Dataset D - DataSchema 2

output_dataset_naming_templates: List[str] | None#

A list of string naming templates used to name the output datasets at each site. You can use parameters in each template surrounded by double brackets {{parameter}} which will then be replaced by their corresponding values.

Parameters:
workgroup_name:

The name of the workgroup the CodeObject belongs to.

workgroup_uid:

The name of the workgroup the CodeObject belongs to.

model_name:

The CodeObject name

input_dataset_names.n:

The name of the nth input dataset, (zero indexed)

Examples

Suppose we have two input datasets, named “First Dataset” and “Second Dataset” and our CodeObject has two outputs:

output_dataset_naming_templates = [
“{{input_dataset_names.0}} - Train”,
“{{input_dataset_names.1}} - Test”
]

After running Generalized Compute, we will save the two outputs as “First Dataset - Train” and “Second Dataset - Test”

classmethod warn_on_usage_of_obsolete_arg(value)#
class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObjectRunAsyncResponse(**data)#

Bases: CodeObjectRunResponse

An asynchronous code run response

property code_run#

Return the CodeRun associated with this CodeObject

Warning

The result of this function is cached. Be careful calling this function after making changes

Returns:
code_run: CodeRun

Dataclass representing the CodeRun

task_uids: List[str]#
status: str#

The status of the run

output_dataset_uids: List[str] | None = []#

A list of output dataset uids for the run

code_run_uid: str | None#

The UID of the model result

wait_for_completion(*args, **kwargs)#

Wait for the asynchronous Code Run to complete, convenience function call to the same function on the CodeRun object.

Returns:
code_run: CodeRun

Dataclass representing the CodeRun of the CodeObject

class rhino_health.lib.endpoints.code_object.code_object_dataclass.CodeObjectRunSyncResponse(**data)#

Bases: CodeObjectRunResponse

A synchronous code run response

property code_run#

Return the CodeRun associated with this CodeObject

Warning

The result of this function is cached. Be careful calling this function after making changes

Returns:
code_run: CodeRun

Dataclass representing the CodeRun

errors: List[Any] | None = []#
warnings: List[Any] | None = []#
status: str#

The status of the run

output_dataset_uids: List[str] | None = []#

A list of output dataset uids for the run

code_run_uid: str | None#

The UID of the model result

wait_for_completion(*args, **kwargs)#

Wait for the asynchronous Code Run to complete, convenience function call to the same function on the CodeRun object.

Returns:
code_run: CodeRun

Dataclass representing the CodeRun of the CodeObject

class rhino_health.lib.endpoints.code_object.code_object_dataclass.ModelTrainInput(**data)#

Bases: rhino_health.lib.dataclass.RhinoBaseModel

Input for training an NVFlare Model

code_object_uid: str#

The unique ID of the CodeObject

input_dataset_uids: List[str]#

A list of the input Dataset uids

validation_dataset_uids: List[str]#

A list of the Dohort uids for validation

validation_datasets_inference_suffix: str#

The suffix given to all output datasets

simulate_federated_learning: typing_extensions.Annotated[bool, Field(alias='one_fl_client_per_dataset')]#

Run simulated federated learning on the same on-prem installation by treating each dataset as a site

config_fed_server: str | None#

The config for the federated server

config_fed_client: str | None#

The config for the federated client

secrets_fed_server: str | None#

The secrets for the federated server

secrets_fed_client: str | None#

The secrets for the federated client

external_storage_file_paths: List[str] | None#

The s3 bucket paths of files to be used in the run

timeout_seconds: int#

The time before a timeout is declared for the run

class rhino_health.lib.endpoints.code_object.code_object_dataclass.ModelTrainAsyncResponse(**data)#

Bases: CodeRunWaitMixin

Response of training an NVFlare Model .. warning:: This feature is under development and the interface may change

property code_run#

Return the CodeRun associated with the NVFlare training

Warning

The result of this function is cached. Be careful calling this function after making changes

Returns:
code_run: CodeRun

Dataclass representing the CodeRun

status: str#

The status of the run

code_run_uid: str | None#

The UID of the model result

wait_for_completion(*args, **kwargs)#

Wait for the asynchronous Code Run to complete, convenience function call to the same function on the CodeRun object.

Returns:
code_run: CodeRun

Dataclass representing the CodeRun of the CodeObject