oracle-ads 2.13.18rc0__py3-none-any.whl → 2.13.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.
Files changed (30) hide show
  1. ads/aqua/cli.py +7 -5
  2. ads/aqua/common/entities.py +195 -48
  3. ads/aqua/common/enums.py +6 -0
  4. ads/aqua/common/errors.py +5 -0
  5. ads/aqua/common/utils.py +157 -66
  6. ads/aqua/constants.py +3 -0
  7. ads/aqua/extension/deployment_handler.py +36 -0
  8. ads/aqua/modeldeployment/constants.py +1 -0
  9. ads/aqua/modeldeployment/deployment.py +95 -14
  10. ads/aqua/modeldeployment/entities.py +3 -0
  11. ads/aqua/modeldeployment/model_group_config.py +3 -3
  12. ads/aqua/resources/gpu_shapes_index.json +315 -26
  13. ads/aqua/shaperecommend/__init__.py +6 -0
  14. ads/aqua/shaperecommend/constants.py +116 -0
  15. ads/aqua/shaperecommend/estimator.py +384 -0
  16. ads/aqua/shaperecommend/llm_config.py +283 -0
  17. ads/aqua/shaperecommend/recommend.py +493 -0
  18. ads/aqua/shaperecommend/shape_report.py +233 -0
  19. ads/aqua/version.json +1 -1
  20. ads/cli.py +9 -1
  21. ads/jobs/builders/infrastructure/dsc_job.py +1 -0
  22. ads/jobs/builders/infrastructure/dsc_job_runtime.py +9 -1
  23. ads/model/service/oci_datascience_model_deployment.py +46 -19
  24. ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +4 -3
  25. ads/pipeline/ads_pipeline.py +13 -9
  26. {oracle_ads-2.13.18rc0.dist-info → oracle_ads-2.13.19.dist-info}/METADATA +1 -1
  27. {oracle_ads-2.13.18rc0.dist-info → oracle_ads-2.13.19.dist-info}/RECORD +30 -24
  28. {oracle_ads-2.13.18rc0.dist-info → oracle_ads-2.13.19.dist-info}/WHEEL +0 -0
  29. {oracle_ads-2.13.18rc0.dist-info → oracle_ads-2.13.19.dist-info}/entry_points.txt +0 -0
  30. {oracle_ads-2.13.18rc0.dist-info → oracle_ads-2.13.19.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,233 @@
1
+ #!/usr/bin/env python
2
+ # Copyright (c) 2025 Oracle and/or its affiliates.
3
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
4
+
5
+ from typing import List, Optional
6
+
7
+ from pydantic import BaseModel, Field
8
+
9
+ from ads.aqua.common.entities import ComputeShapeSummary
10
+ from ads.aqua.shaperecommend.constants import QUANT_MAPPING
11
+ from ads.aqua.shaperecommend.estimator import MemoryEstimator
12
+ from ads.config import COMPARTMENT_OCID
13
+
14
+
15
+ class RequestRecommend(BaseModel):
16
+ """
17
+ A request to recommend compute shapes and parameters for a given model.
18
+ """
19
+
20
+ model_id: str = Field(
21
+ ..., description="The OCID of the model to recommend feasible compute shapes."
22
+ )
23
+ generate_table: Optional[bool] = (
24
+ Field(
25
+ True,
26
+ description="True - to generate the rich diff Table, False - generate the JSON response",
27
+ ),
28
+ )
29
+ compartment_id: Optional[str] = Field(
30
+ COMPARTMENT_OCID, description="The OCID of user's compartment"
31
+ )
32
+
33
+ class Config:
34
+ protected_namespaces = ()
35
+
36
+
37
+ class DeploymentParams(BaseModel): # noqa: N801
38
+ """
39
+ Recommended parameters for deployment and model inferencing (specific to compute shape & model).
40
+ """
41
+
42
+ quantization: Optional[str] = Field(
43
+ None, description="Type of quantization (e.g. 4bit)."
44
+ )
45
+ max_model_len: int = Field(..., description="Maximum length of input sequence.")
46
+ params: str = Field(
47
+ ..., description="Runtime parameters for deployment with vLLM, etc."
48
+ )
49
+
50
+
51
+ class ModelDetail(BaseModel):
52
+ """
53
+ The estimated memory footprint of a model, KV cache, and its total (model + KV cache).
54
+ """
55
+
56
+ model_size_gb: float = Field(..., description="Size of the model in GB.")
57
+ kv_cache_size_gb: float = Field(..., description="Size of KV cache in GB.")
58
+ total_model_gb: float = Field(
59
+ ..., description="Total size of model and cache in GB."
60
+ )
61
+
62
+ class Config:
63
+ protected_namespaces = ()
64
+
65
+
66
+ class ModelConfig(BaseModel):
67
+ """
68
+ The configuration for a model based on specific set of deployment parameters and memory capacity of shape.
69
+ """
70
+
71
+ model_details: ModelDetail = Field(..., description="Details about the model.")
72
+ deployment_params: DeploymentParams = Field(
73
+ ..., description="Parameters for deployment."
74
+ )
75
+ recommendation: str = Field(..., description="GPU recommendation for the model.")
76
+
77
+ class Config:
78
+ protected_namespaces = ()
79
+
80
+ @classmethod
81
+ def constuct_model_config(
82
+ cls, estimator: MemoryEstimator, allowed_gpu_memory: float
83
+ ) -> "ModelConfig":
84
+ """
85
+ Assembles a complete ModelConfig, including model details, deployment parameters (vLLM), and recommendations.
86
+
87
+ Parameters
88
+ ----------
89
+ shape_quantization : set[str]
90
+ Allowed quantization methods for the compute shape
91
+
92
+ Returns
93
+ -------
94
+ ModelConfig
95
+ Contains round-tripped model size, kv cache, total, vLLM parameters, and recommendations.
96
+
97
+ Notes
98
+ -----
99
+ - Rounds all sizes to 3 decimal digits.
100
+ - Computes a recommendation string using `limiting_factor`.
101
+ """
102
+ c = estimator.llm_config
103
+ deployment_params = DeploymentParams(
104
+ quantization=c.quantization or c.in_flight_quantization or c.weight_dtype,
105
+ max_model_len=getattr(estimator, "seq_len", None),
106
+ params=estimator.construct_deployment_params(),
107
+ )
108
+ model_detail = ModelDetail(
109
+ model_size_gb=round(getattr(estimator, "model_memory", 0.0), 2),
110
+ kv_cache_size_gb=round(getattr(estimator, "kv_cache_memory", 0.0), 2),
111
+ total_model_gb=round(getattr(estimator, "total_memory", 0.0), 2),
112
+ )
113
+ return ModelConfig(
114
+ model_details=model_detail,
115
+ deployment_params=deployment_params,
116
+ recommendation=estimator.limiting_factor(allowed_gpu_memory),
117
+ )
118
+
119
+
120
+ class ShapeReport(BaseModel):
121
+ """
122
+ The feasible deployment configurations for the model per shape.
123
+ """
124
+
125
+ shape_details: "ComputeShapeSummary" = Field(
126
+ ..., description="Details about the compute shape (ex. VM.GPU.A10.2)."
127
+ )
128
+ configurations: List["ModelConfig"] = Field(
129
+ default_factory=list, description="List of model configurations."
130
+ )
131
+
132
+ def is_dominated(self, others: List["ShapeReport"]) -> bool:
133
+ """
134
+ Determines whether this shape is dominated by any other shape in a Pareto sense.
135
+
136
+ Parameters
137
+ ----------
138
+ others : list of ShapeReport
139
+ List of other shape/deployment configurations to compare against.
140
+
141
+ Returns
142
+ -------
143
+ bool
144
+ True if this shape is dominated by at least one other, False otherwise.
145
+
146
+ Notes
147
+ -----
148
+ A shape is dominated if there exists another configuration that is
149
+ at least as good in all criteria and strictly better in at least one.
150
+ Criteria:
151
+ - Cost (to be minimized)
152
+ - Performance, quantization level, max sequence length (to be maximized)
153
+ """
154
+ try:
155
+ cand_cost = self.shape_details.gpu_specs.ranking.cost
156
+ cand_perf = self.shape_details.gpu_specs.ranking.performance
157
+ cand_quant = QUANT_MAPPING.get(
158
+ self.configurations[0].deployment_params.quantization, 0
159
+ )
160
+ cand_maxlen = self.configurations[0].deployment_params.max_model_len
161
+
162
+ for other in others:
163
+ other_cost = other.shape_details.gpu_specs.ranking.cost
164
+ other_perf = other.shape_details.gpu_specs.ranking.performance
165
+ other_quant = QUANT_MAPPING.get(
166
+ other.configurations[0].deployment_params.quantization, 0
167
+ )
168
+ other_maxlen = other.configurations[0].deployment_params.max_model_len
169
+ if (
170
+ other_cost <= cand_cost
171
+ and other_perf >= cand_perf
172
+ and other_quant >= cand_quant
173
+ and other_maxlen >= cand_maxlen
174
+ and (
175
+ other_cost < cand_cost
176
+ or other_perf > cand_perf
177
+ or other_quant > cand_quant
178
+ or other_maxlen > cand_maxlen
179
+ )
180
+ ):
181
+ return True
182
+ return False
183
+ except AttributeError:
184
+ return False
185
+
186
+ @classmethod
187
+ def pareto_front(cls, shapes: List["ShapeReport"]) -> List["ShapeReport"]:
188
+ """
189
+ Filters a list of shapes/configurations to those on the Pareto frontier.
190
+
191
+ Parameters
192
+ ----------
193
+ shapes : list of ShapeReport
194
+ List of candidate shape/configuration reports to evaluate.
195
+
196
+ Returns
197
+ -------
198
+ list of ShapeReport
199
+ Subset of input shapes that are not dominated by any other (the Pareto front).
200
+
201
+ Notes
202
+ -----
203
+ The returned set contains non-dominated deployments for maximizing
204
+ performance, quantization, and model length, while minimizing cost.
205
+ """
206
+ return [
207
+ shape
208
+ for shape in shapes
209
+ if not shape.is_dominated([s for s in shapes if s != shape])
210
+ ]
211
+
212
+
213
+ class ShapeRecommendationReport(BaseModel):
214
+ """
215
+ Full report of shape fit recommendations and troubleshooting, if applicable.
216
+
217
+ Attributes:
218
+ recommendations (List[DeploymentShapeSummary]): Recommended deployment shapes
219
+ for each tested batch size and max sequence length combination.
220
+ troubleshoot (Optional[TroubleshootShapeSummary]): Troubleshooting information
221
+ if no valid deployment shapes are available.
222
+ """
223
+
224
+ display_name: Optional[str] = Field(
225
+ "", description="Name of the model used for recommendations."
226
+ )
227
+ recommendations: List[ShapeReport] = Field(
228
+ default_factory=list, description="List of shape fit recommendations."
229
+ )
230
+ troubleshoot: Optional[str] = Field(
231
+ None,
232
+ description="Details for troubleshooting if no shapes fit the current model.",
233
+ )
ads/aqua/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "aqua": "1.0.7a"
2
+ "aqua": "1.0.8"
3
3
  }
