oracle-ads 2.13.16__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 +13 -0
- ads/aqua/config/container_config.py +22 -15
- ads/aqua/extension/deployment_handler.py +32 -0
- ads/opctl/operator/lowcode/anomaly/model/automlx.py +2 -2
- ads/opctl/operator/lowcode/forecast/const.py +1 -1
- ads/opctl/operator/lowcode/forecast/model/automlx.py +21 -15
- {oracle_ads-2.13.16.dist-info → oracle_ads-2.13.17rc0.dist-info}/METADATA +1 -1
- {oracle_ads-2.13.16.dist-info → oracle_ads-2.13.17rc0.dist-info}/RECORD +11 -11
- {oracle_ads-2.13.16.dist-info → oracle_ads-2.13.17rc0.dist-info}/WHEEL +0 -0
- {oracle_ads-2.13.16.dist-info → oracle_ads-2.13.17rc0.dist-info}/entry_points.txt +0 -0
- {oracle_ads-2.13.16.dist-info → oracle_ads-2.13.17rc0.dist-info}/licenses/LICENSE.txt +0 -0
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
|
-
#
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
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
|
]
|
@@ -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>=
|
28
|
-
"`pip3 install oracle-automlx[classic]>=
|
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": "
|
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 =
|
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
|
-
|
49
|
-
|
50
|
-
|
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.
|
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.
|
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
|
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
|
-
|
526
|
-
|
527
|
-
score_col
|
530
|
+
all_metrics = trials[trials.Hyperparameters == model_params][
|
531
|
+
"All Metrics"
|
528
532
|
].iloc[0]
|
529
533
|
else:
|
530
|
-
|
531
|
-
|
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
|
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 =
|
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.
|
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
|
@@ -9,7 +9,7 @@ ads/aqua/data.py,sha256=HfxLfKiNiPJecMQy0JAztUsT3IdZilHHHOrCJnjZMc4,408
|
|
9
9
|
ads/aqua/ui.py,sha256=PYyr46ewx9Qygcsv6BryUF6rLHU0t5YjUgKSb1uZK2Y,20971
|
10
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
864
|
-
oracle_ads-2.13.
|
865
|
-
oracle_ads-2.13.
|
866
|
-
oracle_ads-2.13.
|
867
|
-
oracle_ads-2.13.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|