Source code for ads.model.model_properties
#!/usr/bin/env python
# -*- coding: utf-8 -*--
# Copyright (c) 2022, 2023 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
from dataclasses import dataclass
from os import environ
from typing import Union
from ads.model.base_properties import BaseProperties
[docs]@dataclass(repr=False)
class ModelProperties(BaseProperties):
"""Represents properties required to save and deploy model."""
inference_conda_env: str = None
inference_python_version: str = None
training_conda_env: str = None
training_python_version: str = None
training_resource_id: str = None
training_script_path: str = None
training_id: str = None
compartment_id: str = None
project_id: str = None
bucket_uri: str = None
remove_existing_artifact: bool = None
overwrite_existing_artifact: bool = None
deployment_instance_shape: str = None
deployment_instance_subnet_id: str = None
deployment_instance_count: int = None
deployment_bandwidth_mbps: int = None
deployment_log_group_id: str = None
deployment_access_log_id: str = None
deployment_predict_log_id: str = None
deployment_memory_in_gbs: Union[float, int] = None
deployment_ocpus: Union[float, int] = None
deployment_image: str = None
def _adjust_with_env(self) -> None:
"""Adjusts env variables. This method is used within `with_env` method."""
super()._adjust_with_env()
props_env_map = {
"project_id": ["PROJECT_OCID"],
"training_resource_id": ["JOB_RUN_OCID", "NB_SESSION_OCID"],
"compartment_id": [
"JOB_RUN_COMPARTMENT_OCID",
"NB_SESSION_COMPARTMENT_OCID",
],
}
for key, env_keys in props_env_map.items():
try:
value = next(
environ.get(env_key)
for env_key in env_keys
if environ.get(env_key, None) is not None
)
self.with_prop(key, value)
except:
pass