oracle-ads 2.11.18__py3-none-any.whl → 2.11.19__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.
@@ -1,12 +1,15 @@
1
1
  #!/usr/bin/env python
2
- # -*- coding: utf-8 -*-
3
2
  # Copyright (c) 2024 Oracle and/or its affiliates.
4
3
  # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
5
4
  from dataclasses import fields
5
+ from datetime import datetime, timedelta
6
6
  from typing import Dict, Optional
7
7
 
8
+ from cachetools import TTLCache, cached
8
9
  from tornado.web import HTTPError
9
10
 
11
+ from ads.aqua import ODSC_MODEL_COMPARTMENT_OCID
12
+ from ads.aqua.common.utils import fetch_service_compartment
10
13
  from ads.aqua.extension.errors import Errors
11
14
 
12
15
 
@@ -21,3 +24,11 @@ def validate_function_parameters(data_class, input_data: Dict):
21
24
  raise HTTPError(
22
25
  400, Errors.MISSING_REQUIRED_PARAMETER.format(required_parameter)
23
26
  )
27
+
28
+
29
+ @cached(cache=TTLCache(maxsize=1, ttl=timedelta(minutes=1), timer=datetime.now))
30
+ def ui_compatability_check():
31
+ """This method caches the service compartment OCID details that is set by either the environment variable or if
32
+ fetched from the configuration. The cached result is returned when multiple calls are made in quick succession
33
+ from the UI to avoid multiple config file loads."""
34
+ return ODSC_MODEL_COMPARTMENT_OCID or fetch_service_compartment()
@@ -146,7 +146,7 @@ class AquaDeploymentApp(AquaApp):
146
146
  env_var : dict, optional
147
147
  Environment variable for the deployment, by default None.
148
148
  container_family: str
149
- The image family of model deployment container runtime. Required for unverified Aqua models.
149
+ The image family of model deployment container runtime.
150
150
  memory_in_gbs: float
151
151
  The memory in gbs for the shape selected.
152
152
  ocpus: float
@@ -230,41 +230,14 @@ class AquaDeploymentApp(AquaApp):
230
230
 
231
231
  env_var.update({"FT_MODEL": f"{fine_tune_output_path}"})
232
232
 
233
- is_custom_container = False
234
- try:
235
- container_type_key = aqua_model.custom_metadata_list.get(
236
- AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME
237
- ).value
238
- except ValueError as err:
239
- message = (
240
- f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
241
- f"for model {aqua_model.id}."
242
- )
243
- logger.debug(message)
244
- if not container_family:
245
- raise AquaValueError(
246
- f"{message}. For unverified Aqua models, container_family parameter should be "
247
- f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
248
- ) from err
249
- container_type_key = container_family
250
- try:
251
- # Check if the container override flag is set. If set, then the user has chosen custom image
252
- if aqua_model.custom_metadata_list.get(
253
- AQUA_DEPLOYMENT_CONTAINER_OVERRIDE_FLAG_METADATA_NAME
254
- ).value:
255
- is_custom_container = True
256
- except Exception:
257
- pass
233
+ container_type_key = self._get_container_type_key(
234
+ model=aqua_model,
235
+ container_family=container_family
236
+ )
258
237
 
259
238
  # fetch image name from config
260
- # If the image is of type custom, then `container_type_key` is the inference image
261
- container_image = (
262
- get_container_image(
263
- container_type=container_type_key,
264
- )
265
- if not is_custom_container
266
- else container_type_key
267
- )
239
+ container_image = get_container_image(container_type=container_type_key)
240
+
268
241
  logging.info(
269
242
  f"Aqua Image used for deploying {aqua_model.id} : {container_image}"
270
243
  )
@@ -433,6 +406,26 @@ class AquaDeploymentApp(AquaApp):
433
406
  deployment.dsc_model_deployment, self.region
434
407
  )
435
408
 
409
+ @staticmethod
410
+ def _get_container_type_key(model: DataScienceModel, container_family: str) -> str:
411
+ container_type_key = UNKNOWN
412
+ if container_family:
413
+ container_type_key = container_family
414
+ else:
415
+ try:
416
+ container_type_key = model.custom_metadata_list.get(
417
+ AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME
418
+ ).value
419
+ except ValueError as err:
420
+ raise AquaValueError(
421
+ f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
422
+ f"for model {model.id}. For unverified Aqua models, {AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} should be"
423
+ f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
424
+ ) from err
425
+
426
+ return container_type_key
427
+
428
+
436
429
  @telemetry(entry_point="plugin=deployment&action=list", name="aqua")
437
430
  def list(self, **kwargs) -> List["AquaDeployment"]:
