oracle-ads 2.13.15__py3-none-any.whl → 2.13.17rc0__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.
ads/aqua/client/client.py CHANGED
@@ -582,6 +582,19 @@ class Client(BaseClient):
582
582
  payload = {**(payload or {}), "input": input}
583
583
  return self._request(payload=payload, headers=headers)
584
584
 
585
+ def fetch_data(self) -> Union[Dict[str, Any], Iterator[Mapping[str, Any]]]:
586
+ """Fetch Data in json format by sending a request to the endpoint.
587
+
588
+ Args:
589
+
590
+ Returns:
591
+ Union[Dict[str, Any], Iterator[Mapping[str, Any]]]: The server's response, typically including the data in JSON format.
592
+ """
593
+ # headers = {"Content-Type", "application/json"}
594
+ response = self._client.get(self.endpoint)
595
+ json_response = response.json()
596
+ return json_response
597
+
585
598
 
586
599
  class AsyncClient(BaseClient):
587
600
  """
@@ -191,21 +191,28 @@ class AquaContainerConfig(Serializable):
191
191
  additional_configurations.get("modelFormats")
192
192
  )
193
193
 
194
- # Parse environment variables from `additional_configurations`.
195
- # Only keys present in the configuration will be added to the result.
196
- config_keys = {
197
- "MODEL_DEPLOY_PREDICT_ENDPOINT": UNKNOWN,
198
- "MODEL_DEPLOY_HEALTH_ENDPOINT": UNKNOWN,
199
- "PORT": UNKNOWN,
200
- "HEALTH_CHECK_PORT": UNKNOWN,
201
- "VLLM_USE_V1": UNKNOWN,
202
- }
203
-
204
- env_vars = [
205
- {key: additional_configurations.get(key, default)}
206
- for key, default in config_keys.items()
207
- if key in additional_configurations
208
- ]
194
+ # TODO: Remove the else condition once SMC env variable config is updated everywhere
195
+ if additional_configurations.get("env_vars", None):
196
+ env_vars_dict = json.loads(
197
+ additional_configurations.get("env_vars") or "{}"
198
+ )
199
+ env_vars = [
200
+ {key: str(value)} for key, value in env_vars_dict.items()
201
+ ]
202
+ else:
203
+ config_keys = {
204
+ "MODEL_DEPLOY_PREDICT_ENDPOINT": UNKNOWN,
205
+ "MODEL_DEPLOY_HEALTH_ENDPOINT": UNKNOWN,
206
+ "PORT": UNKNOWN,
207
+ "HEALTH_CHECK_PORT": UNKNOWN,
208
+ "VLLM_USE_V1": UNKNOWN,
209
+ }
210
+
211
+ env_vars = [
212
+ {key: additional_configurations.get(key, default)}
213
+ for key, default in config_keys.items()
214
+ if key in additional_configurations
215
+ ]
209
216
 
210
217
  # Build container spec
211
218
  container_item.spec = AquaContainerConfigSpec(
@@ -373,6 +373,37 @@ class AquaDeploymentParamsHandler(AquaAPIhandler):
373
373
  )
374
374
 
375
375
 
376
+ class AquaModelListHandler(AquaAPIhandler):
377
+ """Handler for Aqua model list params REST APIs.
378
+
379
+ Methods
380
+ -------
381
+ get(self, *args, **kwargs)
382
+ Validates parameters for the given model id.
383
+ """
384
+
385
+ @handle_exceptions
386
+ def get(self, model_deployment_id):
387
+ """
388
+ Handles get model list for the Active Model Deployment
389
+ Raises
390
+ ------
391
+ HTTPError
392
+ Raises HTTPError if inputs are missing or are invalid
393
+ """
394
+
395
+ self.set_header("Content-Type", "application/json")
396
+ endpoint: str = ""
397
+ model_deployment = AquaDeploymentApp().get(model_deployment_id)
398
+ endpoint = model_deployment.endpoint.rstrip("/") + "/predict/v1/models"
399
+ aqua_client = Client(endpoint=endpoint)
400
+ try:
401
+ list_model_result = aqua_client.fetch_data()
402
+ return self.finish(list_model_result)
403
+ except Exception as ex:
404
+ raise HTTPError(500, str(ex))
405
+
406
+
376
407
  __handlers__ = [
377
408
  ("deployments/?([^/]*)/params", AquaDeploymentParamsHandler),
378
409
  ("deployments/config/?([^/]*)", AquaDeploymentHandler),
@@ -381,4 +412,5 @@ __handlers__ = [
381
412
  ("deployments/?([^/]*)/activate", AquaDeploymentHandler),
382
413
  ("deployments/?([^/]*)/deactivate", AquaDeploymentHandler),
383
414
  ("inference/stream/?([^/]*)", AquaDeploymentStreamingInferenceHandler),
415
+ ("deployments/models/list/?([^/]*)", AquaModelListHandler),
384
416
  ]
ads/aqua/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "aqua": "1.0.7"
2
+ "aqua": "1.0.7a"
3
3
  }
@@ -24,8 +24,8 @@ class AutoMLXOperatorModel(AnomalyOperatorBaseModel):
24
24
  @runtime_dependency(
25
25
  module="automlx",
26
26
  err_msg=(
27
- "Please run `pip3 install oracle-automlx>=23.4.1` and "
28
- "`pip3 install oracle-automlx[classic]>=23.4.1` "
27
+ "Please run `pip3 install oracle-automlx>=25.3.0` and "
28
+ "`pip3 install oracle-automlx[classic]>=25.3.0` "
29
29
  "to install the required dependencies for automlx."
30
30
  ),
31
31
  )
@@ -76,7 +76,7 @@ class ForecastOutputColumns(ExtendedEnum):
76
76
 
77
77
  AUTOMLX_METRIC_MAP = {
78
78
  "smape": "neg_sym_mean_abs_percent_error",
79
- "mape": "neg_sym_mean_abs_percent_error",
79
+ "mape": "neg_mean_abs_percent_error",
80
80
  "mase": "neg_mean_abs_scaled_error",
81
81
  "mae": "neg_mean_absolute_error",
82
82
  "mse": "neg_mean_squared_error",
@@ -28,7 +28,9 @@ from .forecast_datasets import ForecastDatasets, ForecastOutput
28
28
 
29
29
  logging.getLogger("report_creator").setLevel(logging.WARNING)
30
30
  AUTOMLX_N_ALGOS_TUNED = 4
31
- AUTOMLX_DEFAULT_SCORE_METRIC = "neg_sym_mean_abs_percent_error"
31
+ AUTOMLX_DEFAULT_SCORE_METRIC = ['neg_sym_mean_abs_percent_error',
32
+ 'neg_mean_abs_percent_error',
33
+ 'neg_root_mean_squared_error']
32
34
 
33
35
 
34
36
  class AutoMLXOperatorModel(ForecastOperatorBaseModel):
@@ -45,10 +47,13 @@ class AutoMLXOperatorModel(ForecastOperatorBaseModel):
45
47
  model_kwargs_cleaned["n_algos_tuned"] = model_kwargs_cleaned.get(
46
48
  "n_algos_tuned", AUTOMLX_N_ALGOS_TUNED
47
49
  )
48
- model_kwargs_cleaned["score_metric"] = AUTOMLX_METRIC_MAP.get(
49
- self.spec.metric,
50
- model_kwargs_cleaned.get("score_metric", AUTOMLX_DEFAULT_SCORE_METRIC),
51
- )
50
+ metric_to_optimize = AUTOMLX_METRIC_MAP.get(self.spec.metric)
51
+ model_kwargs_cleaned["score_metric"] = AUTOMLX_DEFAULT_SCORE_METRIC
52
+ # The first score metric in the list will be the one for which the pipeline optimizes
53
+ if metric_to_optimize is not None:
54
+ model_kwargs_cleaned["score_metric"].remove(metric_to_optimize)
55
+ model_kwargs_cleaned["score_metric"].insert(0, metric_to_optimize)
56
+
52
57
  model_kwargs_cleaned.pop("task", None)
53
58
  time_budget = model_kwargs_cleaned.pop("time_budget", -1)
54
59
  model_kwargs_cleaned["preprocessing"] = (
@@ -70,7 +75,7 @@ class AutoMLXOperatorModel(ForecastOperatorBaseModel):
70
75
  @runtime_dependency(
71
76
  module="automlx",
72
77
  err_msg=(
73
- "Please run `pip3 install oracle-automlx[forecasting]>=25.1.1` "
78
+ "Please run `pip3 install oracle-automlx[forecasting]>=25.3.0` "
74
79
  "to install the required dependencies for automlx."
75
80
  ),
76
81
  )
@@ -163,7 +168,7 @@ class AutoMLXOperatorModel(ForecastOperatorBaseModel):
163
168
  self.models[s_id] = {}
164
169
  self.models[s_id]["model"] = model
165
170
  self.models[s_id]["le"] = self.le[s_id]
166
- self.models[s_id]["score"] = self.get_validation_score_and_metric(model)
171
+ self.models[s_id]["score"] = self.get_all_metrics(model)
167
172
 
168
173
  # In case of Naive model, model.forecast function call does not return confidence intervals.
169
174
  if f"{target}_ci_upper" not in summary_frame:
@@ -518,26 +523,27 @@ class AutoMLXOperatorModel(ForecastOperatorBaseModel):
518
523
  )
519
524
  logger.debug(f"Full Traceback: {traceback.format_exc()}")
520
525
 
521
- def get_validation_score_and_metric(self, model):
526
+ def get_all_metrics(self, model):
522
527
  trials = model.completed_trials_summary_
523
528
  model_params = model.selected_model_params_
524
529
  if len(trials) > 0:
525
- score_col = [col for col in trials.columns if "Score" in col][0]
526
- validation_score = trials[trials.Hyperparameters == model_params][
527
- score_col
530
+ all_metrics = trials[trials.Hyperparameters == model_params][
531
+ "All Metrics"
528
532
  ].iloc[0]
529
533
  else:
530
- validation_score = 0
531
- return -1 * validation_score
534
+ all_metrics = {}
535
+ reverse_map = {v: k for k, v in AUTOMLX_METRIC_MAP.items()}
536
+ all_metrics = {reverse_map[key]: -1 * value for key, value in all_metrics.items() if key in reverse_map}
537
+ return all_metrics
532
538
 
533
539
  def generate_train_metrics(self) -> pd.DataFrame:
534
540
  """
