1313from threading import Lock
1414from typing import Any , Dict , List , Union
1515
16- import oci
1716from cachetools import TTLCache
18- from oci .data_science .models import (
19- JobRun ,
20- Metadata ,
21- UpdateModelDetails ,
22- UpdateModelProvenanceDetails ,
23- )
2417
18+ import oci
2519from ads .aqua import logger
2620from ads .aqua .app import AquaApp
2721from ads .aqua .common import utils
4741)
4842from ads .aqua .constants import (
4943 CONSOLE_LINK_RESOURCE_TYPE_MAPPING ,
44+ EVALUATION_INFERENCE_DEFAULT_THREADS ,
5045 EVALUATION_REPORT ,
5146 EVALUATION_REPORT_JSON ,
5247 EVALUATION_REPORT_MD ,
7671 ModelParams ,
7772)
7873from ads .aqua .evaluation .errors import EVALUATION_JOB_EXIT_CODE_MESSAGE
74+ from ads .aqua .ui import AquaContainerConfig
7975from ads .common .auth import default_signer
8076from ads .common .object_storage_details import ObjectStorageDetails
8177from ads .common .utils import get_console_link , get_files , get_log_links
9086from ads .jobs .builders .runtimes .base import Runtime
9187from ads .jobs .builders .runtimes .container_runtime import ContainerRuntime
9288from ads .model .datascience_model import DataScienceModel
89+ from ads .model .deployment import ModelDeploymentContainerRuntime
9390from ads .model .deployment .model_deployment import ModelDeployment
91+ from ads .model .generic_model import ModelDeploymentRuntimeType
9492from ads .model .model_metadata import (
9593 MetadataTaxonomyKeys ,
9694 ModelCustomMetadata ,
9997)
10098from ads .model .model_version_set import ModelVersionSet
10199from ads .telemetry import telemetry
100+ from oci .data_science .models import (
101+ JobRun ,
102+ Metadata ,
103+ UpdateModelDetails ,
104+ UpdateModelProvenanceDetails ,
105+ )
102106
103107
104108class AquaEvaluationApp (AquaApp ):
@@ -166,7 +170,6 @@ def create(
166170 f"Invalid evaluation source { create_aqua_evaluation_details .evaluation_source_id } . "
167171 "Specify either a model or model deployment id."
168172 )
169-
170173 evaluation_source = None
171174 if (
172175 DataScienceResource .MODEL_DEPLOYMENT
@@ -175,6 +178,33 @@ def create(
175178 evaluation_source = ModelDeployment .from_id (
176179 create_aqua_evaluation_details .evaluation_source_id
177180 )
181+ if evaluation_source .runtime .type == ModelDeploymentRuntimeType .CONTAINER :
182+ runtime = ModelDeploymentContainerRuntime .from_dict (
183+ evaluation_source .runtime .to_dict ()
184+ )
185+ container_config = AquaContainerConfig .from_container_index_json (
186+ enable_spec = True
187+ )
188+ for container in container_config .inference .values ():
189+ if container .name == runtime .image .split (":" )[0 ]:
190+ max_threads = container .spec .evaluation_configuration .evaluation_max_threads
191+ if (
192+ max_threads
193+ and create_aqua_evaluation_details .inference_max_threads
194+ and max_threads
195+ < create_aqua_evaluation_details .inference_max_threads
196+ ):
197+ raise AquaValueError (
198+ f"Invalid inference max threads. The maximum allowed value for { runtime .image } is { max_threads } ."
199+ )
200+ if not create_aqua_evaluation_details .inference_max_threads :
201+ create_aqua_evaluation_details .inference_max_threads = container .spec .evaluation_configuration .evaluation_default_threads
202+ break
203+ if not create_aqua_evaluation_details .inference_max_threads :
204+ create_aqua_evaluation_details .inference_max_threads = (
205+ EVALUATION_INFERENCE_DEFAULT_THREADS
206+ )
207+
178208 elif (
179209 DataScienceResource .MODEL
180210 in create_aqua_evaluation_details .evaluation_source_id
@@ -1197,7 +1227,7 @@ def _delete_job_and_model(job, model):
11971227 f"Exception message: { ex } "
11981228 )
11991229
1200- def load_evaluation_config (self , eval_id ):
1230+ def load_evaluation_config (self , _ ):
12011231 """Loads evaluation config."""
12021232 return {
12031233 "model_params" : {
0 commit comments