438
431
  """List Aqua model deployments in a given compartment and under certain project.
@@ -672,23 +665,10 @@ class AquaDeploymentApp(AquaApp):
672
665
  restricted_params = []
673
666
  if params:
674
667
  model = DataScienceModel.from_id(model_id)
675
- try:
676
- container_type_key = model.custom_metadata_list.get(
677
- AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME
678
- ).value
679
- except ValueError as err:
680
- message = (
681
- f"{AQUA_DEPLOYMENT_CONTAINER_METADATA_NAME} key is not available in the custom metadata field "
682
- f"for model {model_id}."
683
- )
684
- logger.debug(message)
685
-
686
- if not container_family:
687
- raise AquaValueError(
688
- f"{message}. For unverified Aqua models, container_family parameter should be "
689
- f"set and value can be one of {', '.join(InferenceContainerTypeFamily.values())}."
690
- ) from err
691
- container_type_key = container_family
668
+ container_type_key = self._get_container_type_key(
669
+ model=model,
670
+ container_family=container_family
671
+ )
692
672
 
693
673
  container_config = get_container_config()
694
674
  container_spec = container_config.get(ContainerSpec.CONTAINER_SPEC, {}).get(
ads/aqua/ui.py CHANGED
@@ -84,9 +84,6 @@ class AquaContainerConfigSpec(DataClassSerializable):
84
84
  health_check_port: str = None
85
85
  env_vars: List[dict] = None
86
86
  restricted_params: List[str] = None
87
- evaluation_configuration: AquaContainerEvaluationConfig = field(
88
- default_factory=AquaContainerEvaluationConfig
89
- )
90
87
 
91
88
 
92
89
  @dataclass(repr=False)
@@ -184,32 +181,37 @@ class AquaContainerConfig(DataClassSerializable):
184
181
  family=container_type,
185
182
  platforms=platforms,
186
183
  model_formats=model_formats,
187
- spec=AquaContainerConfigSpec(
188
- cli_param=container_spec.get(ContainerSpec.CLI_PARM, ""),
189
- server_port=container_spec.get(
190
- ContainerSpec.SERVER_PORT, ""
191
- ),
192
- health_check_port=container_spec.get(
193
- ContainerSpec.HEALTH_CHECK_PORT, ""
194
- ),
195
- env_vars=container_spec.get(ContainerSpec.ENV_VARS, []),
196
- restricted_params=container_spec.get(
197
- ContainerSpec.RESTRICTED_PARAMS, []
198
- ),
199
- evaluation_configuration=AquaContainerEvaluationConfig.from_config(
200
- container_spec.get(
201
- ContainerSpec.EVALUATION_CONFIGURATION, {}
202
- )
203
- ),
204
- )
205
- if container_spec
206
- else None,
184
+ spec=(
185
+ AquaContainerConfigSpec(
186
+ cli_param=container_spec.get(
187
+ ContainerSpec.CLI_PARM, ""
188
+ ),
189
+ server_port=container_spec.get(
190
+ ContainerSpec.SERVER_PORT, ""
191
+ ),
192
+ health_check_port=container_spec.get(
193
+ ContainerSpec.HEALTH_CHECK_PORT, ""
194
+ ),
195
+ env_vars=container_spec.get(ContainerSpec.ENV_VARS, []),
196
+ restricted_params=container_spec.get(
197
+ ContainerSpec.RESTRICTED_PARAMS, []
198
+ ),
199
+ )
200
+ if container_spec
201
+ else None
202
+ ),
207
203
  )
208
204
  if container.get("type") == "inference":
209
205
  inference_items[container_type] = container_item
210
- elif container_type == "odsc-llm-fine-tuning":
206
+ elif (
207
+ container.get("type") == "fine-tune"
208
+ or container_type == "odsc-llm-fine-tuning"
209
+ ):
211
210
  finetune_items[container_type] = container_item
212
- elif container_type == "odsc-llm-evaluate":
211
+ elif (
212
+ container.get("type") == "evaluate"
213
+ or container_type == "odsc-llm-evaluate"
214
+ ):
213
215
  evaluate_items[container_type] = container_item
214
216
 
215
217
  return AquaContainerConfig(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oracle_ads
3
- Version: 2.11.18
3
+ Version: 2.11.19
4
4
  Summary: Oracle Accelerated Data Science SDK
5
5
  Keywords: Oracle Cloud Infrastructure,OCI,Machine Learning,ML,Artificial Intelligence,AI,Data Science,Cloud,Oracle
6
6
  Author: Oracle Data Science
@@ -33,6 +33,7 @@ Requires-Dist: requests
33
33
  Requires-Dist: scikit-learn>=1.0
34
34
  Requires-Dist: tabulate>=0.8.9
35
35
  Requires-Dist: tqdm>=4.59.0
36
+ Requires-Dist: pydantic>=2.6.3
36
37
  Requires-Dist: oracle_ads[opctl] ; extra == "anomaly"
37
38
  Requires-Dist: autots ; extra == "anomaly"
38
39
  Requires-Dist: oracledb ; extra == "anomaly"
@@ -4,43 +4,49 @@ ads/config.py,sha256=t_zDKftVYOLPP-t8IcnzEbtmMRX-6a8QKY9E_SnqA8M,8163
4
4
  ads/aqua/__init__.py,sha256=IUKZAsxUGVicsyeSwsGwK6rAUJ1vIUW9ywduA3U22xc,1015
5
5
  ads/aqua/app.py,sha256=BQuQ9RERU0rKmn3N3xicKzYaXOd7xBwX1aVuVLNgw98,11993
6
6
  ads/aqua/cli.py,sha256=W-0kswzRDEilqHyw5GSMOrARgvOyPRtkEtpy54ew0Jo,3907
7
- ads/aqua/constants.py,sha256=4CqHFsxyCYfEUlYbzRVFnR0I5tw18iKlCDXHJUXeJxU,2869
7
+ ads/aqua/constants.py,sha256=M2bbrIlq9z-DTq8stsv1OHNfLAxwhTA3X-cdtQ8uGcc,2868
8
8
  ads/aqua/data.py,sha256=7T7kdHGnEH6FXL_7jv_Da0CjEWXfjQZTFkaZWQikis4,932
9
- ads/aqua/ui.py,sha256=vLQSBcrQ-7zyPJIlpGEHYaz2sf_90lsadOxq6v80tjg,25227
9
+ ads/aqua/ui.py,sha256=2hH9YmyJfDd70qV2EQyx0HFuPY5KSMH-WyCKRBt3qGU,25211
10
10
  ads/aqua/common/__init__.py,sha256=rZrmh1nho40OCeabXCNWtze-mXi-PGKetcZdxZSn3_0,204
11
11
  ads/aqua/common/decorator.py,sha256=XFS7tYGkN4dVzmB1wTYiJk1XqJ-VLhvzfZjExiQClgc,3640
12
12
  ads/aqua/common/entities.py,sha256=UsP8CczuifLOLr_gAhulh8VmgGSFir3rli1MMQ-CZhk,537
13
13
  ads/aqua/common/enums.py,sha256=hJABLhORCnAkZ6OxsjxhhkmZQQcMzfBzOQkAZLgxNXs,2603
14
14
  ads/aqua/common/errors.py,sha256=Ev2xbaqkDqeCYDx4ZgOKOoM0sXsOXP3GIV6N1lhIUxM,3085
15
- ads/aqua/common/utils.py,sha256=qAwIBdTQ5abd0b2Q68nzUJ0FuijGniYS3NcoMoB_lAI,34370
16
- ads/aqua/config/config.py,sha256=tOGyuXlBRw4b4HkJgc1T3y1umqu_ME_-ImXX3pt_aB0,782
15
+ ads/aqua/common/utils.py,sha256=MM-RZVpGNXm9KHmju1UZl7UjnbvQZjUzykcTISGsF4Y,34919
16
+ ads/aqua/config/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
17
+ ads/aqua/config/config.py,sha256=YIbd_9yP5kZd3G2q4q0TM6hzMdJSQ8BHPRAFE_5Xk3s,1548
17
18
  ads/aqua/config/deployment_config_defaults.json,sha256=1fzb8EZOcFMjwktes40qgetKvdmUtEGCl4Jp4eb8tJg,665
18
19
  ads/aqua/config/resource_limit_names.json,sha256=0ecGLCLxll9qt3E7fVZPtzpurqe1PGdTk0Rjn_cWh8k,235
20
+ ads/aqua/config/evaluation/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
21
+ ads/aqua/config/evaluation/evaluation_service_config.py,sha256=JAaK_2dSVyoGv22PkjGgzMbt9WLBaZAOlk02yY3590k,8735
22
+ ads/aqua/config/evaluation/evaluation_service_model_config.py,sha256=ITs_RBCynWuygjNdcUD7e2BLbPyPP3UozryEWlnju9s,280
23
+ ads/aqua/config/utils/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
24
+ ads/aqua/config/utils/serializer.py,sha256=RTyeFw2fDxmcTsERRd8AJDuyOuRQckL9dDLk8HFdxxc,11347
19
25
  ads/aqua/dummy_data/icon.txt,sha256=wlB79r3A4mUBbrK5yVVXrNEEKpvfZiwBx2sKlj7wzA4,6326
20
26
  ads/aqua/dummy_data/oci_model_deployments.json,sha256=xSBj6CEbFHHk9Ytgfu-lOgqWOss2DgSaK6tk2vgziEI,1939
21
27
  ads/aqua/dummy_data/oci_models.json,sha256=mxUU8o3plmAFfr06fQmIQuiGe2qFFBlUB7QNPUNB1cE,36997
22
28
  ads/aqua/dummy_data/readme.md,sha256=AlBPt0HBSOFA5HbYVsFsdTm-BC3R5NRpcKrTxdjEnlI,1256
23
29
  ads/aqua/evaluation/__init__.py,sha256=Fd7WL7MpQ1FtJjlftMY2KHli5cz1wr5MDu3hGmV89a0,298
24
30
  ads/aqua/evaluation/constants.py,sha256=GvcXvPIw-VDKw4a8WNKs36uWdT-f7VJrWSpnnRnthGg,1533
25
- ads/aqua/evaluation/entities.py,sha256=h6aEskUgJcR_360kNxMU13qLEg_9MrZQQ73dJJZ8IAY,5675
31
+ ads/aqua/evaluation/entities.py,sha256=mlu_ohjNPxxyDh4s_dFFxXJqKrwutAn48Wqr_odcT2M,5713
26
32
  ads/aqua/evaluation/errors.py,sha256=qzR63YEIA8haCh4HcBHFFm7j4g6jWDfGszqrPkXx9zQ,4564
27
- ads/aqua/evaluation/evaluation.py,sha256=lc6CpOZ-f9lZfGG32gA4Ut0oJnxGGzRRYkuM0viW7wA,60919
33
+ ads/aqua/evaluation/evaluation.py,sha256=LoEBUHwJwMa-seLa8d4qzPRMic_4AjeYcxMbftkoXa0,59885
28
34
  ads/aqua/extension/__init__.py,sha256=mRArjU6UZpZYVr0qHSSkPteA_CKcCZIczOFaK421m9o,1453
29
35
  ads/aqua/extension/aqua_ws_msg_handler.py,sha256=PcRhBqGpq5aOPP0ibhaKfmkA8ajimldsvJC32o9JeTw,3291
30
36
  ads/aqua/extension/base_handler.py,sha256=MuVxsJG66NdatL-Hh99UD3VQOQw1ir-q2YBajwh9cJk,5132
31
- ads/aqua/extension/common_handler.py,sha256=nU_1lgFhXHHMX7DPgm1yOVx-wWggCMWEF1l4Qoi6BJw,4250
32
- ads/aqua/extension/common_ws_msg_handler.py,sha256=bNtuCpCD5ZIULYqs1ANsYgYnu81f9nZGb2NeTR5gCmw,2280
37
+ ads/aqua/extension/common_handler.py,sha256=Oz3riHDy5pFfbArLge5iaaRoK8PEAnkBvhqqVGbUsvE,4196
38
+ ads/aqua/extension/common_ws_msg_handler.py,sha256=pMX79tmJKTKog684o6vuwZkAD47l8SxtRx5TNn8se7k,2230
33
39
  ads/aqua/extension/deployment_handler.py,sha256=8MafpUaN-1gqyIksJ9EO55mbdGV57IWf1GmJ-zs9h8c,9475
34
40
  ads/aqua/extension/deployment_ws_msg_handler.py,sha256=JX3ZHRtscrflSxT7ZTEEI_p_owtk3m5FZq3QXE96AGY,2013
35
41
  ads/aqua/extension/errors.py,sha256=i37EnRzxGgvxzUNoyEORzHYmB296DGOUb6pm7VwEyTU,451
36
- ads/aqua/extension/evaluation_handler.py,sha256=Q8l_Mnzp1NOx6N9vXpUWN2kGKdICSRR7dPvm-dNqJBE,4464
42
+ ads/aqua/extension/evaluation_handler.py,sha256=RT2W7WDtxNIT0uirLfTcDlmTPYCuMuWRhiDxYZYliZs,4542
37
43
  ads/aqua/extension/evaluation_ws_msg_handler.py,sha256=dv0iwOSTxYj1kQ1rPEoDmGgFBzLUCLXq5h7rpmY2T1M,2098
38
44
  ads/aqua/extension/finetune_handler.py,sha256=ZCdXoEYzfViZfJsk0solCB6HQkg0skG1jFfqq1zF-vw,3312
39
- ads/aqua/extension/model_handler.py,sha256=j5YzZ6hkLaTPbUZd1ax8ts1kF1NTvK3glTBM29gZr-o,8428
45
+ ads/aqua/extension/model_handler.py,sha256=usiyLPaJJLAjtDhyFCNseaT3AQelZkBkLwoCno4Uo1o,9079
40
46
  ads/aqua/extension/models_ws_msg_handler.py,sha256=3CPfzWl1xfrE2Dpn_WYP9zY0kY5zlsAE8tU_6Y2-i18,1801
41
47
  ads/aqua/extension/ui_handler.py,sha256=IYhtyL4oE8zlxe-kfbvWSmFsayyXaZZZButDdxM3hcA,9850
42
48
  ads/aqua/extension/ui_websocket_handler.py,sha256=oLFjaDrqkSERbhExdvxjLJX0oRcP-DVJ_aWn0qy0uvo,5084
43
- ads/aqua/extension/utils.py,sha256=3pUTKoy-mXuLl7cGF0gFID32_RCCADCb5UlaMs0QWqs,840
49
+ ads/aqua/extension/utils.py,sha256=UKafTX6tN6ObOkWCLy6c3y_cNmUHfD64PtIaR5B7Sl0,1476
44
50
  ads/aqua/extension/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
51
  ads/aqua/extension/models/ws_models.py,sha256=-m6IJRS-4I6AMLDwgu19XdrvHyOStuBx9t4B0LgS07g,3348
46
52
  ads/aqua/finetuning/__init__.py,sha256=vwYT5PluMR0mDQwVIavn_8Icms7LmvfV_FOrJ8fJx8I,296
@@ -54,7 +60,7 @@ ads/aqua/model/enums.py,sha256=t8GbK2nblIPm3gClR8W31RmbtTuqpoSzoN4W3JfD6AI,1004
54
60
  ads/aqua/model/model.py,sha256=gMoELf_HjuUYYcW05XfNRghXk3IhBP0PPaQDgP_-QUA,54277
55
61
  ads/aqua/modeldeployment/__init__.py,sha256=RJCfU1yazv3hVWi5rS08QVLTpTwZLnlC8wU8diwFjnM,391
56
62
  ads/aqua/modeldeployment/constants.py,sha256=lJF77zwxmlECljDYjwFAMprAUR_zctZHmawiP-4alLg,296
57
- ads/aqua/modeldeployment/deployment.py,sha256=srpf-U9Nm7_RUT_jvVPUxbRFFpfC9RjogMHI-vFsJ4E,29020
63
+ ads/aqua/modeldeployment/deployment.py,sha256=zrzC0i4H25M50dqrYF88ZyHUj3N6WjxQdcRLHLDgyA4,27976
58
64
  ads/aqua/modeldeployment/entities.py,sha256=QgiLxdWfoNg-u4P7DqauZh9oQQ-WjSs37s8WR84m164,4744
59
65
  ads/aqua/modeldeployment/inference.py,sha256=JPqzbHJoM-PpIU_Ft9lHudO9_1vFr7OPQ2GHjPoAufU,2142
60
66
  ads/aqua/training/__init__.py,sha256=w2DNWltXtASQgbrHyvKo0gMs5_chZoG-CSDMI4qe7i0,202
@@ -805,8 +811,8 @@ ads/type_discovery/unknown_detector.py,sha256=yZuYQReO7PUyoWZE7onhhtYaOg6088wf1y
805
811
  ads/type_discovery/zipcode_detector.py,sha256=3AlETg_ZF4FT0u914WXvTT3F3Z6Vf51WiIt34yQMRbw,1421
806
812
  ads/vault/__init__.py,sha256=x9tMdDAOdF5iDHk9u2di_K-ze5Nq068x25EWOBoWwqY,245
807
813
  ads/vault/vault.py,sha256=hFBkpYE-Hfmzu1L0sQwUfYcGxpWmgG18JPndRl0NOXI,8624
808
- oracle_ads-2.11.18.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
809
- oracle_ads-2.11.18.dist-info/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
810
- oracle_ads-2.11.18.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
811
- oracle_ads-2.11.18.dist-info/METADATA,sha256=iFxKKVAC8wzz6V79zwLCYZHHPx741I_hEsdXY4fKjpo,16037
812
- oracle_ads-2.11.18.dist-info/RECORD,,
814
+ oracle_ads-2.11.19.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
815
+ oracle_ads-2.11.19.dist-info/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
816
+ oracle_ads-2.11.19.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
817
+ oracle_ads-2.11.19.dist-info/METADATA,sha256=R8jk8MKEE5pas8WxbiX_VJ02VbhhojP_R83HgtIKUmE,16068
818
+ oracle_ads-2.11.19.dist-info/RECORD,,