ads/cli.py CHANGED
@@ -7,6 +7,8 @@ import logging
7
7
  import sys
8
8
  import traceback
9
9
  import uuid
10
+ from rich.console import Console
11
+ from rich.table import Table
10
12
 
11
13
  import fire
12
14
  from pydantic import BaseModel
@@ -92,6 +94,12 @@ def serialize(data):
92
94
  print(str(item))
93
95
  elif isinstance(data, BaseModel):
94
96
  print(json.dumps(data.dict(), indent=4))
97
+ elif isinstance(data, Table):
98
+ console = Console()
99
+ console.print(data)
100
+ return
101
+ elif data is None:
102
+ return
95
103
  else:
96
104
  print(str(data))
97
105
 
@@ -131,7 +139,7 @@ def exit_program(ex: Exception, logger: "logging.Logger") -> None:
131
139
 
132
140
  request_id = str(uuid.uuid4())
133
141
  logger.debug(f"Error Request ID: {request_id}\nError: {traceback.format_exc()}")
134
- logger.error(f"Error Request ID: {request_id}\n" f"Error: {str(ex)}")
142
+ logger.error(f"Error Request ID: {request_id}\nError: {str(ex)}")
135
143
 
136
144
  exit_code = getattr(ex, "exit_code", 1)
137
145
  logger.error(f"Exit code: {exit_code}")