535
- Generate Training Metrics when fitted data is not available.
541
+ Generate Training Metrics for Automlx
536
542
  """
537
543
  total_metrics = pd.DataFrame()
538
544
  for s_id in self.forecast_output.list_series_ids():
539
545
  try:
540
- metrics = {self.spec.metric.upper(): self.models[s_id]["score"]}
546
+ metrics = self.models[s_id]["score"]
541
547
  metrics_df = pd.DataFrame.from_dict(
542
548
  metrics, orient="index", columns=[s_id]
543
549
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oracle_ads
3
- Version: 2.13.15
3
+ Version: 2.13.17rc0
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,GenAI,Generative AI,Forecast,Anomaly,Document Understanding,Anomaly Detection
6
6
  Author: Oracle Data Science
@@ -7,9 +7,9 @@ ads/aqua/cli.py,sha256=cmNtLVktrT350gsqY2k2zH6GszFdAVmJwNuU5QZljKE,3988
7
7
  ads/aqua/constants.py,sha256=gEVXaXmVdKzIkZ7Q-7Zn_wGpOK0QPFBKnHNIJB12qjs,5132
8
8
  ads/aqua/data.py,sha256=HfxLfKiNiPJecMQy0JAztUsT3IdZilHHHOrCJnjZMc4,408
9
9
  ads/aqua/ui.py,sha256=PYyr46ewx9Qygcsv6BryUF6rLHU0t5YjUgKSb1uZK2Y,20971
10
- ads/aqua/version.json,sha256=QV-m8hKJzRfMbqOivBoZssnG4rgVMCriqen5YBCaGhI,22
10
+ ads/aqua/version.json,sha256=f1syT59npva9jfyKmhgWI93kcoiyYabnkAG4Lqr-4cs,23
11
11
  ads/aqua/client/__init__.py,sha256=-46EcKQjnWEXxTt85bQzXjA5xsfoBXIGm_syKFlVL1c,178
12
- ads/aqua/client/client.py,sha256=_voMWUG6bnNDkgYjP6RHrBTtN7qJ9saBWJw7Vt3r7E8,32211
12
+ ads/aqua/client/client.py,sha256=PzbIscVclkVwvfQWyKyRZjRCcT3cXE6bdSkMaMQMomI,32721
13
13
  ads/aqua/client/openai_client.py,sha256=JxSmjaeBb7jG8ARH6LdmsWGip467V0y6_mo2YwiiZz4,12921
14
14
  ads/aqua/common/__init__.py,sha256=rZrmh1nho40OCeabXCNWtze-mXi-PGKetcZdxZSn3_0,204
15
15
  ads/aqua/common/decorator.py,sha256=JEN6Cy4DYgQbmIR3ShCjTuBMCnilDxq7jkYMJse1rcM,4112
@@ -18,7 +18,7 @@ ads/aqua/common/enums.py,sha256=fBJczGd4Trv9Lf0O4_TAEDWYkp5ou9oGeKhxdSW2-84,4274
18
18
  ads/aqua/common/errors.py,sha256=QONm-2jKBg8AjgOKXm6x-arAV1KIW9pdhfNN1Ys21Wo,3044
19
19
  ads/aqua/common/utils.py,sha256=foFpWvtoqlTABlV5vLmWMCmMQzJiHOsczSc_DP9bY0E,43071
20
20
  ads/aqua/config/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
21
- ads/aqua/config/container_config.py,sha256=jBz9DRGsCaFXQWgyBoPUXQJbukyl1Fuac7m3tTI7ugo,9528
21
+ ads/aqua/config/container_config.py,sha256=2N65TZNpqlpKJ9I4U9_v9bB_MoP4xsmEo8V4W1iZj9M,9882
22
22
  ads/aqua/config/evaluation/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
23
23
  ads/aqua/config/evaluation/evaluation_service_config.py,sha256=NuaQoLVYPHJiWjGfq1-F6-DK0DyOAGjVS87K1SXFVvw,4497
24
24
  ads/aqua/config/utils/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
@@ -37,7 +37,7 @@ ads/aqua/extension/aqua_ws_msg_handler.py,sha256=VDa9vQOsYKX6flsUkDEx6nl-5MFCH5R
37
37
  ads/aqua/extension/base_handler.py,sha256=W-eBXn9XYypCZuY84e9cSKRuY0CDyuou_znV6Yn9YzU,3047
38
38
  ads/aqua/extension/common_handler.py,sha256=LDcs2ELUkbUd9eS9napq06_NDMC0-1fMkX5KmlYynJc,5403
39
39
  ads/aqua/extension/common_ws_msg_handler.py,sha256=PAy98ZsM8VAXcy11ahsuam3QUDdmE-Hz4F5pISVkNHY,1242
40
- ads/aqua/extension/deployment_handler.py,sha256=_E1nRoL6g2KQC0Ktji_-SEcgTu6VH7eZ7Tx0p0F0NTM,14125
40
+ ads/aqua/extension/deployment_handler.py,sha256=u9ks3qaaJpeKWk_Na0NkBGg2I4ZGzVcnmNeyufKhm1w,15152
41
41
  ads/aqua/extension/deployment_ws_msg_handler.py,sha256=JX3ZHRtscrflSxT7ZTEEI_p_owtk3m5FZq3QXE96AGY,2013
42
42
  ads/aqua/extension/errors.py,sha256=4LbzZdCoDEtOcrVI-1dgiza4oAYGof6w5LbN6HqroYk,1396
43
43
  ads/aqua/extension/evaluation_handler.py,sha256=fJH73fa0xmkEiP8SxKL4A4dJgj-NoL3z_G-w_WW2zJs,4353
@@ -688,7 +688,7 @@ ads/opctl/operator/lowcode/anomaly/utils.py,sha256=szOgGp6ssrE6yk8LA69w2Kk2pZ2ZG
688
688
  ads/opctl/operator/lowcode/anomaly/model/__init__.py,sha256=sAqmLhogrLXb3xI7dPOj9HmSkpTnLh9wkzysuGd8AXk,204
689
689
  ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py,sha256=FN4JO5x1rLzeyC2_tsXhP6gPb4-TBHrMa4uJdybz-Us,5404
690
690
  ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py,sha256=IT0g6wf2rZI-GFuuOgtESWYTE_D77P8y9YeRZ6ucguQ,5836
691
- ads/opctl/operator/lowcode/anomaly/model/automlx.py,sha256=40rY-mVYoLBmDw5uagayRoyYSkjsIY4U4LfyeU11AoA,3469
691
+ ads/opctl/operator/lowcode/anomaly/model/automlx.py,sha256=ZqXGXvIFAiajdTpvT55M1vwlwRy5PRGxVioEJeOHG4c,3469
692
692
  ads/opctl/operator/lowcode/anomaly/model/autots.py,sha256=Ft6bLEXdpIMMDv4lLBzLhC2kRZki7zD9Jnu-LIPDDbw,4154
693
693
  ads/opctl/operator/lowcode/anomaly/model/base_model.py,sha256=5XOwbdJV7fjAr6DXP0LA0XLS0EmV77Xx75p_WEhh4ak,15523
694
694
  ads/opctl/operator/lowcode/anomaly/model/factory.py,sha256=EVYgEGvVTMNFt-tDP6SH3qDoVBAZD3D_Jlw6Xu9zdQU,4148
@@ -721,7 +721,7 @@ ads/opctl/operator/lowcode/forecast/README.md,sha256=kbCCEdo-0pwKlZp9ctnWUK6Z31n
721
721
  ads/opctl/operator/lowcode/forecast/__init__.py,sha256=sAqmLhogrLXb3xI7dPOj9HmSkpTnLh9wkzysuGd8AXk,204
722
722
  ads/opctl/operator/lowcode/forecast/__main__.py,sha256=FTQhYCZEAbQO2sCOpepermKimSktFd9pERNu1rC-K3A,2926
723
723
  ads/opctl/operator/lowcode/forecast/cmd.py,sha256=uwU-QvnYwxoRFXZv7_JFkzAUnjTNoSsHEme2FF-9Rl0,1151
724
- ads/opctl/operator/lowcode/forecast/const.py,sha256=HJQFM35t-pG4g6z63YABx2ehuKfo9yBHklVbZrGpVzY,2615
724
+ ads/opctl/operator/lowcode/forecast/const.py,sha256=Vt03VuFCbm5y9y-NomJsLX6wd3GzWwcCx7di8cnQ9dY,2611
725
725
  ads/opctl/operator/lowcode/forecast/environment.yaml,sha256=eVMf9pcjADI14_GRGdZOB_gK5_MyG_-cX037TXqzFho,330
726
726
  ads/opctl/operator/lowcode/forecast/errors.py,sha256=X9zuV2Lqb5N9FuBHHshOFYyhvng5r9KGLHnQijZ5b8c,911
727
727
  ads/opctl/operator/lowcode/forecast/model_evaluator.py,sha256=crtCQ4KIWCueOf2zU-AKD_i3h_cJA_-qAGakdgBazVI,10257
@@ -730,7 +730,7 @@ ads/opctl/operator/lowcode/forecast/schema.yaml,sha256=RoNwjg5jxXMbljtregMkV_rJb
730
730
  ads/opctl/operator/lowcode/forecast/utils.py,sha256=00prJFK1F3esHlPsPp1WSJ3YoT0NK95f3cH2qNH8AJQ,13578
731
731
  ads/opctl/operator/lowcode/forecast/model/__init__.py,sha256=sAqmLhogrLXb3xI7dPOj9HmSkpTnLh9wkzysuGd8AXk,204
732
732
  ads/opctl/operator/lowcode/forecast/model/arima.py,sha256=PvHoTdDr6RIC4I-YLzed91td6Pq6uxbgluEdu_h0e3c,11766
733
- ads/opctl/operator/lowcode/forecast/model/automlx.py,sha256=XnF3zku8RWrqwBJet5yfx_f6G5nkJ_2e-TzdVJQt7yE,23292
733
+ ads/opctl/operator/lowcode/forecast/model/automlx.py,sha256=f11WY1gsGrUIuzbgJd0c-t1nM3416nAxqj_ylvYtC7k,23669
734
734
  ads/opctl/operator/lowcode/forecast/model/autots.py,sha256=UThBBGsEiC3WLSn-BPAuNWT_ZFa3bYMu52keB0vvSt8,13137
735
735
  ads/opctl/operator/lowcode/forecast/model/base_model.py,sha256=ENrizwJwhHbJa8DPMqCDEUKqwQaGfR5-fYdTxreQrHU,36613
736
736
  ads/opctl/operator/lowcode/forecast/model/factory.py,sha256=5a9A3ql-bU412BiTB20ob6OxQlkdk8z_tGONMwDXT1k,3900
@@ -860,8 +860,8 @@ ads/type_discovery/unknown_detector.py,sha256=yZuYQReO7PUyoWZE7onhhtYaOg6088wf1y
860
860
  ads/type_discovery/zipcode_detector.py,sha256=3AlETg_ZF4FT0u914WXvTT3F3Z6Vf51WiIt34yQMRbw,1421
861
861
  ads/vault/__init__.py,sha256=x9tMdDAOdF5iDHk9u2di_K-ze5Nq068x25EWOBoWwqY,245
862
862
  ads/vault/vault.py,sha256=hFBkpYE-Hfmzu1L0sQwUfYcGxpWmgG18JPndRl0NOXI,8624
863
- oracle_ads-2.13.15.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
864
- oracle_ads-2.13.15.dist-info/licenses/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
865
- oracle_ads-2.13.15.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
866
- oracle_ads-2.13.15.dist-info/METADATA,sha256=VPcnpZDTS29a-Wr0-SJP2DiA7z9-tDplkWBXih6eJy0,16994
867
- oracle_ads-2.13.15.dist-info/RECORD,,
863
+ oracle_ads-2.13.17rc0.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
864
+ oracle_ads-2.13.17rc0.dist-info/licenses/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
865
+ oracle_ads-2.13.17rc0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
866
+ oracle_ads-2.13.17rc0.dist-info/METADATA,sha256=hhUVYf9P7EnzOHGkYatClHSs37fHk-EzZ9rvfAj4_g0,16997
867
+ oracle_ads-2.13.17rc0.dist-info/RECORD,,