oracle-ads 2.13.9rc0__py3-none-any.whl → 2.13.9rc1__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 +506 -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 +269 -0
- ads/aqua/common/enums.py +122 -0
- ads/aqua/common/errors.py +109 -0
- ads/aqua/common/utils.py +1285 -0
- ads/aqua/config/__init__.py +4 -0
- ads/aqua/config/container_config.py +248 -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 +298 -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 +282 -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 +2114 -0
- ads/aqua/modeldeployment/__init__.py +8 -0
- ads/aqua/modeldeployment/constants.py +10 -0
- ads/aqua/modeldeployment/deployment.py +1326 -0
- ads/aqua/modeldeployment/entities.py +653 -0
- ads/aqua/modeldeployment/inference.py +74 -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 +499 -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 +175 -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/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 +445 -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 +125 -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.9rc1.dist-info}/METADATA +150 -150
- oracle_ads-2.13.9rc1.dist-info/RECORD +858 -0
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.9rc1.dist-info}/WHEEL +1 -2
- {oracle_ads-2.13.9rc0.dist-info → oracle_ads-2.13.9rc1.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.9rc1.dist-info}/licenses/LICENSE.txt +0 -0
@@ -0,0 +1,326 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*--
|
3
|
+
|
4
|
+
# Copyright (c) 2022, 2023 Oracle and/or its affiliates.
|
5
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
+
|
7
|
+
import os
|
8
|
+
import numpy as np
|
9
|
+
import pandas as pd
|
10
|
+
import fsspec
|
11
|
+
from typing import Any, Callable, Dict, List, Optional, Union, Tuple
|
12
|
+
from ads.common import logger, utils
|
13
|
+
from ads.common.decorator.runtime_dependency import (
|
14
|
+
runtime_dependency,
|
15
|
+
OptionalDependency,
|
16
|
+
)
|
17
|
+
from ads.common.object_storage_details import ObjectStorageDetails
|
18
|
+
from ads.model.extractor.spark_extractor import SparkExtractor
|
19
|
+
from ads.model.serde.model_input import SparkModelInputSerializerType
|
20
|
+
from ads.model.serde.model_serializer import SparkModelSerializerType
|
21
|
+
from ads.model.generic_model import (
|
22
|
+
FrameworkSpecificModel,
|
23
|
+
DEFAULT_MODEL_FOLDER_NAME,
|
24
|
+
_prepare_artifact_dir,
|
25
|
+
)
|
26
|
+
from ads.model.model_properties import ModelProperties
|
27
|
+
from ads.model.serde.common import SERDE
|
28
|
+
|
29
|
+
SPARK_DATAFRAME_SCHEMA_PATH = "_input_data_schema.json"
|
30
|
+
|
31
|
+
|
32
|
+
class SparkPipelineModel(FrameworkSpecificModel):
|
33
|
+
"""SparkPipelineModel class for estimators from the pyspark framework.
|
34
|
+
|
35
|
+
Attributes
|
36
|
+
----------
|
37
|
+
algorithm: str
|
38
|
+
The algorithm of the model.
|
39
|
+
artifact_dir: str
|
40
|
+
Artifact directory to store the files needed for deployment.
|
41
|
+
auth: Dict
|
42
|
+
Default authentication is set using the `ads.set_auth` API. To override the
|
43
|
+
default, use the `ads.common.auth.api_keys` or `ads.common.auth.resource_principal` to create
|
44
|
+
an authentication signer to instantiate an IdentityClient object.
|
45
|
+
estimator: Callable
|
46
|
+
A trained pyspark estimator/model using pyspark.
|
47
|
+
framework: str
|
48
|
+
"spark", the framework name of the model.
|
49
|
+
hyperparameter: dict
|
50
|
+
The hyperparameters of the estimator.
|
51
|
+
metadata_custom: ModelCustomMetadata
|
52
|
+
The model custom metadata.
|
53
|
+
metadata_provenance: ModelProvenanceMetadata
|
54
|
+
The model provenance metadata.
|
55
|
+
metadata_taxonomy: ModelTaxonomyMetadata
|
56
|
+
The model taxonomy metadata.
|
57
|
+
model_artifact: ModelArtifact
|
58
|
+
This is built by calling prepare.
|
59
|
+
A ModelDeployment instance.
|
60
|
+
model_file_name: str
|
61
|
+
Name of the serialized model.
|
62
|
+
model_id: str
|
63
|
+
The model ID.
|
64
|
+
properties: ModelProperties
|
65
|
+
ModelProperties object required to save and deploy model.
|
66
|
+
For more details, check https://accelerated-data-science.readthedocs.io/en/latest/ads.model.html#module-ads.model.model_properties.
|
67
|
+
runtime_info: RuntimeInfo
|
68
|
+
A RuntimeInfo instance.
|
69
|
+
schema_input: Schema
|
70
|
+
Schema describes the structure of the input data.
|
71
|
+
schema_output: Schema
|
72
|
+
Schema describes the structure of the output data.
|
73
|
+
serialize: bool
|
74
|
+
Whether to serialize the model to pkl file by default. If False, you need to serialize the model manually,
|
75
|
+
save it under artifact_dir and update the score.py manually.
|
76
|
+
version: str
|
77
|
+
The framework version of the model.
|
78
|
+
|
79
|
+
Methods
|
80
|
+
-------
|
81
|
+
delete_deployment(...)
|
82
|
+
Deletes the current model deployment.
|
83
|
+
deploy(..., **kwargs)
|
84
|
+
Deploys a model.
|
85
|
+
from_model_artifact(uri, model_file_name, artifact_dir, ..., **kwargs)
|
86
|
+
Loads model from the specified folder, or zip/tar archive.
|
87
|
+
from_model_catalog(model_id, model_file_name, artifact_dir, ..., **kwargs)
|
88
|
+
Loads model from model catalog.
|
89
|
+
introspect(...)
|
90
|
+
Runs model introspection.
|
91
|
+
predict(data, ...)
|
92
|
+
Returns prediction of input data run against the model deployment endpoint.
|
93
|
+
prepare(..., **kwargs)
|
94
|
+
Prepare and save the score.py, serialized model and runtime.yaml file.
|
95
|
+
reload(...)
|
96
|
+
Reloads the model artifact files: `score.py` and the `runtime.yaml`.
|
97
|
+
save(..., **kwargs)
|
98
|
+
Saves model artifacts to the model catalog.
|
99
|
+
summary_status(...)
|
100
|
+
Gets a summary table of the current status.
|
101
|
+
verify(data, ...)
|
102
|
+
Tests if deployment works in local environment.
|
103
|
+
|
104
|
+
Examples
|
105
|
+
--------
|
106
|
+
>>> import tempfile
|
107
|
+
>>> from ads.model.framework.spark_model import SparkPipelineModel
|
108
|
+
>>> from pyspark.ml.linalg import Vectors
|
109
|
+
>>> from pyspark.ml.classification import LogisticRegression
|
110
|
+
|
111
|
+
>>> training = spark.createDataFrame([
|
112
|
+
>>> (1.0, Vectors.dense([0.0, 1.1, 0.1])),
|
113
|
+
>>> (0.0, Vectors.dense([2.0, 1.0, -1.0])),
|
114
|
+
>>> (0.0, Vectors.dense([2.0, 1.3, 1.0])),
|
115
|
+
>>> (1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
|
116
|
+
>>> lr_estimator = LogisticRegression(maxIter=10, regParam=0.001)
|
117
|
+
>>> pipeline = Pipeline(stages=[lr_estimator])
|
118
|
+
>>> pipeline_model = pipeline.fit(training)
|
119
|
+
|
120
|
+
>>> spark_model = SparkPipelineModel(estimator=pipeline_model, artifact_dir=tempfile.mkdtemp())
|
121
|
+
>>> spark_model.prepare(inference_conda_env="dataexpl_p37_cpu_v3")
|
122
|
+
>>> spark_model.verify(training)
|
123
|
+
>>> spark_model.save()
|
124
|
+
>>> model_deployment = spark_model.deploy()
|
125
|
+
>>> spark_model.predict(training)
|
126
|
+
>>> spark_model.delete_deployment()
|
127
|
+
"""
|
128
|
+
|
129
|
+
_PREFIX = "spark"
|
130
|
+
model_input_serializer_type = SparkModelInputSerializerType
|
131
|
+
model_save_serializer_type = SparkModelSerializerType
|
132
|
+
|
133
|
+
@runtime_dependency(
|
134
|
+
module="pyspark",
|
135
|
+
short_name="ml",
|
136
|
+
object="ml",
|
137
|
+
install_from=OptionalDependency.SPARK,
|
138
|
+
)
|
139
|
+
def __init__(
|
140
|
+
self,
|
141
|
+
estimator: Callable,
|
142
|
+
artifact_dir: Optional[str] = None,
|
143
|
+
properties: Optional[ModelProperties] = None,
|
144
|
+
auth: Dict = None,
|
145
|
+
model_save_serializer: Optional[SERDE] = model_save_serializer_type.SPARK,
|
146
|
+
model_input_serializer: Optional[SERDE] = model_input_serializer_type.SPARK,
|
147
|
+
**kwargs,
|
148
|
+
):
|
149
|
+
"""
|
150
|
+
Initiates a SparkPipelineModel instance.
|
151
|
+
|
152
|
+
Parameters
|
153
|
+
----------
|
154
|
+
estimator: Callable
|
155
|
+
SparkPipelineModel
|
156
|
+
artifact_dir: str
|
157
|
+
The URI for the generated artifact, which can be local path or OCI object storage URI.
|
158
|
+
properties: (ModelProperties, optional). Defaults to None.
|
159
|
+
ModelProperties object required to save and deploy model.
|
160
|
+
auth :(Dict, optional). Defaults to None.
|
161
|
+
The default authetication is set using `ads.set_auth` API. If you need to override the
|
162
|
+
default, use the `ads.common.auth.api_keys` or `ads.common.auth.resource_principal` to create appropriate
|
163
|
+
authentication signer and kwargs required to instantiate IdentityClient object.
|
164
|
+
model_save_serializer: (SERDE or str, optional). Defaults to None.
|
165
|
+
Instance of ads.model.SERDE. Used for serialize/deserialize model.
|
166
|
+
model_input_serializer: (SERDE, optional). Defaults to `ads.model.serde.model_input.SparkModelInputSERDE`.
|
167
|
+
Instance of ads.model.SERDE. Used for serialize/deserialize data.
|
168
|
+
|
169
|
+
Returns
|
170
|
+
-------
|
171
|
+
SparkPipelineModel
|
172
|
+
SparkPipelineModel instance.
|
173
|
+
|
174
|
+
|
175
|
+
Examples
|
176
|
+
--------
|
177
|
+
>>> import tempfile
|
178
|
+
>>> from ads.model.framework.spark_model import SparkPipelineModel
|
179
|
+
>>> from pyspark.ml.linalg import Vectors
|
180
|
+
>>> from pyspark.ml.classification import LogisticRegression
|
181
|
+
>>> from pyspark.ml import Pipeline
|
182
|
+
|
183
|
+
>>> training = spark.createDataFrame([
|
184
|
+
>>> (1.0, Vectors.dense([0.0, 1.1, 0.1])),
|
185
|
+
>>> (0.0, Vectors.dense([2.0, 1.0, -1.0])),
|
186
|
+
>>> (0.0, Vectors.dense([2.0, 1.3, 1.0])),
|
187
|
+
>>> (1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])
|
188
|
+
>>> lr_estimator = LogisticRegression(maxIter=10, regParam=0.001)
|
189
|
+
>>> pipeline = Pipeline(stages=[lr_estimator])
|
190
|
+
>>> pipeline_model = pipeline.fit(training)
|
191
|
+
|
192
|
+
>>> spark_model = SparkPipelineModel(estimator=pipeline_model, artifact_dir=tempfile.mkdtemp())
|
193
|
+
>>> spark_model.prepare(inference_conda_env="pyspark30_p37_cpu_v5")
|
194
|
+
>>> spark_model.verify(training)
|
195
|
+
>>> spark_model.save()
|
196
|
+
>>> model_deployment = spark_model.deploy()
|
197
|
+
>>> spark_model.predict(training)
|
198
|
+
>>> spark_model.delete_deployment()
|
199
|
+
"""
|
200
|
+
if not (type(estimator) in [ml.PipelineModel]):
|
201
|
+
raise TypeError(
|
202
|
+
f"{str(type(estimator))} is not supported in `SparkPipelineModel`s."
|
203
|
+
)
|
204
|
+
super().__init__(
|
205
|
+
estimator=estimator,
|
206
|
+
artifact_dir=artifact_dir,
|
207
|
+
properties=properties,
|
208
|
+
auth=auth,
|
209
|
+
model_save_serializer=model_save_serializer,
|
210
|
+
model_input_serializer=model_input_serializer,
|
211
|
+
**kwargs,
|
212
|
+
)
|
213
|
+
|
214
|
+
self._extractor = SparkExtractor(estimator)
|
215
|
+
self.framework = self._extractor.framework
|
216
|
+
self.algorithm = self._extractor.algorithm
|
217
|
+
self.version = self._extractor.version
|
218
|
+
self.hyperparameter = self._extractor.hyperparameter
|
219
|
+
|
220
|
+
@staticmethod
|
221
|
+
def _handle_model_file_name(
|
222
|
+
as_onnx: bool, model_file_name: Optional[str] = DEFAULT_MODEL_FOLDER_NAME
|
223
|
+
):
|
224
|
+
"""
|
225
|
+
Process folder name for saving model.
|
226
|
+
|
227
|
+
Parameters
|
228
|
+
----------
|
229
|
+
as_onnx: bool
|
230
|
+
To convert to onnx format
|
231
|
+
model_file_name: Optional[str]
|
232
|
+
File name for saving model. Default value is `model`.
|
233
|
+
|
234
|
+
Returns
|
235
|
+
-------
|
236
|
+
str
|
237
|
+
Processed file name. (Folder in the case of spark serialization)
|
238
|
+
"""
|
239
|
+
if as_onnx:
|
240
|
+
raise NotImplementedError(
|
241
|
+
"The Spark to Onnx Conversion is not supported because it is unstable. Please set as_onnx to False (default) to perform a spark model serialization"
|
242
|
+
)
|
243
|
+
if not model_file_name:
|
244
|
+
return DEFAULT_MODEL_FOLDER_NAME
|
245
|
+
return model_file_name
|
246
|
+
|
247
|
+
def serialize_model(
|
248
|
+
self,
|
249
|
+
as_onnx: bool = False,
|
250
|
+
X_sample: Optional[
|
251
|
+
Union[
|
252
|
+
Dict,
|
253
|
+
str,
|
254
|
+
List,
|
255
|
+
np.ndarray,
|
256
|
+
pd.core.series.Series,
|
257
|
+
pd.core.frame.DataFrame,
|
258
|
+
"pyspark.sql.DataFrame",
|
259
|
+
"pyspark.pandas.DataFrame",
|
260
|
+
]
|
261
|
+
] = None,
|
262
|
+
force_overwrite: bool = False,
|
263
|
+
**kwargs,
|
264
|
+
) -> None:
|
265
|
+
"""
|
266
|
+
Serialize and save pyspark model using spark serialization.
|
267
|
+
|
268
|
+
Parameters
|
269
|
+
----------
|
270
|
+
force_overwrite: (bool, optional). Defaults to False.
|
271
|
+
If set as True, overwrite serialized model if exists.
|
272
|
+
|
273
|
+
Returns
|
274
|
+
-------
|
275
|
+
None
|
276
|
+
"""
|
277
|
+
if as_onnx:
|
278
|
+
raise NotImplementedError(
|
279
|
+
"The Spark to Onnx Conversion is not supported because it is unstable. Please set as_onnx to False (default) to perform a spark model serialization"
|
280
|
+
)
|
281
|
+
|
282
|
+
super().serialize_model(
|
283
|
+
as_onnx=as_onnx,
|
284
|
+
force_overwrite=force_overwrite,
|
285
|
+
X_sample=X_sample,
|
286
|
+
**kwargs,
|
287
|
+
)
|
288
|
+
|
289
|
+
@runtime_dependency(
|
290
|
+
module="pyspark",
|
291
|
+
short_name="sql",
|
292
|
+
object="sql",
|
293
|
+
install_from=OptionalDependency.SPARK,
|
294
|
+
)
|
295
|
+
def _prepare_data_for_schema(
|
296
|
+
self,
|
297
|
+
X_sample: Union[List, Tuple, pd.DataFrame, pd.Series, np.ndarray] = None,
|
298
|
+
y_sample: Union[List, Tuple, pd.DataFrame, pd.Series, np.ndarray] = None,
|
299
|
+
**kwargs,
|
300
|
+
):
|
301
|
+
"""Generate Spark Schema and format Spark DataFrame as Pandas for ADS Schema Generation"""
|
302
|
+
input_schema_path = os.path.join(
|
303
|
+
self.artifact_dir,
|
304
|
+
self.model_file_name + SPARK_DATAFRAME_SCHEMA_PATH,
|
305
|
+
)
|
306
|
+
(
|
307
|
+
X_sample,
|
308
|
+
data_type,
|
309
|
+
schema,
|
310
|
+
) = self.get_data_serializer()._serialize_via_spark(X_sample)
|
311
|
+
if not schema:
|
312
|
+
raise TypeError(
|
313
|
+
f"Data type: {data_type} unsupported. Please use `pyspark.sql.DataFrame`, `pyspark.pandas.DataFrame`, or `pandas.DataFrame`."
|
314
|
+
)
|
315
|
+
storage_options = kwargs.get("auth", {})
|
316
|
+
with fsspec.open(
|
317
|
+
input_schema_path,
|
318
|
+
mode="w",
|
319
|
+
**(storage_options),
|
320
|
+
) as f:
|
321
|
+
f.write(schema.json())
|
322
|
+
|
323
|
+
if isinstance(X_sample, sql.DataFrame):
|
324
|
+
X_sample = X_sample.toPandas()
|
325
|
+
|
326
|
+
return X_sample, y_sample
|
@@ -0,0 +1,254 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8; -*-
|
3
|
+
|
4
|
+
# Copyright (c) 2022, 2023 Oracle and/or its affiliates.
|
5
|
+
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
|
6
|
+
|
7
|
+
|
8
|
+
from typing import Dict, List, Optional, Tuple, Union
|
9
|
+
|
10
|
+
import numpy as np
|
11
|
+
import pandas as pd
|
12
|
+
from ads.common import logger
|
13
|
+
from ads.common.decorator.runtime_dependency import (
|
14
|
+
runtime_dependency,
|
15
|
+
OptionalDependency,
|
16
|
+
)
|
17
|
+
from ads.model.extractor.tensorflow_extractor import TensorflowExtractor
|
18
|
+
from ads.model.generic_model import FrameworkSpecificModel
|
19
|
+
from ads.model.model_properties import ModelProperties
|
20
|
+
from ads.model.serde.model_serializer import TensorflowModelSerializerType
|
21
|
+
from ads.model.common.utils import DEPRECATE_AS_ONNX_WARNING
|
22
|
+
from ads.model.serde.common import SERDE
|
23
|
+
|
24
|
+
|
25
|
+
class TensorFlowModel(FrameworkSpecificModel):
|
26
|
+
"""TensorFlowModel class for estimators from Tensorflow framework.
|
27
|
+
|
28
|
+
Attributes
|
29
|
+
----------
|
30
|
+
algorithm: str
|
31
|
+
The algorithm of the model.
|
32
|
+
artifact_dir: str
|
33
|
+
Directory for generate artifact.
|
34
|
+
auth: Dict
|
35
|
+
Default authentication is set using the `ads.set_auth` API. To override the
|
36
|
+
default, use the `ads.common.auth.api_keys` or `ads.common.auth.resource_principal` to create
|
37
|
+
an authentication signer to instantiate an IdentityClient object.
|
38
|
+
estimator: Callable
|
39
|
+
A trained tensorflow estimator/model using Tensorflow.
|
40
|
+
framework: str
|
41
|
+
"tensorflow", the framework name of the model.
|
42
|
+
hyperparameter: dict
|
43
|
+
The hyperparameters of the estimator.
|
44
|
+
metadata_custom: ModelCustomMetadata
|
45
|
+
The model custom metadata.
|
46
|
+
metadata_provenance: ModelProvenanceMetadata
|
47
|
+
The model provenance metadata.
|
48
|
+
metadata_taxonomy: ModelTaxonomyMetadata
|
49
|
+
The model taxonomy metadata.
|
50
|
+
model_artifact: ModelArtifact
|
51
|
+
This is built by calling prepare.
|
52
|
+
model_deployment: ModelDeployment
|
53
|
+
A ModelDeployment instance.
|
54
|
+
model_file_name: str
|
55
|
+
Name of the serialized model.
|
56
|
+
model_id: str
|
57
|
+
The model ID.
|
58
|
+
properties: ModelProperties
|
59
|
+
ModelProperties object required to save and deploy model.
|
60
|
+
For more details, check https://accelerated-data-science.readthedocs.io/en/latest/ads.model.html#module-ads.model.model_properties.
|
61
|
+
runtime_info: RuntimeInfo
|
62
|
+
A RuntimeInfo instance.
|
63
|
+
schema_input: Schema
|
64
|
+
Schema describes the structure of the input data.
|
65
|
+
schema_output: Schema
|
66
|
+
Schema describes the structure of the output data.
|
67
|
+
serialize: bool
|
68
|
+
Whether to serialize the model to pkl file by default. If False, you need to serialize the model manually,
|
69
|
+
save it under artifact_dir and update the score.py manually.
|
70
|
+
version: str
|
71
|
+
The framework version of the model.
|
72
|
+
|
73
|
+
Methods
|
74
|
+
-------
|
75
|
+
delete_deployment(...)
|
76
|
+
Deletes the current model deployment.
|
77
|
+
deploy(..., **kwargs)
|
78
|
+
Deploys a model.
|
79
|
+
from_model_artifact(uri, model_file_name, artifact_dir, ..., **kwargs)
|
80
|
+
Loads model from the specified folder, or zip/tar archive.
|
81
|
+
from_model_catalog(model_id, model_file_name, artifact_dir, ..., **kwargs)
|
82
|
+
Loads model from model catalog.
|
83
|
+
introspect(...)
|
84
|
+
Runs model introspection.
|
85
|
+
predict(data, ...)
|
86
|
+
Returns prediction of input data run against the model deployment endpoint.
|
87
|
+
prepare(..., **kwargs)
|
88
|
+
Prepare and save the score.py, serialized model and runtime.yaml file.
|
89
|
+
reload(...)
|
90
|
+
Reloads the model artifact files: `score.py` and the `runtime.yaml`.
|
91
|
+
save(..., **kwargs)
|
92
|
+
Saves model artifacts to the model catalog.
|
93
|
+
summary_status(...)
|
94
|
+
Gets a summary table of the current status.
|
95
|
+
verify(data, ...)
|
96
|
+
Tests if deployment works in local environment.
|
97
|
+
|
98
|
+
Examples
|
99
|
+
--------
|
100
|
+
>>> from ads.model.framework.tensorflow_model import TensorFlowModel
|
101
|
+
>>> import tempfile
|
102
|
+
>>> import tensorflow as tf
|
103
|
+
|
104
|
+
>>> mnist = tf.keras.datasets.mnist
|
105
|
+
>>> (x_train, y_train), (x_test, y_test) = mnist.load_data()
|
106
|
+
>>> x_train, x_test = x_train / 255.0, x_test / 255.0
|
107
|
+
|
108
|
+
>>> tf_estimator = tf.keras.models.Sequential(
|
109
|
+
... [
|
110
|
+
... tf.keras.layers.Flatten(input_shape=(28, 28)),
|
111
|
+
... tf.keras.layers.Dense(128, activation="relu"),
|
112
|
+
... tf.keras.layers.Dropout(0.2),
|
113
|
+
... tf.keras.layers.Dense(10),
|
114
|
+
... ]
|
115
|
+
... )
|
116
|
+
>>> loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
|
117
|
+
>>> tf_estimator.compile(optimizer="adam", loss=loss_fn, metrics=["accuracy"])
|
118
|
+
>>> tf_estimator.fit(x_train, y_train, epochs=1)
|
119
|
+
|
120
|
+
>>> tf_model = TensorFlowModel(estimator=tf_estimator,
|
121
|
+
... artifact_dir=tempfile.mkdtemp())
|
122
|
+
>>> inference_conda_env = "generalml_p37_cpu_v1"
|
123
|
+
|
124
|
+
>>> tf_model.prepare(inference_conda_env="generalml_p37_cpu_v1", force_overwrite=True)
|
125
|
+
>>> tf_model.verify(x_test[:1])
|
126
|
+
>>> tf_model.save()
|
127
|
+
>>> model_deployment = tf_model.deploy(wait_for_completion=False)
|
128
|
+
>>> tf_model.predict(x_test[:1])
|
129
|
+
"""
|
130
|
+
|
131
|
+
_PREFIX = "tensorflow"
|
132
|
+
model_save_serializer_type = TensorflowModelSerializerType
|
133
|
+
|
134
|
+
@runtime_dependency(
|
135
|
+
module="tensorflow",
|
136
|
+
short_name="tf",
|
137
|
+
install_from=OptionalDependency.TENSORFLOW,
|
138
|
+
)
|
139
|
+
def __init__(
|
140
|
+
self,
|
141
|
+
estimator: callable,
|
142
|
+
artifact_dir: Optional[str] = None,
|
143
|
+
properties: Optional[ModelProperties] = None,
|
144
|
+
auth: Dict = None,
|
145
|
+
model_save_serializer: Optional[SERDE] = model_save_serializer_type.TENSORFLOW,
|
146
|
+
model_input_serializer: Optional[SERDE] = None,
|
147
|
+
**kwargs,
|
148
|
+
):
|
149
|
+
"""
|
150
|
+
Initiates a TensorFlowModel instance.
|
151
|
+
|
152
|
+
Parameters
|
153
|
+
----------
|
154
|
+
estimator: callable
|
155
|
+
Any model object generated by tensorflow framework
|
156
|
+
artifact_dir: str
|
157
|
+
Directory for generate artifact.
|
158
|
+
properties: (ModelProperties, optional). Defaults to None.
|
159
|
+
ModelProperties object required to save and deploy model.
|
160
|
+
auth :(Dict, optional). Defaults to None.
|
161
|
+
The default authetication is set using `ads.set_auth` API. If you need to override the
|
162
|
+
default, use the `ads.common.auth.api_keys` or `ads.common.auth.resource_principal` to create appropriate
|
163
|
+
authentication signer and kwargs required to instantiate IdentityClient object.
|
164
|
+
model_save_serializer: (SERDE or str, optional). Defaults to None.
|
165
|
+
Instance of ads.model.SERDE. Used for serialize/deserialize model.
|
166
|
+
model_input_serializer: (SERDE, optional). Defaults to None.
|
167
|
+
Instance of ads.model.SERDE. Used for serialize/deserialize data.
|
168
|
+
|
169
|
+
Returns
|
170
|
+
-------
|
171
|
+
TensorFlowModel
|
172
|
+
TensorFlowModel instance.
|
173
|
+
"""
|
174
|
+
super().__init__(
|
175
|
+
estimator=estimator,
|
176
|
+
artifact_dir=artifact_dir,
|
177
|
+
properties=properties,
|
178
|
+
auth=auth,
|
179
|
+
model_save_serializer=model_save_serializer,
|
180
|
+
model_input_serializer=model_input_serializer,
|
181
|
+
**kwargs,
|
182
|
+
)
|
183
|
+
self._extractor = TensorflowExtractor(estimator)
|
184
|
+
self.framework = self._extractor.framework
|
185
|
+
self.algorithm = self._extractor.algorithm
|
186
|
+
self.version = self._extractor.version
|
187
|
+
self.hyperparameter = self._extractor.hyperparameter
|
188
|
+
|
189
|
+
self.version = tf.version.VERSION
|
190
|
+
|
191
|
+
def serialize_model(
|
192
|
+
self,
|
193
|
+
as_onnx: bool = False,
|
194
|
+
X_sample: Optional[
|
195
|
+
Union[
|
196
|
+
Dict,
|
197
|
+
str,
|
198
|
+
List,
|
199
|
+
Tuple,
|
200
|
+
np.ndarray,
|
201
|
+
pd.core.series.Series,
|
202
|
+
pd.core.frame.DataFrame,
|
203
|
+
]
|
204
|
+
] = None,
|
205
|
+
force_overwrite: bool = False,
|
206
|
+
**kwargs,
|
207
|
+
) -> None:
|
208
|
+
"""
|
209
|
+
Serialize and save Tensorflow model using ONNX or model specific method.
|
210
|
+
|
211
|
+
Parameters
|
212
|
+
----------
|
213
|
+
as_onnx: (bool, optional). Defaults to False.
|
214
|
+
If set as True, convert into ONNX model.
|
215
|
+
X_sample: Union[list, tuple, pd.Series, np.ndarray, pd.DataFrame]. Defaults to None.
|
216
|
+
A sample of input data that will be used to generate input schema and detect input_signature.
|
217
|
+
force_overwrite: (bool, optional). Defaults to False.
|
218
|
+
If set as True, overwrite serialized model if exists.
|
219
|
+
**kwargs: optional params used to serialize tensorflow model to onnx,
|
220
|
+
including the following:
|
221
|
+
input_signature: a tuple or a list of tf.TensorSpec objects). default to None.
|
222
|
+
Define the shape/dtype of the input so that model(input_signature) is a valid invocation of the model.
|
223
|
+
opset_version: int. Defaults to None. Used for the ONNX model.
|
224
|
+
|
225
|
+
Returns
|
226
|
+
-------
|
227
|
+
None
|
228
|
+
Nothing.
|
229
|
+
"""
|
230
|
+
|
231
|
+
if as_onnx:
|
232
|
+
logger.warning(
|
233
|
+
"This approach supports converting tensorflow.keras models to "
|
234
|
+
"onnx format. If the defined model includes other tensorflow "
|
235
|
+
"modules (e.g., tensorflow.function), please use GenericModel instead."
|
236
|
+
)
|
237
|
+
logger.warning(DEPRECATE_AS_ONNX_WARNING)
|
238
|
+
self.set_model_save_serializer(self.model_save_serializer_type.ONNX)
|
239
|
+
|
240
|
+
super().serialize_model(
|
241
|
+
as_onnx=as_onnx,
|
242
|
+
force_overwrite=force_overwrite,
|
243
|
+
X_sample=X_sample,
|
244
|
+
**kwargs,
|
245
|
+
)
|
246
|
+
|
247
|
+
@runtime_dependency(
|
248
|
+
module="tensorflow",
|
249
|
+
short_name="tf",
|
250
|
+
install_from=OptionalDependency.TENSORFLOW,
|
251
|
+
)
|
252
|
+
def _to_tensor(self, data):
|
253
|
+
data = tf.convert_to_tensor(data)
|
254
|
+
return data
|