11#!/usr/bin/env python
2- # -*- coding: utf-8; -*-
32
4- # Copyright (c) 2021, 2023 Oracle and/or its affiliates.
3+ # Copyright (c) 2021, 2025 Oracle and/or its affiliates.
54# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
65
76
87import collections
98import copy
109import datetime
11- import oci
12- import warnings
1310import time
14- from typing import Dict , List , Union , Any
11+ import warnings
12+ from typing import Any , Dict , List , Union
1513
14+ import oci
1615import oci .loggingsearch
17- from ads .common import auth as authutil
1816import pandas as pd
19- from ads .model .serde .model_input import JsonModelInputSERDE
17+ from oci .data_science .models import (
18+ CreateModelDeploymentDetails ,
19+ LogDetails ,
20+ UpdateModelDeploymentDetails ,
21+ )
22+
23+ from ads .common import auth as authutil
24+ from ads .common import utils as ads_utils
2025from ads .common .oci_logging import (
2126 LOG_INTERVAL ,
2227 LOG_RECORDS_LIMIT ,
3035from ads .model .deployment .common .utils import send_request
3136from ads .model .deployment .model_deployment_infrastructure import (
3237 DEFAULT_BANDWIDTH_MBPS ,
38+ DEFAULT_MEMORY_IN_GBS ,
39+ DEFAULT_OCPUS ,
3340 DEFAULT_REPLICA ,
3441 DEFAULT_SHAPE_NAME ,
35- DEFAULT_OCPUS ,
36- DEFAULT_MEMORY_IN_GBS ,
3742 MODEL_DEPLOYMENT_INFRASTRUCTURE_TYPE ,
3843 ModelDeploymentInfrastructure ,
3944)
4550 ModelDeploymentRuntimeType ,
4651 OCIModelDeploymentRuntimeType ,
4752)
53+ from ads .model .serde .model_input import JsonModelInputSERDE
4854from ads .model .service .oci_datascience_model_deployment import (
4955 OCIDataScienceModelDeployment ,
5056)
51- from ads . common import utils as ads_utils
57+
5258from .common import utils
5359from .common .utils import State
5460from .model_deployment_properties import ModelDeploymentProperties
55- from oci .data_science .models import (
56- LogDetails ,
57- CreateModelDeploymentDetails ,
58- UpdateModelDeploymentDetails ,
59- )
6061
6162DEFAULT_WAIT_TIME = 1200
6263DEFAULT_POLL_INTERVAL = 10
@@ -751,6 +752,8 @@ def watch(
751752 log_filter : str, optional
752753 Expression for filtering the logs. This will be the WHERE clause of the query.
753754 Defaults to None.
755+ status_list : List[str], optional
756+ List of status of model deployment. This is used to store list of status from logs.
754757
755758 Returns
756759 -------
@@ -964,7 +967,9 @@ def predict(
964967 except oci .exceptions .ServiceError as ex :
965968 # When bandwidth exceeds the allocated value, TooManyRequests error (429) will be raised by oci backend.
966969 if ex .status == 429 :
967- bandwidth_mbps = self .infrastructure .bandwidth_mbps or DEFAULT_BANDWIDTH_MBPS
970+ bandwidth_mbps = (
971+ self .infrastructure .bandwidth_mbps or DEFAULT_BANDWIDTH_MBPS
972+ )
968973 utils .get_logger ().warning (
969974 f"Load balancer bandwidth exceeds the allocated { bandwidth_mbps } Mbps."
970975 "To estimate the actual bandwidth, use formula: (payload size in KB) * (estimated requests per second) * 8 / 1024."
@@ -1644,22 +1649,22 @@ def _build_model_deployment_configuration_details(self) -> Dict:
16441649 }
16451650
16461651 if infrastructure .subnet_id :
1647- instance_configuration [
1648- infrastructure .CONST_SUBNET_ID
1649- ] = infrastructure . subnet_id
1652+ instance_configuration [infrastructure . CONST_SUBNET_ID ] = (
1653+ infrastructure .subnet_id
1654+ )
16501655
16511656 if infrastructure .private_endpoint_id :
16521657 if not hasattr (
16531658 oci .data_science .models .InstanceConfiguration , "private_endpoint_id"
16541659 ):
16551660 # TODO: add oci version with private endpoint support.
1656- raise EnvironmentError (
1661+ raise OSError (
16571662 "Private endpoint is not supported in the current OCI SDK installed."
16581663 )
16591664
1660- instance_configuration [
1661- infrastructure .CONST_PRIVATE_ENDPOINT_ID
1662- ] = infrastructure . private_endpoint_id
1665+ instance_configuration [infrastructure . CONST_PRIVATE_ENDPOINT_ID ] = (
1666+ infrastructure .private_endpoint_id
1667+ )
16631668
16641669 scaling_policy = {
16651670 infrastructure .CONST_POLICY_TYPE : "FIXED_SIZE" ,
@@ -1704,7 +1709,7 @@ def _build_model_deployment_configuration_details(self) -> Dict:
17041709 oci .data_science .models ,
17051710 "ModelDeploymentEnvironmentConfigurationDetails" ,
17061711 ):
1707- raise EnvironmentError (
1712+ raise OSError (
17081713 "Environment variable hasn't been supported in the current OCI SDK installed."
17091714 )
17101715
@@ -1720,9 +1725,9 @@ def _build_model_deployment_configuration_details(self) -> Dict:
17201725 and runtime .inference_server .upper ()
17211726 == MODEL_DEPLOYMENT_INFERENCE_SERVER_TRITON
17221727 ):
1723- environment_variables [
1724- "CONTAINER_TYPE"
1725- ] = MODEL_DEPLOYMENT_INFERENCE_SERVER_TRITON
1728+ environment_variables ["CONTAINER_TYPE" ] = (
1729+ MODEL_DEPLOYMENT_INFERENCE_SERVER_TRITON
1730+ )
17261731 runtime .set_spec (runtime .CONST_ENV , environment_variables )
17271732 environment_configuration_details = {
17281733 runtime .CONST_ENVIRONMENT_CONFIG_TYPE : runtime .environment_config_type ,
@@ -1734,17 +1739,17 @@ def _build_model_deployment_configuration_details(self) -> Dict:
17341739 oci .data_science .models ,
17351740 "OcirModelDeploymentEnvironmentConfigurationDetails" ,
17361741 ):
1737- raise EnvironmentError (
1742+ raise OSError (
17381743 "Container runtime hasn't been supported in the current OCI SDK installed."
17391744 )
17401745 environment_configuration_details ["image" ] = runtime .image
17411746 environment_configuration_details ["imageDigest" ] = runtime .image_digest
17421747 environment_configuration_details ["cmd" ] = runtime .cmd
17431748 environment_configuration_details ["entrypoint" ] = runtime .entrypoint
17441749 environment_configuration_details ["serverPort" ] = runtime .server_port
1745- environment_configuration_details [
1746- "healthCheckPort"
1747- ] = runtime . health_check_port
1750+ environment_configuration_details ["healthCheckPort" ] = (
1751+ runtime . health_check_port
1752+ )
17481753
17491754 model_deployment_configuration_details = {
17501755 infrastructure .CONST_DEPLOYMENT_TYPE : "SINGLE_MODEL" ,
@@ -1754,7 +1759,7 @@ def _build_model_deployment_configuration_details(self) -> Dict:
17541759
17551760 if runtime .deployment_mode == ModelDeploymentMode .STREAM :
17561761 if not hasattr (oci .data_science .models , "StreamConfigurationDetails" ):
1757- raise EnvironmentError (
1762+ raise OSError (
17581763 "Model deployment mode hasn't been supported in the current OCI SDK installed."
17591764 )
17601765 model_deployment_configuration_details [
@@ -1786,9 +1791,13 @@ def _build_category_log_details(self) -> Dict:
17861791
17871792 logs = {}
17881793 if (
1789- self .infrastructure .access_log and
1790- self .infrastructure .access_log .get (self .infrastructure .CONST_LOG_GROUP_ID , None )
1791- and self .infrastructure .access_log .get (self .infrastructure .CONST_LOG_ID , None )
1794+ self .infrastructure .access_log
1795+ and self .infrastructure .access_log .get (
1796+ self .infrastructure .CONST_LOG_GROUP_ID , None
1797+ )
1798+ and self .infrastructure .access_log .get (
1799+ self .infrastructure .CONST_LOG_ID , None
1800+ )
17921801 ):
17931802 logs [self .infrastructure .CONST_ACCESS ] = {
17941803 self .infrastructure .CONST_LOG_GROUP_ID : self .infrastructure .access_log .get (
@@ -1799,9 +1808,13 @@ def _build_category_log_details(self) -> Dict:
17991808 ),
18001809 }
18011810 if (
1802- self .infrastructure .predict_log and
1803- self .infrastructure .predict_log .get (self .infrastructure .CONST_LOG_GROUP_ID , None )
1804- and self .infrastructure .predict_log .get (self .infrastructure .CONST_LOG_ID , None )
1811+ self .infrastructure .predict_log
1812+ and self .infrastructure .predict_log .get (
1813+ self .infrastructure .CONST_LOG_GROUP_ID , None
1814+ )
1815+ and self .infrastructure .predict_log .get (
1816+ self .infrastructure .CONST_LOG_ID , None
1817+ )
18051818 ):
18061819 logs [self .infrastructure .CONST_PREDICT ] = {
18071820 self .infrastructure .CONST_LOG_GROUP_ID : self .infrastructure .predict_log .get (
0 commit comments