oracle-ads 2.13.9rc0__py3-none-any.whl → 2.13.10rc0__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 (858) hide show
  1. ads/aqua/__init__.py +40 -0
  2. ads/aqua/app.py +507 -0
  3. ads/aqua/cli.py +96 -0
  4. ads/aqua/client/__init__.py +3 -0
  5. ads/aqua/client/client.py +836 -0
  6. ads/aqua/client/openai_client.py +305 -0
  7. ads/aqua/common/__init__.py +5 -0
  8. ads/aqua/common/decorator.py +125 -0
  9. ads/aqua/common/entities.py +274 -0
  10. ads/aqua/common/enums.py +134 -0
  11. ads/aqua/common/errors.py +109 -0
  12. ads/aqua/common/utils.py +1295 -0
  13. ads/aqua/config/__init__.py +4 -0
  14. ads/aqua/config/container_config.py +247 -0
  15. ads/aqua/config/evaluation/__init__.py +4 -0
  16. ads/aqua/config/evaluation/evaluation_service_config.py +147 -0
  17. ads/aqua/config/utils/__init__.py +4 -0
  18. ads/aqua/config/utils/serializer.py +339 -0
  19. ads/aqua/constants.py +116 -0
  20. ads/aqua/data.py +14 -0
  21. ads/aqua/dummy_data/icon.txt +1 -0
  22. ads/aqua/dummy_data/oci_model_deployments.json +56 -0
  23. ads/aqua/dummy_data/oci_models.json +1 -0
  24. ads/aqua/dummy_data/readme.md +26 -0
  25. ads/aqua/evaluation/__init__.py +8 -0
  26. ads/aqua/evaluation/constants.py +53 -0
  27. ads/aqua/evaluation/entities.py +186 -0
  28. ads/aqua/evaluation/errors.py +70 -0
  29. ads/aqua/evaluation/evaluation.py +1814 -0
  30. ads/aqua/extension/__init__.py +42 -0
  31. ads/aqua/extension/aqua_ws_msg_handler.py +76 -0
  32. ads/aqua/extension/base_handler.py +90 -0
  33. ads/aqua/extension/common_handler.py +121 -0
  34. ads/aqua/extension/common_ws_msg_handler.py +36 -0
  35. ads/aqua/extension/deployment_handler.py +381 -0
  36. ads/aqua/extension/deployment_ws_msg_handler.py +54 -0
  37. ads/aqua/extension/errors.py +30 -0
  38. ads/aqua/extension/evaluation_handler.py +129 -0
  39. ads/aqua/extension/evaluation_ws_msg_handler.py +61 -0
  40. ads/aqua/extension/finetune_handler.py +96 -0
  41. ads/aqua/extension/model_handler.py +390 -0
  42. ads/aqua/extension/models/__init__.py +0 -0
  43. ads/aqua/extension/models/ws_models.py +145 -0
  44. ads/aqua/extension/models_ws_msg_handler.py +50 -0
  45. ads/aqua/extension/ui_handler.py +300 -0
  46. ads/aqua/extension/ui_websocket_handler.py +130 -0
  47. ads/aqua/extension/utils.py +133 -0
  48. ads/aqua/finetuning/__init__.py +7 -0
  49. ads/aqua/finetuning/constants.py +23 -0
  50. ads/aqua/finetuning/entities.py +181 -0
  51. ads/aqua/finetuning/finetuning.py +749 -0
  52. ads/aqua/model/__init__.py +8 -0
  53. ads/aqua/model/constants.py +60 -0
  54. ads/aqua/model/entities.py +385 -0
  55. ads/aqua/model/enums.py +32 -0
  56. ads/aqua/model/model.py +2134 -0
  57. ads/aqua/model/utils.py +52 -0
  58. ads/aqua/modeldeployment/__init__.py +6 -0
  59. ads/aqua/modeldeployment/constants.py +10 -0
  60. ads/aqua/modeldeployment/deployment.py +1315 -0
  61. ads/aqua/modeldeployment/entities.py +653 -0
  62. ads/aqua/modeldeployment/utils.py +543 -0
  63. ads/aqua/resources/gpu_shapes_index.json +94 -0
  64. ads/aqua/server/__init__.py +4 -0
  65. ads/aqua/server/__main__.py +24 -0
  66. ads/aqua/server/app.py +47 -0
  67. ads/aqua/server/aqua_spec.yml +1291 -0
  68. ads/aqua/training/__init__.py +4 -0
  69. ads/aqua/training/exceptions.py +476 -0
  70. ads/aqua/ui.py +519 -0
  71. ads/automl/__init__.py +9 -0
  72. ads/automl/driver.py +330 -0
  73. ads/automl/provider.py +975 -0
  74. ads/bds/__init__.py +5 -0
  75. ads/bds/auth.py +127 -0
  76. ads/bds/big_data_service.py +255 -0
  77. ads/catalog/__init__.py +19 -0
  78. ads/catalog/model.py +1576 -0
  79. ads/catalog/notebook.py +461 -0
  80. ads/catalog/project.py +468 -0
  81. ads/catalog/summary.py +178 -0
  82. ads/common/__init__.py +11 -0
  83. ads/common/analyzer.py +65 -0
  84. ads/common/artifact/.model-ignore +63 -0
  85. ads/common/artifact/__init__.py +10 -0
  86. ads/common/auth.py +1122 -0
  87. ads/common/card_identifier.py +83 -0
  88. ads/common/config.py +647 -0
  89. ads/common/data.py +165 -0
  90. ads/common/decorator/__init__.py +9 -0
  91. ads/common/decorator/argument_to_case.py +88 -0
  92. ads/common/decorator/deprecate.py +69 -0
  93. ads/common/decorator/require_nonempty_arg.py +65 -0
  94. ads/common/decorator/runtime_dependency.py +178 -0
  95. ads/common/decorator/threaded.py +97 -0
  96. ads/common/decorator/utils.py +35 -0
  97. ads/common/dsc_file_system.py +303 -0
  98. ads/common/error.py +14 -0
  99. ads/common/extended_enum.py +81 -0
  100. ads/common/function/__init__.py +5 -0
  101. ads/common/function/fn_util.py +142 -0
  102. ads/common/function/func_conf.yaml +25 -0
  103. ads/common/ipython.py +76 -0
  104. ads/common/model.py +679 -0
  105. ads/common/model_artifact.py +1759 -0
  106. ads/common/model_artifact_schema.json +107 -0
  107. ads/common/model_export_util.py +664 -0
  108. ads/common/model_metadata.py +24 -0
  109. ads/common/object_storage_details.py +296 -0
  110. ads/common/oci_client.py +179 -0
  111. ads/common/oci_datascience.py +46 -0
  112. ads/common/oci_logging.py +1144 -0
  113. ads/common/oci_mixin.py +957 -0
  114. ads/common/oci_resource.py +136 -0
  115. ads/common/serializer.py +559 -0
  116. ads/common/utils.py +1852 -0
  117. ads/common/word_lists.py +1491 -0
  118. ads/common/work_request.py +189 -0
  119. ads/config.py +1 -0
  120. ads/data_labeling/__init__.py +13 -0
  121. ads/data_labeling/boundingbox.py +253 -0
  122. ads/data_labeling/constants.py +47 -0
  123. ads/data_labeling/data_labeling_service.py +244 -0
  124. ads/data_labeling/interface/__init__.py +5 -0
  125. ads/data_labeling/interface/loader.py +16 -0
  126. ads/data_labeling/interface/parser.py +16 -0
  127. ads/data_labeling/interface/reader.py +23 -0
  128. ads/data_labeling/loader/__init__.py +5 -0
  129. ads/data_labeling/loader/file_loader.py +241 -0
  130. ads/data_labeling/metadata.py +110 -0
  131. ads/data_labeling/mixin/__init__.py +5 -0
  132. ads/data_labeling/mixin/data_labeling.py +232 -0
  133. ads/data_labeling/ner.py +129 -0
  134. ads/data_labeling/parser/__init__.py +5 -0
  135. ads/data_labeling/parser/dls_record_parser.py +388 -0
  136. ads/data_labeling/parser/export_metadata_parser.py +94 -0
  137. ads/data_labeling/parser/export_record_parser.py +473 -0
  138. ads/data_labeling/reader/__init__.py +5 -0
  139. ads/data_labeling/reader/dataset_reader.py +574 -0
  140. ads/data_labeling/reader/dls_record_reader.py +121 -0
  141. ads/data_labeling/reader/export_record_reader.py +62 -0
  142. ads/data_labeling/reader/jsonl_reader.py +75 -0
  143. ads/data_labeling/reader/metadata_reader.py +203 -0
  144. ads/data_labeling/reader/record_reader.py +263 -0
  145. ads/data_labeling/record.py +52 -0
  146. ads/data_labeling/visualizer/__init__.py +5 -0
  147. ads/data_labeling/visualizer/image_visualizer.py +525 -0
  148. ads/data_labeling/visualizer/text_visualizer.py +357 -0
  149. ads/database/__init__.py +5 -0
  150. ads/database/connection.py +338 -0
  151. ads/dataset/__init__.py +10 -0
  152. ads/dataset/capabilities.md +51 -0
  153. ads/dataset/classification_dataset.py +339 -0
  154. ads/dataset/correlation.py +226 -0
  155. ads/dataset/correlation_plot.py +563 -0
  156. ads/dataset/dask_series.py +173 -0
  157. ads/dataset/dataframe_transformer.py +110 -0
  158. ads/dataset/dataset.py +1979 -0
  159. ads/dataset/dataset_browser.py +360 -0
  160. ads/dataset/dataset_with_target.py +995 -0
  161. ads/dataset/exception.py +25 -0
  162. ads/dataset/factory.py +987 -0
  163. ads/dataset/feature_engineering_transformer.py +35 -0
  164. ads/dataset/feature_selection.py +107 -0
  165. ads/dataset/forecasting_dataset.py +26 -0
  166. ads/dataset/helper.py +1450 -0
  167. ads/dataset/label_encoder.py +99 -0
  168. ads/dataset/mixin/__init__.py +5 -0
  169. ads/dataset/mixin/dataset_accessor.py +134 -0
  170. ads/dataset/pipeline.py +58 -0
  171. ads/dataset/plot.py +710 -0
  172. ads/dataset/progress.py +86 -0
  173. ads/dataset/recommendation.py +297 -0
  174. ads/dataset/recommendation_transformer.py +502 -0
  175. ads/dataset/regression_dataset.py +14 -0
  176. ads/dataset/sampled_dataset.py +1050 -0
  177. ads/dataset/target.py +98 -0
  178. ads/dataset/timeseries.py +18 -0
  179. ads/dbmixin/__init__.py +5 -0
  180. ads/dbmixin/db_pandas_accessor.py +153 -0
  181. ads/environment/__init__.py +9 -0
  182. ads/environment/ml_runtime.py +66 -0
  183. ads/evaluations/README.md +14 -0
  184. ads/evaluations/__init__.py +109 -0
  185. ads/evaluations/evaluation_plot.py +983 -0
  186. ads/evaluations/evaluator.py +1334 -0
  187. ads/evaluations/statistical_metrics.py +543 -0
  188. ads/experiments/__init__.py +9 -0
  189. ads/experiments/capabilities.md +0 -0
  190. ads/explanations/__init__.py +21 -0
  191. ads/explanations/base_explainer.py +142 -0
  192. ads/explanations/capabilities.md +83 -0
  193. ads/explanations/explainer.py +190 -0
  194. ads/explanations/mlx_global_explainer.py +1050 -0
  195. ads/explanations/mlx_interface.py +386 -0
  196. ads/explanations/mlx_local_explainer.py +287 -0
  197. ads/explanations/mlx_whatif_explainer.py +201 -0
  198. ads/feature_engineering/__init__.py +20 -0
  199. ads/feature_engineering/accessor/__init__.py +5 -0
  200. ads/feature_engineering/accessor/dataframe_accessor.py +535 -0
  201. ads/feature_engineering/accessor/mixin/__init__.py +5 -0
  202. ads/feature_engineering/accessor/mixin/correlation.py +166 -0
  203. ads/feature_engineering/accessor/mixin/eda_mixin.py +266 -0
  204. ads/feature_engineering/accessor/mixin/eda_mixin_series.py +85 -0
  205. ads/feature_engineering/accessor/mixin/feature_types_mixin.py +211 -0
  206. ads/feature_engineering/accessor/mixin/utils.py +65 -0
  207. ads/feature_engineering/accessor/series_accessor.py +431 -0
  208. ads/feature_engineering/adsimage/__init__.py +5 -0
  209. ads/feature_engineering/adsimage/image.py +192 -0
  210. ads/feature_engineering/adsimage/image_reader.py +170 -0
  211. ads/feature_engineering/adsimage/interface/__init__.py +5 -0
  212. ads/feature_engineering/adsimage/interface/reader.py +19 -0
  213. ads/feature_engineering/adsstring/__init__.py +7 -0
  214. ads/feature_engineering/adsstring/oci_language/__init__.py +8 -0
  215. ads/feature_engineering/adsstring/string/__init__.py +8 -0
  216. ads/feature_engineering/data_schema.json +57 -0
  217. ads/feature_engineering/dataset/__init__.py +5 -0
  218. ads/feature_engineering/dataset/zip_code_data.py +42062 -0
  219. ads/feature_engineering/exceptions.py +40 -0
  220. ads/feature_engineering/feature_type/__init__.py +133 -0
  221. ads/feature_engineering/feature_type/address.py +184 -0
  222. ads/feature_engineering/feature_type/adsstring/__init__.py +5 -0
  223. ads/feature_engineering/feature_type/adsstring/common_regex_mixin.py +164 -0
  224. ads/feature_engineering/feature_type/adsstring/oci_language.py +93 -0
  225. ads/feature_engineering/feature_type/adsstring/parsers/__init__.py +5 -0
  226. ads/feature_engineering/feature_type/adsstring/parsers/base.py +47 -0
  227. ads/feature_engineering/feature_type/adsstring/parsers/nltk_parser.py +96 -0
  228. ads/feature_engineering/feature_type/adsstring/parsers/spacy_parser.py +221 -0
  229. ads/feature_engineering/feature_type/adsstring/string.py +258 -0
  230. ads/feature_engineering/feature_type/base.py +58 -0
  231. ads/feature_engineering/feature_type/boolean.py +183 -0
  232. ads/feature_engineering/feature_type/category.py +146 -0
  233. ads/feature_engineering/feature_type/constant.py +137 -0
  234. ads/feature_engineering/feature_type/continuous.py +151 -0
  235. ads/feature_engineering/feature_type/creditcard.py +314 -0
  236. ads/feature_engineering/feature_type/datetime.py +190 -0
  237. ads/feature_engineering/feature_type/discrete.py +134 -0
  238. ads/feature_engineering/feature_type/document.py +43 -0
  239. ads/feature_engineering/feature_type/gis.py +251 -0
  240. ads/feature_engineering/feature_type/handler/__init__.py +5 -0
  241. ads/feature_engineering/feature_type/handler/feature_validator.py +524 -0
  242. ads/feature_engineering/feature_type/handler/feature_warning.py +319 -0
  243. ads/feature_engineering/feature_type/handler/warnings.py +128 -0
  244. ads/feature_engineering/feature_type/integer.py +142 -0
  245. ads/feature_engineering/feature_type/ip_address.py +144 -0
  246. ads/feature_engineering/feature_type/ip_address_v4.py +138 -0
  247. ads/feature_engineering/feature_type/ip_address_v6.py +138 -0
  248. ads/feature_engineering/feature_type/lat_long.py +256 -0
  249. ads/feature_engineering/feature_type/object.py +43 -0
  250. ads/feature_engineering/feature_type/ordinal.py +132 -0
  251. ads/feature_engineering/feature_type/phone_number.py +135 -0
  252. ads/feature_engineering/feature_type/string.py +171 -0
  253. ads/feature_engineering/feature_type/text.py +93 -0
  254. ads/feature_engineering/feature_type/unknown.py +43 -0
  255. ads/feature_engineering/feature_type/zip_code.py +164 -0
  256. ads/feature_engineering/feature_type_manager.py +406 -0
  257. ads/feature_engineering/schema.py +795 -0
  258. ads/feature_engineering/utils.py +245 -0
  259. ads/feature_store/.readthedocs.yaml +19 -0
  260. ads/feature_store/README.md +65 -0
  261. ads/feature_store/__init__.py +9 -0
  262. ads/feature_store/common/__init__.py +0 -0
  263. ads/feature_store/common/enums.py +339 -0
  264. ads/feature_store/common/exceptions.py +18 -0
  265. ads/feature_store/common/spark_session_singleton.py +125 -0
  266. ads/feature_store/common/utils/__init__.py +0 -0
  267. ads/feature_store/common/utils/base64_encoder_decoder.py +72 -0
  268. ads/feature_store/common/utils/feature_schema_mapper.py +283 -0
  269. ads/feature_store/common/utils/transformation_utils.py +82 -0
  270. ads/feature_store/common/utils/utility.py +403 -0
  271. ads/feature_store/data_validation/__init__.py +0 -0
  272. ads/feature_store/data_validation/great_expectation.py +129 -0
  273. ads/feature_store/dataset.py +1230 -0
  274. ads/feature_store/dataset_job.py +530 -0
  275. ads/feature_store/docs/Dockerfile +7 -0
  276. ads/feature_store/docs/Makefile +44 -0
  277. ads/feature_store/docs/conf.py +28 -0
  278. ads/feature_store/docs/requirements.txt +14 -0
  279. ads/feature_store/docs/source/ads.feature_store.query.rst +20 -0
  280. ads/feature_store/docs/source/cicd.rst +137 -0
  281. ads/feature_store/docs/source/conf.py +86 -0
  282. ads/feature_store/docs/source/data_versioning.rst +33 -0
  283. ads/feature_store/docs/source/dataset.rst +388 -0
  284. ads/feature_store/docs/source/dataset_job.rst +27 -0
  285. ads/feature_store/docs/source/demo.rst +70 -0
  286. ads/feature_store/docs/source/entity.rst +78 -0
  287. ads/feature_store/docs/source/feature_group.rst +624 -0
  288. ads/feature_store/docs/source/feature_group_job.rst +29 -0
  289. ads/feature_store/docs/source/feature_store.rst +122 -0
  290. ads/feature_store/docs/source/feature_store_class.rst +123 -0
  291. ads/feature_store/docs/source/feature_validation.rst +66 -0
  292. ads/feature_store/docs/source/figures/cicd.png +0 -0
  293. ads/feature_store/docs/source/figures/data_validation.png +0 -0
  294. ads/feature_store/docs/source/figures/data_versioning.png +0 -0
  295. ads/feature_store/docs/source/figures/dataset.gif +0 -0
  296. ads/feature_store/docs/source/figures/dataset.png +0 -0
  297. ads/feature_store/docs/source/figures/dataset_lineage.png +0 -0
  298. ads/feature_store/docs/source/figures/dataset_statistics.png +0 -0
  299. ads/feature_store/docs/source/figures/dataset_statistics_viz.png +0 -0
  300. ads/feature_store/docs/source/figures/dataset_validation_results.png +0 -0
  301. ads/feature_store/docs/source/figures/dataset_validation_summary.png +0 -0
  302. ads/feature_store/docs/source/figures/drift_monitoring.png +0 -0
  303. ads/feature_store/docs/source/figures/entity.png +0 -0
  304. ads/feature_store/docs/source/figures/feature_group.png +0 -0
  305. ads/feature_store/docs/source/figures/feature_group_lineage.png +0 -0
  306. ads/feature_store/docs/source/figures/feature_group_statistics_viz.png +0 -0
  307. ads/feature_store/docs/source/figures/feature_store_deployment.png +0 -0
  308. ads/feature_store/docs/source/figures/feature_store_overview.png +0 -0
  309. ads/feature_store/docs/source/figures/featuregroup.gif +0 -0
  310. ads/feature_store/docs/source/figures/lineage_d1.png +0 -0
  311. ads/feature_store/docs/source/figures/lineage_d2.png +0 -0
  312. ads/feature_store/docs/source/figures/lineage_fg.png +0 -0
  313. ads/feature_store/docs/source/figures/logo-dark-mode.png +0 -0
  314. ads/feature_store/docs/source/figures/logo-light-mode.png +0 -0
  315. ads/feature_store/docs/source/figures/overview.png +0 -0
  316. ads/feature_store/docs/source/figures/resource_manager.png +0 -0
  317. ads/feature_store/docs/source/figures/resource_manager_feature_store_stack.png +0 -0
  318. ads/feature_store/docs/source/figures/resource_manager_home.png +0 -0
  319. ads/feature_store/docs/source/figures/stats_1.png +0 -0
  320. ads/feature_store/docs/source/figures/stats_2.png +0 -0
  321. ads/feature_store/docs/source/figures/stats_d.png +0 -0
  322. ads/feature_store/docs/source/figures/stats_fg.png +0 -0
  323. ads/feature_store/docs/source/figures/transformation.png +0 -0
  324. ads/feature_store/docs/source/figures/transformations.gif +0 -0
  325. ads/feature_store/docs/source/figures/validation.png +0 -0
  326. ads/feature_store/docs/source/figures/validation_fg.png +0 -0
  327. ads/feature_store/docs/source/figures/validation_results.png +0 -0
  328. ads/feature_store/docs/source/figures/validation_summary.png +0 -0
  329. ads/feature_store/docs/source/index.rst +81 -0
  330. ads/feature_store/docs/source/module.rst +8 -0
  331. ads/feature_store/docs/source/notebook.rst +94 -0
  332. ads/feature_store/docs/source/overview.rst +47 -0
  333. ads/feature_store/docs/source/quickstart.rst +176 -0
  334. ads/feature_store/docs/source/release_notes.rst +194 -0
  335. ads/feature_store/docs/source/setup_feature_store.rst +81 -0
  336. ads/feature_store/docs/source/statistics.rst +58 -0
  337. ads/feature_store/docs/source/transformation.rst +199 -0
  338. ads/feature_store/docs/source/ui.rst +65 -0
  339. ads/feature_store/docs/source/user_guides.setup.feature_store_operator.rst +66 -0
  340. ads/feature_store/docs/source/user_guides.setup.helm_chart.rst +192 -0
  341. ads/feature_store/docs/source/user_guides.setup.terraform.rst +338 -0
  342. ads/feature_store/entity.py +718 -0
  343. ads/feature_store/execution_strategy/__init__.py +0 -0
  344. ads/feature_store/execution_strategy/delta_lake/__init__.py +0 -0
  345. ads/feature_store/execution_strategy/delta_lake/delta_lake_service.py +375 -0
  346. ads/feature_store/execution_strategy/engine/__init__.py +0 -0
  347. ads/feature_store/execution_strategy/engine/spark_engine.py +316 -0
  348. ads/feature_store/execution_strategy/execution_strategy.py +113 -0
  349. ads/feature_store/execution_strategy/execution_strategy_provider.py +47 -0
  350. ads/feature_store/execution_strategy/spark/__init__.py +0 -0
  351. ads/feature_store/execution_strategy/spark/spark_execution.py +618 -0
  352. ads/feature_store/feature.py +192 -0
  353. ads/feature_store/feature_group.py +1494 -0
  354. ads/feature_store/feature_group_expectation.py +346 -0
  355. ads/feature_store/feature_group_job.py +602 -0
  356. ads/feature_store/feature_lineage/__init__.py +0 -0
  357. ads/feature_store/feature_lineage/graphviz_service.py +180 -0
  358. ads/feature_store/feature_option_details.py +50 -0
  359. ads/feature_store/feature_statistics/__init__.py +0 -0
  360. ads/feature_store/feature_statistics/statistics_service.py +99 -0
  361. ads/feature_store/feature_store.py +699 -0
  362. ads/feature_store/feature_store_registrar.py +518 -0
  363. ads/feature_store/input_feature_detail.py +149 -0
  364. ads/feature_store/mixin/__init__.py +4 -0
  365. ads/feature_store/mixin/oci_feature_store.py +145 -0
  366. ads/feature_store/model_details.py +73 -0
  367. ads/feature_store/query/__init__.py +0 -0
  368. ads/feature_store/query/filter.py +266 -0
  369. ads/feature_store/query/generator/__init__.py +0 -0
  370. ads/feature_store/query/generator/query_generator.py +298 -0
  371. ads/feature_store/query/join.py +161 -0
  372. ads/feature_store/query/query.py +403 -0
  373. ads/feature_store/query/validator/__init__.py +0 -0
  374. ads/feature_store/query/validator/query_validator.py +57 -0
  375. ads/feature_store/response/__init__.py +0 -0
  376. ads/feature_store/response/response_builder.py +68 -0
  377. ads/feature_store/service/__init__.py +0 -0
  378. ads/feature_store/service/oci_dataset.py +139 -0
  379. ads/feature_store/service/oci_dataset_job.py +199 -0
  380. ads/feature_store/service/oci_entity.py +125 -0
  381. ads/feature_store/service/oci_feature_group.py +164 -0
  382. ads/feature_store/service/oci_feature_group_job.py +214 -0
  383. ads/feature_store/service/oci_feature_store.py +182 -0
  384. ads/feature_store/service/oci_lineage.py +87 -0
  385. ads/feature_store/service/oci_transformation.py +104 -0
  386. ads/feature_store/statistics/__init__.py +0 -0
  387. ads/feature_store/statistics/abs_feature_value.py +49 -0
  388. ads/feature_store/statistics/charts/__init__.py +0 -0
  389. ads/feature_store/statistics/charts/abstract_feature_plot.py +37 -0
  390. ads/feature_store/statistics/charts/box_plot.py +148 -0
  391. ads/feature_store/statistics/charts/frequency_distribution.py +65 -0
  392. ads/feature_store/statistics/charts/probability_distribution.py +68 -0
  393. ads/feature_store/statistics/charts/top_k_frequent_elements.py +98 -0
  394. ads/feature_store/statistics/feature_stat.py +126 -0
  395. ads/feature_store/statistics/generic_feature_value.py +33 -0
  396. ads/feature_store/statistics/statistics.py +41 -0
  397. ads/feature_store/statistics_config.py +101 -0
  398. ads/feature_store/templates/feature_store_template.yaml +45 -0
  399. ads/feature_store/transformation.py +499 -0
  400. ads/feature_store/validation_output.py +57 -0
  401. ads/hpo/__init__.py +9 -0
  402. ads/hpo/_imports.py +91 -0
  403. ads/hpo/ads_search_space.py +439 -0
  404. ads/hpo/distributions.py +325 -0
  405. ads/hpo/objective.py +280 -0
  406. ads/hpo/search_cv.py +1657 -0
  407. ads/hpo/stopping_criterion.py +75 -0
  408. ads/hpo/tuner_artifact.py +413 -0
  409. ads/hpo/utils.py +91 -0
  410. ads/hpo/validation.py +140 -0
  411. ads/hpo/visualization/__init__.py +5 -0
  412. ads/hpo/visualization/_contour.py +23 -0
  413. ads/hpo/visualization/_edf.py +20 -0
  414. ads/hpo/visualization/_intermediate_values.py +21 -0
  415. ads/hpo/visualization/_optimization_history.py +25 -0
  416. ads/hpo/visualization/_parallel_coordinate.py +169 -0
  417. ads/hpo/visualization/_param_importances.py +26 -0
  418. ads/jobs/__init__.py +53 -0
  419. ads/jobs/ads_job.py +663 -0
  420. ads/jobs/builders/__init__.py +5 -0
  421. ads/jobs/builders/base.py +156 -0
  422. ads/jobs/builders/infrastructure/__init__.py +6 -0
  423. ads/jobs/builders/infrastructure/base.py +165 -0
  424. ads/jobs/builders/infrastructure/dataflow.py +1252 -0
  425. ads/jobs/builders/infrastructure/dsc_job.py +1894 -0
  426. ads/jobs/builders/infrastructure/dsc_job_runtime.py +1233 -0
  427. ads/jobs/builders/infrastructure/utils.py +65 -0
  428. ads/jobs/builders/runtimes/__init__.py +5 -0
  429. ads/jobs/builders/runtimes/artifact.py +338 -0
  430. ads/jobs/builders/runtimes/base.py +325 -0
  431. ads/jobs/builders/runtimes/container_runtime.py +242 -0
  432. ads/jobs/builders/runtimes/python_runtime.py +1016 -0
  433. ads/jobs/builders/runtimes/pytorch_runtime.py +204 -0
  434. ads/jobs/cli.py +104 -0
  435. ads/jobs/env_var_parser.py +131 -0
  436. ads/jobs/extension.py +160 -0
  437. ads/jobs/schema/__init__.py +5 -0
  438. ads/jobs/schema/infrastructure_schema.json +116 -0
  439. ads/jobs/schema/job_schema.json +42 -0
  440. ads/jobs/schema/runtime_schema.json +183 -0
  441. ads/jobs/schema/validator.py +141 -0
  442. ads/jobs/serializer.py +296 -0
  443. ads/jobs/templates/__init__.py +5 -0
  444. ads/jobs/templates/container.py +6 -0
  445. ads/jobs/templates/driver_notebook.py +177 -0
  446. ads/jobs/templates/driver_oci.py +500 -0
  447. ads/jobs/templates/driver_python.py +48 -0
  448. ads/jobs/templates/driver_pytorch.py +852 -0
  449. ads/jobs/templates/driver_utils.py +615 -0
  450. ads/jobs/templates/hostname_from_env.c +55 -0
  451. ads/jobs/templates/oci_metrics.py +181 -0
  452. ads/jobs/utils.py +104 -0
  453. ads/llm/__init__.py +28 -0
  454. ads/llm/autogen/__init__.py +2 -0
  455. ads/llm/autogen/constants.py +15 -0
  456. ads/llm/autogen/reports/__init__.py +2 -0
  457. ads/llm/autogen/reports/base.py +67 -0
  458. ads/llm/autogen/reports/data.py +103 -0
  459. ads/llm/autogen/reports/session.py +526 -0
  460. ads/llm/autogen/reports/templates/chat_box.html +13 -0
  461. ads/llm/autogen/reports/templates/chat_box_lt.html +5 -0
  462. ads/llm/autogen/reports/templates/chat_box_rt.html +6 -0
  463. ads/llm/autogen/reports/utils.py +56 -0
  464. ads/llm/autogen/v02/__init__.py +4 -0
  465. ads/llm/autogen/v02/client.py +295 -0
  466. ads/llm/autogen/v02/log_handlers/__init__.py +2 -0
  467. ads/llm/autogen/v02/log_handlers/oci_file_handler.py +83 -0
  468. ads/llm/autogen/v02/loggers/__init__.py +6 -0
  469. ads/llm/autogen/v02/loggers/metric_logger.py +320 -0
  470. ads/llm/autogen/v02/loggers/session_logger.py +580 -0
  471. ads/llm/autogen/v02/loggers/utils.py +86 -0
  472. ads/llm/autogen/v02/runtime_logging.py +163 -0
  473. ads/llm/chain.py +268 -0
  474. ads/llm/chat_template.py +31 -0
  475. ads/llm/deploy.py +63 -0
  476. ads/llm/guardrails/__init__.py +5 -0
  477. ads/llm/guardrails/base.py +442 -0
  478. ads/llm/guardrails/huggingface.py +44 -0
  479. ads/llm/langchain/__init__.py +5 -0
  480. ads/llm/langchain/plugins/__init__.py +5 -0
  481. ads/llm/langchain/plugins/chat_models/__init__.py +5 -0
  482. ads/llm/langchain/plugins/chat_models/oci_data_science.py +1027 -0
  483. ads/llm/langchain/plugins/embeddings/__init__.py +4 -0
  484. ads/llm/langchain/plugins/embeddings/oci_data_science_model_deployment_endpoint.py +184 -0
  485. ads/llm/langchain/plugins/llms/__init__.py +5 -0
  486. ads/llm/langchain/plugins/llms/oci_data_science_model_deployment_endpoint.py +979 -0
  487. ads/llm/requirements.txt +3 -0
  488. ads/llm/serialize.py +219 -0
  489. ads/llm/serializers/__init__.py +0 -0
  490. ads/llm/serializers/retrieval_qa.py +153 -0
  491. ads/llm/serializers/runnable_parallel.py +27 -0
  492. ads/llm/templates/score_chain.jinja2 +155 -0
  493. ads/llm/templates/tool_chat_template_hermes.jinja +130 -0
  494. ads/llm/templates/tool_chat_template_mistral_parallel.jinja +94 -0
  495. ads/model/__init__.py +52 -0
  496. ads/model/artifact.py +573 -0
  497. ads/model/artifact_downloader.py +254 -0
  498. ads/model/artifact_uploader.py +267 -0
  499. ads/model/base_properties.py +238 -0
  500. ads/model/common/.model-ignore +66 -0
  501. ads/model/common/__init__.py +5 -0
  502. ads/model/common/utils.py +142 -0
  503. ads/model/datascience_model.py +2635 -0
  504. ads/model/deployment/__init__.py +20 -0
  505. ads/model/deployment/common/__init__.py +5 -0
  506. ads/model/deployment/common/utils.py +308 -0
  507. ads/model/deployment/model_deployer.py +466 -0
  508. ads/model/deployment/model_deployment.py +1846 -0
  509. ads/model/deployment/model_deployment_infrastructure.py +671 -0
  510. ads/model/deployment/model_deployment_properties.py +493 -0
  511. ads/model/deployment/model_deployment_runtime.py +838 -0
  512. ads/model/extractor/__init__.py +5 -0
  513. ads/model/extractor/automl_extractor.py +74 -0
  514. ads/model/extractor/embedding_onnx_extractor.py +80 -0
  515. ads/model/extractor/huggingface_extractor.py +88 -0
  516. ads/model/extractor/keras_extractor.py +84 -0
  517. ads/model/extractor/lightgbm_extractor.py +93 -0
  518. ads/model/extractor/model_info_extractor.py +114 -0
  519. ads/model/extractor/model_info_extractor_factory.py +105 -0
  520. ads/model/extractor/pytorch_extractor.py +87 -0
  521. ads/model/extractor/sklearn_extractor.py +112 -0
  522. ads/model/extractor/spark_extractor.py +89 -0
  523. ads/model/extractor/tensorflow_extractor.py +85 -0
  524. ads/model/extractor/xgboost_extractor.py +94 -0
  525. ads/model/framework/__init__.py +5 -0
  526. ads/model/framework/automl_model.py +178 -0
  527. ads/model/framework/embedding_onnx_model.py +438 -0
  528. ads/model/framework/huggingface_model.py +399 -0
  529. ads/model/framework/lightgbm_model.py +266 -0
  530. ads/model/framework/pytorch_model.py +266 -0
  531. ads/model/framework/sklearn_model.py +250 -0
  532. ads/model/framework/spark_model.py +326 -0
  533. ads/model/framework/tensorflow_model.py +254 -0
  534. ads/model/framework/xgboost_model.py +258 -0
  535. ads/model/generic_model.py +3518 -0
  536. ads/model/model_artifact_boilerplate/README.md +381 -0
  537. ads/model/model_artifact_boilerplate/__init__.py +5 -0
  538. ads/model/model_artifact_boilerplate/artifact_introspection_test/__init__.py +5 -0
  539. ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py +427 -0
  540. ads/model/model_artifact_boilerplate/artifact_introspection_test/requirements.txt +2 -0
  541. ads/model/model_artifact_boilerplate/runtime.yaml +7 -0
  542. ads/model/model_artifact_boilerplate/score.py +61 -0
  543. ads/model/model_file_description_schema.json +68 -0
  544. ads/model/model_introspect.py +331 -0
  545. ads/model/model_metadata.py +1810 -0
  546. ads/model/model_metadata_mixin.py +460 -0
  547. ads/model/model_properties.py +63 -0
  548. ads/model/model_version_set.py +739 -0
  549. ads/model/runtime/__init__.py +5 -0
  550. ads/model/runtime/env_info.py +306 -0
  551. ads/model/runtime/model_deployment_details.py +37 -0
  552. ads/model/runtime/model_provenance_details.py +58 -0
  553. ads/model/runtime/runtime_info.py +81 -0
  554. ads/model/runtime/schemas/inference_env_info_schema.yaml +16 -0
  555. ads/model/runtime/schemas/model_provenance_schema.yaml +36 -0
  556. ads/model/runtime/schemas/training_env_info_schema.yaml +16 -0
  557. ads/model/runtime/utils.py +201 -0
  558. ads/model/serde/__init__.py +5 -0
  559. ads/model/serde/common.py +40 -0
  560. ads/model/serde/model_input.py +547 -0
  561. ads/model/serde/model_serializer.py +1184 -0
  562. ads/model/service/__init__.py +5 -0
  563. ads/model/service/oci_datascience_model.py +1076 -0
  564. ads/model/service/oci_datascience_model_deployment.py +500 -0
  565. ads/model/service/oci_datascience_model_version_set.py +176 -0
  566. ads/model/transformer/__init__.py +5 -0
  567. ads/model/transformer/onnx_transformer.py +324 -0
  568. ads/mysqldb/__init__.py +5 -0
  569. ads/mysqldb/mysql_db.py +227 -0
  570. ads/opctl/__init__.py +18 -0
  571. ads/opctl/anomaly_detection.py +11 -0
  572. ads/opctl/backend/__init__.py +5 -0
  573. ads/opctl/backend/ads_dataflow.py +353 -0
  574. ads/opctl/backend/ads_ml_job.py +710 -0
  575. ads/opctl/backend/ads_ml_pipeline.py +164 -0
  576. ads/opctl/backend/ads_model_deployment.py +209 -0
  577. ads/opctl/backend/base.py +146 -0
  578. ads/opctl/backend/local.py +1053 -0
  579. ads/opctl/backend/marketplace/__init__.py +9 -0
  580. ads/opctl/backend/marketplace/helm_helper.py +173 -0
  581. ads/opctl/backend/marketplace/local_marketplace.py +271 -0
  582. ads/opctl/backend/marketplace/marketplace_backend_runner.py +71 -0
  583. ads/opctl/backend/marketplace/marketplace_operator_interface.py +44 -0
  584. ads/opctl/backend/marketplace/marketplace_operator_runner.py +24 -0
  585. ads/opctl/backend/marketplace/marketplace_utils.py +212 -0
  586. ads/opctl/backend/marketplace/models/__init__.py +5 -0
  587. ads/opctl/backend/marketplace/models/bearer_token.py +94 -0
  588. ads/opctl/backend/marketplace/models/marketplace_type.py +70 -0
  589. ads/opctl/backend/marketplace/models/ocir_details.py +56 -0
  590. ads/opctl/backend/marketplace/prerequisite_checker.py +238 -0
  591. ads/opctl/cli.py +707 -0
  592. ads/opctl/cmds.py +869 -0
  593. ads/opctl/conda/__init__.py +5 -0
  594. ads/opctl/conda/cli.py +193 -0
  595. ads/opctl/conda/cmds.py +749 -0
  596. ads/opctl/conda/config.yaml +34 -0
  597. ads/opctl/conda/manifest_template.yaml +13 -0
  598. ads/opctl/conda/multipart_uploader.py +188 -0
  599. ads/opctl/conda/pack.py +89 -0
  600. ads/opctl/config/__init__.py +5 -0
  601. ads/opctl/config/base.py +57 -0
  602. ads/opctl/config/diagnostics/__init__.py +5 -0
  603. ads/opctl/config/diagnostics/distributed/default_requirements_config.yaml +62 -0
  604. ads/opctl/config/merger.py +255 -0
  605. ads/opctl/config/resolver.py +297 -0
  606. ads/opctl/config/utils.py +79 -0
  607. ads/opctl/config/validator.py +17 -0
  608. ads/opctl/config/versioner.py +68 -0
  609. ads/opctl/config/yaml_parsers/__init__.py +7 -0
  610. ads/opctl/config/yaml_parsers/base.py +58 -0
  611. ads/opctl/config/yaml_parsers/distributed/__init__.py +7 -0
  612. ads/opctl/config/yaml_parsers/distributed/yaml_parser.py +201 -0
  613. ads/opctl/constants.py +66 -0
  614. ads/opctl/decorator/__init__.py +5 -0
  615. ads/opctl/decorator/common.py +129 -0
  616. ads/opctl/diagnostics/__init__.py +5 -0
  617. ads/opctl/diagnostics/__main__.py +25 -0
  618. ads/opctl/diagnostics/check_distributed_job_requirements.py +212 -0
  619. ads/opctl/diagnostics/check_requirements.py +144 -0
  620. ads/opctl/diagnostics/requirement_exception.py +9 -0
  621. ads/opctl/distributed/README.md +109 -0
  622. ads/opctl/distributed/__init__.py +5 -0
  623. ads/opctl/distributed/certificates.py +32 -0
  624. ads/opctl/distributed/cli.py +207 -0
  625. ads/opctl/distributed/cmds.py +731 -0
  626. ads/opctl/distributed/common/__init__.py +5 -0
  627. ads/opctl/distributed/common/abstract_cluster_provider.py +449 -0
  628. ads/opctl/distributed/common/abstract_framework_spec_builder.py +88 -0
  629. ads/opctl/distributed/common/cluster_config_helper.py +103 -0
  630. ads/opctl/distributed/common/cluster_provider_factory.py +21 -0
  631. ads/opctl/distributed/common/cluster_runner.py +54 -0
  632. ads/opctl/distributed/common/framework_factory.py +29 -0
  633. ads/opctl/docker/Dockerfile.job +103 -0
  634. ads/opctl/docker/Dockerfile.job.arm +107 -0
  635. ads/opctl/docker/Dockerfile.job.gpu +175 -0
  636. ads/opctl/docker/base-env.yaml +13 -0
  637. ads/opctl/docker/cuda.repo +6 -0
  638. ads/opctl/docker/operator/.dockerignore +0 -0
  639. ads/opctl/docker/operator/Dockerfile +41 -0
  640. ads/opctl/docker/operator/Dockerfile.gpu +85 -0
  641. ads/opctl/docker/operator/cuda.repo +6 -0
  642. ads/opctl/docker/operator/environment.yaml +8 -0
  643. ads/opctl/forecast.py +11 -0
  644. ads/opctl/index.yaml +3 -0
  645. ads/opctl/model/__init__.py +5 -0
  646. ads/opctl/model/cli.py +65 -0
  647. ads/opctl/model/cmds.py +73 -0
  648. ads/opctl/operator/README.md +4 -0
  649. ads/opctl/operator/__init__.py +31 -0
  650. ads/opctl/operator/cli.py +344 -0
  651. ads/opctl/operator/cmd.py +596 -0
  652. ads/opctl/operator/common/__init__.py +5 -0
  653. ads/opctl/operator/common/backend_factory.py +460 -0
  654. ads/opctl/operator/common/const.py +27 -0
  655. ads/opctl/operator/common/data/synthetic.csv +16001 -0
  656. ads/opctl/operator/common/dictionary_merger.py +148 -0
  657. ads/opctl/operator/common/errors.py +42 -0
  658. ads/opctl/operator/common/operator_config.py +99 -0
  659. ads/opctl/operator/common/operator_loader.py +811 -0
  660. ads/opctl/operator/common/operator_schema.yaml +130 -0
  661. ads/opctl/operator/common/operator_yaml_generator.py +152 -0
  662. ads/opctl/operator/common/utils.py +208 -0
  663. ads/opctl/operator/lowcode/__init__.py +5 -0
  664. ads/opctl/operator/lowcode/anomaly/MLoperator +16 -0
  665. ads/opctl/operator/lowcode/anomaly/README.md +207 -0
  666. ads/opctl/operator/lowcode/anomaly/__init__.py +5 -0
  667. ads/opctl/operator/lowcode/anomaly/__main__.py +103 -0
  668. ads/opctl/operator/lowcode/anomaly/cmd.py +35 -0
  669. ads/opctl/operator/lowcode/anomaly/const.py +167 -0
  670. ads/opctl/operator/lowcode/anomaly/environment.yaml +10 -0
  671. ads/opctl/operator/lowcode/anomaly/model/__init__.py +5 -0
  672. ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +146 -0
  673. ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py +162 -0
  674. ads/opctl/operator/lowcode/anomaly/model/automlx.py +99 -0
  675. ads/opctl/operator/lowcode/anomaly/model/autots.py +115 -0
  676. ads/opctl/operator/lowcode/anomaly/model/base_model.py +404 -0
  677. ads/opctl/operator/lowcode/anomaly/model/factory.py +110 -0
  678. ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +78 -0
  679. ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +78 -0
  680. ads/opctl/operator/lowcode/anomaly/model/randomcutforest.py +120 -0
  681. ads/opctl/operator/lowcode/anomaly/model/tods.py +119 -0
  682. ads/opctl/operator/lowcode/anomaly/operator_config.py +127 -0
  683. ads/opctl/operator/lowcode/anomaly/schema.yaml +401 -0
  684. ads/opctl/operator/lowcode/anomaly/utils.py +88 -0
  685. ads/opctl/operator/lowcode/common/__init__.py +5 -0
  686. ads/opctl/operator/lowcode/common/const.py +10 -0
  687. ads/opctl/operator/lowcode/common/data.py +116 -0
  688. ads/opctl/operator/lowcode/common/errors.py +47 -0
  689. ads/opctl/operator/lowcode/common/transformations.py +296 -0
  690. ads/opctl/operator/lowcode/common/utils.py +384 -0
  691. ads/opctl/operator/lowcode/feature_store_marketplace/MLoperator +13 -0
  692. ads/opctl/operator/lowcode/feature_store_marketplace/README.md +30 -0
  693. ads/opctl/operator/lowcode/feature_store_marketplace/__init__.py +5 -0
  694. ads/opctl/operator/lowcode/feature_store_marketplace/__main__.py +116 -0
  695. ads/opctl/operator/lowcode/feature_store_marketplace/cmd.py +85 -0
  696. ads/opctl/operator/lowcode/feature_store_marketplace/const.py +15 -0
  697. ads/opctl/operator/lowcode/feature_store_marketplace/environment.yaml +0 -0
  698. ads/opctl/operator/lowcode/feature_store_marketplace/models/__init__.py +4 -0
  699. ads/opctl/operator/lowcode/feature_store_marketplace/models/apigw_config.py +32 -0
  700. ads/opctl/operator/lowcode/feature_store_marketplace/models/db_config.py +43 -0
  701. ads/opctl/operator/lowcode/feature_store_marketplace/models/mysql_config.py +120 -0
  702. ads/opctl/operator/lowcode/feature_store_marketplace/models/serializable_yaml_model.py +34 -0
  703. ads/opctl/operator/lowcode/feature_store_marketplace/operator_utils.py +386 -0
  704. ads/opctl/operator/lowcode/feature_store_marketplace/schema.yaml +160 -0
  705. ads/opctl/operator/lowcode/forecast/MLoperator +25 -0
  706. ads/opctl/operator/lowcode/forecast/README.md +209 -0
  707. ads/opctl/operator/lowcode/forecast/__init__.py +5 -0
  708. ads/opctl/operator/lowcode/forecast/__main__.py +89 -0
  709. ads/opctl/operator/lowcode/forecast/cmd.py +40 -0
  710. ads/opctl/operator/lowcode/forecast/const.py +92 -0
  711. ads/opctl/operator/lowcode/forecast/environment.yaml +20 -0
  712. ads/opctl/operator/lowcode/forecast/errors.py +26 -0
  713. ads/opctl/operator/lowcode/forecast/model/__init__.py +5 -0
  714. ads/opctl/operator/lowcode/forecast/model/arima.py +279 -0
  715. ads/opctl/operator/lowcode/forecast/model/automlx.py +553 -0
  716. ads/opctl/operator/lowcode/forecast/model/autots.py +312 -0
  717. ads/opctl/operator/lowcode/forecast/model/base_model.py +875 -0
  718. ads/opctl/operator/lowcode/forecast/model/factory.py +106 -0
  719. ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +492 -0
  720. ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +243 -0
  721. ads/opctl/operator/lowcode/forecast/model/neuralprophet.py +482 -0
  722. ads/opctl/operator/lowcode/forecast/model/prophet.py +450 -0
  723. ads/opctl/operator/lowcode/forecast/model_evaluator.py +244 -0
  724. ads/opctl/operator/lowcode/forecast/operator_config.py +234 -0
  725. ads/opctl/operator/lowcode/forecast/schema.yaml +506 -0
  726. ads/opctl/operator/lowcode/forecast/utils.py +397 -0
  727. ads/opctl/operator/lowcode/forecast/whatifserve/__init__.py +7 -0
  728. ads/opctl/operator/lowcode/forecast/whatifserve/deployment_manager.py +285 -0
  729. ads/opctl/operator/lowcode/forecast/whatifserve/score.py +246 -0
  730. ads/opctl/operator/lowcode/pii/MLoperator +17 -0
  731. ads/opctl/operator/lowcode/pii/README.md +208 -0
  732. ads/opctl/operator/lowcode/pii/__init__.py +5 -0
  733. ads/opctl/operator/lowcode/pii/__main__.py +78 -0
  734. ads/opctl/operator/lowcode/pii/cmd.py +39 -0
  735. ads/opctl/operator/lowcode/pii/constant.py +84 -0
  736. ads/opctl/operator/lowcode/pii/environment.yaml +17 -0
  737. ads/opctl/operator/lowcode/pii/errors.py +27 -0
  738. ads/opctl/operator/lowcode/pii/model/__init__.py +5 -0
  739. ads/opctl/operator/lowcode/pii/model/factory.py +82 -0
  740. ads/opctl/operator/lowcode/pii/model/guardrails.py +167 -0
  741. ads/opctl/operator/lowcode/pii/model/pii.py +145 -0
  742. ads/opctl/operator/lowcode/pii/model/processor/__init__.py +34 -0
  743. ads/opctl/operator/lowcode/pii/model/processor/email_replacer.py +34 -0
  744. ads/opctl/operator/lowcode/pii/model/processor/mbi_replacer.py +35 -0
  745. ads/opctl/operator/lowcode/pii/model/processor/name_replacer.py +225 -0
  746. ads/opctl/operator/lowcode/pii/model/processor/number_replacer.py +73 -0
  747. ads/opctl/operator/lowcode/pii/model/processor/remover.py +26 -0
  748. ads/opctl/operator/lowcode/pii/model/report.py +487 -0
  749. ads/opctl/operator/lowcode/pii/operator_config.py +95 -0
  750. ads/opctl/operator/lowcode/pii/schema.yaml +108 -0
  751. ads/opctl/operator/lowcode/pii/utils.py +43 -0
  752. ads/opctl/operator/lowcode/recommender/MLoperator +16 -0
  753. ads/opctl/operator/lowcode/recommender/README.md +206 -0
  754. ads/opctl/operator/lowcode/recommender/__init__.py +5 -0
  755. ads/opctl/operator/lowcode/recommender/__main__.py +82 -0
  756. ads/opctl/operator/lowcode/recommender/cmd.py +33 -0
  757. ads/opctl/operator/lowcode/recommender/constant.py +30 -0
  758. ads/opctl/operator/lowcode/recommender/environment.yaml +11 -0
  759. ads/opctl/operator/lowcode/recommender/model/base_model.py +212 -0
  760. ads/opctl/operator/lowcode/recommender/model/factory.py +56 -0
  761. ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +25 -0
  762. ads/opctl/operator/lowcode/recommender/model/svd.py +106 -0
  763. ads/opctl/operator/lowcode/recommender/operator_config.py +81 -0
  764. ads/opctl/operator/lowcode/recommender/schema.yaml +265 -0
  765. ads/opctl/operator/lowcode/recommender/utils.py +13 -0
  766. ads/opctl/operator/runtime/__init__.py +5 -0
  767. ads/opctl/operator/runtime/const.py +17 -0
  768. ads/opctl/operator/runtime/container_runtime_schema.yaml +50 -0
  769. ads/opctl/operator/runtime/marketplace_runtime.py +50 -0
  770. ads/opctl/operator/runtime/python_marketplace_runtime_schema.yaml +21 -0
  771. ads/opctl/operator/runtime/python_runtime_schema.yaml +21 -0
  772. ads/opctl/operator/runtime/runtime.py +115 -0
  773. ads/opctl/schema.yaml.yml +36 -0
  774. ads/opctl/script.py +40 -0
  775. ads/opctl/spark/__init__.py +5 -0
  776. ads/opctl/spark/cli.py +43 -0
  777. ads/opctl/spark/cmds.py +147 -0
  778. ads/opctl/templates/diagnostic_report_template.jinja2 +102 -0
  779. ads/opctl/utils.py +344 -0
  780. ads/oracledb/__init__.py +5 -0
  781. ads/oracledb/oracle_db.py +346 -0
  782. ads/pipeline/__init__.py +39 -0
  783. ads/pipeline/ads_pipeline.py +2279 -0
  784. ads/pipeline/ads_pipeline_run.py +772 -0
  785. ads/pipeline/ads_pipeline_step.py +605 -0
  786. ads/pipeline/builders/__init__.py +5 -0
  787. ads/pipeline/builders/infrastructure/__init__.py +5 -0
  788. ads/pipeline/builders/infrastructure/custom_script.py +32 -0
  789. ads/pipeline/cli.py +119 -0
  790. ads/pipeline/extension.py +291 -0
  791. ads/pipeline/schema/__init__.py +5 -0
  792. ads/pipeline/schema/cs_step_schema.json +35 -0
  793. ads/pipeline/schema/ml_step_schema.json +31 -0
  794. ads/pipeline/schema/pipeline_schema.json +71 -0
  795. ads/pipeline/visualizer/__init__.py +5 -0
  796. ads/pipeline/visualizer/base.py +570 -0
  797. ads/pipeline/visualizer/graph_renderer.py +272 -0
  798. ads/pipeline/visualizer/text_renderer.py +84 -0
  799. ads/secrets/__init__.py +11 -0
  800. ads/secrets/adb.py +386 -0
  801. ads/secrets/auth_token.py +86 -0
  802. ads/secrets/big_data_service.py +365 -0
  803. ads/secrets/mysqldb.py +149 -0
  804. ads/secrets/oracledb.py +160 -0
  805. ads/secrets/secrets.py +407 -0
  806. ads/telemetry/__init__.py +7 -0
  807. ads/telemetry/base.py +69 -0
  808. ads/telemetry/client.py +122 -0
  809. ads/telemetry/telemetry.py +257 -0
  810. ads/templates/dataflow_pyspark.jinja2 +13 -0
  811. ads/templates/dataflow_sparksql.jinja2 +22 -0
  812. ads/templates/func.jinja2 +20 -0
  813. ads/templates/schemas/openapi.json +1740 -0
  814. ads/templates/score-pkl.jinja2 +173 -0
  815. ads/templates/score.jinja2 +322 -0
  816. ads/templates/score_embedding_onnx.jinja2 +202 -0
  817. ads/templates/score_generic.jinja2 +165 -0
  818. ads/templates/score_huggingface_pipeline.jinja2 +217 -0
  819. ads/templates/score_lightgbm.jinja2 +185 -0
  820. ads/templates/score_onnx.jinja2 +407 -0
  821. ads/templates/score_onnx_new.jinja2 +473 -0
  822. ads/templates/score_oracle_automl.jinja2 +185 -0
  823. ads/templates/score_pyspark.jinja2 +154 -0
  824. ads/templates/score_pytorch.jinja2 +219 -0
  825. ads/templates/score_scikit-learn.jinja2 +184 -0
  826. ads/templates/score_tensorflow.jinja2 +184 -0
  827. ads/templates/score_xgboost.jinja2 +178 -0
  828. ads/text_dataset/__init__.py +5 -0
  829. ads/text_dataset/backends.py +211 -0
  830. ads/text_dataset/dataset.py +445 -0
  831. ads/text_dataset/extractor.py +207 -0
  832. ads/text_dataset/options.py +53 -0
  833. ads/text_dataset/udfs.py +22 -0
  834. ads/text_dataset/utils.py +49 -0
  835. ads/type_discovery/__init__.py +9 -0
  836. ads/type_discovery/abstract_detector.py +21 -0
  837. ads/type_discovery/constant_detector.py +41 -0
  838. ads/type_discovery/continuous_detector.py +54 -0
  839. ads/type_discovery/credit_card_detector.py +99 -0
  840. ads/type_discovery/datetime_detector.py +92 -0
  841. ads/type_discovery/discrete_detector.py +118 -0
  842. ads/type_discovery/document_detector.py +146 -0
  843. ads/type_discovery/ip_detector.py +68 -0
  844. ads/type_discovery/latlon_detector.py +90 -0
  845. ads/type_discovery/phone_number_detector.py +63 -0
  846. ads/type_discovery/type_discovery_driver.py +87 -0
  847. ads/type_discovery/typed_feature.py +594 -0
  848. ads/type_discovery/unknown_detector.py +41 -0
  849. ads/type_discovery/zipcode_detector.py +48 -0
  850. ads/vault/__init__.py +7 -0
  851. ads/vault/vault.py +237 -0
  852. {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10rc0.dist-info}/METADATA +150 -149
  853. oracle_ads-2.13.10rc0.dist-info/RECORD +858 -0
  854. {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10rc0.dist-info}/WHEEL +1 -2
  855. {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10rc0.dist-info}/entry_points.txt +2 -1
  856. oracle_ads-2.13.9rc0.dist-info/RECORD +0 -9
  857. oracle_ads-2.13.9rc0.dist-info/top_level.txt +0 -1
  858. {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10rc0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,1016 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8; -*-
3
+
4
+ # Copyright (c) 2021, 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
+ from __future__ import annotations
7
+
8
+ import os
9
+ from typing import Dict
10
+
11
+ from ads.common.auth import default_signer
12
+ from ads.jobs.builders.runtimes.base import Runtime
13
+ from ads.opctl.config.utils import convert_notebook
14
+
15
+
16
+ class CondaRuntime(Runtime):
17
+ """Represents a job runtime with conda pack
18
+ This is the base class for Runtime using conda environment.
19
+ The ``CondaRuntime`` is not designed to be used directly when creating a job.
20
+ """
21
+
22
+ CONST_CONDA = "conda"
23
+ CONST_CONDA_TYPE = "type"
24
+ CONST_CONDA_TYPE_SERVICE = "service"
25
+ CONST_CONDA_TYPE_CUSTOM = "published"
26
+ CONST_CONDA_SLUG = "slug"
27
+ CONST_CONDA_URI = "uri"
28
+ CONST_CONDA_REGION = "region"
29
+
30
+ attribute_map = {CONST_CONDA: CONST_CONDA}
31
+ attribute_map.update(Runtime.attribute_map)
32
+
33
+ @property
34
+ def conda(self) -> dict:
35
+ """The conda environment specification.
36
+
37
+ For service conda environment, the specification contains:
38
+
39
+ * ``type``, the type of the conda environment.
40
+ This is always ``service`` for service conda environment.
41
+ * ``slug``, the slug of the conda environment.
42
+
43
+ For custom conda environment, the specification contains:
44
+
45
+ * ``type``, the type of the conda environment.
46
+ This is always ``published`` for custom conda environment.
47
+ * ``uri``, the uri of the conda environment, e.g. oci://bucket@namespace/prefix/to/conda
48
+ * ``region``, the region of the bucket in which the conda environment is stored.
49
+ By default, ADS will determine the region based on the authenticated API key or resource principal.
50
+ This is only needed if your conda environment is stored in a different region.
51
+
52
+ Returns
53
+ -------
54
+ dict
55
+ A dictionary containing the conda environment specifications.
56
+
57
+ """
58
+ return self.get_spec(self.CONST_CONDA)
59
+
60
+ def with_service_conda(self, slug: str):
61
+ """Specifies the service conda pack for running the job
62
+
63
+ Parameters
64
+ ----------
65
+ slug : str
66
+ The slug name of the service conda pack
67
+
68
+ Returns
69
+ -------
70
+ self
71
+ The runtime instance.
72
+ """
73
+ return self.set_spec(
74
+ self.CONST_CONDA,
75
+ {
76
+ self.CONST_CONDA_TYPE: self.CONST_CONDA_TYPE_SERVICE,
77
+ self.CONST_CONDA_SLUG: slug,
78
+ },
79
+ )
80
+
81
+ def with_custom_conda(self, uri: str, region: str = None):
82
+ """Specifies the custom conda pack for running the job
83
+ Make sure you have configured the IAM policy for the job run to access the conda environment.
84
+
85
+ Parameters
86
+ ----------
87
+ uri : str
88
+ The OCI object storage URI for the conda pack,
89
+ e.g. "oci://your_bucket@namespace/object_name."
90
+ In the Environment Explorer of an OCI notebook session,
91
+ this is shown as the "source" of the conda pack.
92
+ region: str, optional
93
+ The region of the bucket storing the custom conda pack, by default None.
94
+ If region is not specified, ADS will use the region from your authentication credentials:
95
+
96
+ * For API Key, config["region"] is used.
97
+ * For Resource Principal, signer.region is used.
98
+
99
+ This is required if the conda pack is stored in a different region.
100
+
101
+ Returns
102
+ -------
103
+ self
104
+ The runtime instance.
105
+
106
+ See Also
107
+ --------
108
+ https://docs.oracle.com/en-us/iaas/data-science/using/conda_publishs_object.htm
109
+
110
+ """
111
+ conda_spec = {
112
+ self.CONST_CONDA_TYPE: self.CONST_CONDA_TYPE_CUSTOM,
113
+ self.CONST_CONDA_URI: uri,
114
+ }
115
+ if region:
116
+ conda_spec[self.CONST_CONDA_REGION] = region
117
+ return self.set_spec(self.CONST_CONDA, conda_spec)
118
+
119
+ def init(self, **kwargs) -> "CondaRuntime":
120
+ """Initializes a starter specification for the runtime.
121
+
122
+ Parameters
123
+ ----------
124
+ **kwargs: Dict
125
+ - conda_slug: str
126
+ The conda environment slug.
127
+ If it contains '/', then the assumption that this is a custom conda environment.
128
+
129
+ Returns
130
+ -------
131
+ CondaRuntime
132
+ The runtime instance.
133
+ """
134
+ super().init(**kwargs)
135
+
136
+ conda_slug = kwargs.get("conda_slug", "")
137
+
138
+ if "/" not in conda_slug:
139
+ return self.with_service_conda(conda_slug)
140
+
141
+ return self.with_custom_conda(
142
+ conda_slug
143
+ or "{Path to the custom conda environment. Example: oci://bucket@namespace/prefix}"
144
+ )
145
+
146
+
147
+ class ScriptRuntime(CondaRuntime):
148
+ """Represents job runtime with scripts and conda pack.
149
+
150
+ This runtime is designed to define job artifacts and configurations supported by OCI Data Science Jobs natively.
151
+ It can be used with any script types that is supported by the OCI Data Science Jobs,
152
+ including shell scripts and python scripts.
153
+
154
+ To run a script with all dependencies contained in a local folder::
155
+
156
+ runtime = (
157
+ ScriptRuntime()
158
+ # Specify the service conda environment by slug name.
159
+ .with_service_conda("pytorch110_p38_cpu_v1")
160
+ # The job artifact can be a single Python script, a directory or a zip file.
161
+ .with_source("local/path/to/code_dir")
162
+ # Environment variable
163
+ .with_environment_variable(NAME="Welcome to OCI Data Science.")
164
+ # Command line argument
165
+ .with_argument("100 linux 'hi there'")
166
+ # The entrypoint is applicable only to directory or zip file as source
167
+ # The entrypoint should be a path relative to the working dir.
168
+ # Here my_script.sh is a file in the code_dir/my_package directory
169
+ .with_entrypoint("my_package/my_script.sh")
170
+ )
171
+
172
+
173
+ References
174
+ ----------
175
+ https://docs.oracle.com/en-us/iaas/data-science/using/jobs-artifact.htm
176
+
177
+ """
178
+
179
+ CONST_ENTRYPOINT = "entrypoint"
180
+ CONST_SCRIPT_PATH = "scriptPathURI"
181
+
182
+ attribute_map = {
183
+ CONST_ENTRYPOINT: CONST_ENTRYPOINT,
184
+ CONST_SCRIPT_PATH: "script_path_uri",
185
+ }
186
+ attribute_map.update(CondaRuntime.attribute_map)
187
+
188
+ @property
189
+ def script_uri(self) -> str:
190
+ """The URI of the source code"""
191
+ return self.get_spec(self.CONST_SCRIPT_PATH)
192
+
193
+ def with_script(self, uri: str):
194
+ """Specifies the source code script for the job
195
+
196
+ Parameters
197
+ ----------
198
+ uri : str
199
+ URI to the source code script, which can be any URI supported by fsspec,
200
+ including http://, https:// and OCI object storage.
201
+ For example: oci://your_bucket@your_namespace/path/to/script.py
202
+
203
+ Returns
204
+ -------
205
+ self
206
+ The runtime instance.
207
+ """
208
+ return self.set_spec(self.CONST_SCRIPT_PATH, uri)
209
+
210
+ @property
211
+ def source_uri(self) -> str:
212
+ """The URI of the source code"""
213
+ return self.get_spec(self.CONST_SCRIPT_PATH)
214
+
215
+ def with_source(self, uri: str, entrypoint: str = None):
216
+ """Specifies the source code for the job
217
+
218
+ Parameters
219
+ ----------
220
+ uri : str
221
+ URI to the source code,
222
+ which can be a (.py/.sh) script, a zip/tar file or directory containing the scripts/modules
223
+ If the source code is a single file, URI can be any URI supported by fsspec,
224
+ including http://, https:// and OCI object storage.
225
+ For example: oci://your_bucket@your_namespace/path/to/script.py
226
+ URI can also be a folder or a zip file containing the source code.
227
+ In that case, entrypoint is required.
228
+
229
+ entrypoint : str, optional
230
+ The relative path of the script to be set as entrypoint when source is a zip/tar/directory.
231
+ By default None. This is not needed when the source is a single script.
232
+
233
+ Returns
234
+ -------
235
+ self
236
+ The runtime instance.
237
+ """
238
+ if entrypoint:
239
+ self.set_spec(self.CONST_ENTRYPOINT, entrypoint)
240
+ return self.with_script(uri)
241
+
242
+ @property
243
+ def entrypoint(self) -> str:
244
+ """The relative path of the script to be set as entrypoint when source is a zip/tar/directory."""
245
+ return self.get_spec(self.CONST_ENTRYPOINT)
246
+
247
+ def with_entrypoint(self, entrypoint: str):
248
+ """Specify the entrypoint for the job
249
+
250
+ Parameters
251
+ ----------
252
+ entrypoint : str
253
+ The relative path of the script to be set as entrypoint when source is a zip/tar/directory.
254
+
255
+ Returns
256
+ -------
257
+ self
258
+ The runtime instance.
259
+ """
260
+ return self.set_spec(self.CONST_ENTRYPOINT, entrypoint)
261
+
262
+ def init(self, **kwargs) -> "ScriptRuntime":
263
+ """Initializes a starter specification for the runtime.
264
+
265
+ Returns
266
+ -------
267
+ ScriptRuntime
268
+ The runtime instance.
269
+ """
270
+ super().init(**kwargs)
271
+ return (
272
+ self.with_entrypoint("{For MLflow and Operator will be auto generated}")
273
+ .with_script(
274
+ "{Path to the script. For MLflow and Operator will be auto generated}"
275
+ )
276
+ .with_argument(**kwargs.get("args", {}))
277
+ )
278
+
279
+
280
+ class _PythonRuntimeMixin(Runtime):
281
+ CONST_OUTPUT_DIR = "outputDir"
282
+ CONST_OUTPUT_URI = "outputUri"
283
+ CONST_PYTHON_PATH = "pythonPath"
284
+ CONST_ENTRYPOINT = "entrypoint"
285
+ CONST_ENTRY_FUNCTION = "entryFunction"
286
+ CONST_WORKING_DIR = "workingDir"
287
+
288
+ attribute_map = {
289
+ CONST_OUTPUT_DIR: "output_dir",
290
+ CONST_OUTPUT_URI: "output_uri",
291
+ CONST_PYTHON_PATH: "python_path",
292
+ CONST_ENTRYPOINT: CONST_ENTRYPOINT,
293
+ CONST_ENTRY_FUNCTION: "entry_function",
294
+ CONST_WORKING_DIR: "working_dir",
295
+ }
296
+ attribute_map.update(Runtime.attribute_map)
297
+
298
+ def with_output(self, output_dir: str, output_uri: str):
299
+ """Specifies the outputs of the job.
300
+ The output files in output_dir will be copied to remote output_uri when the job is finished.
301
+
302
+ Parameters
303
+ ----------
304
+ output_dir : str
305
+ Path to the output directory in the job run.
306
+ This path should be a relative path from the working directory.
307
+ The source code should write all outputs into this directory.
308
+ output_uri : str
309
+ The OCI object storage URI prefix for saving the output files.
310
+ For example, oci://bucket_name@namespace/path/to/directory
311
+
312
+ Returns
313
+ -------
314
+ Self
315
+ The runtime instance.
316
+ """
317
+ self.set_spec(self.CONST_OUTPUT_DIR, output_dir)
318
+ self.set_spec(self.CONST_OUTPUT_URI, output_uri)
319
+ return self
320
+
321
+ def with_python_path(self, *python_paths):
322
+ """Specifies additional python paths for running the source code.
323
+
324
+ Parameters
325
+ ----------
326
+ *python_paths :
327
+ Additional python path(s) for running the source code.
328
+ Each path should be a relative path from the working directory.
329
+
330
+ Returns
331
+ -------
332
+ self
333
+ The runtime instance.
334
+ """
335
+ python_paths = list(python_paths)
336
+ for path in python_paths:
337
+ if os.path.isabs(path):
338
+ raise ValueError(
339
+ f"{path} is an absolute path."
340
+ "Please specify relative path from the working directory as python path."
341
+ )
342
+ return self.set_spec(self.CONST_PYTHON_PATH, python_paths)
343
+
344
+ def with_entrypoint(self, path: str, func: str = None):
345
+ """Specifies the entrypoint for the job.
346
+ The entrypoint can be a script or a function in a script.
347
+
348
+ Parameters
349
+ ----------
350
+ script : str
351
+ The relative path for the script/module starting the job.
352
+ func : str, optional
353
+ The function name in the script for starting the job, by default None.
354
+ If this is not specified, the script will be run with python command in a subprocess.
355
+
356
+ Returns
357
+ -------
358
+ self
359
+ The runtime instance.
360
+ """
361
+ self.set_spec(self.CONST_ENTRYPOINT, path)
362
+ self.set_spec(self.CONST_ENTRY_FUNCTION, func)
363
+ return self
364
+
365
+ def with_working_dir(self, working_dir: str):
366
+ """Specifies the working directory in the job run.
367
+ By default, the working directory will the directory containing the user code (job artifact directory).
368
+ This can be changed by specifying a relative path to the job artifact directory.
369
+
370
+ Parameters
371
+ ----------
372
+ working_dir : str
373
+ The path of the working directory.
374
+ This can be a relative path from the job artifact directory.
375
+
376
+ Returns
377
+ -------
378
+ self
379
+ The runtime instance.
380
+ """
381
+ return self.set_spec(self.CONST_WORKING_DIR, working_dir)
382
+
383
+ @property
384
+ def working_dir(self) -> str:
385
+ """The working directory for the job run."""
386
+ return self.get_spec(self.CONST_WORKING_DIR, ".")
387
+
388
+ @property
389
+ def output_dir(self) -> str:
390
+ """Directory in the Job run container for saving output files generated in the job"""
391
+ return self.get_spec(self.CONST_OUTPUT_DIR)
392
+
393
+ @property
394
+ def output_uri(self) -> str:
395
+ """OCI object storage URI prefix for saving output files generated in the job"""
396
+ return self.get_spec(self.CONST_OUTPUT_DIR)
397
+
398
+ @property
399
+ def python_path(self):
400
+ """Additional python paths for running the source code."""
401
+ return self.get_spec(self.CONST_PYTHON_PATH)
402
+
403
+ @property
404
+ def entry_script(self) -> str:
405
+ """The path of the entry script"""
406
+ return self.get_spec(self.CONST_ENTRYPOINT)
407
+
408
+ @property
409
+ def entry_function(self) -> str:
410
+ """The name of the entry function in the entry script"""
411
+ return self.get_spec(self.CONST_ENTRY_FUNCTION)
412
+
413
+
414
+ class PythonRuntime(ScriptRuntime, _PythonRuntimeMixin):
415
+ """Represents a job runtime using ADS driver script to run Python code
416
+
417
+ Example::
418
+
419
+ runtime = (
420
+ PythonRuntime()
421
+ # Specify the service conda environment by slug name.
422
+ .with_service_conda("pytorch110_p38_cpu_v1")
423
+ # The job artifact can be a single Python script, a directory or a zip file.
424
+ .with_source("local/path/to/code_dir")
425
+ # Environment variable
426
+ .with_environment_variable(NAME="Welcome to OCI Data Science.")
427
+ # Command line argument, arg1 --key arg2
428
+ .with_argument("arg1", key="arg2")
429
+ # Set the working directory
430
+ # When using a directory as source, the default working dir is the parent of code_dir.
431
+ # Working dir should be a relative path beginning from the source directory (code_dir)
432
+ .with_working_dir("code_dir")
433
+ # The entrypoint is applicable only to directory or zip file as source
434
+ # The entrypoint should be a path relative to the working dir.
435
+ # Here my_script.py is a file in the code_dir/my_package directory
436
+ .with_entrypoint("my_package/my_script.py")
437
+ # Add an additional Python path, relative to the working dir (code_dir/other_packages).
438
+ .with_python_path("other_packages")
439
+ # Copy files in "code_dir/output" to object storage after job finishes.
440
+ .with_output("output", "oci://bucket_name@namespace/path/to/dir")
441
+ )
442
+
443
+ """
444
+
445
+ attribute_map = {}
446
+ attribute_map.update(ScriptRuntime.attribute_map)
447
+ attribute_map.update(_PythonRuntimeMixin.attribute_map)
448
+
449
+ def init(self, **kwargs) -> "PythonRuntime":
450
+ """Initializes a starter specification for the runtime.
451
+
452
+ Returns
453
+ -------
454
+ PythonRuntime
455
+ The runtime instance.
456
+ """
457
+ super().init(**kwargs)
458
+ return (
459
+ self.with_working_dir("{For MLflow and Operator will be auto generated}")
460
+ .with_entrypoint("{For MLflow and Operator will be auto generated}")
461
+ .with_script(
462
+ "{Path to the script. For MLflow and Operator will be auto generated}"
463
+ )
464
+ )
465
+
466
+
467
+ class NotebookRuntime(CondaRuntime):
468
+ """Represents a job runtime with Jupyter notebook
469
+
470
+ To run a job with a single Jupyter notebook,
471
+ you can define the run time as::
472
+
473
+ runtime = (
474
+ NotebookRuntime()
475
+ .with_notebook(
476
+ path="https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/customization/basics.ipynb",
477
+ encoding='utf-8'
478
+ )
479
+ .with_service_conda("tensorflow28_p38_cpu_v1")
480
+ .with_environment_variable(GREETINGS="Welcome to OCI Data Science")
481
+ .with_exclude_tag(["ignore", "remove"])
482
+ .with_output("oci://bucket_name@namespace/path/to/dir")
483
+ )
484
+
485
+ Note that the notebook path can be local or remote path supported by fsspec,
486
+ including OCI object storage path like ``oci://bucket@namespace/path/to/notebook``
487
+
488
+ """
489
+
490
+ CONST_NOTEBOOK_PATH = "notebookPathURI"
491
+ CONST_NOTEBOOK_ENCODING = "notebookEncoding"
492
+ CONST_OUTPUT_URI = "outputUri"
493
+ CONST_OUTPUT_URI_ALT = "outputURI"
494
+ CONST_EXCLUDE_TAG = "excludeTags"
495
+ CONST_SOURCE = "source"
496
+ CONST_ENTRYPOINT = "entrypoint"
497
+
498
+ attribute_map = {
499
+ CONST_NOTEBOOK_PATH: "notebook_path_uri",
500
+ CONST_NOTEBOOK_ENCODING: "notebook_encoding",
501
+ CONST_OUTPUT_URI: "output_uri",
502
+ CONST_EXCLUDE_TAG: "exclude_tags",
503
+ CONST_SOURCE: "source",
504
+ CONST_ENTRYPOINT: "entrypoint",
505
+ }
506
+ attribute_map.update(CondaRuntime.attribute_map)
507
+
508
+ def __init__(self, spec: Dict = None, **kwargs) -> None:
509
+ if spec and self.CONST_OUTPUT_URI_ALT in spec:
510
+ val = spec.pop(self.CONST_OUTPUT_URI_ALT)
511
+ spec[self.CONST_OUTPUT_URI] = val
512
+ if self.CONST_OUTPUT_URI_ALT in kwargs:
513
+ val = kwargs.pop(self.CONST_OUTPUT_URI_ALT)
514
+ kwargs[self.CONST_OUTPUT_URI] = val
515
+ super().__init__(spec, **kwargs)
516
+
517
+ @property
518
+ def notebook_uri(self) -> str:
519
+ """The URI of the notebook"""
520
+ return self.get_spec(self.CONST_NOTEBOOK_PATH)
521
+
522
+ @property
523
+ def notebook_encoding(self) -> str:
524
+ """The encoding of the notebook"""
525
+ return self.get_spec(self.CONST_NOTEBOOK_ENCODING)
526
+
527
+ def with_notebook(self, path: str, encoding="utf-8") -> NotebookRuntime:
528
+ """Specifies the notebook to be run as a job.
529
+ Use this method if you would like to run a single notebook.
530
+ Use ``with_source()`` method if you would like to run a notebook with additional dependency files.
531
+
532
+ Parameters
533
+ ----------
534
+ path : str
535
+ The path of the Jupyter notebook
536
+ encoding : str
537
+ The encoding for opening the notebook. Defaults to utf-8.
538
+
539
+ Returns
540
+ -------
541
+ self
542
+ The runtime instance.
543
+ """
544
+ self.set_spec(self.CONST_NOTEBOOK_ENCODING, encoding)
545
+ return self.set_spec(self.CONST_NOTEBOOK_PATH, path)
546
+
547
+ @property
548
+ def exclude_tag(self) -> list:
549
+ """A list of cell tags indicating cells to be excluded from the job"""
550
+ return self.get_spec(self.CONST_EXCLUDE_TAG, [])
551
+
552
+ def with_exclude_tag(self, *tags) -> NotebookRuntime:
553
+ """Specifies the cell tags in the notebook to exclude cells from the job script.
554
+
555
+ Parameters
556
+ ----------
557
+ *tags : list
558
+ A list of tags (strings).
559
+
560
+ Returns
561
+ -------
562
+ self
563
+ The runtime instance.
564
+ """
565
+ exclude_tag_list = []
566
+ for tag in tags:
567
+ if isinstance(tag, list):
568
+ exclude_tag_list.extend(tag)
569
+ else:
570
+ exclude_tag_list.append(tag)
571
+ return self.set_spec(self.CONST_EXCLUDE_TAG, exclude_tag_list)
572
+
573
+ @property
574
+ def output_uri(self) -> list:
575
+ """URI for storing the output notebook and files"""
576
+ return self.get_spec(self.CONST_OUTPUT_URI)
577
+
578
+ def with_output(self, output_uri: str) -> NotebookRuntime:
579
+ """Specifies the output URI for storing the output notebook and files.
580
+ All files in the directory containing the notebook will be saved.
581
+
582
+ Parameters
583
+ ----------
584
+ output_uri : str
585
+ URI for a directory storing the output notebook and files.
586
+ For example, oci://bucket@namespace/path/to/dir
587
+
588
+ Returns
589
+ -------
590
+ self
591
+ The runtime instance.
592
+ """
593
+ return self.set_spec(self.CONST_OUTPUT_URI, output_uri)
594
+
595
+ def with_source(self, uri: str, notebook: str, encoding="utf-8"):
596
+ """Specify source code directory containing the notebook and dependencies for the job.
597
+ Use this method if you would like to run a notebook with additional dependency files.
598
+ Use the `with_notebook()` method if you would like to run a single notebook.
599
+
600
+ In the following example, local folder "path/to/source" contains the notebook and dependencies,
601
+ The local path of the notebook is "path/to/source/relative/path/to/notebook.ipynb"::
602
+
603
+ runtime.with_source(uri="path/to/source", notebook="relative/path/to/notebook.ipynb")
604
+
605
+ Parameters
606
+ ----------
607
+ uri : str
608
+ URI of the source code directory. This can be local or on OCI object storage.
609
+ notebook : str
610
+ The relative path of the notebook from the source URI.
611
+ encoding : str
612
+ The encoding for opening the notebook. Defaults to utf-8.
613
+
614
+ Returns
615
+ -------
616
+ Self
617
+ The runtime instance.
618
+
619
+ """
620
+ self.set_spec(self.CONST_SOURCE, uri)
621
+ self.set_spec(self.CONST_ENTRYPOINT, notebook)
622
+ self.set_spec(self.CONST_NOTEBOOK_ENCODING, encoding)
623
+ return self
624
+
625
+ @property
626
+ def source(self) -> str:
627
+ """The source code location."""
628
+ return self.get_spec(self.CONST_SOURCE)
629
+
630
+ @property
631
+ def notebook(self) -> str:
632
+ """The path of the notebook relative to the source."""
633
+ return self.get_spec(self.CONST_ENTRYPOINT)
634
+
635
+ def init(self, **kwargs) -> "NotebookRuntime":
636
+ """Initializes a starter specification for the runtime.
637
+
638
+ Returns
639
+ -------
640
+ NotebookRuntime
641
+ The runtime instance.
642
+ """
643
+ super().init(**kwargs)
644
+ return self.with_source(
645
+ uri="{Path to the source code directory. For MLflow, it will be replaced with the path to the project}",
646
+ notebook="{Entrypoint notebook. For MLflow, it will be replaced with the CMD}",
647
+ ).with_exclude_tag("tag1")
648
+
649
+
650
+ class GitPythonRuntime(CondaRuntime, _PythonRuntimeMixin):
651
+ """Represents a job runtime with source code from git repository
652
+
653
+ Example::
654
+
655
+ runtime = (
656
+ GitPythonRuntime()
657
+ .with_environment_variable(GREETINGS="Welcome to OCI Data Science")
658
+ # Specify the service conda environment by slug name.
659
+ .with_service_conda("pytorch19_p37_gpu_v1")
660
+ # Specify the git repository
661
+ # Optionally, you can specify the branch or commit
662
+ .with_source("https://github.com/pytorch/tutorials.git")
663
+ # Entrypoint is a relative path from the root of the git repo.
664
+ .with_entrypoint("beginner_source/examples_nn/polynomial_nn.py")
665
+ # Copy files in "beginner_source/examples_nn" to object storage after job finishes.
666
+ .with_output(
667
+ output_dir="beginner_source/examples_nn",
668
+ output_uri="oci://bucket_name@namespace/path/to/dir"
669
+ )
670
+ )
671
+
672
+ """
673
+
674
+ CONST_GIT_URL = "url"
675
+ CONST_BRANCH = "branch"
676
+ CONST_COMMIT = "commit"
677
+ CONST_GIT_SSH_SECRET_ID = "gitSecretId"
678
+ CONST_SKIP_METADATA = "skipMetadataUpdate"
679
+ attribute_map = {
680
+ CONST_GIT_URL: CONST_GIT_URL,
681
+ CONST_BRANCH: CONST_BRANCH,
682
+ CONST_COMMIT: CONST_COMMIT,
683
+ CONST_GIT_SSH_SECRET_ID: "git_secret_id",
684
+ CONST_SKIP_METADATA: "skip_metadata_update",
685
+ }
686
+ attribute_map.update(CondaRuntime.attribute_map)
687
+ attribute_map.update(_PythonRuntimeMixin.attribute_map)
688
+
689
+ @property
690
+ def skip_metadata_update(self):
691
+ """Indicate if the metadata update should be skipped after the job run
692
+
693
+ By default, the job run metadata will be updated with the following freeform tags:
694
+ * repo: The URL of the Git repository
695
+ * commit: The Git commit ID
696
+ * module: The entry script/module
697
+ * method: The entry function/method
698
+ * outputs. The prefix of the output files in object storage.
699
+
700
+ This update step also requires resource principals to have the permission to update the job run.
701
+
702
+ Returns
703
+ -------
704
+ bool
705
+ True if the metadata update will be skipped. Otherwise False.
706
+ """
707
+ return self.get_spec(self.CONST_SKIP_METADATA, False)
708
+
709
+ def with_source(
710
+ self, url: str, branch: str = None, commit: str = None, secret_ocid: str = None
711
+ ):
712
+ """Specifies the Git repository and branch/commit for the job source code.
713
+
714
+ Parameters
715
+ ----------
716
+ url : str
717
+ URL of the Git repository.
718
+ branch : str, optional
719
+ Git branch name, by default None, the default branch will be used.
720
+ commit : str, optional
721
+ Git commit ID (SHA1 hash), by default None, the most recent commit will be used.
722
+ secret_ocid : str
723
+ The secret OCID storing the SSH key content for checking out the Git repository.
724
+
725
+ Returns
726
+ -------
727
+ self
728
+ The runtime instance.
729
+ """
730
+ self.set_spec(self.CONST_GIT_URL, url)
731
+ self.set_spec(self.CONST_BRANCH, branch)
732
+ self.set_spec(self.CONST_COMMIT, commit)
733
+ self.set_spec(self.CONST_GIT_SSH_SECRET_ID, secret_ocid)
734
+ return self
735
+
736
+ @property
737
+ def url(self) -> str:
738
+ """URL of the Git repository."""
739
+ return self.get_spec(self.CONST_GIT_URL)
740
+
741
+ @property
742
+ def branch(self) -> str:
743
+ """Git branch name."""
744
+ return self.get_spec(self.CONST_BRANCH)
745
+
746
+ @property
747
+ def commit(self) -> str:
748
+ """Git commit ID (SHA1 hash)"""
749
+ return self.get_spec(self.CONST_COMMIT)
750
+
751
+ @property
752
+ def ssh_secret_ocid(self) -> str:
753
+ """The OCID of the OCI Vault secret storing the Git SSH key."""
754
+ return self.get_spec(self.CONST_GIT_SSH_SECRET_ID)
755
+
756
+ def init(self, **kwargs) -> "GitPythonRuntime":
757
+ """Initializes a starter specification for the runtime.
758
+
759
+ Returns
760
+ -------
761
+ GitPythonRuntime
762
+ The runtime instance.
763
+ """
764
+ super().init(**kwargs)
765
+ return self.with_source(
766
+ "{Git URI. For MLflow and Operator will be auto generated}"
767
+ ).with_entrypoint("{For MLflow and Operator will be auto generated}")
768
+
769
+
770
+ class DataFlowRuntime(CondaRuntime):
771
+ CONST_SCRIPT_BUCKET = "scriptBucket"
772
+ CONST_ARCHIVE_BUCKET = "archiveBucket"
773
+ CONST_ARCHIVE_URI = "archiveUri"
774
+ CONST_SCRIPT_PATH = "scriptPathURI"
775
+ CONST_CONFIGURATION = "configuration"
776
+ CONST_CONDA_AUTH_TYPE = "condaAuthType"
777
+ CONST_OVERWRITE = "overwrite"
778
+ attribute_map = {
779
+ CONST_SCRIPT_BUCKET: "script_bucket",
780
+ CONST_ARCHIVE_URI: "archive_bucket",
781
+ CONST_ARCHIVE_URI: "archive_uri",
782
+ CONST_SCRIPT_PATH: "script_path_uri",
783
+ CONST_CONFIGURATION: CONST_CONFIGURATION,
784
+ CONST_CONDA_AUTH_TYPE: "conda_auth_type",
785
+ CONST_OVERWRITE: CONST_OVERWRITE,
786
+ }
787
+ attribute_map.update(Runtime.attribute_map)
788
+
789
+ def with_conda(self, conda_spec: dict = None):
790
+ if conda_spec.get(self.CONST_CONDA_TYPE) == self.CONST_CONDA_TYPE_SERVICE:
791
+ raise NotImplementedError(
792
+ "Service Packs not supported. Please download and re-upload as a custom pack."
793
+ )
794
+ elif conda_spec.get(self.CONST_CONDA_TYPE) == self.CONST_CONDA_TYPE_CUSTOM:
795
+ return self.with_custom_conda(
796
+ uri=conda_spec.get(self.CONST_CONDA_URI),
797
+ region=conda_spec.get(self.CONST_CONDA_REGION),
798
+ )
799
+ else:
800
+ raise ValueError(
801
+ f"Unknown conda type: {conda_spec.get(self.CONST_CONDA_TYPE)}."
802
+ )
803
+
804
+ def with_service_conda(self, slug: str):
805
+ raise NotImplementedError(
806
+ "Publish this conda pack first, and provide the published conda pack uri."
807
+ )
808
+
809
+ def with_custom_conda(self, uri: str, region: str = None, auth_type: str = None):
810
+ """Specifies the custom conda pack for running the job
811
+
812
+ Parameters
813
+ ----------
814
+ uri : str
815
+ The OCI object storage URI for the conda pack,
816
+ e.g. "oci://your_bucket@namespace/object_name."
817
+ In the Environment Explorer of an OCI notebook session,
818
+ this is shown as the "source" of the conda pack.
819
+ region: str, optional
820
+ The region of the bucket storing the custom conda pack, by default None.
821
+ If region is not specified, ADS will use the region from your authentication credentials,
822
+ * For API Key, config["region"] is used.
823
+ * For Resource Principal, signer.region is used.
824
+ This is required if the conda pack is stored in a different region.
825
+ auth_type: str, (="resource_principal")
826
+ One of "resource_principal", "api_keys", "instance_principal", etc.
827
+ Auth mechanism used to read the conda back uri provided.
828
+
829
+ Returns
830
+ -------
831
+ self
832
+ The runtime instance.
833
+
834
+ See Also
835
+ --------
836
+ https://docs.oracle.com/en-us/iaas/data-science/using/conda_publishs_object.htm
837
+
838
+ """
839
+ if not auth_type:
840
+ auth_type = "resource_principal"
841
+ self.set_spec(self.CONST_CONDA_AUTH_TYPE, auth_type)
842
+ return super().with_custom_conda(uri=uri, region=region)
843
+
844
+ def with_archive_uri(self, uri: str) -> "DataFlowRuntime":
845
+ """
846
+ Set archive uri (which is a zip file containing dependencies).
847
+
848
+ Parameters
849
+ ----------
850
+ uri: str
851
+ uri to the archive zip
852
+
853
+ Returns
854
+ -------
855
+ DataFlowRuntime
856
+ runtime instance itself
857
+ """
858
+ return self.set_spec(self.CONST_ARCHIVE_URI, uri)
859
+
860
+ @property
861
+ def archive_uri(self):
862
+ """The Uri of archive zip"""
863
+ return self.get_spec(self.CONST_ARCHIVE_URI)
864
+
865
+ @property
866
+ def script_uri(self) -> str:
867
+ """The URI of the source code"""
868
+ return self.get_spec(self.CONST_SCRIPT_PATH)
869
+
870
+ def with_script_uri(self, path: str) -> "DataFlowRuntime":
871
+ """
872
+ Set script uri.
873
+
874
+ Parameters
875
+ ----------
876
+ path: str
877
+ uri to the script
878
+
879
+ Returns
880
+ -------
881
+ DataFlowRuntime
882
+ runtime instance itself
883
+ """
884
+ return self.set_spec(self.CONST_SCRIPT_PATH, path)
885
+
886
+ def with_script_bucket(self, bucket) -> "DataFlowRuntime":
887
+ """
888
+ Set object storage bucket to save the script, in case script uri given is local.
889
+
890
+ Parameters
891
+ ----------
892
+ bucket: str
893
+ name of the bucket
894
+
895
+ Returns
896
+ -------
897
+ DataFlowRuntime
898
+ runtime instance itself
899
+ """
900
+ return self.set_spec(self.CONST_SCRIPT_BUCKET, bucket)
901
+
902
+ @property
903
+ def script_bucket(self) -> str:
904
+ """Bucket to save script"""
905
+ return self.get_spec(self.CONST_SCRIPT_BUCKET)
906
+
907
+ def with_archive_bucket(self, bucket) -> "DataFlowRuntime":
908
+ """
909
+ Set object storage bucket to save the archive zip, in case archive uri given is local.
910
+
911
+ Parameters
912
+ ----------
913
+ bucket: str
914
+ name of the bucket
915
+
916
+ Returns
917
+ -------
918
+ DataFlowRuntime
919
+ runtime instance itself
920
+ """
921
+ return self.set_spec(self.CONST_ARCHIVE_BUCKET, bucket)
922
+
923
+ @property
924
+ def archive_bucket(self) -> str:
925
+ """Bucket to save archive zip"""
926
+ return self.get_spec(self.CONST_ARCHIVE_BUCKET)
927
+
928
+ def with_configuration(self, config: dict) -> "DataFlowRuntime":
929
+ """
930
+ Set Configuration for Spark.
931
+
932
+ Parameters
933
+ ----------
934
+ config: dict
935
+ dictionary of configuration details
936
+ https://spark.apache.org/docs/latest/configuration.html#available-properties.
937
+ Example: { “spark.app.name” : “My App Name”, “spark.shuffle.io.maxRetries” : “4” }
938
+
939
+ Returns
940
+ -------
941
+ DataFlowRuntime
942
+ runtime instance itself
943
+ """
944
+ return self.set_spec(self.CONST_CONFIGURATION, config)
945
+
946
+ @property
947
+ def configuration(self) -> dict:
948
+ """Configuration for Spark"""
949
+ return self.get_spec(self.CONST_CONFIGURATION)
950
+
951
+ def with_overwrite(self, overwrite: bool) -> "DataFlowRuntime":
952
+ """
953
+ Whether to overwrite the existing script in object storage (script bucket).
954
+ If the Object Storage bucket already contains a script with the same name,
955
+ then it will be overwritten with the new one if the `overwrite` flag equal to `True`.
956
+
957
+ Parameters
958
+ ----------
959
+ overwrite: bool
960
+ Whether to overwrite the existing script in object storage (script bucket).
961
+
962
+ Returns
963
+ -------
964
+ DataFlowRuntime
965
+ The DataFlowRuntime instance (self).
966
+ """
967
+ return self.set_spec(self.CONST_OVERWRITE, overwrite)
968
+
969
+ @property
970
+ def overwrite(self) -> str:
971
+ """Whether to overwrite the existing script in object storage (script bucket)."""
972
+ return self.get_spec(self.CONST_OVERWRITE)
973
+
974
+ def convert(self, **kwargs):
975
+ pass
976
+
977
+ def init(self, **kwargs) -> "DataFlowRuntime":
978
+ """Initializes a starter specification for the runtime.
979
+
980
+ Returns
981
+ -------
982
+ DataFlowRuntime
983
+ The runtime instance.
984
+ """
985
+ super().init(**kwargs)
986
+ self._spec.pop(self.CONST_ENV_VAR, None)
987
+ return (
988
+ self.with_script_uri(
989
+ "{Path to the executable script. For MLflow and Operator will auto generated}"
990
+ )
991
+ .with_script_bucket(
992
+ kwargs.get(
993
+ "script_bucket",
994
+ "{The object storage bucket to save a script. "
995
+ "Example: oci://<bucket_name>@<tenancy>/<prefix>}",
996
+ )
997
+ )
998
+ .with_overwrite(True)
999
+ .with_configuration({"spark.driverEnv.env_key": "env_value"})
1000
+ )
1001
+
1002
+
1003
+ class DataFlowNotebookRuntime(DataFlowRuntime, NotebookRuntime):
1004
+ def convert(self, overwrite=False):
1005
+ if self.output_uri:
1006
+ path = os.path.join(
1007
+ self.output_uri,
1008
+ str(os.path.basename(self.notebook_uri)).replace(".ipynb", ".py"),
1009
+ )
1010
+ else:
1011
+ path = os.path.splitext(self.notebook_uri)[0] + ".py"
1012
+ exclude_tags = self.exclude_tag or {}
1013
+ convert_notebook(
1014
+ self.notebook_uri, default_signer(), exclude_tags, path, overwrite=overwrite
1015
+ )
1016
+ self.set_spec(self.CONST_SCRIPT_PATH, path)