oracle-ads 2.13.9rc0__py3-none-any.whl → 2.13.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ads/aqua/__init__.py +40 -0
- ads/aqua/app.py +507 -0
- ads/aqua/cli.py +96 -0
- ads/aqua/client/__init__.py +3 -0
- ads/aqua/client/client.py +836 -0
- ads/aqua/client/openai_client.py +305 -0
- ads/aqua/common/__init__.py +5 -0
- ads/aqua/common/decorator.py +125 -0
- ads/aqua/common/entities.py +274 -0
- ads/aqua/common/enums.py +134 -0
- ads/aqua/common/errors.py +109 -0
- ads/aqua/common/utils.py +1295 -0
- ads/aqua/config/__init__.py +4 -0
- ads/aqua/config/container_config.py +246 -0
- ads/aqua/config/evaluation/__init__.py +4 -0
- ads/aqua/config/evaluation/evaluation_service_config.py +147 -0
- ads/aqua/config/utils/__init__.py +4 -0
- ads/aqua/config/utils/serializer.py +339 -0
- ads/aqua/constants.py +116 -0
- ads/aqua/data.py +14 -0
- ads/aqua/dummy_data/icon.txt +1 -0
- ads/aqua/dummy_data/oci_model_deployments.json +56 -0
- ads/aqua/dummy_data/oci_models.json +1 -0
- ads/aqua/dummy_data/readme.md +26 -0
- ads/aqua/evaluation/__init__.py +8 -0
- ads/aqua/evaluation/constants.py +53 -0
- ads/aqua/evaluation/entities.py +186 -0
- ads/aqua/evaluation/errors.py +70 -0
- ads/aqua/evaluation/evaluation.py +1814 -0
- ads/aqua/extension/__init__.py +42 -0
- ads/aqua/extension/aqua_ws_msg_handler.py +76 -0
- ads/aqua/extension/base_handler.py +90 -0
- ads/aqua/extension/common_handler.py +121 -0
- ads/aqua/extension/common_ws_msg_handler.py +36 -0
- ads/aqua/extension/deployment_handler.py +381 -0
- ads/aqua/extension/deployment_ws_msg_handler.py +54 -0
- ads/aqua/extension/errors.py +30 -0
- ads/aqua/extension/evaluation_handler.py +129 -0
- ads/aqua/extension/evaluation_ws_msg_handler.py +61 -0
- ads/aqua/extension/finetune_handler.py +96 -0
- ads/aqua/extension/model_handler.py +390 -0
- ads/aqua/extension/models/__init__.py +0 -0
- ads/aqua/extension/models/ws_models.py +145 -0
- ads/aqua/extension/models_ws_msg_handler.py +50 -0
- ads/aqua/extension/ui_handler.py +300 -0
- ads/aqua/extension/ui_websocket_handler.py +130 -0
- ads/aqua/extension/utils.py +133 -0
- ads/aqua/finetuning/__init__.py +7 -0
- ads/aqua/finetuning/constants.py +23 -0
- ads/aqua/finetuning/entities.py +181 -0
- ads/aqua/finetuning/finetuning.py +749 -0
- ads/aqua/model/__init__.py +8 -0
- ads/aqua/model/constants.py +60 -0
- ads/aqua/model/entities.py +385 -0
- ads/aqua/model/enums.py +32 -0
- ads/aqua/model/model.py +2134 -0
- ads/aqua/model/utils.py +52 -0
- ads/aqua/modeldeployment/__init__.py +6 -0
- ads/aqua/modeldeployment/constants.py +10 -0
- ads/aqua/modeldeployment/deployment.py +1315 -0
- ads/aqua/modeldeployment/entities.py +653 -0
- ads/aqua/modeldeployment/utils.py +543 -0
- ads/aqua/resources/gpu_shapes_index.json +94 -0
- ads/aqua/server/__init__.py +4 -0
- ads/aqua/server/__main__.py +24 -0
- ads/aqua/server/app.py +47 -0
- ads/aqua/server/aqua_spec.yml +1291 -0
- ads/aqua/training/__init__.py +4 -0
- ads/aqua/training/exceptions.py +476 -0
- ads/aqua/ui.py +519 -0
- ads/automl/__init__.py +9 -0
- ads/automl/driver.py +330 -0
- ads/automl/provider.py +975 -0
- ads/bds/__init__.py +5 -0
- ads/bds/auth.py +127 -0
- ads/bds/big_data_service.py +255 -0
- ads/catalog/__init__.py +19 -0
- ads/catalog/model.py +1576 -0
- ads/catalog/notebook.py +461 -0
- ads/catalog/project.py +468 -0
- ads/catalog/summary.py +178 -0
- ads/common/__init__.py +11 -0
- ads/common/analyzer.py +65 -0
- ads/common/artifact/.model-ignore +63 -0
- ads/common/artifact/__init__.py +10 -0
- ads/common/auth.py +1122 -0
- ads/common/card_identifier.py +83 -0
- ads/common/config.py +647 -0
- ads/common/data.py +165 -0
- ads/common/decorator/__init__.py +9 -0
- ads/common/decorator/argument_to_case.py +88 -0
- ads/common/decorator/deprecate.py +69 -0
- ads/common/decorator/require_nonempty_arg.py +65 -0
- ads/common/decorator/runtime_dependency.py +178 -0
- ads/common/decorator/threaded.py +97 -0
- ads/common/decorator/utils.py +35 -0
- ads/common/dsc_file_system.py +303 -0
- ads/common/error.py +14 -0
- ads/common/extended_enum.py +81 -0
- ads/common/function/__init__.py +5 -0
- ads/common/function/fn_util.py +142 -0
- ads/common/function/func_conf.yaml +25 -0
- ads/common/ipython.py +76 -0
- ads/common/model.py +679 -0
- ads/common/model_artifact.py +1759 -0
- ads/common/model_artifact_schema.json +107 -0
- ads/common/model_export_util.py +664 -0
- ads/common/model_metadata.py +24 -0
- ads/common/object_storage_details.py +296 -0
- ads/common/oci_client.py +179 -0
- ads/common/oci_datascience.py +46 -0
- ads/common/oci_logging.py +1144 -0
- ads/common/oci_mixin.py +957 -0
- ads/common/oci_resource.py +136 -0
- ads/common/serializer.py +559 -0
- ads/common/utils.py +1852 -0
- ads/common/word_lists.py +1491 -0
- ads/common/work_request.py +189 -0
- ads/config.py +1 -0
- ads/data_labeling/__init__.py +13 -0
- ads/data_labeling/boundingbox.py +253 -0
- ads/data_labeling/constants.py +47 -0
- ads/data_labeling/data_labeling_service.py +244 -0
- ads/data_labeling/interface/__init__.py +5 -0
- ads/data_labeling/interface/loader.py +16 -0
- ads/data_labeling/interface/parser.py +16 -0
- ads/data_labeling/interface/reader.py +23 -0
- ads/data_labeling/loader/__init__.py +5 -0
- ads/data_labeling/loader/file_loader.py +241 -0
- ads/data_labeling/metadata.py +110 -0
- ads/data_labeling/mixin/__init__.py +5 -0
- ads/data_labeling/mixin/data_labeling.py +232 -0
- ads/data_labeling/ner.py +129 -0
- ads/data_labeling/parser/__init__.py +5 -0
- ads/data_labeling/parser/dls_record_parser.py +388 -0
- ads/data_labeling/parser/export_metadata_parser.py +94 -0
- ads/data_labeling/parser/export_record_parser.py +473 -0
- ads/data_labeling/reader/__init__.py +5 -0
- ads/data_labeling/reader/dataset_reader.py +574 -0
- ads/data_labeling/reader/dls_record_reader.py +121 -0
- ads/data_labeling/reader/export_record_reader.py +62 -0
- ads/data_labeling/reader/jsonl_reader.py +75 -0
- ads/data_labeling/reader/metadata_reader.py +203 -0
- ads/data_labeling/reader/record_reader.py +263 -0
- ads/data_labeling/record.py +52 -0
- ads/data_labeling/visualizer/__init__.py +5 -0
- ads/data_labeling/visualizer/image_visualizer.py +525 -0
- ads/data_labeling/visualizer/text_visualizer.py +357 -0
- ads/database/__init__.py +5 -0
- ads/database/connection.py +338 -0
- ads/dataset/__init__.py +10 -0
- ads/dataset/capabilities.md +51 -0
- ads/dataset/classification_dataset.py +339 -0
- ads/dataset/correlation.py +226 -0
- ads/dataset/correlation_plot.py +563 -0
- ads/dataset/dask_series.py +173 -0
- ads/dataset/dataframe_transformer.py +110 -0
- ads/dataset/dataset.py +1979 -0
- ads/dataset/dataset_browser.py +360 -0
- ads/dataset/dataset_with_target.py +995 -0
- ads/dataset/exception.py +25 -0
- ads/dataset/factory.py +987 -0
- ads/dataset/feature_engineering_transformer.py +35 -0
- ads/dataset/feature_selection.py +107 -0
- ads/dataset/forecasting_dataset.py +26 -0
- ads/dataset/helper.py +1450 -0
- ads/dataset/label_encoder.py +99 -0
- ads/dataset/mixin/__init__.py +5 -0
- ads/dataset/mixin/dataset_accessor.py +134 -0
- ads/dataset/pipeline.py +58 -0
- ads/dataset/plot.py +710 -0
- ads/dataset/progress.py +86 -0
- ads/dataset/recommendation.py +297 -0
- ads/dataset/recommendation_transformer.py +502 -0
- ads/dataset/regression_dataset.py +14 -0
- ads/dataset/sampled_dataset.py +1050 -0
- ads/dataset/target.py +98 -0
- ads/dataset/timeseries.py +18 -0
- ads/dbmixin/__init__.py +5 -0
- ads/dbmixin/db_pandas_accessor.py +153 -0
- ads/environment/__init__.py +9 -0
- ads/environment/ml_runtime.py +66 -0
- ads/evaluations/README.md +14 -0
- ads/evaluations/__init__.py +109 -0
- ads/evaluations/evaluation_plot.py +983 -0
- ads/evaluations/evaluator.py +1334 -0
- ads/evaluations/statistical_metrics.py +543 -0
- ads/experiments/__init__.py +9 -0
- ads/experiments/capabilities.md +0 -0
- ads/explanations/__init__.py +21 -0
- ads/explanations/base_explainer.py +142 -0
- ads/explanations/capabilities.md +83 -0
- ads/explanations/explainer.py +190 -0
- ads/explanations/mlx_global_explainer.py +1050 -0
- ads/explanations/mlx_interface.py +386 -0
- ads/explanations/mlx_local_explainer.py +287 -0
- ads/explanations/mlx_whatif_explainer.py +201 -0
- ads/feature_engineering/__init__.py +20 -0
- ads/feature_engineering/accessor/__init__.py +5 -0
- ads/feature_engineering/accessor/dataframe_accessor.py +535 -0
- ads/feature_engineering/accessor/mixin/__init__.py +5 -0
- ads/feature_engineering/accessor/mixin/correlation.py +166 -0
- ads/feature_engineering/accessor/mixin/eda_mixin.py +266 -0
- ads/feature_engineering/accessor/mixin/eda_mixin_series.py +85 -0
- ads/feature_engineering/accessor/mixin/feature_types_mixin.py +211 -0
- ads/feature_engineering/accessor/mixin/utils.py +65 -0
- ads/feature_engineering/accessor/series_accessor.py +431 -0
- ads/feature_engineering/adsimage/__init__.py +5 -0
- ads/feature_engineering/adsimage/image.py +192 -0
- ads/feature_engineering/adsimage/image_reader.py +170 -0
- ads/feature_engineering/adsimage/interface/__init__.py +5 -0
- ads/feature_engineering/adsimage/interface/reader.py +19 -0
- ads/feature_engineering/adsstring/__init__.py +7 -0
- ads/feature_engineering/adsstring/oci_language/__init__.py +8 -0
- ads/feature_engineering/adsstring/string/__init__.py +8 -0
- ads/feature_engineering/data_schema.json +57 -0
- ads/feature_engineering/dataset/__init__.py +5 -0
- ads/feature_engineering/dataset/zip_code_data.py +42062 -0
- ads/feature_engineering/exceptions.py +40 -0
- ads/feature_engineering/feature_type/__init__.py +133 -0
- ads/feature_engineering/feature_type/address.py +184 -0
- ads/feature_engineering/feature_type/adsstring/__init__.py +5 -0
- ads/feature_engineering/feature_type/adsstring/common_regex_mixin.py +164 -0
- ads/feature_engineering/feature_type/adsstring/oci_language.py +93 -0
- ads/feature_engineering/feature_type/adsstring/parsers/__init__.py +5 -0
- ads/feature_engineering/feature_type/adsstring/parsers/base.py +47 -0
- ads/feature_engineering/feature_type/adsstring/parsers/nltk_parser.py +96 -0
- ads/feature_engineering/feature_type/adsstring/parsers/spacy_parser.py +221 -0
- ads/feature_engineering/feature_type/adsstring/string.py +258 -0
- ads/feature_engineering/feature_type/base.py +58 -0
- ads/feature_engineering/feature_type/boolean.py +183 -0
- ads/feature_engineering/feature_type/category.py +146 -0
- ads/feature_engineering/feature_type/constant.py +137 -0
- ads/feature_engineering/feature_type/continuous.py +151 -0
- ads/feature_engineering/feature_type/creditcard.py +314 -0
- ads/feature_engineering/feature_type/datetime.py +190 -0
- ads/feature_engineering/feature_type/discrete.py +134 -0
- ads/feature_engineering/feature_type/document.py +43 -0
- ads/feature_engineering/feature_type/gis.py +251 -0
- ads/feature_engineering/feature_type/handler/__init__.py +5 -0
- ads/feature_engineering/feature_type/handler/feature_validator.py +524 -0
- ads/feature_engineering/feature_type/handler/feature_warning.py +319 -0
- ads/feature_engineering/feature_type/handler/warnings.py +128 -0
- ads/feature_engineering/feature_type/integer.py +142 -0
- ads/feature_engineering/feature_type/ip_address.py +144 -0
- ads/feature_engineering/feature_type/ip_address_v4.py +138 -0
- ads/feature_engineering/feature_type/ip_address_v6.py +138 -0
- ads/feature_engineering/feature_type/lat_long.py +256 -0
- ads/feature_engineering/feature_type/object.py +43 -0
- ads/feature_engineering/feature_type/ordinal.py +132 -0
- ads/feature_engineering/feature_type/phone_number.py +135 -0
- ads/feature_engineering/feature_type/string.py +171 -0
- ads/feature_engineering/feature_type/text.py +93 -0
- ads/feature_engineering/feature_type/unknown.py +43 -0
- ads/feature_engineering/feature_type/zip_code.py +164 -0
- ads/feature_engineering/feature_type_manager.py +406 -0
- ads/feature_engineering/schema.py +795 -0
- ads/feature_engineering/utils.py +245 -0
- ads/feature_store/.readthedocs.yaml +19 -0
- ads/feature_store/README.md +65 -0
- ads/feature_store/__init__.py +9 -0
- ads/feature_store/common/__init__.py +0 -0
- ads/feature_store/common/enums.py +339 -0
- ads/feature_store/common/exceptions.py +18 -0
- ads/feature_store/common/spark_session_singleton.py +125 -0
- ads/feature_store/common/utils/__init__.py +0 -0
- ads/feature_store/common/utils/base64_encoder_decoder.py +72 -0
- ads/feature_store/common/utils/feature_schema_mapper.py +283 -0
- ads/feature_store/common/utils/transformation_utils.py +82 -0
- ads/feature_store/common/utils/utility.py +403 -0
- ads/feature_store/data_validation/__init__.py +0 -0
- ads/feature_store/data_validation/great_expectation.py +129 -0
- ads/feature_store/dataset.py +1230 -0
- ads/feature_store/dataset_job.py +530 -0
- ads/feature_store/docs/Dockerfile +7 -0
- ads/feature_store/docs/Makefile +44 -0
- ads/feature_store/docs/conf.py +28 -0
- ads/feature_store/docs/requirements.txt +14 -0
- ads/feature_store/docs/source/ads.feature_store.query.rst +20 -0
- ads/feature_store/docs/source/cicd.rst +137 -0
- ads/feature_store/docs/source/conf.py +86 -0
- ads/feature_store/docs/source/data_versioning.rst +33 -0
- ads/feature_store/docs/source/dataset.rst +388 -0
- ads/feature_store/docs/source/dataset_job.rst +27 -0
- ads/feature_store/docs/source/demo.rst +70 -0
- ads/feature_store/docs/source/entity.rst +78 -0
- ads/feature_store/docs/source/feature_group.rst +624 -0
- ads/feature_store/docs/source/feature_group_job.rst +29 -0
- ads/feature_store/docs/source/feature_store.rst +122 -0
- ads/feature_store/docs/source/feature_store_class.rst +123 -0
- ads/feature_store/docs/source/feature_validation.rst +66 -0
- ads/feature_store/docs/source/figures/cicd.png +0 -0
- ads/feature_store/docs/source/figures/data_validation.png +0 -0
- ads/feature_store/docs/source/figures/data_versioning.png +0 -0
- ads/feature_store/docs/source/figures/dataset.gif +0 -0
- ads/feature_store/docs/source/figures/dataset.png +0 -0
- ads/feature_store/docs/source/figures/dataset_lineage.png +0 -0
- ads/feature_store/docs/source/figures/dataset_statistics.png +0 -0
- ads/feature_store/docs/source/figures/dataset_statistics_viz.png +0 -0
- ads/feature_store/docs/source/figures/dataset_validation_results.png +0 -0
- ads/feature_store/docs/source/figures/dataset_validation_summary.png +0 -0
- ads/feature_store/docs/source/figures/drift_monitoring.png +0 -0
- ads/feature_store/docs/source/figures/entity.png +0 -0
- ads/feature_store/docs/source/figures/feature_group.png +0 -0
- ads/feature_store/docs/source/figures/feature_group_lineage.png +0 -0
- ads/feature_store/docs/source/figures/feature_group_statistics_viz.png +0 -0
- ads/feature_store/docs/source/figures/feature_store_deployment.png +0 -0
- ads/feature_store/docs/source/figures/feature_store_overview.png +0 -0
- ads/feature_store/docs/source/figures/featuregroup.gif +0 -0
- ads/feature_store/docs/source/figures/lineage_d1.png +0 -0
- ads/feature_store/docs/source/figures/lineage_d2.png +0 -0
- ads/feature_store/docs/source/figures/lineage_fg.png +0 -0
- ads/feature_store/docs/source/figures/logo-dark-mode.png +0 -0
- ads/feature_store/docs/source/figures/logo-light-mode.png +0 -0
- ads/feature_store/docs/source/figures/overview.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager_feature_store_stack.png +0 -0
- ads/feature_store/docs/source/figures/resource_manager_home.png +0 -0
- ads/feature_store/docs/source/figures/stats_1.png +0 -0
- ads/feature_store/docs/source/figures/stats_2.png +0 -0
- ads/feature_store/docs/source/figures/stats_d.png +0 -0
- ads/feature_store/docs/source/figures/stats_fg.png +0 -0
- ads/feature_store/docs/source/figures/transformation.png +0 -0
- ads/feature_store/docs/source/figures/transformations.gif +0 -0
- ads/feature_store/docs/source/figures/validation.png +0 -0
- ads/feature_store/docs/source/figures/validation_fg.png +0 -0
- ads/feature_store/docs/source/figures/validation_results.png +0 -0
- ads/feature_store/docs/source/figures/validation_summary.png +0 -0
- ads/feature_store/docs/source/index.rst +81 -0
- ads/feature_store/docs/source/module.rst +8 -0
- ads/feature_store/docs/source/notebook.rst +94 -0
- ads/feature_store/docs/source/overview.rst +47 -0
- ads/feature_store/docs/source/quickstart.rst +176 -0
- ads/feature_store/docs/source/release_notes.rst +194 -0
- ads/feature_store/docs/source/setup_feature_store.rst +81 -0
- ads/feature_store/docs/source/statistics.rst +58 -0
- ads/feature_store/docs/source/transformation.rst +199 -0
- ads/feature_store/docs/source/ui.rst +65 -0
- ads/feature_store/docs/source/user_guides.setup.feature_store_operator.rst +66 -0
- ads/feature_store/docs/source/user_guides.setup.helm_chart.rst +192 -0
- ads/feature_store/docs/source/user_guides.setup.terraform.rst +338 -0
- ads/feature_store/entity.py +718 -0
- ads/feature_store/execution_strategy/__init__.py +0 -0
- ads/feature_store/execution_strategy/delta_lake/__init__.py +0 -0
- ads/feature_store/execution_strategy/delta_lake/delta_lake_service.py +375 -0
- ads/feature_store/execution_strategy/engine/__init__.py +0 -0
- ads/feature_store/execution_strategy/engine/spark_engine.py +316 -0
- ads/feature_store/execution_strategy/execution_strategy.py +113 -0
- ads/feature_store/execution_strategy/execution_strategy_provider.py +47 -0
- ads/feature_store/execution_strategy/spark/__init__.py +0 -0
- ads/feature_store/execution_strategy/spark/spark_execution.py +618 -0
- ads/feature_store/feature.py +192 -0
- ads/feature_store/feature_group.py +1494 -0
- ads/feature_store/feature_group_expectation.py +346 -0
- ads/feature_store/feature_group_job.py +602 -0
- ads/feature_store/feature_lineage/__init__.py +0 -0
- ads/feature_store/feature_lineage/graphviz_service.py +180 -0
- ads/feature_store/feature_option_details.py +50 -0
- ads/feature_store/feature_statistics/__init__.py +0 -0
- ads/feature_store/feature_statistics/statistics_service.py +99 -0
- ads/feature_store/feature_store.py +699 -0
- ads/feature_store/feature_store_registrar.py +518 -0
- ads/feature_store/input_feature_detail.py +149 -0
- ads/feature_store/mixin/__init__.py +4 -0
- ads/feature_store/mixin/oci_feature_store.py +145 -0
- ads/feature_store/model_details.py +73 -0
- ads/feature_store/query/__init__.py +0 -0
- ads/feature_store/query/filter.py +266 -0
- ads/feature_store/query/generator/__init__.py +0 -0
- ads/feature_store/query/generator/query_generator.py +298 -0
- ads/feature_store/query/join.py +161 -0
- ads/feature_store/query/query.py +403 -0
- ads/feature_store/query/validator/__init__.py +0 -0
- ads/feature_store/query/validator/query_validator.py +57 -0
- ads/feature_store/response/__init__.py +0 -0
- ads/feature_store/response/response_builder.py +68 -0
- ads/feature_store/service/__init__.py +0 -0
- ads/feature_store/service/oci_dataset.py +139 -0
- ads/feature_store/service/oci_dataset_job.py +199 -0
- ads/feature_store/service/oci_entity.py +125 -0
- ads/feature_store/service/oci_feature_group.py +164 -0
- ads/feature_store/service/oci_feature_group_job.py +214 -0
- ads/feature_store/service/oci_feature_store.py +182 -0
- ads/feature_store/service/oci_lineage.py +87 -0
- ads/feature_store/service/oci_transformation.py +104 -0
- ads/feature_store/statistics/__init__.py +0 -0
- ads/feature_store/statistics/abs_feature_value.py +49 -0
- ads/feature_store/statistics/charts/__init__.py +0 -0
- ads/feature_store/statistics/charts/abstract_feature_plot.py +37 -0
- ads/feature_store/statistics/charts/box_plot.py +148 -0
- ads/feature_store/statistics/charts/frequency_distribution.py +65 -0
- ads/feature_store/statistics/charts/probability_distribution.py +68 -0
- ads/feature_store/statistics/charts/top_k_frequent_elements.py +98 -0
- ads/feature_store/statistics/feature_stat.py +126 -0
- ads/feature_store/statistics/generic_feature_value.py +33 -0
- ads/feature_store/statistics/statistics.py +41 -0
- ads/feature_store/statistics_config.py +101 -0
- ads/feature_store/templates/feature_store_template.yaml +45 -0
- ads/feature_store/transformation.py +499 -0
- ads/feature_store/validation_output.py +57 -0
- ads/hpo/__init__.py +9 -0
- ads/hpo/_imports.py +91 -0
- ads/hpo/ads_search_space.py +439 -0
- ads/hpo/distributions.py +325 -0
- ads/hpo/objective.py +280 -0
- ads/hpo/search_cv.py +1657 -0
- ads/hpo/stopping_criterion.py +75 -0
- ads/hpo/tuner_artifact.py +413 -0
- ads/hpo/utils.py +91 -0
- ads/hpo/validation.py +140 -0
- ads/hpo/visualization/__init__.py +5 -0
- ads/hpo/visualization/_contour.py +23 -0
- ads/hpo/visualization/_edf.py +20 -0
- ads/hpo/visualization/_intermediate_values.py +21 -0
- ads/hpo/visualization/_optimization_history.py +25 -0
- ads/hpo/visualization/_parallel_coordinate.py +169 -0
- ads/hpo/visualization/_param_importances.py +26 -0
- ads/jobs/__init__.py +53 -0
- ads/jobs/ads_job.py +663 -0
- ads/jobs/builders/__init__.py +5 -0
- ads/jobs/builders/base.py +156 -0
- ads/jobs/builders/infrastructure/__init__.py +6 -0
- ads/jobs/builders/infrastructure/base.py +165 -0
- ads/jobs/builders/infrastructure/dataflow.py +1252 -0
- ads/jobs/builders/infrastructure/dsc_job.py +1894 -0
- ads/jobs/builders/infrastructure/dsc_job_runtime.py +1233 -0
- ads/jobs/builders/infrastructure/utils.py +65 -0
- ads/jobs/builders/runtimes/__init__.py +5 -0
- ads/jobs/builders/runtimes/artifact.py +338 -0
- ads/jobs/builders/runtimes/base.py +325 -0
- ads/jobs/builders/runtimes/container_runtime.py +242 -0
- ads/jobs/builders/runtimes/python_runtime.py +1016 -0
- ads/jobs/builders/runtimes/pytorch_runtime.py +204 -0
- ads/jobs/cli.py +104 -0
- ads/jobs/env_var_parser.py +131 -0
- ads/jobs/extension.py +160 -0
- ads/jobs/schema/__init__.py +5 -0
- ads/jobs/schema/infrastructure_schema.json +116 -0
- ads/jobs/schema/job_schema.json +42 -0
- ads/jobs/schema/runtime_schema.json +183 -0
- ads/jobs/schema/validator.py +141 -0
- ads/jobs/serializer.py +296 -0
- ads/jobs/templates/__init__.py +5 -0
- ads/jobs/templates/container.py +6 -0
- ads/jobs/templates/driver_notebook.py +177 -0
- ads/jobs/templates/driver_oci.py +500 -0
- ads/jobs/templates/driver_python.py +48 -0
- ads/jobs/templates/driver_pytorch.py +852 -0
- ads/jobs/templates/driver_utils.py +615 -0
- ads/jobs/templates/hostname_from_env.c +55 -0
- ads/jobs/templates/oci_metrics.py +181 -0
- ads/jobs/utils.py +104 -0
- ads/llm/__init__.py +28 -0
- ads/llm/autogen/__init__.py +2 -0
- ads/llm/autogen/constants.py +15 -0
- ads/llm/autogen/reports/__init__.py +2 -0
- ads/llm/autogen/reports/base.py +67 -0
- ads/llm/autogen/reports/data.py +103 -0
- ads/llm/autogen/reports/session.py +526 -0
- ads/llm/autogen/reports/templates/chat_box.html +13 -0
- ads/llm/autogen/reports/templates/chat_box_lt.html +5 -0
- ads/llm/autogen/reports/templates/chat_box_rt.html +6 -0
- ads/llm/autogen/reports/utils.py +56 -0
- ads/llm/autogen/v02/__init__.py +4 -0
- ads/llm/autogen/v02/client.py +295 -0
- ads/llm/autogen/v02/log_handlers/__init__.py +2 -0
- ads/llm/autogen/v02/log_handlers/oci_file_handler.py +83 -0
- ads/llm/autogen/v02/loggers/__init__.py +6 -0
- ads/llm/autogen/v02/loggers/metric_logger.py +320 -0
- ads/llm/autogen/v02/loggers/session_logger.py +580 -0
- ads/llm/autogen/v02/loggers/utils.py +86 -0
- ads/llm/autogen/v02/runtime_logging.py +163 -0
- ads/llm/chain.py +268 -0
- ads/llm/chat_template.py +31 -0
- ads/llm/deploy.py +63 -0
- ads/llm/guardrails/__init__.py +5 -0
- ads/llm/guardrails/base.py +442 -0
- ads/llm/guardrails/huggingface.py +44 -0
- ads/llm/langchain/__init__.py +5 -0
- ads/llm/langchain/plugins/__init__.py +5 -0
- ads/llm/langchain/plugins/chat_models/__init__.py +5 -0
- ads/llm/langchain/plugins/chat_models/oci_data_science.py +1027 -0
- ads/llm/langchain/plugins/embeddings/__init__.py +4 -0
- ads/llm/langchain/plugins/embeddings/oci_data_science_model_deployment_endpoint.py +184 -0
- ads/llm/langchain/plugins/llms/__init__.py +5 -0
- ads/llm/langchain/plugins/llms/oci_data_science_model_deployment_endpoint.py +979 -0
- ads/llm/requirements.txt +3 -0
- ads/llm/serialize.py +219 -0
- ads/llm/serializers/__init__.py +0 -0
- ads/llm/serializers/retrieval_qa.py +153 -0
- ads/llm/serializers/runnable_parallel.py +27 -0
- ads/llm/templates/score_chain.jinja2 +155 -0
- ads/llm/templates/tool_chat_template_hermes.jinja +130 -0
- ads/llm/templates/tool_chat_template_mistral_parallel.jinja +94 -0
- ads/model/__init__.py +52 -0
- ads/model/artifact.py +573 -0
- ads/model/artifact_downloader.py +254 -0
- ads/model/artifact_uploader.py +267 -0
- ads/model/base_properties.py +238 -0
- ads/model/common/.model-ignore +66 -0
- ads/model/common/__init__.py +5 -0
- ads/model/common/utils.py +142 -0
- ads/model/datascience_model.py +2635 -0
- ads/model/deployment/__init__.py +20 -0
- ads/model/deployment/common/__init__.py +5 -0
- ads/model/deployment/common/utils.py +308 -0
- ads/model/deployment/model_deployer.py +466 -0
- ads/model/deployment/model_deployment.py +1846 -0
- ads/model/deployment/model_deployment_infrastructure.py +671 -0
- ads/model/deployment/model_deployment_properties.py +493 -0
- ads/model/deployment/model_deployment_runtime.py +838 -0
- ads/model/extractor/__init__.py +5 -0
- ads/model/extractor/automl_extractor.py +74 -0
- ads/model/extractor/embedding_onnx_extractor.py +80 -0
- ads/model/extractor/huggingface_extractor.py +88 -0
- ads/model/extractor/keras_extractor.py +84 -0
- ads/model/extractor/lightgbm_extractor.py +93 -0
- ads/model/extractor/model_info_extractor.py +114 -0
- ads/model/extractor/model_info_extractor_factory.py +105 -0
- ads/model/extractor/pytorch_extractor.py +87 -0
- ads/model/extractor/sklearn_extractor.py +112 -0
- ads/model/extractor/spark_extractor.py +89 -0
- ads/model/extractor/tensorflow_extractor.py +85 -0
- ads/model/extractor/xgboost_extractor.py +94 -0
- ads/model/framework/__init__.py +5 -0
- ads/model/framework/automl_model.py +178 -0
- ads/model/framework/embedding_onnx_model.py +438 -0
- ads/model/framework/huggingface_model.py +399 -0
- ads/model/framework/lightgbm_model.py +266 -0
- ads/model/framework/pytorch_model.py +266 -0
- ads/model/framework/sklearn_model.py +250 -0
- ads/model/framework/spark_model.py +326 -0
- ads/model/framework/tensorflow_model.py +254 -0
- ads/model/framework/xgboost_model.py +258 -0
- ads/model/generic_model.py +3518 -0
- ads/model/model_artifact_boilerplate/README.md +381 -0
- ads/model/model_artifact_boilerplate/__init__.py +5 -0
- ads/model/model_artifact_boilerplate/artifact_introspection_test/__init__.py +5 -0
- ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py +427 -0
- ads/model/model_artifact_boilerplate/artifact_introspection_test/requirements.txt +2 -0
- ads/model/model_artifact_boilerplate/runtime.yaml +7 -0
- ads/model/model_artifact_boilerplate/score.py +61 -0
- ads/model/model_file_description_schema.json +68 -0
- ads/model/model_introspect.py +331 -0
- ads/model/model_metadata.py +1810 -0
- ads/model/model_metadata_mixin.py +460 -0
- ads/model/model_properties.py +63 -0
- ads/model/model_version_set.py +739 -0
- ads/model/runtime/__init__.py +5 -0
- ads/model/runtime/env_info.py +306 -0
- ads/model/runtime/model_deployment_details.py +37 -0
- ads/model/runtime/model_provenance_details.py +58 -0
- ads/model/runtime/runtime_info.py +81 -0
- ads/model/runtime/schemas/inference_env_info_schema.yaml +16 -0
- ads/model/runtime/schemas/model_provenance_schema.yaml +36 -0
- ads/model/runtime/schemas/training_env_info_schema.yaml +16 -0
- ads/model/runtime/utils.py +201 -0
- ads/model/serde/__init__.py +5 -0
- ads/model/serde/common.py +40 -0
- ads/model/serde/model_input.py +547 -0
- ads/model/serde/model_serializer.py +1184 -0
- ads/model/service/__init__.py +5 -0
- ads/model/service/oci_datascience_model.py +1076 -0
- ads/model/service/oci_datascience_model_deployment.py +500 -0
- ads/model/service/oci_datascience_model_version_set.py +176 -0
- ads/model/transformer/__init__.py +5 -0
- ads/model/transformer/onnx_transformer.py +324 -0
- ads/mysqldb/__init__.py +5 -0
- ads/mysqldb/mysql_db.py +227 -0
- ads/opctl/__init__.py +18 -0
- ads/opctl/anomaly_detection.py +11 -0
- ads/opctl/backend/__init__.py +5 -0
- ads/opctl/backend/ads_dataflow.py +353 -0
- ads/opctl/backend/ads_ml_job.py +710 -0
- ads/opctl/backend/ads_ml_pipeline.py +164 -0
- ads/opctl/backend/ads_model_deployment.py +209 -0
- ads/opctl/backend/base.py +146 -0
- ads/opctl/backend/local.py +1053 -0
- ads/opctl/backend/marketplace/__init__.py +9 -0
- ads/opctl/backend/marketplace/helm_helper.py +173 -0
- ads/opctl/backend/marketplace/local_marketplace.py +271 -0
- ads/opctl/backend/marketplace/marketplace_backend_runner.py +71 -0
- ads/opctl/backend/marketplace/marketplace_operator_interface.py +44 -0
- ads/opctl/backend/marketplace/marketplace_operator_runner.py +24 -0
- ads/opctl/backend/marketplace/marketplace_utils.py +212 -0
- ads/opctl/backend/marketplace/models/__init__.py +5 -0
- ads/opctl/backend/marketplace/models/bearer_token.py +94 -0
- ads/opctl/backend/marketplace/models/marketplace_type.py +70 -0
- ads/opctl/backend/marketplace/models/ocir_details.py +56 -0
- ads/opctl/backend/marketplace/prerequisite_checker.py +238 -0
- ads/opctl/cli.py +707 -0
- ads/opctl/cmds.py +869 -0
- ads/opctl/conda/__init__.py +5 -0
- ads/opctl/conda/cli.py +193 -0
- ads/opctl/conda/cmds.py +749 -0
- ads/opctl/conda/config.yaml +34 -0
- ads/opctl/conda/manifest_template.yaml +13 -0
- ads/opctl/conda/multipart_uploader.py +188 -0
- ads/opctl/conda/pack.py +89 -0
- ads/opctl/config/__init__.py +5 -0
- ads/opctl/config/base.py +57 -0
- ads/opctl/config/diagnostics/__init__.py +5 -0
- ads/opctl/config/diagnostics/distributed/default_requirements_config.yaml +62 -0
- ads/opctl/config/merger.py +255 -0
- ads/opctl/config/resolver.py +297 -0
- ads/opctl/config/utils.py +79 -0
- ads/opctl/config/validator.py +17 -0
- ads/opctl/config/versioner.py +68 -0
- ads/opctl/config/yaml_parsers/__init__.py +7 -0
- ads/opctl/config/yaml_parsers/base.py +58 -0
- ads/opctl/config/yaml_parsers/distributed/__init__.py +7 -0
- ads/opctl/config/yaml_parsers/distributed/yaml_parser.py +201 -0
- ads/opctl/constants.py +66 -0
- ads/opctl/decorator/__init__.py +5 -0
- ads/opctl/decorator/common.py +129 -0
- ads/opctl/diagnostics/__init__.py +5 -0
- ads/opctl/diagnostics/__main__.py +25 -0
- ads/opctl/diagnostics/check_distributed_job_requirements.py +212 -0
- ads/opctl/diagnostics/check_requirements.py +144 -0
- ads/opctl/diagnostics/requirement_exception.py +9 -0
- ads/opctl/distributed/README.md +109 -0
- ads/opctl/distributed/__init__.py +5 -0
- ads/opctl/distributed/certificates.py +32 -0
- ads/opctl/distributed/cli.py +207 -0
- ads/opctl/distributed/cmds.py +731 -0
- ads/opctl/distributed/common/__init__.py +5 -0
- ads/opctl/distributed/common/abstract_cluster_provider.py +449 -0
- ads/opctl/distributed/common/abstract_framework_spec_builder.py +88 -0
- ads/opctl/distributed/common/cluster_config_helper.py +103 -0
- ads/opctl/distributed/common/cluster_provider_factory.py +21 -0
- ads/opctl/distributed/common/cluster_runner.py +54 -0
- ads/opctl/distributed/common/framework_factory.py +29 -0
- ads/opctl/docker/Dockerfile.job +103 -0
- ads/opctl/docker/Dockerfile.job.arm +107 -0
- ads/opctl/docker/Dockerfile.job.gpu +175 -0
- ads/opctl/docker/base-env.yaml +13 -0
- ads/opctl/docker/cuda.repo +6 -0
- ads/opctl/docker/operator/.dockerignore +0 -0
- ads/opctl/docker/operator/Dockerfile +41 -0
- ads/opctl/docker/operator/Dockerfile.gpu +85 -0
- ads/opctl/docker/operator/cuda.repo +6 -0
- ads/opctl/docker/operator/environment.yaml +8 -0
- ads/opctl/forecast.py +11 -0
- ads/opctl/index.yaml +3 -0
- ads/opctl/model/__init__.py +5 -0
- ads/opctl/model/cli.py +65 -0
- ads/opctl/model/cmds.py +73 -0
- ads/opctl/operator/README.md +4 -0
- ads/opctl/operator/__init__.py +31 -0
- ads/opctl/operator/cli.py +344 -0
- ads/opctl/operator/cmd.py +596 -0
- ads/opctl/operator/common/__init__.py +5 -0
- ads/opctl/operator/common/backend_factory.py +460 -0
- ads/opctl/operator/common/const.py +27 -0
- ads/opctl/operator/common/data/synthetic.csv +16001 -0
- ads/opctl/operator/common/dictionary_merger.py +148 -0
- ads/opctl/operator/common/errors.py +42 -0
- ads/opctl/operator/common/operator_config.py +99 -0
- ads/opctl/operator/common/operator_loader.py +811 -0
- ads/opctl/operator/common/operator_schema.yaml +130 -0
- ads/opctl/operator/common/operator_yaml_generator.py +152 -0
- ads/opctl/operator/common/utils.py +208 -0
- ads/opctl/operator/lowcode/__init__.py +5 -0
- ads/opctl/operator/lowcode/anomaly/MLoperator +16 -0
- ads/opctl/operator/lowcode/anomaly/README.md +207 -0
- ads/opctl/operator/lowcode/anomaly/__init__.py +5 -0
- ads/opctl/operator/lowcode/anomaly/__main__.py +103 -0
- ads/opctl/operator/lowcode/anomaly/cmd.py +35 -0
- ads/opctl/operator/lowcode/anomaly/const.py +167 -0
- ads/opctl/operator/lowcode/anomaly/environment.yaml +10 -0
- ads/opctl/operator/lowcode/anomaly/model/__init__.py +5 -0
- ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +146 -0
- ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py +162 -0
- ads/opctl/operator/lowcode/anomaly/model/automlx.py +99 -0
- ads/opctl/operator/lowcode/anomaly/model/autots.py +115 -0
- ads/opctl/operator/lowcode/anomaly/model/base_model.py +404 -0
- ads/opctl/operator/lowcode/anomaly/model/factory.py +110 -0
- ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +78 -0
- ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +78 -0
- ads/opctl/operator/lowcode/anomaly/model/randomcutforest.py +120 -0
- ads/opctl/operator/lowcode/anomaly/model/tods.py +119 -0
- ads/opctl/operator/lowcode/anomaly/operator_config.py +127 -0
- ads/opctl/operator/lowcode/anomaly/schema.yaml +401 -0
- ads/opctl/operator/lowcode/anomaly/utils.py +88 -0
- ads/opctl/operator/lowcode/common/__init__.py +5 -0
- ads/opctl/operator/lowcode/common/const.py +10 -0
- ads/opctl/operator/lowcode/common/data.py +116 -0
- ads/opctl/operator/lowcode/common/errors.py +47 -0
- ads/opctl/operator/lowcode/common/transformations.py +296 -0
- ads/opctl/operator/lowcode/common/utils.py +384 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/MLoperator +13 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/README.md +30 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/__init__.py +5 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/__main__.py +116 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/cmd.py +85 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/const.py +15 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/environment.yaml +0 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/__init__.py +4 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/apigw_config.py +32 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/db_config.py +43 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/mysql_config.py +120 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/serializable_yaml_model.py +34 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/operator_utils.py +386 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/schema.yaml +160 -0
- ads/opctl/operator/lowcode/forecast/MLoperator +25 -0
- ads/opctl/operator/lowcode/forecast/README.md +209 -0
- ads/opctl/operator/lowcode/forecast/__init__.py +5 -0
- ads/opctl/operator/lowcode/forecast/__main__.py +89 -0
- ads/opctl/operator/lowcode/forecast/cmd.py +40 -0
- ads/opctl/operator/lowcode/forecast/const.py +92 -0
- ads/opctl/operator/lowcode/forecast/environment.yaml +20 -0
- ads/opctl/operator/lowcode/forecast/errors.py +26 -0
- ads/opctl/operator/lowcode/forecast/model/__init__.py +5 -0
- ads/opctl/operator/lowcode/forecast/model/arima.py +279 -0
- ads/opctl/operator/lowcode/forecast/model/automlx.py +553 -0
- ads/opctl/operator/lowcode/forecast/model/autots.py +312 -0
- ads/opctl/operator/lowcode/forecast/model/base_model.py +875 -0
- ads/opctl/operator/lowcode/forecast/model/factory.py +106 -0
- ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +492 -0
- ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +243 -0
- ads/opctl/operator/lowcode/forecast/model/neuralprophet.py +482 -0
- ads/opctl/operator/lowcode/forecast/model/prophet.py +450 -0
- ads/opctl/operator/lowcode/forecast/model_evaluator.py +244 -0
- ads/opctl/operator/lowcode/forecast/operator_config.py +234 -0
- ads/opctl/operator/lowcode/forecast/schema.yaml +506 -0
- ads/opctl/operator/lowcode/forecast/utils.py +397 -0
- ads/opctl/operator/lowcode/forecast/whatifserve/__init__.py +7 -0
- ads/opctl/operator/lowcode/forecast/whatifserve/deployment_manager.py +285 -0
- ads/opctl/operator/lowcode/forecast/whatifserve/score.py +246 -0
- ads/opctl/operator/lowcode/pii/MLoperator +17 -0
- ads/opctl/operator/lowcode/pii/README.md +208 -0
- ads/opctl/operator/lowcode/pii/__init__.py +5 -0
- ads/opctl/operator/lowcode/pii/__main__.py +78 -0
- ads/opctl/operator/lowcode/pii/cmd.py +39 -0
- ads/opctl/operator/lowcode/pii/constant.py +84 -0
- ads/opctl/operator/lowcode/pii/environment.yaml +17 -0
- ads/opctl/operator/lowcode/pii/errors.py +27 -0
- ads/opctl/operator/lowcode/pii/model/__init__.py +5 -0
- ads/opctl/operator/lowcode/pii/model/factory.py +82 -0
- ads/opctl/operator/lowcode/pii/model/guardrails.py +167 -0
- ads/opctl/operator/lowcode/pii/model/pii.py +145 -0
- ads/opctl/operator/lowcode/pii/model/processor/__init__.py +34 -0
- ads/opctl/operator/lowcode/pii/model/processor/email_replacer.py +34 -0
- ads/opctl/operator/lowcode/pii/model/processor/mbi_replacer.py +35 -0
- ads/opctl/operator/lowcode/pii/model/processor/name_replacer.py +225 -0
- ads/opctl/operator/lowcode/pii/model/processor/number_replacer.py +73 -0
- ads/opctl/operator/lowcode/pii/model/processor/remover.py +26 -0
- ads/opctl/operator/lowcode/pii/model/report.py +487 -0
- ads/opctl/operator/lowcode/pii/operator_config.py +95 -0
- ads/opctl/operator/lowcode/pii/schema.yaml +108 -0
- ads/opctl/operator/lowcode/pii/utils.py +43 -0
- ads/opctl/operator/lowcode/recommender/MLoperator +16 -0
- ads/opctl/operator/lowcode/recommender/README.md +206 -0
- ads/opctl/operator/lowcode/recommender/__init__.py +5 -0
- ads/opctl/operator/lowcode/recommender/__main__.py +82 -0
- ads/opctl/operator/lowcode/recommender/cmd.py +33 -0
- ads/opctl/operator/lowcode/recommender/constant.py +30 -0
- ads/opctl/operator/lowcode/recommender/environment.yaml +11 -0
- ads/opctl/operator/lowcode/recommender/model/base_model.py +212 -0
- ads/opctl/operator/lowcode/recommender/model/factory.py +56 -0
- ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +25 -0
- ads/opctl/operator/lowcode/recommender/model/svd.py +106 -0
- ads/opctl/operator/lowcode/recommender/operator_config.py +81 -0
- ads/opctl/operator/lowcode/recommender/schema.yaml +265 -0
- ads/opctl/operator/lowcode/recommender/utils.py +13 -0
- ads/opctl/operator/runtime/__init__.py +5 -0
- ads/opctl/operator/runtime/const.py +17 -0
- ads/opctl/operator/runtime/container_runtime_schema.yaml +50 -0
- ads/opctl/operator/runtime/marketplace_runtime.py +50 -0
- ads/opctl/operator/runtime/python_marketplace_runtime_schema.yaml +21 -0
- ads/opctl/operator/runtime/python_runtime_schema.yaml +21 -0
- ads/opctl/operator/runtime/runtime.py +115 -0
- ads/opctl/schema.yaml.yml +36 -0
- ads/opctl/script.py +40 -0
- ads/opctl/spark/__init__.py +5 -0
- ads/opctl/spark/cli.py +43 -0
- ads/opctl/spark/cmds.py +147 -0
- ads/opctl/templates/diagnostic_report_template.jinja2 +102 -0
- ads/opctl/utils.py +344 -0
- ads/oracledb/__init__.py +5 -0
- ads/oracledb/oracle_db.py +346 -0
- ads/pipeline/__init__.py +39 -0
- ads/pipeline/ads_pipeline.py +2279 -0
- ads/pipeline/ads_pipeline_run.py +772 -0
- ads/pipeline/ads_pipeline_step.py +605 -0
- ads/pipeline/builders/__init__.py +5 -0
- ads/pipeline/builders/infrastructure/__init__.py +5 -0
- ads/pipeline/builders/infrastructure/custom_script.py +32 -0
- ads/pipeline/cli.py +119 -0
- ads/pipeline/extension.py +291 -0
- ads/pipeline/schema/__init__.py +5 -0
- ads/pipeline/schema/cs_step_schema.json +35 -0
- ads/pipeline/schema/ml_step_schema.json +31 -0
- ads/pipeline/schema/pipeline_schema.json +71 -0
- ads/pipeline/visualizer/__init__.py +5 -0
- ads/pipeline/visualizer/base.py +570 -0
- ads/pipeline/visualizer/graph_renderer.py +272 -0
- ads/pipeline/visualizer/text_renderer.py +84 -0
- ads/secrets/__init__.py +11 -0
- ads/secrets/adb.py +386 -0
- ads/secrets/auth_token.py +86 -0
- ads/secrets/big_data_service.py +365 -0
- ads/secrets/mysqldb.py +149 -0
- ads/secrets/oracledb.py +160 -0
- ads/secrets/secrets.py +407 -0
- ads/telemetry/__init__.py +7 -0
- ads/telemetry/base.py +69 -0
- ads/telemetry/client.py +122 -0
- ads/telemetry/telemetry.py +257 -0
- ads/templates/dataflow_pyspark.jinja2 +13 -0
- ads/templates/dataflow_sparksql.jinja2 +22 -0
- ads/templates/func.jinja2 +20 -0
- ads/templates/schemas/openapi.json +1740 -0
- ads/templates/score-pkl.jinja2 +173 -0
- ads/templates/score.jinja2 +322 -0
- ads/templates/score_embedding_onnx.jinja2 +202 -0
- ads/templates/score_generic.jinja2 +165 -0
- ads/templates/score_huggingface_pipeline.jinja2 +217 -0
- ads/templates/score_lightgbm.jinja2 +185 -0
- ads/templates/score_onnx.jinja2 +407 -0
- ads/templates/score_onnx_new.jinja2 +473 -0
- ads/templates/score_oracle_automl.jinja2 +185 -0
- ads/templates/score_pyspark.jinja2 +154 -0
- ads/templates/score_pytorch.jinja2 +219 -0
- ads/templates/score_scikit-learn.jinja2 +184 -0
- ads/templates/score_tensorflow.jinja2 +184 -0
- ads/templates/score_xgboost.jinja2 +178 -0
- ads/text_dataset/__init__.py +5 -0
- ads/text_dataset/backends.py +211 -0
- ads/text_dataset/dataset.py +445 -0
- ads/text_dataset/extractor.py +207 -0
- ads/text_dataset/options.py +53 -0
- ads/text_dataset/udfs.py +22 -0
- ads/text_dataset/utils.py +49 -0
- ads/type_discovery/__init__.py +9 -0
- ads/type_discovery/abstract_detector.py +21 -0
- ads/type_discovery/constant_detector.py +41 -0
- ads/type_discovery/continuous_detector.py +54 -0
- ads/type_discovery/credit_card_detector.py +99 -0
- ads/type_discovery/datetime_detector.py +92 -0
- ads/type_discovery/discrete_detector.py +118 -0
- ads/type_discovery/document_detector.py +146 -0
- ads/type_discovery/ip_detector.py +68 -0
- ads/type_discovery/latlon_detector.py +90 -0
- ads/type_discovery/phone_number_detector.py +63 -0
- ads/type_discovery/type_discovery_driver.py +87 -0
- ads/type_discovery/typed_feature.py +594 -0
- ads/type_discovery/unknown_detector.py +41 -0
- ads/type_discovery/zipcode_detector.py +48 -0
- ads/vault/__init__.py +7 -0
- ads/vault/vault.py +237 -0
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10.dist-info}/METADATA +150 -149
- oracle_ads-2.13.10.dist-info/RECORD +858 -0
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10.dist-info}/WHEEL +1 -2
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10.dist-info}/entry_points.txt +2 -1
- oracle_ads-2.13.9rc0.dist-info/RECORD +0 -9
- oracle_ads-2.13.9rc0.dist-info/top_level.txt +0 -1
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.10.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,605 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8; -*-
|
3
|
+
|
4
|
+
# Copyright (c) 2022, 2024 Oracle and/or its affiliates.
|
5
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
+
import copy
|
7
|
+
from typing import List
|
8
|
+
|
9
|
+
from ads.jobs import Job
|
10
|
+
from ads.jobs.builders.infrastructure.dsc_job import DataScienceJob
|
11
|
+
from ads.jobs.builders.runtimes.base import Runtime
|
12
|
+
from ads.common.utils import get_random_name_for_resource
|
13
|
+
|
14
|
+
PIPELINE_STEP_KIND_TO_OCI_MAP = {
|
15
|
+
"dataScienceJob": "ML_JOB",
|
16
|
+
"customScript": "CUSTOM_SCRIPT",
|
17
|
+
}
|
18
|
+
|
19
|
+
PIPELINE_STEP_KIND_FROM_OCI_MAP = {
|
20
|
+
"ML_JOB": "dataScienceJob",
|
21
|
+
"CUSTOM_SCRIPT": "customScript",
|
22
|
+
}
|
23
|
+
|
24
|
+
PIPELINE_STEP_KIND = {"dataScienceJob", "customScript"}
|
25
|
+
|
26
|
+
PIPELINE_STEP_RESTRICTED_CHAR_SET = {",", ">", "(", ")"}
|
27
|
+
|
28
|
+
|
29
|
+
class PipelineStep(Job):
|
30
|
+
"""Represents the Data Science Machine Learning Pipeline Step."""
|
31
|
+
|
32
|
+
CONST_NAME = "name"
|
33
|
+
CONST_JOB_ID = "jobId"
|
34
|
+
CONST_DESCRIPTION = "description"
|
35
|
+
CONST_DEPENDS_ON = "dependsOn"
|
36
|
+
CONST_KIND = "stepType"
|
37
|
+
CONST_MAXIMUM_RUNTIME_IN_MINUTES = "maximumRuntimeInMinutes"
|
38
|
+
CONST_ENVIRONMENT_VARIABLES = "environmentVariables"
|
39
|
+
CONST_COMMAND_LINE_ARGUMENTS = "commandLineArguments"
|
40
|
+
CONST_STEP_INFRA_CONFIG_DETAILS = "stepInfrastructureConfigurationDetails"
|
41
|
+
CONST_STEP_CONFIG_DETAILS = "stepConfigurationDetails"
|
42
|
+
CONST_INFRASTRUCTURE = "infrastructure"
|
43
|
+
CONST_RUNTIME = "runtime"
|
44
|
+
|
45
|
+
def __init__(
|
46
|
+
self,
|
47
|
+
name: str = None,
|
48
|
+
job_id: str = None,
|
49
|
+
infrastructure=None,
|
50
|
+
runtime=None,
|
51
|
+
description=None,
|
52
|
+
maximum_runtime_in_minutes=None,
|
53
|
+
environment_variable=None,
|
54
|
+
command_line_argument=None,
|
55
|
+
kind=None,
|
56
|
+
) -> None:
|
57
|
+
"""Initialize a pipeline step.
|
58
|
+
|
59
|
+
Parameters
|
60
|
+
----------
|
61
|
+
name : str, required
|
62
|
+
The name of the pipeline step.
|
63
|
+
job_id : str, optional
|
64
|
+
The job id of the pipeline step, by default None.
|
65
|
+
infrastructure : Infrastructure, optional
|
66
|
+
Pipeline step infrastructure, by default None.
|
67
|
+
runtime : Runtime, optional
|
68
|
+
Pipeline step runtime, by default None.
|
69
|
+
description : str, optional
|
70
|
+
The description for pipeline step, by default None.
|
71
|
+
maximum_runtime_in_minutes : int, optional
|
72
|
+
The maximum runtime in minutes for pipeline step, by default None.
|
73
|
+
environment_variable : dict, optional
|
74
|
+
The environment variable for pipeline step, by default None.
|
75
|
+
command_line_argument : str, optional
|
76
|
+
The command line argument for pipeline step, by default None.
|
77
|
+
kind: str, optional
|
78
|
+
The kind of pipeline step.
|
79
|
+
|
80
|
+
Attributes
|
81
|
+
----------
|
82
|
+
kind: str
|
83
|
+
The kind of the object as showing in YAML.
|
84
|
+
name: str
|
85
|
+
The name of pipeline step.
|
86
|
+
job_id: str
|
87
|
+
The job id of pipeline step.
|
88
|
+
infrastructure: DataScienceJob
|
89
|
+
The infrastructure of pipeline step.
|
90
|
+
runtime: Runtime
|
91
|
+
The runtime of pipeline step.
|
92
|
+
description: str
|
93
|
+
The description of pipeline step.
|
94
|
+
maximum_runtime_in_minutes: int
|
95
|
+
The maximum runtime in minutes of pipeline step.
|
96
|
+
environment_variable: dict
|
97
|
+
The environment variables of pipeline step.
|
98
|
+
argument: str
|
99
|
+
The argument of pipeline step.
|
100
|
+
depends_on: list
|
101
|
+
The depends on of pipeline step.
|
102
|
+
|
103
|
+
Methods
|
104
|
+
-------
|
105
|
+
with_job_id(self, job_id: str) -> PipelineStep
|
106
|
+
Sets the job id for pipeline step.
|
107
|
+
with_infrastructure(self, infrastructure) -> PipelineStep
|
108
|
+
Sets the infrastructure for pipeline step.
|
109
|
+
with_runtime(self, runtime) -> PipelineStep
|
110
|
+
Sets the runtime for pipeline step.
|
111
|
+
with_description(self, description: str) -> PipelineStep
|
112
|
+
Sets the description for pipeline step.
|
113
|
+
with_maximum_runtime_in_minutes(self, maximum_runtime_in_minutes: int) -> PipelineStep
|
114
|
+
Sets the maximum runtime in minutes for pipeline step.
|
115
|
+
with_environment_variable(self, **kwargs) -> PipelineStep
|
116
|
+
Sets the environment variables for pipeline step.
|
117
|
+
with_argument(self, *args, **kwargs) -> PipelineStep
|
118
|
+
Sets the command line arguments for pipeline step.
|
119
|
+
with_kind(self, kind: str) -> PipelineStep
|
120
|
+
Sets the kind for pipeline step.
|
121
|
+
to_dict(self) -> dict
|
122
|
+
Serializes the pipeline step specification dictionary.
|
123
|
+
from_dict(cls, config: dict) -> PipelineStep
|
124
|
+
Initializes a PipelineStep from a dictionary containing the configurations.
|
125
|
+
to_yaml(self, uri=None, **kwargs)
|
126
|
+
Returns PipelineStep serialized as a YAML string
|
127
|
+
from_yaml(cls, yaml_string=None, uri=None, **kwargs)
|
128
|
+
Creates an PipelineStep from YAML string provided or from URI location containing YAML string
|
129
|
+
|
130
|
+
Example
|
131
|
+
-------
|
132
|
+
Here is an example for defining a pipeline step using builder:
|
133
|
+
|
134
|
+
.. code-block:: python
|
135
|
+
|
136
|
+
from ads.pipeline import PipelineStep, CustomScriptStep, ScriptRuntime
|
137
|
+
# Define an OCI Data Science pipeline step to run a python script
|
138
|
+
pipeline_step = (
|
139
|
+
PipelineStep(name="<pipeline_step_name>")
|
140
|
+
.with_infrastructure(
|
141
|
+
CustomScriptStep()
|
142
|
+
.with_shape_name("VM.Standard2.1")
|
143
|
+
.with_block_storage_size(50)
|
144
|
+
)
|
145
|
+
.with_runtime(
|
146
|
+
ScriptRuntime()
|
147
|
+
.with_source("oci://bucket_name@namespace/path/to/script.py")
|
148
|
+
.with_service_conda("tensorflow26_p37_cpu_v2")
|
149
|
+
.with_environment_variable(ENV="value")
|
150
|
+
.with_argument("argument", key="value")
|
151
|
+
.with_maximum_runtime_in_minutes(200)
|
152
|
+
)
|
153
|
+
)
|
154
|
+
|
155
|
+
# Another way to define an OCI Data Science pipeline step from existing job
|
156
|
+
pipeline_step = (
|
157
|
+
PipelineStep(name="<pipeline_step_name>")
|
158
|
+
.with_job_id("<job_id>")
|
159
|
+
.with_description("<description>")
|
160
|
+
)
|
161
|
+
|
162
|
+
See Also
|
163
|
+
--------
|
164
|
+
https://docs.oracle.com/en-us/iaas/tools/ads-sdk/latest/user_guide/pipeline/index.html
|
165
|
+
"""
|
166
|
+
self.attribute_set = {
|
167
|
+
"jobId",
|
168
|
+
"stepType",
|
169
|
+
"stepName",
|
170
|
+
"description",
|
171
|
+
"dependsOn",
|
172
|
+
"stepInfrastructureConfigurationDetails",
|
173
|
+
"stepConfigurationDetails",
|
174
|
+
}
|
175
|
+
|
176
|
+
super().__init__()
|
177
|
+
if not name:
|
178
|
+
name = get_random_name_for_resource()
|
179
|
+
elif any(char in PIPELINE_STEP_RESTRICTED_CHAR_SET for char in name):
|
180
|
+
raise ValueError(
|
181
|
+
"PipelineStep name can not include any of the "
|
182
|
+
f"restricted characters in "
|
183
|
+
f"{''.join(PIPELINE_STEP_RESTRICTED_CHAR_SET)}."
|
184
|
+
)
|
185
|
+
self.set_spec("name", name)
|
186
|
+
|
187
|
+
if job_id:
|
188
|
+
self.with_job_id(job_id)
|
189
|
+
elif infrastructure and runtime:
|
190
|
+
self.with_infrastructure(infrastructure)
|
191
|
+
self.with_runtime(runtime)
|
192
|
+
|
193
|
+
if maximum_runtime_in_minutes:
|
194
|
+
self.with_maximum_runtime_in_minutes(maximum_runtime_in_minutes)
|
195
|
+
if environment_variable:
|
196
|
+
self.with_environment_variable(**environment_variable)
|
197
|
+
if command_line_argument:
|
198
|
+
self.with_argument(command_line_argument)
|
199
|
+
if description:
|
200
|
+
self.with_description(description)
|
201
|
+
if kind:
|
202
|
+
self.with_kind(kind)
|
203
|
+
|
204
|
+
@property
|
205
|
+
def name(self) -> str:
|
206
|
+
"""The name of pipeline step.
|
207
|
+
|
208
|
+
Returns
|
209
|
+
-------
|
210
|
+
str
|
211
|
+
The name of the pipeline step.
|
212
|
+
"""
|
213
|
+
return self.get_spec(self.CONST_NAME)
|
214
|
+
|
215
|
+
@property
|
216
|
+
def kind(self) -> str:
|
217
|
+
"""The kind of the object as showing in YAML.
|
218
|
+
|
219
|
+
Returns
|
220
|
+
-------
|
221
|
+
str
|
222
|
+
The kind of the object as showing in YAML.
|
223
|
+
"""
|
224
|
+
return self.get_spec(self.CONST_KIND)
|
225
|
+
|
226
|
+
@property
|
227
|
+
def job_id(self) -> str:
|
228
|
+
"""The job id of the pipeline step.
|
229
|
+
|
230
|
+
Returns
|
231
|
+
-------
|
232
|
+
str
|
233
|
+
The job id of the pipeline step.
|
234
|
+
"""
|
235
|
+
return self.get_spec(self.CONST_JOB_ID)
|
236
|
+
|
237
|
+
def with_job_id(self, job_id: str) -> "PipelineStep":
|
238
|
+
"""Sets the job id for pipeline step.
|
239
|
+
|
240
|
+
Parameters
|
241
|
+
----------
|
242
|
+
job_id : str
|
243
|
+
The job id of pipeline step.
|
244
|
+
|
245
|
+
Returns
|
246
|
+
-------
|
247
|
+
Pipeline step instance (self).
|
248
|
+
"""
|
249
|
+
if not self.kind:
|
250
|
+
self.set_spec(self.CONST_KIND, "ML_JOB")
|
251
|
+
return self.set_spec(self.CONST_JOB_ID, job_id)
|
252
|
+
|
253
|
+
@property
|
254
|
+
def infrastructure(self) -> "DataScienceJob":
|
255
|
+
"""The infrastructure of the pipeline step.
|
256
|
+
|
257
|
+
Returns
|
258
|
+
-------
|
259
|
+
DataScienceJob :
|
260
|
+
Data science pipeline step instance.
|
261
|
+
"""
|
262
|
+
return self.get_spec(self.CONST_INFRASTRUCTURE)
|
263
|
+
|
264
|
+
def with_infrastructure(self, infrastructure) -> "PipelineStep":
|
265
|
+
"""Sets the infrastructure for pipeline step.
|
266
|
+
|
267
|
+
Parameters
|
268
|
+
----------
|
269
|
+
infrastructure :
|
270
|
+
The infrastructure of pipeline step.
|
271
|
+
|
272
|
+
Returns
|
273
|
+
-------
|
274
|
+
Pipeline step instance (self).
|
275
|
+
"""
|
276
|
+
if not self.kind:
|
277
|
+
self.set_spec(self.CONST_KIND, "CUSTOM_SCRIPT")
|
278
|
+
return self.set_spec(self.CONST_INFRASTRUCTURE, infrastructure)
|
279
|
+
|
280
|
+
@property
|
281
|
+
def runtime(self) -> "Runtime":
|
282
|
+
"""The runtime of the pipeline step.
|
283
|
+
|
284
|
+
Returns
|
285
|
+
-------
|
286
|
+
Runtime :
|
287
|
+
Runtime instance.
|
288
|
+
"""
|
289
|
+
return self.get_spec(self.CONST_RUNTIME)
|
290
|
+
|
291
|
+
def with_runtime(self, runtime) -> "PipelineStep":
|
292
|
+
"""Sets the runtime for pipeline step.
|
293
|
+
|
294
|
+
Parameters
|
295
|
+
----------
|
296
|
+
runtime :
|
297
|
+
The runtime of pipeline step.
|
298
|
+
|
299
|
+
Returns
|
300
|
+
-------
|
301
|
+
Pipeline step instance (self).
|
302
|
+
"""
|
303
|
+
if not self.kind:
|
304
|
+
self.set_spec(self.CONST_KIND, "CUSTOM_SCRIPT")
|
305
|
+
return self.set_spec(self.CONST_RUNTIME, runtime)
|
306
|
+
|
307
|
+
@property
|
308
|
+
def description(self) -> str:
|
309
|
+
"""The description of the pipeline step.
|
310
|
+
|
311
|
+
Returns
|
312
|
+
-------
|
313
|
+
str
|
314
|
+
The description of the pipeline step.
|
315
|
+
"""
|
316
|
+
return self.get_spec(self.CONST_DESCRIPTION)
|
317
|
+
|
318
|
+
def with_description(self, description: str) -> "PipelineStep":
|
319
|
+
"""Sets the description for pipeline step.
|
320
|
+
|
321
|
+
Parameters
|
322
|
+
----------
|
323
|
+
description : str
|
324
|
+
The description of pipeline step.
|
325
|
+
|
326
|
+
Returns
|
327
|
+
-------
|
328
|
+
Pipeline step instance (self).
|
329
|
+
"""
|
330
|
+
return self.set_spec(self.CONST_DESCRIPTION, description)
|
331
|
+
|
332
|
+
@property
|
333
|
+
def maximum_runtime_in_minutes(self) -> int:
|
334
|
+
"""The maximum runtime in minutes of pipeline step.
|
335
|
+
|
336
|
+
Returns
|
337
|
+
-------
|
338
|
+
int
|
339
|
+
The maximum runtime in minutes of the pipeline step.
|
340
|
+
"""
|
341
|
+
return self.get_spec(self.CONST_MAXIMUM_RUNTIME_IN_MINUTES)
|
342
|
+
|
343
|
+
def with_maximum_runtime_in_minutes(
|
344
|
+
self, maximum_runtime_in_minutes: int
|
345
|
+
) -> "PipelineStep":
|
346
|
+
"""Sets the maximum runtime in minutes of pipeline step.
|
347
|
+
|
348
|
+
Parameters
|
349
|
+
----------
|
350
|
+
maximum_runtime_in_minutes : int
|
351
|
+
The maximum runtime in minutes of pipeline step.
|
352
|
+
|
353
|
+
Returns
|
354
|
+
-------
|
355
|
+
Pipeline step instance (self).
|
356
|
+
"""
|
357
|
+
return self.set_spec(
|
358
|
+
self.CONST_MAXIMUM_RUNTIME_IN_MINUTES, maximum_runtime_in_minutes
|
359
|
+
)
|
360
|
+
|
361
|
+
@property
|
362
|
+
def environment_variable(self) -> dict:
|
363
|
+
"""The environment variables of the pipeline step.
|
364
|
+
|
365
|
+
Returns
|
366
|
+
-------
|
367
|
+
dict:
|
368
|
+
The environment variables of the pipeline step.
|
369
|
+
"""
|
370
|
+
return self.get_spec(self.CONST_ENVIRONMENT_VARIABLES)
|
371
|
+
|
372
|
+
def with_environment_variable(self, **kwargs) -> "PipelineStep":
|
373
|
+
"""Sets environment variables of the pipeline step.
|
374
|
+
|
375
|
+
Parameters
|
376
|
+
----------
|
377
|
+
kwargs:
|
378
|
+
Keyword arguments.
|
379
|
+
To add a keyword argument without value, set the value to None.
|
380
|
+
|
381
|
+
Returns
|
382
|
+
-------
|
383
|
+
Pipeline
|
384
|
+
The Pipeline step instance (self).
|
385
|
+
"""
|
386
|
+
if kwargs:
|
387
|
+
environment_variable_dict = {}
|
388
|
+
for k, v in kwargs.items():
|
389
|
+
environment_variable_dict[k] = v
|
390
|
+
self.set_spec(self.CONST_ENVIRONMENT_VARIABLES, environment_variable_dict)
|
391
|
+
return self
|
392
|
+
|
393
|
+
@property
|
394
|
+
def argument(self) -> str:
|
395
|
+
"""The command line arguments of the pipeline step.
|
396
|
+
|
397
|
+
Returns
|
398
|
+
-------
|
399
|
+
str:
|
400
|
+
The command line arguments of the pipeline step.
|
401
|
+
"""
|
402
|
+
return self.get_spec(self.CONST_COMMAND_LINE_ARGUMENTS)
|
403
|
+
|
404
|
+
def with_argument(self, *args, **kwargs) -> "PipelineStep":
|
405
|
+
"""Adds command line arguments to the pipeline step.
|
406
|
+
Existing arguments will be preserved.
|
407
|
+
This method can be called (chained) multiple times to add various arguments.
|
408
|
+
For example, pipeline.with_argument(key="val").with_argument("path/to/file") will result in:
|
409
|
+
"--key val path/to/file"
|
410
|
+
|
411
|
+
Parameters
|
412
|
+
----------
|
413
|
+
args:
|
414
|
+
Positional arguments.
|
415
|
+
In a single method call, positional arguments are always added before keyword arguments.
|
416
|
+
You can call with_argument() to add positional arguments after keyword arguments.
|
417
|
+
|
418
|
+
kwargs:
|
419
|
+
Keyword arguments.
|
420
|
+
To add a keyword argument without value, set the value to None.
|
421
|
+
|
422
|
+
Returns
|
423
|
+
-------
|
424
|
+
Pipeline
|
425
|
+
The Pipeline step instance (self).
|
426
|
+
|
427
|
+
Raises
|
428
|
+
------
|
429
|
+
ValueError
|
430
|
+
Keyword arguments with space in a key.
|
431
|
+
"""
|
432
|
+
arg_values = self.get_spec(self.CONST_COMMAND_LINE_ARGUMENTS, [])
|
433
|
+
args = [str(arg) for arg in args]
|
434
|
+
arg_values.extend(args)
|
435
|
+
for k, v in kwargs.items():
|
436
|
+
if " " in k:
|
437
|
+
raise ValueError("Argument key %s cannot contain space.", str(k))
|
438
|
+
arg_values.append(f"--{str(k)}")
|
439
|
+
# Ignore None value
|
440
|
+
if v is None:
|
441
|
+
continue
|
442
|
+
arg_values.append(str(v))
|
443
|
+
arg_string = " ".join(arg_values)
|
444
|
+
self.set_spec(self.CONST_COMMAND_LINE_ARGUMENTS, arg_string)
|
445
|
+
return self
|
446
|
+
|
447
|
+
@property
|
448
|
+
def depends_on(self) -> list:
|
449
|
+
"""The list of upstream pipeline steps for (self).
|
450
|
+
|
451
|
+
Returns
|
452
|
+
-------
|
453
|
+
list
|
454
|
+
The list of upstream pipeline steps for (self).
|
455
|
+
"""
|
456
|
+
return self.get_spec(self.CONST_DEPENDS_ON)
|
457
|
+
|
458
|
+
def _with_depends_on(self, depends_on: List["PipelineStep"]) -> "PipelineStep":
|
459
|
+
"""Sets the list of upstream pipeline steps for (self).
|
460
|
+
|
461
|
+
Parameters
|
462
|
+
----------
|
463
|
+
depends_on : list of PipelineStep objects
|
464
|
+
The list of pipeline steps that (self) depends on.
|
465
|
+
|
466
|
+
Returns
|
467
|
+
-------
|
468
|
+
Pipeline step instance (self).
|
469
|
+
"""
|
470
|
+
if not depends_on:
|
471
|
+
return self.set_spec(self.CONST_DEPENDS_ON, [])
|
472
|
+
|
473
|
+
step_list = []
|
474
|
+
for step in depends_on:
|
475
|
+
step_list.append(step.name)
|
476
|
+
return self.set_spec(self.CONST_DEPENDS_ON, step_list)
|
477
|
+
|
478
|
+
def with_kind(self, kind: str) -> "PipelineStep":
|
479
|
+
"""Sets the kind of pipeline step.
|
480
|
+
|
481
|
+
Parameters
|
482
|
+
----------
|
483
|
+
kind : str
|
484
|
+
The kind of pipeline step.
|
485
|
+
|
486
|
+
Returns
|
487
|
+
-------
|
488
|
+
Pipeline step instance (self).
|
489
|
+
"""
|
490
|
+
if kind in PIPELINE_STEP_KIND:
|
491
|
+
self.set_spec(self.CONST_KIND, PIPELINE_STEP_KIND_TO_OCI_MAP[kind])
|
492
|
+
else:
|
493
|
+
raise ValueError(
|
494
|
+
"Invalid PipelineStep kind. The allowed "
|
495
|
+
f"values are {', '.join(PIPELINE_STEP_KIND)}."
|
496
|
+
)
|
497
|
+
return self.set_spec(self.CONST_KIND, kind)
|
498
|
+
|
499
|
+
def to_dict(self) -> dict:
|
500
|
+
"""Serializes the pipeline step specification dictionary.
|
501
|
+
|
502
|
+
Returns
|
503
|
+
-------
|
504
|
+
dict
|
505
|
+
A dictionary containing pipeline step specification.
|
506
|
+
"""
|
507
|
+
dict_details = copy.deepcopy(super().to_dict())
|
508
|
+
if self.kind in PIPELINE_STEP_KIND_FROM_OCI_MAP:
|
509
|
+
dict_details["kind"] = PIPELINE_STEP_KIND_FROM_OCI_MAP[self.kind]
|
510
|
+
|
511
|
+
# remove information not going to show in to_dict()
|
512
|
+
if self.CONST_INFRASTRUCTURE in dict_details["spec"]:
|
513
|
+
dict_details["spec"][self.CONST_INFRASTRUCTURE].pop("type", None)
|
514
|
+
dict_details["spec"][self.CONST_INFRASTRUCTURE]["spec"].pop(
|
515
|
+
"jobInfrastructureType", None
|
516
|
+
)
|
517
|
+
dict_details["spec"][self.CONST_INFRASTRUCTURE]["spec"].pop("jobType", None)
|
518
|
+
|
519
|
+
if self.job_id:
|
520
|
+
dict_details["spec"][self.CONST_JOB_ID] = self.job_id
|
521
|
+
if self.description:
|
522
|
+
dict_details["spec"][self.CONST_DESCRIPTION] = self.description
|
523
|
+
if self.kind == "ML_JOB":
|
524
|
+
if self.environment_variable:
|
525
|
+
dict_details["spec"][
|
526
|
+
self.CONST_ENVIRONMENT_VARIABLES
|
527
|
+
] = self.environment_variable
|
528
|
+
if self.argument:
|
529
|
+
dict_details["spec"][self.CONST_COMMAND_LINE_ARGUMENTS] = self.argument
|
530
|
+
if self.maximum_runtime_in_minutes:
|
531
|
+
dict_details["spec"][
|
532
|
+
self.CONST_MAXIMUM_RUNTIME_IN_MINUTES
|
533
|
+
] = self.maximum_runtime_in_minutes
|
534
|
+
|
535
|
+
dict_details["spec"].pop(self.CONST_DEPENDS_ON, None)
|
536
|
+
|
537
|
+
return dict_details
|
538
|
+
|
539
|
+
@classmethod
|
540
|
+
def from_dict(cls, config: dict) -> "PipelineStep":
|
541
|
+
"""Initializes a PipelineStep from a dictionary containing the configurations.
|
542
|
+
|
543
|
+
Parameters
|
544
|
+
----------
|
545
|
+
config : dict
|
546
|
+
A dictionary containing the infrastructure and runtime specifications.
|
547
|
+
|
548
|
+
Returns
|
549
|
+
-------
|
550
|
+
PipelineStep
|
551
|
+
A PipelineStep instance
|
552
|
+
|
553
|
+
Raises
|
554
|
+
------
|
555
|
+
NotImplementedError
|
556
|
+
If the type of the intrastructure or runtime is not supported.
|
557
|
+
"""
|
558
|
+
if not isinstance(config, dict):
|
559
|
+
raise ValueError("The config data for initializing the job is invalid.")
|
560
|
+
spec = config.get("spec")
|
561
|
+
|
562
|
+
mappings = {
|
563
|
+
"infrastructure": cls._INFRASTRUCTURE_MAPPING,
|
564
|
+
"runtime": cls._RUNTIME_MAPPING,
|
565
|
+
}
|
566
|
+
if spec["name"]:
|
567
|
+
pipeline_step = cls(name=spec["name"])
|
568
|
+
else:
|
569
|
+
raise ValueError("PipelineStep name must be specified.")
|
570
|
+
|
571
|
+
if config.get("kind", None):
|
572
|
+
step_kind = config.get("kind")
|
573
|
+
|
574
|
+
if step_kind in PIPELINE_STEP_KIND:
|
575
|
+
pipeline_step.set_spec(
|
576
|
+
cls.CONST_KIND, PIPELINE_STEP_KIND_TO_OCI_MAP[step_kind]
|
577
|
+
)
|
578
|
+
else:
|
579
|
+
raise ValueError(
|
580
|
+
"Invalid PipelineStep kind. The allowed "
|
581
|
+
f"values are {', '.join(PIPELINE_STEP_KIND)}."
|
582
|
+
)
|
583
|
+
else:
|
584
|
+
pipeline_step.set_spec(cls.CONST_KIND, "ML_JOB")
|
585
|
+
|
586
|
+
for key, value in spec.items():
|
587
|
+
if key in mappings:
|
588
|
+
mapping = mappings[key]
|
589
|
+
child_config = copy.deepcopy(value)
|
590
|
+
if key == "infrastructure":
|
591
|
+
child_config["type"] = "dataScienceJob"
|
592
|
+
if child_config.get("type") not in mapping:
|
593
|
+
raise NotImplementedError(
|
594
|
+
f"{key.title()} type: {child_config.get('type')} is not supported."
|
595
|
+
)
|
596
|
+
pipeline_step.set_spec(
|
597
|
+
key, mapping[child_config.get("type")].from_dict(child_config)
|
598
|
+
)
|
599
|
+
elif key == cls.CONST_STEP_CONFIG_DETAILS:
|
600
|
+
for attribute in value:
|
601
|
+
pipeline_step.set_spec(attribute, value[attribute])
|
602
|
+
else:
|
603
|
+
pipeline_step.set_spec(key, value)
|
604
|
+
|
605
|
+
return pipeline_step
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8; -*-
|
3
|
+
|
4
|
+
# Copyright (c) 2022 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 typing import Dict
|
7
|
+
from ads.jobs.builders.infrastructure.dsc_job import DataScienceJob
|
8
|
+
|
9
|
+
|
10
|
+
class CustomScriptStep(DataScienceJob):
|
11
|
+
def __init__(self, spec: Dict = None, **kwargs) -> None:
|
12
|
+
"""Initialize a custom script step infrastructure.
|
13
|
+
|
14
|
+
Example
|
15
|
+
-------
|
16
|
+
Here is an example for defining a custom script step infrastructure using builder:
|
17
|
+
|
18
|
+
.. code-block:: python
|
19
|
+
|
20
|
+
from ads.pipeline import CustomScriptStep
|
21
|
+
# Define an OCI Data Science custom script step infrastructure
|
22
|
+
infrastructure = (
|
23
|
+
CustomScriptStep()
|
24
|
+
.with_shape_name("VM.Standard2.1")
|
25
|
+
.with_block_storage_size(50)
|
26
|
+
)
|
27
|
+
|
28
|
+
See Also
|
29
|
+
--------
|
30
|
+
https://docs.oracle.com/en-us/iaas/tools/ads-sdk/latest/user_guide/pipeline/index.html
|
31
|
+
"""
|
32
|
+
super().__init__(spec, **kwargs)
|