@@ -1751,6 +1751,7 @@ class DataScienceJob(Infrastructure):
1751
1751
  return (
1752
1752
  MULTI_NODE_JOB_SUPPORT
1753
1753
  and isinstance(runtime, MultiNodeRuntime)
1754
+ and runtime.replica
1754
1755
  and runtime.replica > 1
1755
1756
  )
1756
1757
 
@@ -365,6 +365,11 @@ class RuntimeHandler:
365
365
  dsc_job,
366
366
  "job_node_configuration_details.job_node_group_configuration_details_list",
367
367
  )
368
+ if node_groups is None:
369
+ node_groups = get_value(
370
+ dsc_job,
371
+ "job_node_configuration_details.jobNodeGroupConfigurationDetailsList",
372
+ )
368
373
  if node_groups and len(node_groups) == 1:
369
374
  return node_groups[0]
370
375
  return None
@@ -373,6 +378,7 @@ class RuntimeHandler:
373
378
  node_group = self._get_node_group(dsc_job)
374
379
  if node_group:
375
380
  replica = get_value(node_group, "replicas")
381
+ envs.pop(self.CONST_NODE_COUNT, None)
376
382
  elif not envs:
377
383
  replica = None
378
384
  elif self.CONST_WORKER_COUNT in envs:
@@ -399,7 +405,9 @@ class RuntimeHandler:
399
405
  env_attr = "job_configuration_details.environment_variables"
400
406
  node_group = self._get_node_group(dsc_job)
401
407
  if node_group:
402
- envs = get_value(node_group, env_attr)
408
+ envs = get_value(node_group, env_attr) or get_value(
409
+ node_group, "jobConfigurationDetails.environment_variables"
410
+ )
403
411
  else:
404
412
  envs = get_value(dsc_job, env_attr)
405
413
  if envs:
@@ -1,23 +1,24 @@
1
1
  #!/usr/bin/env python
2
- # -*- coding: utf-8; -*-
3
2
 
4
- # Copyright (c) 2024 Oracle and/or its affiliates.
3
+ # Copyright (c) 2024, 2025 Oracle and/or its affiliates.
5
4
  # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
6
5
 
7
- from functools import wraps
8
6
  import logging
9
- from typing import Callable, List
10
- from ads.common.oci_datascience import OCIDataScienceMixin
11
- from ads.common.work_request import DataScienceWorkRequest
12
- from ads.config import PROJECT_OCID
13
- from ads.model.deployment.common.utils import OCIClientManager, State
14
- import oci
7
+ from functools import wraps
8
+ from typing import Callable, List, Optional
15
9
 
10
+ import oci
16
11
  from oci.data_science.models import (
17
12
  CreateModelDeploymentDetails,
13
+ ModelDeploymentShapeSummary,
18
14
  UpdateModelDeploymentDetails,
19
15
  )
