oracle-ads 2.11.14__py3-none-any.whl → 2.11.16__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/common/entities.py +17 -0
- ads/aqua/common/enums.py +5 -1
- ads/aqua/common/utils.py +109 -22
- ads/aqua/config/config.py +1 -1
- ads/aqua/config/deployment_config_defaults.json +29 -1
- ads/aqua/config/resource_limit_names.json +1 -0
- ads/aqua/constants.py +35 -18
- ads/aqua/evaluation/entities.py +0 -1
- ads/aqua/evaluation/evaluation.py +165 -121
- ads/aqua/extension/common_ws_msg_handler.py +57 -0
- ads/aqua/extension/deployment_handler.py +14 -13
- ads/aqua/extension/deployment_ws_msg_handler.py +54 -0
- ads/aqua/extension/errors.py +1 -1
- ads/aqua/extension/evaluation_handler.py +4 -7
- ads/aqua/extension/evaluation_ws_msg_handler.py +28 -10
- ads/aqua/extension/model_handler.py +31 -6
- ads/aqua/extension/models/ws_models.py +78 -3
- ads/aqua/extension/models_ws_msg_handler.py +49 -0
- ads/aqua/extension/ui_websocket_handler.py +7 -1
- ads/aqua/model/entities.py +17 -9
- ads/aqua/model/model.py +260 -90
- ads/aqua/modeldeployment/constants.py +0 -16
- ads/aqua/modeldeployment/deployment.py +97 -74
- ads/aqua/modeldeployment/entities.py +9 -20
- ads/aqua/ui.py +152 -28
- ads/common/object_storage_details.py +2 -5
- ads/common/serializer.py +2 -3
- ads/jobs/builders/infrastructure/dsc_job.py +29 -3
- ads/jobs/builders/infrastructure/dsc_job_runtime.py +74 -27
- ads/jobs/builders/runtimes/container_runtime.py +83 -4
- ads/opctl/operator/common/operator_config.py +1 -0
- ads/opctl/operator/lowcode/anomaly/README.md +3 -3
- ads/opctl/operator/lowcode/anomaly/__main__.py +5 -6
- ads/opctl/operator/lowcode/anomaly/const.py +9 -0
- ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +6 -2
- ads/opctl/operator/lowcode/anomaly/model/base_model.py +51 -26
- ads/opctl/operator/lowcode/anomaly/model/factory.py +41 -13
- ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +79 -0
- ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +79 -0
- ads/opctl/operator/lowcode/anomaly/operator_config.py +1 -0
- ads/opctl/operator/lowcode/anomaly/schema.yaml +16 -2
- ads/opctl/operator/lowcode/anomaly/utils.py +16 -13
- ads/opctl/operator/lowcode/common/data.py +2 -1
- ads/opctl/operator/lowcode/common/errors.py +6 -0
- ads/opctl/operator/lowcode/common/transformations.py +37 -9
- ads/opctl/operator/lowcode/common/utils.py +32 -10
- ads/opctl/operator/lowcode/forecast/model/base_model.py +21 -13
- ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +14 -18
- ads/opctl/operator/lowcode/forecast/model_evaluator.py +15 -4
- ads/opctl/operator/lowcode/forecast/schema.yaml +9 -0
- ads/opctl/operator/lowcode/recommender/MLoperator +16 -0
- ads/opctl/operator/lowcode/recommender/README.md +206 -0
- ads/opctl/operator/lowcode/recommender/__init__.py +5 -0
- ads/opctl/operator/lowcode/recommender/__main__.py +82 -0
- ads/opctl/operator/lowcode/recommender/cmd.py +33 -0
- ads/opctl/operator/lowcode/recommender/constant.py +25 -0
- ads/opctl/operator/lowcode/recommender/environment.yaml +11 -0
- ads/opctl/operator/lowcode/recommender/model/base_model.py +198 -0
- ads/opctl/operator/lowcode/recommender/model/factory.py +58 -0
- ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +25 -0
- ads/opctl/operator/lowcode/recommender/model/svd.py +88 -0
- ads/opctl/operator/lowcode/recommender/operator_config.py +81 -0
- ads/opctl/operator/lowcode/recommender/schema.yaml +265 -0
- ads/opctl/operator/lowcode/recommender/utils.py +13 -0
- ads/pipeline/ads_pipeline_run.py +13 -2
- {oracle_ads-2.11.14.dist-info → oracle_ads-2.11.16.dist-info}/METADATA +6 -1
- {oracle_ads-2.11.14.dist-info → oracle_ads-2.11.16.dist-info}/RECORD +70 -50
- {oracle_ads-2.11.14.dist-info → oracle_ads-2.11.16.dist-info}/LICENSE.txt +0 -0
- {oracle_ads-2.11.14.dist-info → oracle_ads-2.11.16.dist-info}/WHEEL +0 -0
- {oracle_ads-2.11.14.dist-info → oracle_ads-2.11.16.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*--
|
3
|
+
from typing import Tuple, Dict, Any
|
4
|
+
|
5
|
+
# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
|
6
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
7
|
+
|
8
|
+
import pandas as pd
|
9
|
+
from pandas import DataFrame
|
10
|
+
|
11
|
+
from .recommender_dataset import RecommenderDatasets
|
12
|
+
from ..operator_config import RecommenderOperatorConfig
|
13
|
+
from .factory import RecommenderOperatorBaseModel
|
14
|
+
from surprise import Dataset, Reader
|
15
|
+
from surprise.model_selection import train_test_split
|
16
|
+
from surprise import SVD
|
17
|
+
from surprise.accuracy import rmse, mae
|
18
|
+
import report_creator as rc
|
19
|
+
from ..constant import SupportedMetrics
|
20
|
+
|
21
|
+
|
22
|
+
class SVDOperatorModel(RecommenderOperatorBaseModel):
|
23
|
+
"""Class representing scikit surprise SVD operator model."""
|
24
|
+
|
25
|
+
def __init__(self, config: RecommenderOperatorConfig, datasets: RecommenderDatasets):
|
26
|
+
super().__init__(config, datasets)
|
27
|
+
self.interactions = datasets.interactions
|
28
|
+
self.users = datasets.users
|
29
|
+
self.items = datasets.items
|
30
|
+
self.user_id = config.spec.user_column
|
31
|
+
self.item_id = config.spec.item_column
|
32
|
+
self.interaction_column = config.spec.interaction_column
|
33
|
+
self.test_size = 0.2
|
34
|
+
self.algo = SVD()
|
35
|
+
|
36
|
+
def _get_recommendations(self, user_id, n):
|
37
|
+
all_item_ids = self.items[self.item_id].unique()
|
38
|
+
rated_items = self.interactions[self.interactions[self.user_id] == user_id][self.item_id]
|
39
|
+
unrated_items = [item_id for item_id in all_item_ids if item_id not in rated_items.values]
|
40
|
+
predictions = [self.algo.predict(user_id, item_id) for item_id in unrated_items]
|
41
|
+
predictions.sort(key=lambda x: x.est, reverse=True)
|
42
|
+
top_n_recommendations = predictions[:n]
|
43
|
+
return [(pred.iid, pred.est) for pred in top_n_recommendations]
|
44
|
+
|
45
|
+
def _build_model(self) -> Tuple[DataFrame, Dict]:
|
46
|
+
min_rating = self.interactions[self.interaction_column].min()
|
47
|
+
max_rating = self.interactions[self.interaction_column].max()
|
48
|
+
reader = Reader(rating_scale=(min_rating, max_rating))
|
49
|
+
data = Dataset.load_from_df(self.interactions[[self.user_id, self.item_id, self.interaction_column]], reader)
|
50
|
+
trainset, testset = train_test_split(data, test_size=self.test_size)
|
51
|
+
self.algo.fit(trainset)
|
52
|
+
predictions = self.algo.test(testset)
|
53
|
+
|
54
|
+
metric = {}
|
55
|
+
metric[SupportedMetrics.RMSE] = rmse(predictions, verbose=True)
|
56
|
+
metric[SupportedMetrics.MAE] = mae(predictions, verbose=True)
|
57
|
+
all_recommendations = []
|
58
|
+
for user_id in self.users[self.user_id]:
|
59
|
+
recommendations = self._get_recommendations(user_id, n=self.spec.top_k)
|
60
|
+
for item_id, est_rating in recommendations:
|
61
|
+
all_recommendations.append({
|
62
|
+
self.user_id: user_id,
|
63
|
+
self.item_id: item_id,
|
64
|
+
self.interaction_column: est_rating
|
65
|
+
})
|
66
|
+
recommendations_df = pd.DataFrame(all_recommendations)
|
67
|
+
return recommendations_df, metric
|
68
|
+
|
69
|
+
def _generate_report(self):
|
70
|
+
model_description = """
|
71
|
+
Singular Value Decomposition (SVD) is a matrix factorization technique used in recommendation systems to
|
72
|
+
decompose a user-item interaction matrix into three constituent matrices. These matrices capture the
|
73
|
+
latent factors that explain the observed interactions.
|
74
|
+
"""
|
75
|
+
new_user_recommendations = self._get_recommendations("__new_user__", self.spec.top_k)
|
76
|
+
new_recommendations = []
|
77
|
+
for item_id, est_rating in new_user_recommendations:
|
78
|
+
new_recommendations.append({
|
79
|
+
self.user_id: "__new_user__",
|
80
|
+
self.item_id: item_id,
|
81
|
+
self.interaction_column: est_rating
|
82
|
+
})
|
83
|
+
title = rc.Heading("Recommendations for new users", level=2)
|
84
|
+
other_sections = [title, rc.DataTable(new_recommendations)]
|
85
|
+
return (
|
86
|
+
model_description,
|
87
|
+
other_sections
|
88
|
+
)
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*--
|
3
|
+
|
4
|
+
# Copyright (c) 2023 Oracle and/or its affiliates.
|
5
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
+
|
7
|
+
import os
|
8
|
+
from dataclasses import dataclass, field
|
9
|
+
|
10
|
+
from ads.common.serializer import DataClassSerializable
|
11
|
+
from ads.opctl.operator.common.operator_config import OperatorConfig, InputData
|
12
|
+
from ads.opctl.operator.common.utils import _load_yaml_from_uri
|
13
|
+
from ads.opctl.operator.lowcode.common.utils import find_output_dirname
|
14
|
+
from .constant import SupportedModels
|
15
|
+
|
16
|
+
|
17
|
+
@dataclass(repr=True)
|
18
|
+
class OutputDirectory(DataClassSerializable):
|
19
|
+
"""Class representing operator specification output directory details."""
|
20
|
+
|
21
|
+
url: str = None
|
22
|
+
name: str = None
|
23
|
+
|
24
|
+
|
25
|
+
@dataclass(repr=True)
|
26
|
+
class RecommenderOperatorSpec(DataClassSerializable):
|
27
|
+
"""Class representing Recommender operator specification."""
|
28
|
+
|
29
|
+
user_data: InputData = field(default_factory=InputData)
|
30
|
+
item_data: InputData = field(default_factory=InputData)
|
31
|
+
interactions_data: InputData = field(default_factory=InputData)
|
32
|
+
output_directory: OutputDirectory = field(default_factory=OutputDirectory)
|
33
|
+
top_k: int = None
|
34
|
+
model_name: str = None
|
35
|
+
user_column: str = None
|
36
|
+
item_column: str = None
|
37
|
+
interaction_column: str = None
|
38
|
+
recommendations_filename: str = None
|
39
|
+
generate_report: bool = None
|
40
|
+
report_filename: str = None
|
41
|
+
|
42
|
+
|
43
|
+
def __post_init__(self):
|
44
|
+
"""Adjusts the specification details."""
|
45
|
+
self.output_directory = self.output_directory or OutputDirectory(url=find_output_dirname(self.output_directory))
|
46
|
+
self.model_name = self.model_name or SupportedModels.SVD
|
47
|
+
self.recommendations_filename = self.recommendations_filename or "recommendations.csv"
|
48
|
+
# For Report Generation. When user doesn't specify defaults to True
|
49
|
+
self.generate_report = (
|
50
|
+
self.generate_report if self.generate_report is not None else True
|
51
|
+
)
|
52
|
+
self.report_filename = self.report_filename or "report.html"
|
53
|
+
|
54
|
+
|
55
|
+
@dataclass(repr=True)
|
56
|
+
class RecommenderOperatorConfig(OperatorConfig):
|
57
|
+
"""Class representing Recommender operator config.
|
58
|
+
|
59
|
+
Attributes
|
60
|
+
----------
|
61
|
+
kind: str
|
62
|
+
The kind of the resource. For operators it is always - `operator`.
|
63
|
+
type: str
|
64
|
+
The type of the operator. For Recommender operator it is always - `Recommender`
|
65
|
+
version: str
|
66
|
+
The version of the operator.
|
67
|
+
spec: RecommenderOperatorSpec
|
68
|
+
The Recommender operator specification.
|
69
|
+
"""
|
70
|
+
|
71
|
+
kind: str = "operator"
|
72
|
+
type: str = "Recommender"
|
73
|
+
version: str = "v1"
|
74
|
+
spec: RecommenderOperatorSpec = field(default_factory=RecommenderOperatorSpec)
|
75
|
+
|
76
|
+
@classmethod
|
77
|
+
def _load_schema(cls) -> str:
|
78
|
+
"""Loads operator schema."""
|
79
|
+
return _load_yaml_from_uri(
|
80
|
+
os.path.join(os.path.dirname(os.path.abspath(__file__)), "schema.yaml")
|
81
|
+
)
|
@@ -0,0 +1,265 @@
|
|
1
|
+
kind:
|
2
|
+
allowed:
|
3
|
+
- operator
|
4
|
+
required: true
|
5
|
+
type: string
|
6
|
+
default: operator
|
7
|
+
meta:
|
8
|
+
description: "Which service are you trying to use? Common kinds: `operator`, `job`"
|
9
|
+
|
10
|
+
version:
|
11
|
+
allowed:
|
12
|
+
- "v1"
|
13
|
+
required: true
|
14
|
+
type: string
|
15
|
+
default: v1
|
16
|
+
meta:
|
17
|
+
description: "Operators may change yaml file schemas from version to version, as well as implementation details. Double check the version to ensure compatibility."
|
18
|
+
|
19
|
+
type:
|
20
|
+
required: true
|
21
|
+
type: string
|
22
|
+
default: recommender
|
23
|
+
meta:
|
24
|
+
description: "Type should always be `recommender` when using a recommender operator"
|
25
|
+
|
26
|
+
|
27
|
+
spec:
|
28
|
+
required: true
|
29
|
+
type: dict
|
30
|
+
schema:
|
31
|
+
user_data:
|
32
|
+
required: true
|
33
|
+
type: dict
|
34
|
+
default: {"url": "user_data.csv"}
|
35
|
+
meta:
|
36
|
+
description: "This should contain user related attribute."
|
37
|
+
schema:
|
38
|
+
connect_args:
|
39
|
+
nullable: true
|
40
|
+
required: false
|
41
|
+
type: dict
|
42
|
+
format:
|
43
|
+
allowed:
|
44
|
+
- csv
|
45
|
+
- json
|
46
|
+
- clipboard
|
47
|
+
- excel
|
48
|
+
- feather
|
49
|
+
- sql_table
|
50
|
+
- sql_query
|
51
|
+
- hdf
|
52
|
+
- tsv
|
53
|
+
required: false
|
54
|
+
type: string
|
55
|
+
columns:
|
56
|
+
required: false
|
57
|
+
type: list
|
58
|
+
schema:
|
59
|
+
type: string
|
60
|
+
filters:
|
61
|
+
required: false
|
62
|
+
type: list
|
63
|
+
schema:
|
64
|
+
type: string
|
65
|
+
options:
|
66
|
+
nullable: true
|
67
|
+
required: false
|
68
|
+
type: dict
|
69
|
+
sql:
|
70
|
+
required: false
|
71
|
+
type: string
|
72
|
+
table_name:
|
73
|
+
required: false
|
74
|
+
type: string
|
75
|
+
url:
|
76
|
+
required: false
|
77
|
+
type: string
|
78
|
+
meta:
|
79
|
+
description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
|
80
|
+
limit:
|
81
|
+
required: false
|
82
|
+
type: integer
|
83
|
+
|
84
|
+
item_data:
|
85
|
+
required: true
|
86
|
+
type: dict
|
87
|
+
default: {"url": "item_data.csv"}
|
88
|
+
meta:
|
89
|
+
description: "This should contain item related attribute"
|
90
|
+
schema:
|
91
|
+
connect_args:
|
92
|
+
nullable: true
|
93
|
+
required: false
|
94
|
+
type: dict
|
95
|
+
format:
|
96
|
+
allowed:
|
97
|
+
- csv
|
98
|
+
- json
|
99
|
+
- clipboard
|
100
|
+
- excel
|
101
|
+
- feather
|
102
|
+
- sql_table
|
103
|
+
- sql_query
|
104
|
+
- hdf
|
105
|
+
- tsv
|
106
|
+
required: false
|
107
|
+
type: string
|
108
|
+
columns:
|
109
|
+
required: false
|
110
|
+
type: list
|
111
|
+
schema:
|
112
|
+
type: string
|
113
|
+
filters:
|
114
|
+
required: false
|
115
|
+
type: list
|
116
|
+
schema:
|
117
|
+
type: string
|
118
|
+
options:
|
119
|
+
nullable: true
|
120
|
+
required: false
|
121
|
+
type: dict
|
122
|
+
sql:
|
123
|
+
required: false
|
124
|
+
type: string
|
125
|
+
table_name:
|
126
|
+
required: false
|
127
|
+
type: string
|
128
|
+
url:
|
129
|
+
required: false
|
130
|
+
type: string
|
131
|
+
meta:
|
132
|
+
description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
|
133
|
+
limit:
|
134
|
+
required: false
|
135
|
+
type: integer
|
136
|
+
|
137
|
+
interactions_data:
|
138
|
+
required: true
|
139
|
+
default: {"url": "interactions_data.csv"}
|
140
|
+
meta:
|
141
|
+
description: "This should include interactions between items and users"
|
142
|
+
schema:
|
143
|
+
connect_args:
|
144
|
+
nullable: true
|
145
|
+
required: false
|
146
|
+
type: dict
|
147
|
+
format:
|
148
|
+
allowed:
|
149
|
+
- csv
|
150
|
+
- json
|
151
|
+
- clipboard
|
152
|
+
- excel
|
153
|
+
- feather
|
154
|
+
- sql_table
|
155
|
+
- sql_query
|
156
|
+
- hdf
|
157
|
+
- tsv
|
158
|
+
required: false
|
159
|
+
type: string
|
160
|
+
columns:
|
161
|
+
required: false
|
162
|
+
type: list
|
163
|
+
schema:
|
164
|
+
type: string
|
165
|
+
filters:
|
166
|
+
required: false
|
167
|
+
type: list
|
168
|
+
schema:
|
169
|
+
type: string
|
170
|
+
options:
|
171
|
+
nullable: true
|
172
|
+
required: false
|
173
|
+
type: dict
|
174
|
+
sql:
|
175
|
+
required: false
|
176
|
+
type: string
|
177
|
+
table_name:
|
178
|
+
required: false
|
179
|
+
type: string
|
180
|
+
url:
|
181
|
+
required: false
|
182
|
+
type: string
|
183
|
+
meta:
|
184
|
+
description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
|
185
|
+
limit:
|
186
|
+
required: false
|
187
|
+
type: integer
|
188
|
+
type: dict
|
189
|
+
|
190
|
+
top_k:
|
191
|
+
required: true
|
192
|
+
type: integer
|
193
|
+
default: 1
|
194
|
+
|
195
|
+
output_directory:
|
196
|
+
required: false
|
197
|
+
schema:
|
198
|
+
connect_args:
|
199
|
+
nullable: true
|
200
|
+
required: false
|
201
|
+
type: dict
|
202
|
+
format:
|
203
|
+
allowed:
|
204
|
+
- csv
|
205
|
+
- json
|
206
|
+
- clipboard
|
207
|
+
- excel
|
208
|
+
- feather
|
209
|
+
- sql_table
|
210
|
+
- sql_query
|
211
|
+
- hdf
|
212
|
+
- tsv
|
213
|
+
required: false
|
214
|
+
type: string
|
215
|
+
columns:
|
216
|
+
required: false
|
217
|
+
type: list
|
218
|
+
schema:
|
219
|
+
type: string
|
220
|
+
filters:
|
221
|
+
required: false
|
222
|
+
type: list
|
223
|
+
schema:
|
224
|
+
type: string
|
225
|
+
options:
|
226
|
+
nullable: true
|
227
|
+
required: false
|
228
|
+
type: dict
|
229
|
+
sql:
|
230
|
+
required: false
|
231
|
+
type: string
|
232
|
+
table_name:
|
233
|
+
required: false
|
234
|
+
type: string
|
235
|
+
url:
|
236
|
+
required: false
|
237
|
+
type: string
|
238
|
+
meta:
|
239
|
+
description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
|
240
|
+
limit:
|
241
|
+
required: false
|
242
|
+
type: integer
|
243
|
+
type: dict
|
244
|
+
|
245
|
+
report_filename:
|
246
|
+
required: false
|
247
|
+
type: string
|
248
|
+
default: report.html
|
249
|
+
meta:
|
250
|
+
description: "Placed into output_directory location. Defaults to report.html"
|
251
|
+
|
252
|
+
user_column:
|
253
|
+
type: string
|
254
|
+
required: true
|
255
|
+
default: "user_id"
|
256
|
+
|
257
|
+
item_column:
|
258
|
+
type: string
|
259
|
+
required: true
|
260
|
+
default: "item_id"
|
261
|
+
|
262
|
+
interaction_column:
|
263
|
+
type: string
|
264
|
+
required: true
|
265
|
+
default: "rating"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*--
|
3
|
+
|
4
|
+
# Copyright (c) 2023, 2024 Oracle and/or its affiliates.
|
5
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
+
|
7
|
+
import os
|
8
|
+
|
9
|
+
|
10
|
+
def default_signer(**kwargs):
|
11
|
+
os.environ["EXTRA_USER_AGENT_INFO"] = "Recommender-Operator"
|
12
|
+
from ads.common.auth import default_signer
|
13
|
+
return default_signer(**kwargs)
|
ads/pipeline/ads_pipeline_run.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8; -*-
|
3
3
|
|
4
|
-
# Copyright (c) 2022,
|
4
|
+
# Copyright (c) 2022, 2024 Oracle and/or its affiliates.
|
5
5
|
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
6
|
import copy
|
7
7
|
import logging
|
@@ -689,6 +689,16 @@ class PipelineRun(
|
|
689
689
|
sources = []
|
690
690
|
subjects = []
|
691
691
|
skipped_step_list = []
|
692
|
+
|
693
|
+
is_service_logging_enabled = False
|
694
|
+
try:
|
695
|
+
if self.service_logging:
|
696
|
+
is_service_logging_enabled = True
|
697
|
+
except LogNotConfiguredError:
|
698
|
+
logger.warning(
|
699
|
+
"Service log is not configured for pipeline. Streaming custom log."
|
700
|
+
)
|
701
|
+
|
692
702
|
for step_run in self.step_runs:
|
693
703
|
if not steps or (step_run.step_name in steps):
|
694
704
|
step_name = step_run.step_name
|
@@ -703,7 +713,8 @@ class PipelineRun(
|
|
703
713
|
subjects.append(f"subject = '{step_name}'")
|
704
714
|
else:
|
705
715
|
sources.append(f"source = '*{job_run_id}'")
|
706
|
-
|
716
|
+
if is_service_logging_enabled:
|
717
|
+
subjects.append(f"subject = '{step_name}'")
|
707
718
|
else:
|
708
719
|
subjects.append(f"subject = '{step_name}'")
|
709
720
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: oracle_ads
|
3
|
-
Version: 2.11.
|
3
|
+
Version: 2.11.16
|
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
|
@@ -114,6 +114,10 @@ Requires-Dist: scrubadub_spacy ; extra == "pii"
|
|
114
114
|
Requires-Dist: spacy-transformers==1.2.5 ; extra == "pii"
|
115
115
|
Requires-Dist: spacy==3.6.1 ; extra == "pii"
|
116
116
|
Requires-Dist: report-creator==1.0.9 ; extra == "pii"
|
117
|
+
Requires-Dist: oracle_ads[opctl] ; extra == "recommender"
|
118
|
+
Requires-Dist: scikit-surprise ; extra == "recommender"
|
119
|
+
Requires-Dist: plotly ; extra == "recommender"
|
120
|
+
Requires-Dist: report-creator==1.0.9 ; extra == "recommender"
|
117
121
|
Requires-Dist: pyspark>=3.0.0 ; extra == "spark"
|
118
122
|
Requires-Dist: oracle_ads[viz] ; extra == "tensorflow"
|
119
123
|
Requires-Dist: tensorflow<=2.15.1 ; extra == "tensorflow"
|
@@ -163,6 +167,7 @@ Provides-Extra: onnx
|
|
163
167
|
Provides-Extra: opctl
|
164
168
|
Provides-Extra: optuna
|
165
169
|
Provides-Extra: pii
|
170
|
+
Provides-Extra: recommender
|
166
171
|
Provides-Extra: spark
|
167
172
|
Provides-Extra: tensorflow
|
168
173
|
Provides-Extra: testsuite
|