20
16
 
17
+ from ads.common.oci_datascience import OCIDataScienceMixin
18
+ from ads.common.work_request import DataScienceWorkRequest
19
+ from ads.config import COMPARTMENT_OCID, PROJECT_OCID
20
+ from ads.model.deployment.common.utils import OCIClientManager, State
21
+
21
22
  DEFAULT_WAIT_TIME = 1200
22
23
  DEFAULT_POLL_INTERVAL = 10
23
24
  ALLOWED_STATUS = [
@@ -185,14 +186,13 @@ class OCIDataScienceModelDeployment(
185
186
  self.id,
186
187
  )
187
188
 
188
-
189
189
  self.workflow_req_id = response.headers.get("opc-work-request-id", None)
190
190
  if wait_for_completion:
191
191
  try:
192
192
  DataScienceWorkRequest(self.workflow_req_id).wait_work_request(
193
193
  progress_bar_description="Activating model deployment",
194
- max_wait_time=max_wait_time,
195
- poll_interval=poll_interval
194
+ max_wait_time=max_wait_time,
195
+ poll_interval=poll_interval,
196
196
  )
197
197
  except Exception as e:
198
198
  logger.error(
@@ -239,8 +239,8 @@ class OCIDataScienceModelDeployment(
239
239
  try:
240
240
  DataScienceWorkRequest(self.workflow_req_id).wait_work_request(
241
241
  progress_bar_description="Creating model deployment",
242
- max_wait_time=max_wait_time,
243
- poll_interval=poll_interval
242
+ max_wait_time=max_wait_time,
243
+ poll_interval=poll_interval,
244
244
  )
245
245
  except Exception as e:
246
246
  logger.error("Error while trying to create model deployment: " + str(e))
@@ -290,8 +290,8 @@ class OCIDataScienceModelDeployment(
290
290
  try:
291
291
  DataScienceWorkRequest(self.workflow_req_id).wait_work_request(
292
292
  progress_bar_description="Deactivating model deployment",
293
- max_wait_time=max_wait_time,
294
- poll_interval=poll_interval
293
+ max_wait_time=max_wait_time,
294
+ poll_interval=poll_interval,
295
295
  )
296
296
  except Exception as e:
297
297
  logger.error(
@@ -351,14 +351,14 @@ class OCIDataScienceModelDeployment(
351
351
  response = self.client.delete_model_deployment(
352
352
  self.id,
353
353
  )
354
-
354
+
355
355
  self.workflow_req_id = response.headers.get("opc-work-request-id", None)
356
356
  if wait_for_completion:
357
357
  try:
358
358
  DataScienceWorkRequest(self.workflow_req_id).wait_work_request(
359
359
  progress_bar_description="Deleting model deployment",
360
- max_wait_time=max_wait_time,
361
- poll_interval=poll_interval
360
+ max_wait_time=max_wait_time,
361
+ poll_interval=poll_interval,
362
362
  )
363
363
  except Exception as e:
364
364
  logger.error("Error while trying to delete model deployment: " + str(e))
@@ -493,3 +493,30 @@ class OCIDataScienceModelDeployment(
493
493
  An instance of `OCIDataScienceModelDeployment`.
494
494
  """
495
495
  return super().from_ocid(model_deployment_id)
496
+
497
+ @classmethod
498
+ def shapes(
499
+ cls,
500
+ compartment_id: Optional[str] = None,
501
+ **kwargs,
502
+ ) -> List[ModelDeploymentShapeSummary]:
503
+ """
504
+ Retrieves all available model deployment shapes in the given compartment.
505
+
506
+ This method uses OCI's pagination utility to fetch all pages of model
507
+ deployment shape summaries available in the specified compartment.
508
+
509
+ Args:
510
+ compartment_id (Optional[str]): The OCID of the compartment. If not provided,
511
+ the default COMPARTMENT_ID extracted form env variables is used.
512
+ **kwargs: Additional keyword arguments to pass to the list_model_deployments call.
513
+
514
+ Returns:
515
+ List[ModelDeploymentShapeSummary]: A list of all model deployment shape summaries.
516
+ """
517
+ client = cls().client
518
+ compartment_id = compartment_id or COMPARTMENT_OCID
519
+
520
+ return oci.pagination.list_call_get_all_results(
521
+ client.list_model_deployment_shapes, compartment_id, **kwargs
522
+ ).data
@@ -119,8 +119,7 @@ class AdditionalData(AbstractData):
119
119
 
120
120
  class TestData(AbstractData):
121
121
  def __init__(self, spec, test_data):
122
- if test_data is not None or spec.test_data is not None:
123
- super().__init__(spec=spec, name="test_data", data=test_data)
122
+ super().__init__(spec=spec, name="test_data", data=test_data)
124
123
  self.dt_column_name = spec.datetime_column.name
125
124
  self.target_name = spec.target_column
126
125
 
@@ -146,6 +145,7 @@ class ForecastDatasets:
146
145
  self.config = config # Store the config for later use
147
146
  self.historical_data: HistoricalData = None
148
147
  self.additional_data: AdditionalData = None
148
+ self.test_data: TestData = None
149
149
  self._horizon = config.spec.horizon
150
150
  self._datetime_column_name = config.spec.datetime_column.name
151
151
  self._target_col = config.spec.target_column
@@ -156,7 +156,8 @@ class ForecastDatasets:
156
156
  )
157
157
  else:
158
158
  self._load_data(config.spec, subset=subset)
159
- self.test_data = TestData(config.spec, test_data)
159
+ if test_data is not None or config.spec.test_data is not None:
160
+ self.test_data = TestData(config.spec, test_data)
160
161
 
161
162
  def _load_data(self, spec, subset=None):
162
163
  """Loads forecasting input data."""
@@ -1728,15 +1728,19 @@ class Pipeline(Builder):
1728
1728
 
1729
1729
  def __step_infrastructure_configuration_details(self, step) -> dict:
1730
1730
  step_infrastructure_configuration_details = {}
1731
- step_infrastructure_configuration_details[
1732
- "blockStorageSizeInGBs"
1733
- ] = step.infrastructure.block_storage_size
1734
- step_infrastructure_configuration_details[
1735
- "shapeName"
1736
- ] = step.infrastructure.shape_name
1737
- step_infrastructure_configuration_details[
1738
- "shapeConfigDetails"
1739
- ] = step.infrastructure.shape_config_details
1731
+ step_infrastructure_configuration_details["blockStorageSizeInGBs"] = (
1732
+ step.infrastructure.block_storage_size
1733
+ )
1734
+ step_infrastructure_configuration_details["shapeName"] = (
1735
+ step.infrastructure.shape_name
1736
+ )
1737
+ step_infrastructure_configuration_details["shapeConfigDetails"] = (
1738
+ step.infrastructure.shape_config_details
1739
+ )
1740
+ if getattr(step.infrastructure, "subnet_id", ""):
1741
+ step_infrastructure_configuration_details["subnetId"] = (
1742
+ step.infrastructure.subnet_id
1743
+ )
1740
1744
  return step_infrastructure_configuration_details
1741
1745
 
1742
1746
  def __step_configuration_details(self, pipeline_details: Dict, step) -> dict:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oracle_ads
3
- Version: 2.13.18rc0
3
+ Version: 2.13.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,GenAI,Generative AI,Forecast,Anomaly,Document Understanding,Anomaly Detection
6
6
  Author: Oracle Data Science
@@ -1,22 +1,22 @@
1
1
  ads/__init__.py,sha256=OxHySbHbMqPgZ8sUj33Bxy-smSiNgRjtcSUV77oBL08,3787
2
- ads/cli.py,sha256=WkOpZv8jWgFYN9BNkt2LJBs9KzJHgFqq3pIymsqc8Q4,4292
2
+ ads/cli.py,sha256=sYbD75jvDh5N6sBQe5xbf-XR3HyzAD1zLjwvOCZInSk,4493
3
3
  ads/config.py,sha256=ZFZpp0SgKgB1-7yQ6MEdVdyJ2nwzixbH91sJ4_XnG8Y,8170
4
4
  ads/aqua/__init__.py,sha256=7DjwtmZaX-_atIkmZu6XQKHqJUEeemJGR2TlxzMHSXs,973
5
5
  ads/aqua/app.py,sha256=yOago4k1FfykAqcKuBvMgMVpxnXNXfDw3FlAaH-vd2M,20368
6
- ads/aqua/cli.py,sha256=cmNtLVktrT350gsqY2k2zH6GszFdAVmJwNuU5QZljKE,3988
7
- ads/aqua/constants.py,sha256=gEVXaXmVdKzIkZ7Q-7Zn_wGpOK0QPFBKnHNIJB12qjs,5132
6
+ ads/aqua/cli.py,sha256=u0jubFFiMx7lIHU1kxGoFH-SvGlRlDI2izR-8_yFmYk,4019
7
+ ads/aqua/constants.py,sha256=xusabNYXJHnmwoMDj-dO0S83qbXghr7oJR3TRmiUdQQ,5242
8
8
  ads/aqua/data.py,sha256=HfxLfKiNiPJecMQy0JAztUsT3IdZilHHHOrCJnjZMc4,408
9
9
  ads/aqua/ui.py,sha256=PYyr46ewx9Qygcsv6BryUF6rLHU0t5YjUgKSb1uZK2Y,20971
10
- ads/aqua/version.json,sha256=f1syT59npva9jfyKmhgWI93kcoiyYabnkAG4Lqr-4cs,23
10
+ ads/aqua/version.json,sha256=HNaTDvhSpah0PmBs__n1bq1x4CralZiPI5xoMDiaSUs,22
11
11
  ads/aqua/client/__init__.py,sha256=-46EcKQjnWEXxTt85bQzXjA5xsfoBXIGm_syKFlVL1c,178
12
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
16
- ads/aqua/common/entities.py,sha256=trzFbyrEbVWk7tN8TbxinTIiLh4V3D4PgR74TK8MaPU,11720
17
- ads/aqua/common/enums.py,sha256=XkcfB1wHkdT4YRFLZq_H2IhuYxeBjOGDP3Qaf-RK9Zo,4341
18
- ads/aqua/common/errors.py,sha256=QONm-2jKBg8AjgOKXm6x-arAV1KIW9pdhfNN1Ys21Wo,3044
19
- ads/aqua/common/utils.py,sha256=KoGOaVWgl-0s3eowucyvaf9Oa684fBA5eC2bhlGJ21I,44402
16
+ ads/aqua/common/entities.py,sha256=qF74hz2uac3T-4Y92_swTBmW1uimRGbx_RhTCN6M4K0,16937
17
+ ads/aqua/common/enums.py,sha256=hl52JrT8SRQLKZ3sdw12wA2u0PdpnQQW4bejmIvtIsY,4695
18
+ ads/aqua/common/errors.py,sha256=T2jf8RiXSiU6deRoynvmyVsmZj3xJfOBlNudQcdx980,3294
19
+ ads/aqua/common/utils.py,sha256=HTl-A0NCwpMOhIegNihlanxr9v0uQwad3aYqTU87x1I,47964
20
20
  ads/aqua/config/__init__.py,sha256=2a_1LI4jWtJpbic5_v4EoOUTXCAH7cmsy9BW5prDHjU,179
21
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
@@ -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=u9ks3qaaJpeKWk_Na0NkBGg2I4ZGzVcnmNeyufKhm1w,15152
40
+ ads/aqua/extension/deployment_handler.py,sha256=HsnZUbyadj6o3aMdrQMb-xPTCaXQHya5xd2A8wocxf4,16430
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
@@ -62,16 +62,22 @@ ads/aqua/model/model.py,sha256=W6QBMWHTox2miiv-RhZzVf0wUw-5el-ZByE5n0L7vpU,92229
62
62
  ads/aqua/model/utils.py,sha256=gFJVWdQvF4GfyamL4m5u62gOidJC7UXXkQwqXCUIoUo,2016
63
63
  ads/aqua/modeldeployment/__init__.py,sha256=k5fGG2b6mae-uiQyuTAHqPjlzcUyJ4NFaF-uoMnK5Uc,277
64
64
  ads/aqua/modeldeployment/config_loader.py,sha256=B-jIQ_rys1aRwprIDV8LEY3OOnBoacvUcOAvsZzNM5g,32201
65
- ads/aqua/modeldeployment/constants.py,sha256=Z9rlV98HNAexRWG5r7zzRr9Y8uM3Xcm3m-807S6tOXs,356
66
- ads/aqua/modeldeployment/deployment.py,sha256=eV4ywQdLScx89ZGngOJpxyNt5RU8Oi340kKjyJmI3ac,56112
67
- ads/aqua/modeldeployment/entities.py,sha256=fIhCeVealPsX_UghbU6SIyLWG8fIFJD-CEBnuzuUCWA,27449
68
- ads/aqua/modeldeployment/model_group_config.py,sha256=ZNCzHVG7_kKmP7pC7wUY0cDptnsAKqTaDYJcuVARflc,9259
65
+ ads/aqua/modeldeployment/constants.py,sha256=WaD1hfbuWGg2flhRJxQkftpy6pFsEg8bCEXtm0WWP2E,357
66
+ ads/aqua/modeldeployment/deployment.py,sha256=RF0S4dQ-xaTGfLxduHYJGFh8E3qO8z_2WOAppmyu5vI,59478
67
+ ads/aqua/modeldeployment/entities.py,sha256=eisS3RCg8xauPddr2MPtq8WkGiu_yL01sOmuz7R2dGk,27566
68
+ ads/aqua/modeldeployment/model_group_config.py,sha256=tiQNsxqpHADKPTtVbTAMj8v3wN-Y6lFjPkx66yDBuBA,9271
69
69
  ads/aqua/modeldeployment/utils.py,sha256=yPUNGDlyHB7JYalqsczimlkPjf4l8f_NprRORp7nBVE,212
70
- ads/aqua/resources/gpu_shapes_index.json,sha256=-6rSkyQ04T1z_Yfr3cxGPI7NAtgTwG7beIEjLYuMMIc,1948
70
+ ads/aqua/resources/gpu_shapes_index.json,sha256=uyLKK8FBNDv45axzILVlbWbxsfNl2A1l5LJ2pRe1aa0,7491
71
71
  ads/aqua/server/__init__.py,sha256=fswoO0kX0hrp2b1owF4f-bv_OodntvvUY3FvhL6FCMk,179
72
72
  ads/aqua/server/__main__.py,sha256=5dbL01nblJYTQ9Qi8A3dT7Dt7qDhxfPMlEIAYqiQ9iI,749
73
73
  ads/aqua/server/app.py,sha256=IjTFYSh6teWsoxuv5BjBvfurxNReLp6rYtYpYEU61oM,1419
74
74
  ads/aqua/server/aqua_spec.yml,sha256=A6OcGQYQDWq85Kt5oy18PIF0Jb3a5dw9JD6sN8yV4zE,39875
75
+ ads/aqua/shaperecommend/__init__.py,sha256=k_kfW_d02fetbby6Audyw_Vy6e2Ej1jAPMe2awPcqyM,277
76
+ ads/aqua/shaperecommend/constants.py,sha256=V0r0Lg9YhlknxoBfvPBF0IRDVKJYXzJ921beN-8p2oA,2769
77
+ ads/aqua/shaperecommend/estimator.py,sha256=jayYh6BHg19u9T547e5PsSpEuwIzHffxHcsSNJzxHWY,14444
78
+ ads/aqua/shaperecommend/llm_config.py,sha256=1PLSIgjh3Dhay85zUzazei_v_7ArIutp0xv5uTgxMHY,10278
79
+ ads/aqua/shaperecommend/recommend.py,sha256=jDtBCqGUy7fkkCypWzzrWpIvj_pkTwHFSDYQIJtBwcI,18991
80
+ ads/aqua/shaperecommend/shape_report.py,sha256=w9uKM97fPy78dkHzOI3YHlJdwT_dc3lOSJEOogfsj7o,8244
75
81
  ads/aqua/training/__init__.py,sha256=w2DNWltXtASQgbrHyvKo0gMs5_chZoG-CSDMI4qe7i0,202
76
82
  ads/aqua/training/exceptions.py,sha256=S5gHUeUiiPErxuwqG0TB1Yf11mhsAGNYb9o3zd1L1dI,13627
77
83
  ads/aqua/verify_policies/__init__.py,sha256=Qkpvpvc57dwXeWumRwOTCd3jpGjFGrRNs4pXbukPjqc,306
@@ -438,8 +444,8 @@ ads/jobs/builders/base.py,sha256=o_njFwWQpGY755KbYwpYhvup7UGdcDnN06RdVtAbOkM,483
438
444
  ads/jobs/builders/infrastructure/__init__.py,sha256=SgpGnF6ppE6LneSPWysGVdBrYMvVd-jYZD8oQfqtR34,246
439
445
  ads/jobs/builders/infrastructure/base.py,sha256=cm4QXdQ-3Qk3Jz-oVzmeKqLaWW06HgSpc4Q9P3vIHFQ,4405
440
446
  ads/jobs/builders/infrastructure/dataflow.py,sha256=XTuDhcz96vqskE5dFXWqzic1YcYcD5qPlKGhP4J82J0,39281
441
- ads/jobs/builders/infrastructure/dsc_job.py,sha256=xL94UBlyK7S7r9b6HzqJBH1wkYJ30yFtm4SD50ibMmw,69241
442
- ads/jobs/builders/infrastructure/dsc_job_runtime.py,sha256=6ByoAzJ0wkR-mUYcVQUPO4d2SPeNAcxeMzR4TeU52SQ,47755
447
+ ads/jobs/builders/infrastructure/dsc_job.py,sha256=GWzTneX-0RKX3LNJBS_Wg_Ox4jnQVc4YPwvyNydoxiw,69273
448
+ ads/jobs/builders/infrastructure/dsc_job_runtime.py,sha256=rSexr1Le9CdVeoo6f8yIY__2Hdd0Ov2nDfFO7shfc1k,48104
443
449
  ads/jobs/builders/infrastructure/utils.py,sha256=SfGvKiIUsbnMnYFxmMnRtmCDkaiJR0_CuRenP94iQyI,1623
444
450
  ads/jobs/builders/runtimes/__init__.py,sha256=-aGtuFul2fJIMa7xNoOKNFaBAQeBNcZk71hf6dVSohA,204
445
451
  ads/jobs/builders/runtimes/artifact.py,sha256=7RPm-7hd8zG15iCJDIBbfMr7d003Bed9_0ioM-mu5nE,12555
@@ -572,7 +578,7 @@ ads/model/serde/model_input.py,sha256=MB6Uf4H_UzlAUTRIRqHTW4ZiyQKw0yerGtUE-WFSw-
572
578
  ads/model/serde/model_serializer.py,sha256=2vi4MoUHZV-V-4r1OWD5YJzwARFqIBv7-oyGeXGhrK4,43197
573
579
  ads/model/service/__init__.py,sha256=xMyuwB5xsIEW9MFmvyjmF1YnRarsIjeFe2Ib-aprCG4,210
574
580
  ads/model/service/oci_datascience_model.py,sha256=Dv4t_6ZnJTwnCBFpv44mv2pyVGJQVIBTaYaWdvvAGN8,38771
575
- ads/model/service/oci_datascience_model_deployment.py,sha256=eMoyAGTRpJU89nCw_LMB52EazQ2XJbQMF738feFMOyo,18420
581
+ ads/model/service/oci_datascience_model_deployment.py,sha256=CWH45_EJ7irTzoZrixSZMWGsz7VL08fFyAsHqojUrJA,19517
576
582
  ads/model/service/oci_datascience_model_version_set.py,sha256=lYw9BauH4BNZk2Jdf8mRjFO3MorQDSMPAxkP-inlwiM,5690
577
583
  ads/model/transformer/__init__.py,sha256=yBa9sP_49XF0GDWWG-u1Q5ry-vXfmO61oUjNp7mdN74,204
578
584
  ads/model/transformer/onnx_transformer.py,sha256=dr3WldE0bPDIBmKw63FOZ4Jg-1hyfu_9Bezy65adByw,11225
@@ -735,7 +741,7 @@ ads/opctl/operator/lowcode/forecast/model/automlx.py,sha256=PVUslP6Qae3glD3xkgN7
735
741
  ads/opctl/operator/lowcode/forecast/model/autots.py,sha256=UThBBGsEiC3WLSn-BPAuNWT_ZFa3bYMu52keB0vvSt8,13137
736
742
  ads/opctl/operator/lowcode/forecast/model/base_model.py,sha256=X3s7qhHUbExicFq61UG3876LWAQEUiSlpTjGFnib3IY,40401
737
743
  ads/opctl/operator/lowcode/forecast/model/factory.py,sha256=odJAKV1rtu1wkAgDoPy_n4viJCpxnUUzPlJvyMYUr0c,5234
738
- ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py,sha256=b141jsR7k8qCaUA-_xgjtyNfR-MMUlnMNgqGa5OhBeA,21619
744
+ ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py,sha256=Ax4EKrLWwAxkb4_GL9FVIPrMOCwZXXyR250006IjBdU,21666
739
745
  ads/opctl/operator/lowcode/forecast/model/ml_forecast.py,sha256=t5x6EBxOd7XwfT3FGdt-n9gscxaHMm3R2A4Evvxbj38,9646
740
746
  ads/opctl/operator/lowcode/forecast/model/neuralprophet.py,sha256=-AS3PPd8Fqn1uaMybJwTnFbmIfUxNPDlgYjGtjy9-E8,19944
741
747
  ads/opctl/operator/lowcode/forecast/model/prophet.py,sha256=U0M3M7yzy7ea-mEG1c-dELL6t1Pf_LnnnbrZB08CG_Y,17402
@@ -792,7 +798,7 @@ ads/opctl/templates/diagnostic_report_template.jinja2,sha256=YfcEyTTrM-i2WgmS6b1
792
798
  ads/oracledb/__init__.py,sha256=xMyuwB5xsIEW9MFmvyjmF1YnRarsIjeFe2Ib-aprCG4,210
793
799
  ads/oracledb/oracle_db.py,sha256=mb70joLXAnm_ieROFWtG0LvsPNz4URh5dpDDP73_YOo,13570
794
800
  ads/pipeline/__init__.py,sha256=AAxC4BtaiTO4fj5odxTPWBToqxSKfKzQzRHW_9ozIOY,1268
795
- ads/pipeline/ads_pipeline.py,sha256=NkeryW1guYghFkbOlPdN-Kh_LlyZMwJV3c6eAC56V28,84882
801
+ ads/pipeline/ads_pipeline.py,sha256=qOYr-8DHDvnQHQfO0AroP2Kecyqpj6B8wjhDnothKPY,85076
796
802
  ads/pipeline/ads_pipeline_run.py,sha256=XzCb6EKk5jya4Vo5obmu-ksUVNYw8oQP_r6bT21bm50,27880
797
803
  ads/pipeline/ads_pipeline_step.py,sha256=Wo0SYmin2aY2Nqm_DRMoTZ2nGUcpPLA791goic9K14A,20267
798
804
  ads/pipeline/cli.py,sha256=H_Z5vRSZmdW1iFIbbjKPnHa8pp4YS55M95HP9Naqi0Y,3480
@@ -861,8 +867,8 @@ ads/type_discovery/unknown_detector.py,sha256=yZuYQReO7PUyoWZE7onhhtYaOg6088wf1y
861
867
  ads/type_discovery/zipcode_detector.py,sha256=3AlETg_ZF4FT0u914WXvTT3F3Z6Vf51WiIt34yQMRbw,1421
862
868
  ads/vault/__init__.py,sha256=x9tMdDAOdF5iDHk9u2di_K-ze5Nq068x25EWOBoWwqY,245
863
869
  ads/vault/vault.py,sha256=hFBkpYE-Hfmzu1L0sQwUfYcGxpWmgG18JPndRl0NOXI,8624
864
- oracle_ads-2.13.18rc0.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
865
- oracle_ads-2.13.18rc0.dist-info/licenses/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
866
- oracle_ads-2.13.18rc0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
867
- oracle_ads-2.13.18rc0.dist-info/METADATA,sha256=aBsbjgZiA8uiXNt9O106xFGvyCjnd-9PbftwTGXyolk,16997
868
- oracle_ads-2.13.18rc0.dist-info/RECORD,,
870
+ oracle_ads-2.13.19.dist-info/entry_points.txt,sha256=9VFnjpQCsMORA4rVkvN8eH6D3uHjtegb9T911t8cqV0,35
871
+ oracle_ads-2.13.19.dist-info/licenses/LICENSE.txt,sha256=zoGmbfD1IdRKx834U0IzfFFFo5KoFK71TND3K9xqYqo,1845
872
+ oracle_ads-2.13.19.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
873
+ oracle_ads-2.13.19.dist-info/METADATA,sha256=azUVd7xrB_nXSNAk_SsmBBxjIcQ9IH8wZsKCk-RKDhc,16994
874
+ oracle_ads-2.13.19.dist-info/RECORD,,