oracle-ads 2.13.8__py3-none-any.whl → 2.13.9rc0__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.
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/METADATA +151 -151
- oracle_ads-2.13.9rc0.dist-info/RECORD +9 -0
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/WHEEL +2 -1
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/entry_points.txt +1 -2
- oracle_ads-2.13.9rc0.dist-info/top_level.txt +1 -0
- ads/aqua/__init__.py +0 -40
- ads/aqua/app.py +0 -506
- ads/aqua/cli.py +0 -96
- ads/aqua/client/__init__.py +0 -3
- ads/aqua/client/client.py +0 -836
- ads/aqua/client/openai_client.py +0 -305
- ads/aqua/common/__init__.py +0 -5
- ads/aqua/common/decorator.py +0 -125
- ads/aqua/common/entities.py +0 -266
- ads/aqua/common/enums.py +0 -122
- ads/aqua/common/errors.py +0 -109
- ads/aqua/common/utils.py +0 -1285
- ads/aqua/config/__init__.py +0 -4
- ads/aqua/config/container_config.py +0 -248
- ads/aqua/config/evaluation/__init__.py +0 -4
- ads/aqua/config/evaluation/evaluation_service_config.py +0 -147
- ads/aqua/config/utils/__init__.py +0 -4
- ads/aqua/config/utils/serializer.py +0 -339
- ads/aqua/constants.py +0 -114
- ads/aqua/data.py +0 -14
- ads/aqua/dummy_data/icon.txt +0 -1
- ads/aqua/dummy_data/oci_model_deployments.json +0 -56
- ads/aqua/dummy_data/oci_models.json +0 -1
- ads/aqua/dummy_data/readme.md +0 -26
- ads/aqua/evaluation/__init__.py +0 -8
- ads/aqua/evaluation/constants.py +0 -53
- ads/aqua/evaluation/entities.py +0 -186
- ads/aqua/evaluation/errors.py +0 -70
- ads/aqua/evaluation/evaluation.py +0 -1814
- ads/aqua/extension/__init__.py +0 -42
- ads/aqua/extension/aqua_ws_msg_handler.py +0 -76
- ads/aqua/extension/base_handler.py +0 -90
- ads/aqua/extension/common_handler.py +0 -121
- ads/aqua/extension/common_ws_msg_handler.py +0 -36
- ads/aqua/extension/deployment_handler.py +0 -298
- ads/aqua/extension/deployment_ws_msg_handler.py +0 -54
- ads/aqua/extension/errors.py +0 -30
- ads/aqua/extension/evaluation_handler.py +0 -129
- ads/aqua/extension/evaluation_ws_msg_handler.py +0 -61
- ads/aqua/extension/finetune_handler.py +0 -96
- ads/aqua/extension/model_handler.py +0 -390
- ads/aqua/extension/models/__init__.py +0 -0
- ads/aqua/extension/models/ws_models.py +0 -145
- ads/aqua/extension/models_ws_msg_handler.py +0 -50
- ads/aqua/extension/ui_handler.py +0 -282
- ads/aqua/extension/ui_websocket_handler.py +0 -130
- ads/aqua/extension/utils.py +0 -133
- ads/aqua/finetuning/__init__.py +0 -7
- ads/aqua/finetuning/constants.py +0 -23
- ads/aqua/finetuning/entities.py +0 -181
- ads/aqua/finetuning/finetuning.py +0 -731
- ads/aqua/model/__init__.py +0 -8
- ads/aqua/model/constants.py +0 -60
- ads/aqua/model/entities.py +0 -306
- ads/aqua/model/enums.py +0 -30
- ads/aqua/model/model.py +0 -2080
- ads/aqua/modeldeployment/__init__.py +0 -8
- ads/aqua/modeldeployment/constants.py +0 -10
- ads/aqua/modeldeployment/deployment.py +0 -1324
- ads/aqua/modeldeployment/entities.py +0 -653
- ads/aqua/modeldeployment/inference.py +0 -74
- ads/aqua/modeldeployment/utils.py +0 -543
- ads/aqua/resources/gpu_shapes_index.json +0 -94
- ads/aqua/server/__init__.py +0 -4
- ads/aqua/server/__main__.py +0 -24
- ads/aqua/server/app.py +0 -47
- ads/aqua/server/aqua_spec.yml +0 -1291
- ads/aqua/training/__init__.py +0 -4
- ads/aqua/training/exceptions.py +0 -476
- ads/aqua/ui.py +0 -499
- ads/automl/__init__.py +0 -9
- ads/automl/driver.py +0 -330
- ads/automl/provider.py +0 -975
- ads/bds/__init__.py +0 -5
- ads/bds/auth.py +0 -127
- ads/bds/big_data_service.py +0 -255
- ads/catalog/__init__.py +0 -19
- ads/catalog/model.py +0 -1576
- ads/catalog/notebook.py +0 -461
- ads/catalog/project.py +0 -468
- ads/catalog/summary.py +0 -178
- ads/common/__init__.py +0 -11
- ads/common/analyzer.py +0 -65
- ads/common/artifact/.model-ignore +0 -63
- ads/common/artifact/__init__.py +0 -10
- ads/common/auth.py +0 -1122
- ads/common/card_identifier.py +0 -83
- ads/common/config.py +0 -647
- ads/common/data.py +0 -165
- ads/common/decorator/__init__.py +0 -9
- ads/common/decorator/argument_to_case.py +0 -88
- ads/common/decorator/deprecate.py +0 -69
- ads/common/decorator/require_nonempty_arg.py +0 -65
- ads/common/decorator/runtime_dependency.py +0 -178
- ads/common/decorator/threaded.py +0 -97
- ads/common/decorator/utils.py +0 -35
- ads/common/dsc_file_system.py +0 -303
- ads/common/error.py +0 -14
- ads/common/extended_enum.py +0 -81
- ads/common/function/__init__.py +0 -5
- ads/common/function/fn_util.py +0 -142
- ads/common/function/func_conf.yaml +0 -25
- ads/common/ipython.py +0 -76
- ads/common/model.py +0 -679
- ads/common/model_artifact.py +0 -1759
- ads/common/model_artifact_schema.json +0 -107
- ads/common/model_export_util.py +0 -664
- ads/common/model_metadata.py +0 -24
- ads/common/object_storage_details.py +0 -296
- ads/common/oci_client.py +0 -175
- ads/common/oci_datascience.py +0 -46
- ads/common/oci_logging.py +0 -1144
- ads/common/oci_mixin.py +0 -957
- ads/common/oci_resource.py +0 -136
- ads/common/serializer.py +0 -559
- ads/common/utils.py +0 -1852
- ads/common/word_lists.py +0 -1491
- ads/common/work_request.py +0 -189
- ads/data_labeling/__init__.py +0 -13
- ads/data_labeling/boundingbox.py +0 -253
- ads/data_labeling/constants.py +0 -47
- ads/data_labeling/data_labeling_service.py +0 -244
- ads/data_labeling/interface/__init__.py +0 -5
- ads/data_labeling/interface/loader.py +0 -16
- ads/data_labeling/interface/parser.py +0 -16
- ads/data_labeling/interface/reader.py +0 -23
- ads/data_labeling/loader/__init__.py +0 -5
- ads/data_labeling/loader/file_loader.py +0 -241
- ads/data_labeling/metadata.py +0 -110
- ads/data_labeling/mixin/__init__.py +0 -5
- ads/data_labeling/mixin/data_labeling.py +0 -232
- ads/data_labeling/ner.py +0 -129
- ads/data_labeling/parser/__init__.py +0 -5
- ads/data_labeling/parser/dls_record_parser.py +0 -388
- ads/data_labeling/parser/export_metadata_parser.py +0 -94
- ads/data_labeling/parser/export_record_parser.py +0 -473
- ads/data_labeling/reader/__init__.py +0 -5
- ads/data_labeling/reader/dataset_reader.py +0 -574
- ads/data_labeling/reader/dls_record_reader.py +0 -121
- ads/data_labeling/reader/export_record_reader.py +0 -62
- ads/data_labeling/reader/jsonl_reader.py +0 -75
- ads/data_labeling/reader/metadata_reader.py +0 -203
- ads/data_labeling/reader/record_reader.py +0 -263
- ads/data_labeling/record.py +0 -52
- ads/data_labeling/visualizer/__init__.py +0 -5
- ads/data_labeling/visualizer/image_visualizer.py +0 -525
- ads/data_labeling/visualizer/text_visualizer.py +0 -357
- ads/database/__init__.py +0 -5
- ads/database/connection.py +0 -338
- ads/dataset/__init__.py +0 -10
- ads/dataset/capabilities.md +0 -51
- ads/dataset/classification_dataset.py +0 -339
- ads/dataset/correlation.py +0 -226
- ads/dataset/correlation_plot.py +0 -563
- ads/dataset/dask_series.py +0 -173
- ads/dataset/dataframe_transformer.py +0 -110
- ads/dataset/dataset.py +0 -1979
- ads/dataset/dataset_browser.py +0 -360
- ads/dataset/dataset_with_target.py +0 -995
- ads/dataset/exception.py +0 -25
- ads/dataset/factory.py +0 -987
- ads/dataset/feature_engineering_transformer.py +0 -35
- ads/dataset/feature_selection.py +0 -107
- ads/dataset/forecasting_dataset.py +0 -26
- ads/dataset/helper.py +0 -1450
- ads/dataset/label_encoder.py +0 -99
- ads/dataset/mixin/__init__.py +0 -5
- ads/dataset/mixin/dataset_accessor.py +0 -134
- ads/dataset/pipeline.py +0 -58
- ads/dataset/plot.py +0 -710
- ads/dataset/progress.py +0 -86
- ads/dataset/recommendation.py +0 -297
- ads/dataset/recommendation_transformer.py +0 -502
- ads/dataset/regression_dataset.py +0 -14
- ads/dataset/sampled_dataset.py +0 -1050
- ads/dataset/target.py +0 -98
- ads/dataset/timeseries.py +0 -18
- ads/dbmixin/__init__.py +0 -5
- ads/dbmixin/db_pandas_accessor.py +0 -153
- ads/environment/__init__.py +0 -9
- ads/environment/ml_runtime.py +0 -66
- ads/evaluations/README.md +0 -14
- ads/evaluations/__init__.py +0 -109
- ads/evaluations/evaluation_plot.py +0 -983
- ads/evaluations/evaluator.py +0 -1334
- ads/evaluations/statistical_metrics.py +0 -543
- ads/experiments/__init__.py +0 -9
- ads/experiments/capabilities.md +0 -0
- ads/explanations/__init__.py +0 -21
- ads/explanations/base_explainer.py +0 -142
- ads/explanations/capabilities.md +0 -83
- ads/explanations/explainer.py +0 -190
- ads/explanations/mlx_global_explainer.py +0 -1050
- ads/explanations/mlx_interface.py +0 -386
- ads/explanations/mlx_local_explainer.py +0 -287
- ads/explanations/mlx_whatif_explainer.py +0 -201
- ads/feature_engineering/__init__.py +0 -20
- ads/feature_engineering/accessor/__init__.py +0 -5
- ads/feature_engineering/accessor/dataframe_accessor.py +0 -535
- ads/feature_engineering/accessor/mixin/__init__.py +0 -5
- ads/feature_engineering/accessor/mixin/correlation.py +0 -166
- ads/feature_engineering/accessor/mixin/eda_mixin.py +0 -266
- ads/feature_engineering/accessor/mixin/eda_mixin_series.py +0 -85
- ads/feature_engineering/accessor/mixin/feature_types_mixin.py +0 -211
- ads/feature_engineering/accessor/mixin/utils.py +0 -65
- ads/feature_engineering/accessor/series_accessor.py +0 -431
- ads/feature_engineering/adsimage/__init__.py +0 -5
- ads/feature_engineering/adsimage/image.py +0 -192
- ads/feature_engineering/adsimage/image_reader.py +0 -170
- ads/feature_engineering/adsimage/interface/__init__.py +0 -5
- ads/feature_engineering/adsimage/interface/reader.py +0 -19
- ads/feature_engineering/adsstring/__init__.py +0 -7
- ads/feature_engineering/adsstring/oci_language/__init__.py +0 -8
- ads/feature_engineering/adsstring/string/__init__.py +0 -8
- ads/feature_engineering/data_schema.json +0 -57
- ads/feature_engineering/dataset/__init__.py +0 -5
- ads/feature_engineering/dataset/zip_code_data.py +0 -42062
- ads/feature_engineering/exceptions.py +0 -40
- ads/feature_engineering/feature_type/__init__.py +0 -133
- ads/feature_engineering/feature_type/address.py +0 -184
- ads/feature_engineering/feature_type/adsstring/__init__.py +0 -5
- ads/feature_engineering/feature_type/adsstring/common_regex_mixin.py +0 -164
- ads/feature_engineering/feature_type/adsstring/oci_language.py +0 -93
- ads/feature_engineering/feature_type/adsstring/parsers/__init__.py +0 -5
- ads/feature_engineering/feature_type/adsstring/parsers/base.py +0 -47
- ads/feature_engineering/feature_type/adsstring/parsers/nltk_parser.py +0 -96
- ads/feature_engineering/feature_type/adsstring/parsers/spacy_parser.py +0 -221
- ads/feature_engineering/feature_type/adsstring/string.py +0 -258
- ads/feature_engineering/feature_type/base.py +0 -58
- ads/feature_engineering/feature_type/boolean.py +0 -183
- ads/feature_engineering/feature_type/category.py +0 -146
- ads/feature_engineering/feature_type/constant.py +0 -137
- ads/feature_engineering/feature_type/continuous.py +0 -151
- ads/feature_engineering/feature_type/creditcard.py +0 -314
- ads/feature_engineering/feature_type/datetime.py +0 -190
- ads/feature_engineering/feature_type/discrete.py +0 -134
- ads/feature_engineering/feature_type/document.py +0 -43
- ads/feature_engineering/feature_type/gis.py +0 -251
- ads/feature_engineering/feature_type/handler/__init__.py +0 -5
- ads/feature_engineering/feature_type/handler/feature_validator.py +0 -524
- ads/feature_engineering/feature_type/handler/feature_warning.py +0 -319
- ads/feature_engineering/feature_type/handler/warnings.py +0 -128
- ads/feature_engineering/feature_type/integer.py +0 -142
- ads/feature_engineering/feature_type/ip_address.py +0 -144
- ads/feature_engineering/feature_type/ip_address_v4.py +0 -138
- ads/feature_engineering/feature_type/ip_address_v6.py +0 -138
- ads/feature_engineering/feature_type/lat_long.py +0 -256
- ads/feature_engineering/feature_type/object.py +0 -43
- ads/feature_engineering/feature_type/ordinal.py +0 -132
- ads/feature_engineering/feature_type/phone_number.py +0 -135
- ads/feature_engineering/feature_type/string.py +0 -171
- ads/feature_engineering/feature_type/text.py +0 -93
- ads/feature_engineering/feature_type/unknown.py +0 -43
- ads/feature_engineering/feature_type/zip_code.py +0 -164
- ads/feature_engineering/feature_type_manager.py +0 -406
- ads/feature_engineering/schema.py +0 -795
- ads/feature_engineering/utils.py +0 -245
- ads/feature_store/.readthedocs.yaml +0 -19
- ads/feature_store/README.md +0 -65
- ads/feature_store/__init__.py +0 -9
- ads/feature_store/common/__init__.py +0 -0
- ads/feature_store/common/enums.py +0 -339
- ads/feature_store/common/exceptions.py +0 -18
- ads/feature_store/common/spark_session_singleton.py +0 -125
- ads/feature_store/common/utils/__init__.py +0 -0
- ads/feature_store/common/utils/base64_encoder_decoder.py +0 -72
- ads/feature_store/common/utils/feature_schema_mapper.py +0 -283
- ads/feature_store/common/utils/transformation_utils.py +0 -82
- ads/feature_store/common/utils/utility.py +0 -403
- ads/feature_store/data_validation/__init__.py +0 -0
- ads/feature_store/data_validation/great_expectation.py +0 -129
- ads/feature_store/dataset.py +0 -1230
- ads/feature_store/dataset_job.py +0 -530
- ads/feature_store/docs/Dockerfile +0 -7
- ads/feature_store/docs/Makefile +0 -44
- ads/feature_store/docs/conf.py +0 -28
- ads/feature_store/docs/requirements.txt +0 -14
- ads/feature_store/docs/source/ads.feature_store.query.rst +0 -20
- ads/feature_store/docs/source/cicd.rst +0 -137
- ads/feature_store/docs/source/conf.py +0 -86
- ads/feature_store/docs/source/data_versioning.rst +0 -33
- ads/feature_store/docs/source/dataset.rst +0 -388
- ads/feature_store/docs/source/dataset_job.rst +0 -27
- ads/feature_store/docs/source/demo.rst +0 -70
- ads/feature_store/docs/source/entity.rst +0 -78
- ads/feature_store/docs/source/feature_group.rst +0 -624
- ads/feature_store/docs/source/feature_group_job.rst +0 -29
- ads/feature_store/docs/source/feature_store.rst +0 -122
- ads/feature_store/docs/source/feature_store_class.rst +0 -123
- ads/feature_store/docs/source/feature_validation.rst +0 -66
- 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 +0 -81
- ads/feature_store/docs/source/module.rst +0 -8
- ads/feature_store/docs/source/notebook.rst +0 -94
- ads/feature_store/docs/source/overview.rst +0 -47
- ads/feature_store/docs/source/quickstart.rst +0 -176
- ads/feature_store/docs/source/release_notes.rst +0 -194
- ads/feature_store/docs/source/setup_feature_store.rst +0 -81
- ads/feature_store/docs/source/statistics.rst +0 -58
- ads/feature_store/docs/source/transformation.rst +0 -199
- ads/feature_store/docs/source/ui.rst +0 -65
- ads/feature_store/docs/source/user_guides.setup.feature_store_operator.rst +0 -66
- ads/feature_store/docs/source/user_guides.setup.helm_chart.rst +0 -192
- ads/feature_store/docs/source/user_guides.setup.terraform.rst +0 -338
- ads/feature_store/entity.py +0 -718
- 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 +0 -375
- ads/feature_store/execution_strategy/engine/__init__.py +0 -0
- ads/feature_store/execution_strategy/engine/spark_engine.py +0 -316
- ads/feature_store/execution_strategy/execution_strategy.py +0 -113
- ads/feature_store/execution_strategy/execution_strategy_provider.py +0 -47
- ads/feature_store/execution_strategy/spark/__init__.py +0 -0
- ads/feature_store/execution_strategy/spark/spark_execution.py +0 -618
- ads/feature_store/feature.py +0 -192
- ads/feature_store/feature_group.py +0 -1494
- ads/feature_store/feature_group_expectation.py +0 -346
- ads/feature_store/feature_group_job.py +0 -602
- ads/feature_store/feature_lineage/__init__.py +0 -0
- ads/feature_store/feature_lineage/graphviz_service.py +0 -180
- ads/feature_store/feature_option_details.py +0 -50
- ads/feature_store/feature_statistics/__init__.py +0 -0
- ads/feature_store/feature_statistics/statistics_service.py +0 -99
- ads/feature_store/feature_store.py +0 -699
- ads/feature_store/feature_store_registrar.py +0 -518
- ads/feature_store/input_feature_detail.py +0 -149
- ads/feature_store/mixin/__init__.py +0 -4
- ads/feature_store/mixin/oci_feature_store.py +0 -145
- ads/feature_store/model_details.py +0 -73
- ads/feature_store/query/__init__.py +0 -0
- ads/feature_store/query/filter.py +0 -266
- ads/feature_store/query/generator/__init__.py +0 -0
- ads/feature_store/query/generator/query_generator.py +0 -298
- ads/feature_store/query/join.py +0 -161
- ads/feature_store/query/query.py +0 -403
- ads/feature_store/query/validator/__init__.py +0 -0
- ads/feature_store/query/validator/query_validator.py +0 -57
- ads/feature_store/response/__init__.py +0 -0
- ads/feature_store/response/response_builder.py +0 -68
- ads/feature_store/service/__init__.py +0 -0
- ads/feature_store/service/oci_dataset.py +0 -139
- ads/feature_store/service/oci_dataset_job.py +0 -199
- ads/feature_store/service/oci_entity.py +0 -125
- ads/feature_store/service/oci_feature_group.py +0 -164
- ads/feature_store/service/oci_feature_group_job.py +0 -214
- ads/feature_store/service/oci_feature_store.py +0 -182
- ads/feature_store/service/oci_lineage.py +0 -87
- ads/feature_store/service/oci_transformation.py +0 -104
- ads/feature_store/statistics/__init__.py +0 -0
- ads/feature_store/statistics/abs_feature_value.py +0 -49
- ads/feature_store/statistics/charts/__init__.py +0 -0
- ads/feature_store/statistics/charts/abstract_feature_plot.py +0 -37
- ads/feature_store/statistics/charts/box_plot.py +0 -148
- ads/feature_store/statistics/charts/frequency_distribution.py +0 -65
- ads/feature_store/statistics/charts/probability_distribution.py +0 -68
- ads/feature_store/statistics/charts/top_k_frequent_elements.py +0 -98
- ads/feature_store/statistics/feature_stat.py +0 -126
- ads/feature_store/statistics/generic_feature_value.py +0 -33
- ads/feature_store/statistics/statistics.py +0 -41
- ads/feature_store/statistics_config.py +0 -101
- ads/feature_store/templates/feature_store_template.yaml +0 -45
- ads/feature_store/transformation.py +0 -499
- ads/feature_store/validation_output.py +0 -57
- ads/hpo/__init__.py +0 -9
- ads/hpo/_imports.py +0 -91
- ads/hpo/ads_search_space.py +0 -439
- ads/hpo/distributions.py +0 -325
- ads/hpo/objective.py +0 -280
- ads/hpo/search_cv.py +0 -1657
- ads/hpo/stopping_criterion.py +0 -75
- ads/hpo/tuner_artifact.py +0 -413
- ads/hpo/utils.py +0 -91
- ads/hpo/validation.py +0 -140
- ads/hpo/visualization/__init__.py +0 -5
- ads/hpo/visualization/_contour.py +0 -23
- ads/hpo/visualization/_edf.py +0 -20
- ads/hpo/visualization/_intermediate_values.py +0 -21
- ads/hpo/visualization/_optimization_history.py +0 -25
- ads/hpo/visualization/_parallel_coordinate.py +0 -169
- ads/hpo/visualization/_param_importances.py +0 -26
- ads/jobs/__init__.py +0 -53
- ads/jobs/ads_job.py +0 -663
- ads/jobs/builders/__init__.py +0 -5
- ads/jobs/builders/base.py +0 -156
- ads/jobs/builders/infrastructure/__init__.py +0 -6
- ads/jobs/builders/infrastructure/base.py +0 -165
- ads/jobs/builders/infrastructure/dataflow.py +0 -1252
- ads/jobs/builders/infrastructure/dsc_job.py +0 -1894
- ads/jobs/builders/infrastructure/dsc_job_runtime.py +0 -1233
- ads/jobs/builders/infrastructure/utils.py +0 -65
- ads/jobs/builders/runtimes/__init__.py +0 -5
- ads/jobs/builders/runtimes/artifact.py +0 -338
- ads/jobs/builders/runtimes/base.py +0 -325
- ads/jobs/builders/runtimes/container_runtime.py +0 -242
- ads/jobs/builders/runtimes/python_runtime.py +0 -1016
- ads/jobs/builders/runtimes/pytorch_runtime.py +0 -204
- ads/jobs/cli.py +0 -104
- ads/jobs/env_var_parser.py +0 -131
- ads/jobs/extension.py +0 -160
- ads/jobs/schema/__init__.py +0 -5
- ads/jobs/schema/infrastructure_schema.json +0 -116
- ads/jobs/schema/job_schema.json +0 -42
- ads/jobs/schema/runtime_schema.json +0 -183
- ads/jobs/schema/validator.py +0 -141
- ads/jobs/serializer.py +0 -296
- ads/jobs/templates/__init__.py +0 -5
- ads/jobs/templates/container.py +0 -6
- ads/jobs/templates/driver_notebook.py +0 -177
- ads/jobs/templates/driver_oci.py +0 -500
- ads/jobs/templates/driver_python.py +0 -48
- ads/jobs/templates/driver_pytorch.py +0 -852
- ads/jobs/templates/driver_utils.py +0 -615
- ads/jobs/templates/hostname_from_env.c +0 -55
- ads/jobs/templates/oci_metrics.py +0 -181
- ads/jobs/utils.py +0 -104
- ads/llm/__init__.py +0 -28
- ads/llm/autogen/__init__.py +0 -2
- ads/llm/autogen/constants.py +0 -15
- ads/llm/autogen/reports/__init__.py +0 -2
- ads/llm/autogen/reports/base.py +0 -67
- ads/llm/autogen/reports/data.py +0 -103
- ads/llm/autogen/reports/session.py +0 -526
- ads/llm/autogen/reports/templates/chat_box.html +0 -13
- ads/llm/autogen/reports/templates/chat_box_lt.html +0 -5
- ads/llm/autogen/reports/templates/chat_box_rt.html +0 -6
- ads/llm/autogen/reports/utils.py +0 -56
- ads/llm/autogen/v02/__init__.py +0 -4
- ads/llm/autogen/v02/client.py +0 -295
- ads/llm/autogen/v02/log_handlers/__init__.py +0 -2
- ads/llm/autogen/v02/log_handlers/oci_file_handler.py +0 -83
- ads/llm/autogen/v02/loggers/__init__.py +0 -6
- ads/llm/autogen/v02/loggers/metric_logger.py +0 -320
- ads/llm/autogen/v02/loggers/session_logger.py +0 -580
- ads/llm/autogen/v02/loggers/utils.py +0 -86
- ads/llm/autogen/v02/runtime_logging.py +0 -163
- ads/llm/chain.py +0 -268
- ads/llm/chat_template.py +0 -31
- ads/llm/deploy.py +0 -63
- ads/llm/guardrails/__init__.py +0 -5
- ads/llm/guardrails/base.py +0 -442
- ads/llm/guardrails/huggingface.py +0 -44
- ads/llm/langchain/__init__.py +0 -5
- ads/llm/langchain/plugins/__init__.py +0 -5
- ads/llm/langchain/plugins/chat_models/__init__.py +0 -5
- ads/llm/langchain/plugins/chat_models/oci_data_science.py +0 -1027
- ads/llm/langchain/plugins/embeddings/__init__.py +0 -4
- ads/llm/langchain/plugins/embeddings/oci_data_science_model_deployment_endpoint.py +0 -184
- ads/llm/langchain/plugins/llms/__init__.py +0 -5
- ads/llm/langchain/plugins/llms/oci_data_science_model_deployment_endpoint.py +0 -979
- ads/llm/requirements.txt +0 -3
- ads/llm/serialize.py +0 -219
- ads/llm/serializers/__init__.py +0 -0
- ads/llm/serializers/retrieval_qa.py +0 -153
- ads/llm/serializers/runnable_parallel.py +0 -27
- ads/llm/templates/score_chain.jinja2 +0 -155
- ads/llm/templates/tool_chat_template_hermes.jinja +0 -130
- ads/llm/templates/tool_chat_template_mistral_parallel.jinja +0 -94
- ads/model/__init__.py +0 -52
- ads/model/artifact.py +0 -573
- ads/model/artifact_downloader.py +0 -254
- ads/model/artifact_uploader.py +0 -267
- ads/model/base_properties.py +0 -238
- ads/model/common/.model-ignore +0 -66
- ads/model/common/__init__.py +0 -5
- ads/model/common/utils.py +0 -142
- ads/model/datascience_model.py +0 -2635
- ads/model/deployment/__init__.py +0 -20
- ads/model/deployment/common/__init__.py +0 -5
- ads/model/deployment/common/utils.py +0 -308
- ads/model/deployment/model_deployer.py +0 -466
- ads/model/deployment/model_deployment.py +0 -1846
- ads/model/deployment/model_deployment_infrastructure.py +0 -671
- ads/model/deployment/model_deployment_properties.py +0 -493
- ads/model/deployment/model_deployment_runtime.py +0 -838
- ads/model/extractor/__init__.py +0 -5
- ads/model/extractor/automl_extractor.py +0 -74
- ads/model/extractor/embedding_onnx_extractor.py +0 -80
- ads/model/extractor/huggingface_extractor.py +0 -88
- ads/model/extractor/keras_extractor.py +0 -84
- ads/model/extractor/lightgbm_extractor.py +0 -93
- ads/model/extractor/model_info_extractor.py +0 -114
- ads/model/extractor/model_info_extractor_factory.py +0 -105
- ads/model/extractor/pytorch_extractor.py +0 -87
- ads/model/extractor/sklearn_extractor.py +0 -112
- ads/model/extractor/spark_extractor.py +0 -89
- ads/model/extractor/tensorflow_extractor.py +0 -85
- ads/model/extractor/xgboost_extractor.py +0 -94
- ads/model/framework/__init__.py +0 -5
- ads/model/framework/automl_model.py +0 -178
- ads/model/framework/embedding_onnx_model.py +0 -438
- ads/model/framework/huggingface_model.py +0 -399
- ads/model/framework/lightgbm_model.py +0 -266
- ads/model/framework/pytorch_model.py +0 -266
- ads/model/framework/sklearn_model.py +0 -250
- ads/model/framework/spark_model.py +0 -326
- ads/model/framework/tensorflow_model.py +0 -254
- ads/model/framework/xgboost_model.py +0 -258
- ads/model/generic_model.py +0 -3518
- ads/model/model_artifact_boilerplate/README.md +0 -381
- ads/model/model_artifact_boilerplate/__init__.py +0 -5
- ads/model/model_artifact_boilerplate/artifact_introspection_test/__init__.py +0 -5
- ads/model/model_artifact_boilerplate/artifact_introspection_test/model_artifact_validate.py +0 -427
- ads/model/model_artifact_boilerplate/artifact_introspection_test/requirements.txt +0 -2
- ads/model/model_artifact_boilerplate/runtime.yaml +0 -7
- ads/model/model_artifact_boilerplate/score.py +0 -61
- ads/model/model_file_description_schema.json +0 -68
- ads/model/model_introspect.py +0 -331
- ads/model/model_metadata.py +0 -1810
- ads/model/model_metadata_mixin.py +0 -460
- ads/model/model_properties.py +0 -63
- ads/model/model_version_set.py +0 -739
- ads/model/runtime/__init__.py +0 -5
- ads/model/runtime/env_info.py +0 -306
- ads/model/runtime/model_deployment_details.py +0 -37
- ads/model/runtime/model_provenance_details.py +0 -58
- ads/model/runtime/runtime_info.py +0 -81
- ads/model/runtime/schemas/inference_env_info_schema.yaml +0 -16
- ads/model/runtime/schemas/model_provenance_schema.yaml +0 -36
- ads/model/runtime/schemas/training_env_info_schema.yaml +0 -16
- ads/model/runtime/utils.py +0 -201
- ads/model/serde/__init__.py +0 -5
- ads/model/serde/common.py +0 -40
- ads/model/serde/model_input.py +0 -547
- ads/model/serde/model_serializer.py +0 -1184
- ads/model/service/__init__.py +0 -5
- ads/model/service/oci_datascience_model.py +0 -1076
- ads/model/service/oci_datascience_model_deployment.py +0 -500
- ads/model/service/oci_datascience_model_version_set.py +0 -176
- ads/model/transformer/__init__.py +0 -5
- ads/model/transformer/onnx_transformer.py +0 -324
- ads/mysqldb/__init__.py +0 -5
- ads/mysqldb/mysql_db.py +0 -227
- ads/opctl/__init__.py +0 -18
- ads/opctl/anomaly_detection.py +0 -11
- ads/opctl/backend/__init__.py +0 -5
- ads/opctl/backend/ads_dataflow.py +0 -353
- ads/opctl/backend/ads_ml_job.py +0 -710
- ads/opctl/backend/ads_ml_pipeline.py +0 -164
- ads/opctl/backend/ads_model_deployment.py +0 -209
- ads/opctl/backend/base.py +0 -146
- ads/opctl/backend/local.py +0 -1053
- ads/opctl/backend/marketplace/__init__.py +0 -9
- ads/opctl/backend/marketplace/helm_helper.py +0 -173
- ads/opctl/backend/marketplace/local_marketplace.py +0 -271
- ads/opctl/backend/marketplace/marketplace_backend_runner.py +0 -71
- ads/opctl/backend/marketplace/marketplace_operator_interface.py +0 -44
- ads/opctl/backend/marketplace/marketplace_operator_runner.py +0 -24
- ads/opctl/backend/marketplace/marketplace_utils.py +0 -212
- ads/opctl/backend/marketplace/models/__init__.py +0 -5
- ads/opctl/backend/marketplace/models/bearer_token.py +0 -94
- ads/opctl/backend/marketplace/models/marketplace_type.py +0 -70
- ads/opctl/backend/marketplace/models/ocir_details.py +0 -56
- ads/opctl/backend/marketplace/prerequisite_checker.py +0 -238
- ads/opctl/cli.py +0 -707
- ads/opctl/cmds.py +0 -869
- ads/opctl/conda/__init__.py +0 -5
- ads/opctl/conda/cli.py +0 -193
- ads/opctl/conda/cmds.py +0 -749
- ads/opctl/conda/config.yaml +0 -34
- ads/opctl/conda/manifest_template.yaml +0 -13
- ads/opctl/conda/multipart_uploader.py +0 -188
- ads/opctl/conda/pack.py +0 -89
- ads/opctl/config/__init__.py +0 -5
- ads/opctl/config/base.py +0 -57
- ads/opctl/config/diagnostics/__init__.py +0 -5
- ads/opctl/config/diagnostics/distributed/default_requirements_config.yaml +0 -62
- ads/opctl/config/merger.py +0 -255
- ads/opctl/config/resolver.py +0 -297
- ads/opctl/config/utils.py +0 -79
- ads/opctl/config/validator.py +0 -17
- ads/opctl/config/versioner.py +0 -68
- ads/opctl/config/yaml_parsers/__init__.py +0 -7
- ads/opctl/config/yaml_parsers/base.py +0 -58
- ads/opctl/config/yaml_parsers/distributed/__init__.py +0 -7
- ads/opctl/config/yaml_parsers/distributed/yaml_parser.py +0 -201
- ads/opctl/constants.py +0 -66
- ads/opctl/decorator/__init__.py +0 -5
- ads/opctl/decorator/common.py +0 -129
- ads/opctl/diagnostics/__init__.py +0 -5
- ads/opctl/diagnostics/__main__.py +0 -25
- ads/opctl/diagnostics/check_distributed_job_requirements.py +0 -212
- ads/opctl/diagnostics/check_requirements.py +0 -144
- ads/opctl/diagnostics/requirement_exception.py +0 -9
- ads/opctl/distributed/README.md +0 -109
- ads/opctl/distributed/__init__.py +0 -5
- ads/opctl/distributed/certificates.py +0 -32
- ads/opctl/distributed/cli.py +0 -207
- ads/opctl/distributed/cmds.py +0 -731
- ads/opctl/distributed/common/__init__.py +0 -5
- ads/opctl/distributed/common/abstract_cluster_provider.py +0 -449
- ads/opctl/distributed/common/abstract_framework_spec_builder.py +0 -88
- ads/opctl/distributed/common/cluster_config_helper.py +0 -103
- ads/opctl/distributed/common/cluster_provider_factory.py +0 -21
- ads/opctl/distributed/common/cluster_runner.py +0 -54
- ads/opctl/distributed/common/framework_factory.py +0 -29
- ads/opctl/docker/Dockerfile.job +0 -103
- ads/opctl/docker/Dockerfile.job.arm +0 -107
- ads/opctl/docker/Dockerfile.job.gpu +0 -175
- ads/opctl/docker/base-env.yaml +0 -13
- ads/opctl/docker/cuda.repo +0 -6
- ads/opctl/docker/operator/.dockerignore +0 -0
- ads/opctl/docker/operator/Dockerfile +0 -41
- ads/opctl/docker/operator/Dockerfile.gpu +0 -85
- ads/opctl/docker/operator/cuda.repo +0 -6
- ads/opctl/docker/operator/environment.yaml +0 -8
- ads/opctl/forecast.py +0 -11
- ads/opctl/index.yaml +0 -3
- ads/opctl/model/__init__.py +0 -5
- ads/opctl/model/cli.py +0 -65
- ads/opctl/model/cmds.py +0 -73
- ads/opctl/operator/README.md +0 -4
- ads/opctl/operator/__init__.py +0 -31
- ads/opctl/operator/cli.py +0 -344
- ads/opctl/operator/cmd.py +0 -596
- ads/opctl/operator/common/__init__.py +0 -5
- ads/opctl/operator/common/backend_factory.py +0 -460
- ads/opctl/operator/common/const.py +0 -27
- ads/opctl/operator/common/data/synthetic.csv +0 -16001
- ads/opctl/operator/common/dictionary_merger.py +0 -148
- ads/opctl/operator/common/errors.py +0 -42
- ads/opctl/operator/common/operator_config.py +0 -99
- ads/opctl/operator/common/operator_loader.py +0 -811
- ads/opctl/operator/common/operator_schema.yaml +0 -130
- ads/opctl/operator/common/operator_yaml_generator.py +0 -152
- ads/opctl/operator/common/utils.py +0 -208
- ads/opctl/operator/lowcode/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/MLoperator +0 -16
- ads/opctl/operator/lowcode/anomaly/README.md +0 -207
- ads/opctl/operator/lowcode/anomaly/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/__main__.py +0 -103
- ads/opctl/operator/lowcode/anomaly/cmd.py +0 -35
- ads/opctl/operator/lowcode/anomaly/const.py +0 -167
- ads/opctl/operator/lowcode/anomaly/environment.yaml +0 -10
- ads/opctl/operator/lowcode/anomaly/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +0 -146
- ads/opctl/operator/lowcode/anomaly/model/anomaly_merlion.py +0 -162
- ads/opctl/operator/lowcode/anomaly/model/automlx.py +0 -99
- ads/opctl/operator/lowcode/anomaly/model/autots.py +0 -115
- ads/opctl/operator/lowcode/anomaly/model/base_model.py +0 -404
- ads/opctl/operator/lowcode/anomaly/model/factory.py +0 -110
- ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +0 -78
- ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +0 -78
- ads/opctl/operator/lowcode/anomaly/model/randomcutforest.py +0 -120
- ads/opctl/operator/lowcode/anomaly/model/tods.py +0 -119
- ads/opctl/operator/lowcode/anomaly/operator_config.py +0 -127
- ads/opctl/operator/lowcode/anomaly/schema.yaml +0 -401
- ads/opctl/operator/lowcode/anomaly/utils.py +0 -88
- ads/opctl/operator/lowcode/common/__init__.py +0 -5
- ads/opctl/operator/lowcode/common/const.py +0 -10
- ads/opctl/operator/lowcode/common/data.py +0 -116
- ads/opctl/operator/lowcode/common/errors.py +0 -47
- ads/opctl/operator/lowcode/common/transformations.py +0 -296
- ads/opctl/operator/lowcode/common/utils.py +0 -293
- ads/opctl/operator/lowcode/feature_store_marketplace/MLoperator +0 -13
- ads/opctl/operator/lowcode/feature_store_marketplace/README.md +0 -30
- ads/opctl/operator/lowcode/feature_store_marketplace/__init__.py +0 -5
- ads/opctl/operator/lowcode/feature_store_marketplace/__main__.py +0 -116
- ads/opctl/operator/lowcode/feature_store_marketplace/cmd.py +0 -85
- ads/opctl/operator/lowcode/feature_store_marketplace/const.py +0 -15
- ads/opctl/operator/lowcode/feature_store_marketplace/environment.yaml +0 -0
- ads/opctl/operator/lowcode/feature_store_marketplace/models/__init__.py +0 -4
- ads/opctl/operator/lowcode/feature_store_marketplace/models/apigw_config.py +0 -32
- ads/opctl/operator/lowcode/feature_store_marketplace/models/db_config.py +0 -43
- ads/opctl/operator/lowcode/feature_store_marketplace/models/mysql_config.py +0 -120
- ads/opctl/operator/lowcode/feature_store_marketplace/models/serializable_yaml_model.py +0 -34
- ads/opctl/operator/lowcode/feature_store_marketplace/operator_utils.py +0 -386
- ads/opctl/operator/lowcode/feature_store_marketplace/schema.yaml +0 -160
- ads/opctl/operator/lowcode/forecast/MLoperator +0 -25
- ads/opctl/operator/lowcode/forecast/README.md +0 -209
- ads/opctl/operator/lowcode/forecast/__init__.py +0 -5
- ads/opctl/operator/lowcode/forecast/__main__.py +0 -89
- ads/opctl/operator/lowcode/forecast/cmd.py +0 -40
- ads/opctl/operator/lowcode/forecast/const.py +0 -92
- ads/opctl/operator/lowcode/forecast/environment.yaml +0 -20
- ads/opctl/operator/lowcode/forecast/errors.py +0 -26
- ads/opctl/operator/lowcode/forecast/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/forecast/model/arima.py +0 -279
- ads/opctl/operator/lowcode/forecast/model/automlx.py +0 -542
- ads/opctl/operator/lowcode/forecast/model/autots.py +0 -312
- ads/opctl/operator/lowcode/forecast/model/base_model.py +0 -863
- ads/opctl/operator/lowcode/forecast/model/factory.py +0 -106
- ads/opctl/operator/lowcode/forecast/model/forecast_datasets.py +0 -492
- ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +0 -243
- ads/opctl/operator/lowcode/forecast/model/neuralprophet.py +0 -486
- ads/opctl/operator/lowcode/forecast/model/prophet.py +0 -445
- ads/opctl/operator/lowcode/forecast/model_evaluator.py +0 -244
- ads/opctl/operator/lowcode/forecast/operator_config.py +0 -234
- ads/opctl/operator/lowcode/forecast/schema.yaml +0 -506
- ads/opctl/operator/lowcode/forecast/utils.py +0 -413
- ads/opctl/operator/lowcode/forecast/whatifserve/__init__.py +0 -7
- ads/opctl/operator/lowcode/forecast/whatifserve/deployment_manager.py +0 -285
- ads/opctl/operator/lowcode/forecast/whatifserve/score.py +0 -246
- ads/opctl/operator/lowcode/pii/MLoperator +0 -17
- ads/opctl/operator/lowcode/pii/README.md +0 -208
- ads/opctl/operator/lowcode/pii/__init__.py +0 -5
- ads/opctl/operator/lowcode/pii/__main__.py +0 -78
- ads/opctl/operator/lowcode/pii/cmd.py +0 -39
- ads/opctl/operator/lowcode/pii/constant.py +0 -84
- ads/opctl/operator/lowcode/pii/environment.yaml +0 -17
- ads/opctl/operator/lowcode/pii/errors.py +0 -27
- ads/opctl/operator/lowcode/pii/model/__init__.py +0 -5
- ads/opctl/operator/lowcode/pii/model/factory.py +0 -82
- ads/opctl/operator/lowcode/pii/model/guardrails.py +0 -167
- ads/opctl/operator/lowcode/pii/model/pii.py +0 -145
- ads/opctl/operator/lowcode/pii/model/processor/__init__.py +0 -34
- ads/opctl/operator/lowcode/pii/model/processor/email_replacer.py +0 -34
- ads/opctl/operator/lowcode/pii/model/processor/mbi_replacer.py +0 -35
- ads/opctl/operator/lowcode/pii/model/processor/name_replacer.py +0 -225
- ads/opctl/operator/lowcode/pii/model/processor/number_replacer.py +0 -73
- ads/opctl/operator/lowcode/pii/model/processor/remover.py +0 -26
- ads/opctl/operator/lowcode/pii/model/report.py +0 -487
- ads/opctl/operator/lowcode/pii/operator_config.py +0 -95
- ads/opctl/operator/lowcode/pii/schema.yaml +0 -108
- ads/opctl/operator/lowcode/pii/utils.py +0 -43
- ads/opctl/operator/lowcode/recommender/MLoperator +0 -16
- ads/opctl/operator/lowcode/recommender/README.md +0 -206
- ads/opctl/operator/lowcode/recommender/__init__.py +0 -5
- ads/opctl/operator/lowcode/recommender/__main__.py +0 -82
- ads/opctl/operator/lowcode/recommender/cmd.py +0 -33
- ads/opctl/operator/lowcode/recommender/constant.py +0 -30
- ads/opctl/operator/lowcode/recommender/environment.yaml +0 -11
- ads/opctl/operator/lowcode/recommender/model/base_model.py +0 -212
- ads/opctl/operator/lowcode/recommender/model/factory.py +0 -56
- ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +0 -25
- ads/opctl/operator/lowcode/recommender/model/svd.py +0 -106
- ads/opctl/operator/lowcode/recommender/operator_config.py +0 -81
- ads/opctl/operator/lowcode/recommender/schema.yaml +0 -265
- ads/opctl/operator/lowcode/recommender/utils.py +0 -13
- ads/opctl/operator/runtime/__init__.py +0 -5
- ads/opctl/operator/runtime/const.py +0 -17
- ads/opctl/operator/runtime/container_runtime_schema.yaml +0 -50
- ads/opctl/operator/runtime/marketplace_runtime.py +0 -50
- ads/opctl/operator/runtime/python_marketplace_runtime_schema.yaml +0 -21
- ads/opctl/operator/runtime/python_runtime_schema.yaml +0 -21
- ads/opctl/operator/runtime/runtime.py +0 -115
- ads/opctl/schema.yaml.yml +0 -36
- ads/opctl/script.py +0 -40
- ads/opctl/spark/__init__.py +0 -5
- ads/opctl/spark/cli.py +0 -43
- ads/opctl/spark/cmds.py +0 -147
- ads/opctl/templates/diagnostic_report_template.jinja2 +0 -102
- ads/opctl/utils.py +0 -344
- ads/oracledb/__init__.py +0 -5
- ads/oracledb/oracle_db.py +0 -346
- ads/pipeline/__init__.py +0 -39
- ads/pipeline/ads_pipeline.py +0 -2279
- ads/pipeline/ads_pipeline_run.py +0 -772
- ads/pipeline/ads_pipeline_step.py +0 -605
- ads/pipeline/builders/__init__.py +0 -5
- ads/pipeline/builders/infrastructure/__init__.py +0 -5
- ads/pipeline/builders/infrastructure/custom_script.py +0 -32
- ads/pipeline/cli.py +0 -119
- ads/pipeline/extension.py +0 -291
- ads/pipeline/schema/__init__.py +0 -5
- ads/pipeline/schema/cs_step_schema.json +0 -35
- ads/pipeline/schema/ml_step_schema.json +0 -31
- ads/pipeline/schema/pipeline_schema.json +0 -71
- ads/pipeline/visualizer/__init__.py +0 -5
- ads/pipeline/visualizer/base.py +0 -570
- ads/pipeline/visualizer/graph_renderer.py +0 -272
- ads/pipeline/visualizer/text_renderer.py +0 -84
- ads/secrets/__init__.py +0 -11
- ads/secrets/adb.py +0 -386
- ads/secrets/auth_token.py +0 -86
- ads/secrets/big_data_service.py +0 -365
- ads/secrets/mysqldb.py +0 -149
- ads/secrets/oracledb.py +0 -160
- ads/secrets/secrets.py +0 -407
- ads/telemetry/__init__.py +0 -7
- ads/telemetry/base.py +0 -69
- ads/telemetry/client.py +0 -125
- ads/telemetry/telemetry.py +0 -257
- ads/templates/dataflow_pyspark.jinja2 +0 -13
- ads/templates/dataflow_sparksql.jinja2 +0 -22
- ads/templates/func.jinja2 +0 -20
- ads/templates/schemas/openapi.json +0 -1740
- ads/templates/score-pkl.jinja2 +0 -173
- ads/templates/score.jinja2 +0 -322
- ads/templates/score_embedding_onnx.jinja2 +0 -202
- ads/templates/score_generic.jinja2 +0 -165
- ads/templates/score_huggingface_pipeline.jinja2 +0 -217
- ads/templates/score_lightgbm.jinja2 +0 -185
- ads/templates/score_onnx.jinja2 +0 -407
- ads/templates/score_onnx_new.jinja2 +0 -473
- ads/templates/score_oracle_automl.jinja2 +0 -185
- ads/templates/score_pyspark.jinja2 +0 -154
- ads/templates/score_pytorch.jinja2 +0 -219
- ads/templates/score_scikit-learn.jinja2 +0 -184
- ads/templates/score_tensorflow.jinja2 +0 -184
- ads/templates/score_xgboost.jinja2 +0 -178
- ads/text_dataset/__init__.py +0 -5
- ads/text_dataset/backends.py +0 -211
- ads/text_dataset/dataset.py +0 -445
- ads/text_dataset/extractor.py +0 -207
- ads/text_dataset/options.py +0 -53
- ads/text_dataset/udfs.py +0 -22
- ads/text_dataset/utils.py +0 -49
- ads/type_discovery/__init__.py +0 -9
- ads/type_discovery/abstract_detector.py +0 -21
- ads/type_discovery/constant_detector.py +0 -41
- ads/type_discovery/continuous_detector.py +0 -54
- ads/type_discovery/credit_card_detector.py +0 -99
- ads/type_discovery/datetime_detector.py +0 -92
- ads/type_discovery/discrete_detector.py +0 -118
- ads/type_discovery/document_detector.py +0 -146
- ads/type_discovery/ip_detector.py +0 -68
- ads/type_discovery/latlon_detector.py +0 -90
- ads/type_discovery/phone_number_detector.py +0 -63
- ads/type_discovery/type_discovery_driver.py +0 -87
- ads/type_discovery/typed_feature.py +0 -594
- ads/type_discovery/unknown_detector.py +0 -41
- ads/type_discovery/zipcode_detector.py +0 -48
- ads/vault/__init__.py +0 -7
- ads/vault/vault.py +0 -237
- oracle_ads-2.13.8.dist-info/RECORD +0 -858
- {oracle_ads-2.13.8.dist-info → oracle_ads-2.13.9rc0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,473 +0,0 @@
|
|
1
|
-
# score.py {{SCORE_VERSION}} generated by ADS {{ADS_VERSION}} on {{time_created}}
|
2
|
-
import json
|
3
|
-
import logging
|
4
|
-
import os
|
5
|
-
import sys
|
6
|
-
from functools import lru_cache
|
7
|
-
from io import StringIO
|
8
|
-
from typing import Dict, Union
|
9
|
-
|
10
|
-
import numpy as np
|
11
|
-
import onnxruntime as rt
|
12
|
-
import pandas as pd
|
13
|
-
from io import BytesIO
|
14
|
-
import base64
|
15
|
-
|
16
|
-
|
17
|
-
model_name = '{{model_file_name}}'
|
18
|
-
transformer_name = 'onnx_data_transformer.json'
|
19
|
-
|
20
|
-
|
21
|
-
"""
|
22
|
-
Inference script. This script is used for prediction by scoring server when schema is known.
|
23
|
-
"""
|
24
|
-
|
25
|
-
|
26
|
-
@lru_cache(maxsize=10)
|
27
|
-
def load_model(model_file_name=model_name):
|
28
|
-
"""
|
29
|
-
Loads model from the serialized format
|
30
|
-
|
31
|
-
Returns
|
32
|
-
-------
|
33
|
-
model: an onnxruntime session instance
|
34
|
-
"""
|
35
|
-
model_dir = os.path.dirname(os.path.realpath(__file__))
|
36
|
-
if model_dir not in sys.path:
|
37
|
-
sys.path.insert(0, model_dir)
|
38
|
-
contents = os.listdir(model_dir)
|
39
|
-
if model_file_name in contents:
|
40
|
-
print(f'Start loading {model_file_name} from model directory {model_dir} ...')
|
41
|
-
loaded_model = rt.InferenceSession(os.path.join(model_dir, model_file_name))
|
42
|
-
|
43
|
-
print("Model is successfully loaded.")
|
44
|
-
return loaded_model
|
45
|
-
else:
|
46
|
-
raise Exception(f'{model_file_name} is not found in model directory {model_dir}')
|
47
|
-
|
48
|
-
|
49
|
-
def deserialize(data):
|
50
|
-
"""
|
51
|
-
Deserialize json-serialized data to data in original type when sent to
|
52
|
-
predict.
|
53
|
-
|
54
|
-
Parameters
|
55
|
-
----------
|
56
|
-
data: serialized input data.
|
57
|
-
|
58
|
-
Returns
|
59
|
-
-------
|
60
|
-
data: deserialized input data.
|
61
|
-
|
62
|
-
"""
|
63
|
-
{% if data_deserializer == "json" %}
|
64
|
-
data_type = data.get('data_type', '') if isinstance(data, dict) else ''
|
65
|
-
json_data = data.get('data', data) if isinstance(data, dict) else data
|
66
|
-
|
67
|
-
if "numpy.ndarray" in data_type:
|
68
|
-
load_bytes = BytesIO(base64.b64decode(json_data.encode('utf-8')))
|
69
|
-
return np.load(load_bytes, allow_pickle=True)
|
70
|
-
if "pandas.core.series.Series" in data_type:
|
71
|
-
return pd.Series(json_data)
|
72
|
-
if "pandas.core.frame.DataFrame" in data_type:
|
73
|
-
return pd.read_json(json_data)
|
74
|
-
return json_data
|
75
|
-
|
76
|
-
{% elif data_deserializer == "cloudpickle" %}
|
77
|
-
import cloudpickle
|
78
|
-
from pickle import UnpicklingError
|
79
|
-
deserialized_data = data
|
80
|
-
try:
|
81
|
-
deserialized_data = cloudpickle.loads(data)
|
82
|
-
except TypeError:
|
83
|
-
pass
|
84
|
-
except UnpicklingError:
|
85
|
-
logger.warning(
|
86
|
-
"bytes are passed directly to the model. If the model expects a specific data format, you need to write the conversion logic in `deserialize()` yourself."
|
87
|
-
)
|
88
|
-
|
89
|
-
return deserialized_data
|
90
|
-
|
91
|
-
{% else %}
|
92
|
-
# Add further data deserialization if needed
|
93
|
-
return data
|
94
|
-
{% endif %}
|
95
|
-
|
96
|
-
def predict(data, model=load_model()):
|
97
|
-
"""
|
98
|
-
Returns prediction given the model and data to predict
|
99
|
-
|
100
|
-
Parameters
|
101
|
-
----------
|
102
|
-
model: Model session instance returned by load_model API
|
103
|
-
data: Data format as expected by the onnxruntime API
|
104
|
-
|
105
|
-
Returns
|
106
|
-
-------
|
107
|
-
predictions: Output from scoring server
|
108
|
-
Format: {'prediction':output from model.predict method}
|
109
|
-
"""
|
110
|
-
data = deserialize(data)
|
111
|
-
|
112
|
-
if isinstance(data, str):
|
113
|
-
X = pd.read_json(StringIO(data))
|
114
|
-
elif isinstance(data, dict):
|
115
|
-
X = pd.DataFrame.from_dict(data)
|
116
|
-
else:
|
117
|
-
X = data
|
118
|
-
|
119
|
-
model_dir = os.path.dirname(os.path.realpath(__file__))
|
120
|
-
contents = os.listdir(model_dir)
|
121
|
-
# Note: User may need to edit this
|
122
|
-
if transformer_name in contents:
|
123
|
-
onnx_data_transformer = ONNXTransformer.load(os.path.join(model_dir, transformer_name))
|
124
|
-
X = onnx_data_transformer.transform(X)
|
125
|
-
else:
|
126
|
-
onnx_data_transformer = None
|
127
|
-
|
128
|
-
num_of_inputs = len(model.get_inputs())
|
129
|
-
|
130
|
-
if isinstance(X, list) or isinstance(X, np.ndarray):
|
131
|
-
if num_of_inputs == 1:
|
132
|
-
input_data = {model.get_inputs()[0].name: X}
|
133
|
-
else:
|
134
|
-
input_data = {}
|
135
|
-
for i in range(num_of_inputs):
|
136
|
-
input_data[model.get_inputs()[i].name] = X[i]
|
137
|
-
pred = model.run(None, input_data)
|
138
|
-
|
139
|
-
num_of_outputs = len(model.get_outputs())
|
140
|
-
if num_of_outputs == 1:
|
141
|
-
return {'prediction': pred[0].tolist() if isinstance(pred[0], np.ndarray) else pred[0]}
|
142
|
-
else:
|
143
|
-
return {'prediction': [x.tolist() if isinstance(x, np.ndarray) else x for x in pred]}
|
144
|
-
|
145
|
-
onnx_transformed_rows = []
|
146
|
-
|
147
|
-
if num_of_inputs == 1:
|
148
|
-
for name, row in X.iterrows():
|
149
|
-
onnx_transformed_rows.append(list(row))
|
150
|
-
input_data = {model.get_inputs()[0].name: onnx_transformed_rows}
|
151
|
-
else:
|
152
|
-
input_data = {}
|
153
|
-
model_inputs = model.get_inputs()
|
154
|
-
i = 0
|
155
|
-
for _, col in X.items():
|
156
|
-
if isinstance(col, pd.Series):
|
157
|
-
col_val = [[item] for item in col.values.tolist()]
|
158
|
-
elif isinstance(col, np.array):
|
159
|
-
col_val = [[item] for item in col.tolist()]
|
160
|
-
elif isinstance(col, list):
|
161
|
-
col_val = [[item] for item in col]
|
162
|
-
input_data[model_inputs[i].name] = col_val
|
163
|
-
i += 1
|
164
|
-
pred = model.run(None, input_data)
|
165
|
-
return {'prediction':pred[0].tolist() if isinstance(pred[0], np.ndarray) else pred[0]}
|
166
|
-
|
167
|
-
|
168
|
-
class ONNXTransformer(object):
|
169
|
-
"""
|
170
|
-
This is a transformer to convert X [pandas.Dataframe, pd.Series] data into Onnx
|
171
|
-
readable dtypes and formats. It is Serializable, so it can be reloaded at another time.
|
172
|
-
|
173
|
-
|
174
|
-
Examples
|
175
|
-
--------
|
176
|
-
>>> from ads.model.transformer.onnx_transformer import ONNXTransformer
|
177
|
-
>>> onnx_data_transformer = ONNXTransformer()
|
178
|
-
>>> train_transformed = onnx_data_transformer.fit_transform(train.X, {"column_name1": "impute_value1", "column_name2": "impute_value2"}})
|
179
|
-
>>> test_transformed = onnx_data_transformer.transform(test.X)
|
180
|
-
"""
|
181
|
-
|
182
|
-
def __init__(self):
|
183
|
-
self.impute_values = {}
|
184
|
-
self.dtypes = None
|
185
|
-
self._fitted = False
|
186
|
-
|
187
|
-
@staticmethod
|
188
|
-
def _handle_dtypes(X: Union[pd.DataFrame, pd.Series, np.ndarray, list]):
|
189
|
-
"""Handles the dtypes for pandas dataframe and pandas Series.
|
190
|
-
|
191
|
-
Parameters
|
192
|
-
----------
|
193
|
-
X : Union[pd.DataFrame, pd.Series, np.ndarray, list]
|
194
|
-
The Dataframe for the training data
|
195
|
-
|
196
|
-
Returns
|
197
|
-
-------
|
198
|
-
Union[pd.DataFrame, pd.Series, np.ndarray, list]
|
199
|
-
The transformed(numerical values are cast to float32) X data
|
200
|
-
"""
|
201
|
-
# Data type cast could be expensive doing it in a for loop
|
202
|
-
# Especially with wide datasets
|
203
|
-
# So cast the numerical columns first, without loop
|
204
|
-
# Then impute missing values
|
205
|
-
if isinstance(X, pd.Series):
|
206
|
-
series_name = X.name if X.name else 0
|
207
|
-
_X = X.to_frame()
|
208
|
-
_X = ONNXTransformer._handle_dtypes_dataframe(_X)[series_name]
|
209
|
-
elif isinstance(X, pd.DataFrame):
|
210
|
-
_X = ONNXTransformer._handle_dtypes_dataframe(X)
|
211
|
-
elif isinstance(X, np.ndarray):
|
212
|
-
_X = ONNXTransformer._handle_dtypes_np_array(X)
|
213
|
-
else:
|
214
|
-
# if users convert pandas dataframe with mixed types to numpy array directly
|
215
|
-
# it will turn the whole numpy array into object even though some columns are
|
216
|
-
# numerical and some are not. In that case, we need to do extra work to identify
|
217
|
-
# which columns are really numerical which for now, we only convert to float32
|
218
|
-
# if numpy array is all numerical. else, nothing will be done.
|
219
|
-
_X = X
|
220
|
-
return _X
|
221
|
-
|
222
|
-
@staticmethod
|
223
|
-
def _handle_dtypes_dataframe(X: pd.DataFrame):
|
224
|
-
"""handle the dtypes for pandas dataframe.
|
225
|
-
|
226
|
-
Parameters
|
227
|
-
----------
|
228
|
-
X : pandas.DataFrame
|
229
|
-
The Dataframe for the training data
|
230
|
-
|
231
|
-
Returns
|
232
|
-
-------
|
233
|
-
pandas.DataFrame
|
234
|
-
The transformed X data
|
235
|
-
"""
|
236
|
-
dict_astype = {}
|
237
|
-
for k, v in zip(X.columns, X.dtypes):
|
238
|
-
if "int" in str(v) or "float" in str(v) or "bool" in str(v):
|
239
|
-
dict_astype[k] = "float32"
|
240
|
-
_X = X.astype(dict_astype)
|
241
|
-
if len(dict_astype) > 0:
|
242
|
-
logging.warning("Numerical values in `X` are cast to float32.")
|
243
|
-
return _X
|
244
|
-
|
245
|
-
@staticmethod
|
246
|
-
def _handle_dtypes_np_array(X: np.ndarray):
|
247
|
-
"""handle the dtypes for pandas dataframe.
|
248
|
-
|
249
|
-
Parameters
|
250
|
-
----------
|
251
|
-
X : np.ndarray
|
252
|
-
The ndarray for the training data
|
253
|
-
|
254
|
-
Returns
|
255
|
-
-------
|
256
|
-
np.ndarray
|
257
|
-
The transformed X data
|
258
|
-
"""
|
259
|
-
if "int" in str(X.dtype) or "float" in str(X.dtype) or "bool" in str(X.dtype):
|
260
|
-
_X = X.astype("float32")
|
261
|
-
logging.warning("Numerical values in `X` are cast to float32.")
|
262
|
-
else:
|
263
|
-
_X = X
|
264
|
-
return _X
|
265
|
-
|
266
|
-
def fit(
|
267
|
-
self,
|
268
|
-
X: Union[pd.DataFrame, pd.Series, np.ndarray, list],
|
269
|
-
impute_values: Dict = None,
|
270
|
-
):
|
271
|
-
"""
|
272
|
-
Fits the OnnxTransformer on the dataset
|
273
|
-
Parameters
|
274
|
-
----------
|
275
|
-
X : Union[pandas.DataFrame, pandas.Series, np.ndarray, list]
|
276
|
-
The Dataframe for the training data
|
277
|
-
|
278
|
-
Returns
|
279
|
-
-------
|
280
|
-
Self: ads.Model
|
281
|
-
The fitted estimator
|
282
|
-
"""
|
283
|
-
_X = ONNXTransformer._handle_dtypes(X)
|
284
|
-
if isinstance(_X, pd.DataFrame):
|
285
|
-
self.dtypes = _X.dtypes
|
286
|
-
elif isinstance(_X, np.ndarray):
|
287
|
-
self.dtypes = _X.dtype
|
288
|
-
self.impute_values = impute_values if impute_values else {}
|
289
|
-
self._fitted = True
|
290
|
-
return self
|
291
|
-
|
292
|
-
def transform(self, X: Union[pd.DataFrame, pd.Series, np.ndarray, list]):
|
293
|
-
"""
|
294
|
-
Transforms the data for the OnnxTransformer.
|
295
|
-
|
296
|
-
Parameters
|
297
|
-
----------
|
298
|
-
X: Union[pandas.DataFrame, pandas.Series, np.ndarray, list]
|
299
|
-
The Dataframe for the training data
|
300
|
-
|
301
|
-
Returns
|
302
|
-
-------
|
303
|
-
Union[pandas.DataFrame, pandas.Series, np.ndarray, list]
|
304
|
-
The transformed X data
|
305
|
-
"""
|
306
|
-
assert self._fitted, "Call fit_transform first!"
|
307
|
-
if self.dtypes is not None and len(self.dtypes) > 0:
|
308
|
-
if isinstance(X, list):
|
309
|
-
_X = np.array(X).astype(self.dtypes).tolist()
|
310
|
-
else:
|
311
|
-
_X = X.astype(self.dtypes)
|
312
|
-
else:
|
313
|
-
_X = X
|
314
|
-
_X = ONNXTransformer._handle_missing_value(_X, impute_values=self.impute_values)
|
315
|
-
return _X
|
316
|
-
|
317
|
-
@staticmethod
|
318
|
-
def _handle_missing_value(
|
319
|
-
X: Union[pd.DataFrame, pd.Series, np.ndarray, list], impute_values: Dict
|
320
|
-
):
|
321
|
-
"""Impute missing values in X according to impute_values.
|
322
|
-
|
323
|
-
Parameters
|
324
|
-
----------
|
325
|
-
X: Union[pandas.DataFrame, pandas.Series, np.ndarray, list]
|
326
|
-
The Dataframe for the training data
|
327
|
-
|
328
|
-
Raises
|
329
|
-
------
|
330
|
-
Exception if X has only one dim, but imputed_values has multiple values.
|
331
|
-
NotImplemented if X has the data type that is not supported.
|
332
|
-
|
333
|
-
Returns
|
334
|
-
-------
|
335
|
-
Union[pandas.DataFrame, pd.Series, np.ndarray, list]
|
336
|
-
The transformed X data
|
337
|
-
"""
|
338
|
-
if isinstance(X, np.ndarray):
|
339
|
-
X = ONNXTransformer._handle_missing_value_dataframe(
|
340
|
-
pd.DataFrame(X), impute_values=impute_values
|
341
|
-
).values
|
342
|
-
elif isinstance(X, list):
|
343
|
-
X = ONNXTransformer._handle_missing_value_dataframe(
|
344
|
-
pd.DataFrame(X), impute_values=impute_values
|
345
|
-
).values.tolist()
|
346
|
-
elif isinstance(X, pd.DataFrame):
|
347
|
-
X = ONNXTransformer._handle_missing_value_dataframe(
|
348
|
-
X, impute_values=impute_values
|
349
|
-
)
|
350
|
-
elif isinstance(X, pd.Series):
|
351
|
-
X = X.replace(r"^\s*$", np.NaN, regex=True)
|
352
|
-
if len(impute_values.keys()) == 1:
|
353
|
-
for key, val in impute_values.items():
|
354
|
-
X = X.fillna(val)
|
355
|
-
else:
|
356
|
-
raise Exception(
|
357
|
-
"Multiple imputed values are provided, but `X` has only one dim."
|
358
|
-
)
|
359
|
-
else:
|
360
|
-
raise NotImplemented(
|
361
|
-
f"{type(X)} is not supported. Convert `X` to pandas dataframe or numpy array."
|
362
|
-
)
|
363
|
-
return X
|
364
|
-
|
365
|
-
@staticmethod
|
366
|
-
def _handle_missing_value_dataframe(X: pd.DataFrame, impute_values: Dict):
|
367
|
-
for idx, val in impute_values.items():
|
368
|
-
if isinstance(idx, int):
|
369
|
-
X.iloc[:, idx] = (
|
370
|
-
X.iloc[:, idx].replace(r"^\s*$", np.NaN, regex=True).fillna(val)
|
371
|
-
)
|
372
|
-
else:
|
373
|
-
X.loc[:, idx] = (
|
374
|
-
X.loc[:, idx].replace(r"^\s*$", np.NaN, regex=True).fillna(val)
|
375
|
-
)
|
376
|
-
return X
|
377
|
-
|
378
|
-
def fit_transform(
|
379
|
-
self, X: Union[pd.DataFrame, pd.Series], impute_values: Dict = None
|
380
|
-
):
|
381
|
-
"""
|
382
|
-
Fits, then transforms the data
|
383
|
-
Parameters
|
384
|
-
----------
|
385
|
-
X: Union[pandas.DataFrame, pandas.Series]
|
386
|
-
The Dataframe for the training data
|
387
|
-
|
388
|
-
Returns
|
389
|
-
-------
|
390
|
-
Union[pandas.DataFrame, pandas.Series]
|
391
|
-
The transformed X data
|
392
|
-
"""
|
393
|
-
return self.fit(X, impute_values).transform(X)
|
394
|
-
|
395
|
-
def save(self, filename, **kwargs):
|
396
|
-
"""
|
397
|
-
Saves the Onnx model to disk
|
398
|
-
Parameters
|
399
|
-
----------
|
400
|
-
filename: Str
|
401
|
-
The filename location for where the model should be saved
|
402
|
-
|
403
|
-
Returns
|
404
|
-
-------
|
405
|
-
filename: Str
|
406
|
-
The filename where the model was saved
|
407
|
-
"""
|
408
|
-
export_dict = {
|
409
|
-
"impute_values": {
|
410
|
-
"value": self.impute_values,
|
411
|
-
"dtype": str(type(self.impute_values)),
|
412
|
-
},
|
413
|
-
"dtypes": {}
|
414
|
-
if self.dtypes is None
|
415
|
-
else {
|
416
|
-
"value": {
|
417
|
-
"index": list(self.dtypes.index),
|
418
|
-
"values": [str(val) for val in self.dtypes.values],
|
419
|
-
}
|
420
|
-
if isinstance(self.dtypes, pd.Series)
|
421
|
-
else str(self.dtypes),
|
422
|
-
"dtype": str(type(self.dtypes)),
|
423
|
-
},
|
424
|
-
"_fitted": {"value": self._fitted, "dtype": str(type(self._fitted))},
|
425
|
-
}
|
426
|
-
|
427
|
-
with open(filename, "w") as f:
|
428
|
-
json.dump(export_dict, f, sort_keys=True, indent=4, separators=(",", ": "))
|
429
|
-
return filename
|
430
|
-
|
431
|
-
@staticmethod
|
432
|
-
def load(filename, **kwargs):
|
433
|
-
"""
|
434
|
-
Loads the Onnx model to disk
|
435
|
-
Parameters
|
436
|
-
----------
|
437
|
-
filename: Str
|
438
|
-
The filename location for where the model should be loaded
|
439
|
-
|
440
|
-
Returns
|
441
|
-
-------
|
442
|
-
onnx_transformer: ONNXTransformer
|
443
|
-
The loaded model
|
444
|
-
"""
|
445
|
-
# Make sure you have pandas, numpy, and sklearn imported
|
446
|
-
with open(filename, "r") as f:
|
447
|
-
export_dict = json.load(f)
|
448
|
-
|
449
|
-
onnx_transformer = ONNXTransformer()
|
450
|
-
for key in export_dict.keys():
|
451
|
-
if key not in ["impute_values", "dtypes"]:
|
452
|
-
try:
|
453
|
-
setattr(onnx_transformer, key, export_dict[key]["value"])
|
454
|
-
except Exception as e:
|
455
|
-
print(
|
456
|
-
f"Warning: Failed to reload {key} from {filename} to OnnxTransformer."
|
457
|
-
)
|
458
|
-
raise e
|
459
|
-
if "value" in export_dict["dtypes"]:
|
460
|
-
if "index" in export_dict["dtypes"]["value"]:
|
461
|
-
onnx_transformer.dtypes = pd.Series(
|
462
|
-
data=[
|
463
|
-
np.dtype(val)
|
464
|
-
for val in export_dict["dtypes"]["value"]["values"]
|
465
|
-
],
|
466
|
-
index=export_dict["dtypes"]["value"]["index"],
|
467
|
-
)
|
468
|
-
else:
|
469
|
-
onnx_transformer.dtypes = export_dict["dtypes"]["value"]
|
470
|
-
else:
|
471
|
-
onnx_transformer.dtypes = {}
|
472
|
-
onnx_transformer.impute_values = export_dict["impute_values"]["value"]
|
473
|
-
return onnx_transformer
|
@@ -1,185 +0,0 @@
|
|
1
|
-
# score.py {{SCORE_VERSION}} generated by ADS {{ADS_VERSION}} on {{time_created}}
|
2
|
-
import json
|
3
|
-
import os
|
4
|
-
import sys
|
5
|
-
from cloudpickle import cloudpickle
|
6
|
-
from functools import lru_cache
|
7
|
-
from io import StringIO
|
8
|
-
import logging
|
9
|
-
import sys
|
10
|
-
import automl
|
11
|
-
import pandas as pd
|
12
|
-
import numpy as np
|
13
|
-
{% for import in misc_imports %}
|
14
|
-
import {{import}}
|
15
|
-
{% endfor %}
|
16
|
-
|
17
|
-
model_name = '{{model_file_name}}'
|
18
|
-
|
19
|
-
"""
|
20
|
-
Inference script. This script is used for prediction by scoring server when schema is known.
|
21
|
-
"""
|
22
|
-
|
23
|
-
def init_automl_logger():
|
24
|
-
logger = logging.getLogger("automl")
|
25
|
-
handler = logging.StreamHandler(sys.stdout)
|
26
|
-
handler.setLevel(logging.ERROR)
|
27
|
-
formatter = logging.Formatter(
|
28
|
-
"%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
29
|
-
)
|
30
|
-
handler.setFormatter(formatter)
|
31
|
-
logger.addHandler(handler)
|
32
|
-
automl.init(engine="local", engine_opts={"n_jobs": 1}, logger=logger)
|
33
|
-
|
34
|
-
|
35
|
-
@lru_cache(maxsize=10)
|
36
|
-
def load_model(model_file_name=model_name):
|
37
|
-
"""
|
38
|
-
Loads model from the serialized format
|
39
|
-
|
40
|
-
Returns
|
41
|
-
-------
|
42
|
-
model: a model instance on which predict API can be invoked
|
43
|
-
"""
|
44
|
-
init_automl_logger()
|
45
|
-
model_dir = os.path.dirname(os.path.realpath(__file__))
|
46
|
-
if model_dir not in sys.path:
|
47
|
-
sys.path.insert(0, model_dir)
|
48
|
-
contents = os.listdir(model_dir)
|
49
|
-
if model_file_name in contents:
|
50
|
-
print(f'Start loading {model_file_name} from model directory {model_dir} ...')
|
51
|
-
with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), model_file_name), "rb") as file:
|
52
|
-
loaded_model = cloudpickle.load(file)
|
53
|
-
|
54
|
-
print("Model is successfully loaded.")
|
55
|
-
return loaded_model
|
56
|
-
else:
|
57
|
-
raise Exception(f'{model_file_name} is not found in model directory {model_dir}')
|
58
|
-
|
59
|
-
@lru_cache(maxsize=1)
|
60
|
-
def fetch_data_type_from_schema(input_schema_path=os.path.join(os.path.dirname(os.path.realpath(__file__)), "input_schema.json")):
|
61
|
-
"""
|
62
|
-
Returns data type information fetch from input_schema.json.
|
63
|
-
|
64
|
-
Parameters
|
65
|
-
----------
|
66
|
-
input_schema_path: path of input schema.
|
67
|
-
|
68
|
-
Returns
|
69
|
-
-------
|
70
|
-
data_type: data type fetch from input_schema.json.
|
71
|
-
|
72
|
-
"""
|
73
|
-
data_type = {}
|
74
|
-
if os.path.exists(input_schema_path):
|
75
|
-
schema = json.load(open(input_schema_path))
|
76
|
-
for col in schema['schema']:
|
77
|
-
data_type[col['name']] = col['dtype']
|
78
|
-
else:
|
79
|
-
print("input_schema has to be passed in in order to recover the same data type. pass `X_sample` in `ads.model.framework.automl_model.AutoMLModel.prepare` function to generate the input_schema. Otherwise, the data type might be changed after serialization/deserialization.")
|
80
|
-
return data_type
|
81
|
-
|
82
|
-
def deserialize(data, input_schema_path):
|
83
|
-
"""
|
84
|
-
Deserialize json serialization data to data in original type when sent to predict.
|
85
|
-
|
86
|
-
Parameters
|
87
|
-
----------
|
88
|
-
data: serialized input data.
|
89
|
-
input_schema_path: path of input schema.
|
90
|
-
|
91
|
-
Returns
|
92
|
-
-------
|
93
|
-
data: deserialized input data.
|
94
|
-
|
95
|
-
"""
|
96
|
-
{% if data_deserializer == "json" %}
|
97
|
-
if isinstance(data, bytes):
|
98
|
-
return pd.read_json(StringIO(data.decode("utf-8")))
|
99
|
-
|
100
|
-
data_type = data.get('data_type', '') if isinstance(data, dict) else ''
|
101
|
-
json_data = data.get('data', data) if isinstance(data, dict) else data
|
102
|
-
|
103
|
-
if "pandas.core.series.Series" in data_type:
|
104
|
-
return pd.Series(json_data)
|
105
|
-
if "pandas.core.frame.DataFrame" in data_type or isinstance(json_data, str):
|
106
|
-
return pd.read_json(json_data, dtype=fetch_data_type_from_schema(input_schema_path))
|
107
|
-
if isinstance(json_data, dict):
|
108
|
-
return pd.DataFrame.from_dict(json_data)
|
109
|
-
|
110
|
-
return json_data
|
111
|
-
|
112
|
-
{% elif data_deserializer == "cloudpickle" %}
|
113
|
-
import cloudpickle
|
114
|
-
from pickle import UnpicklingError
|
115
|
-
deserialized_data = data
|
116
|
-
try:
|
117
|
-
deserialized_data = cloudpickle.loads(data)
|
118
|
-
except TypeError:
|
119
|
-
pass
|
120
|
-
except UnpicklingError:
|
121
|
-
logger.warning(
|
122
|
-
"bytes are passed directly to the model. If the model expects a specific data format, you need to write the conversion logic in `deserialize()` yourself."
|
123
|
-
)
|
124
|
-
|
125
|
-
return deserialized_data
|
126
|
-
|
127
|
-
{% else %}
|
128
|
-
# Add further data deserialization if needed
|
129
|
-
return data
|
130
|
-
{% endif %}
|
131
|
-
|
132
|
-
def pre_inference(data, input_schema_path):
|
133
|
-
"""
|
134
|
-
Preprocess data
|
135
|
-
|
136
|
-
Parameters
|
137
|
-
----------
|
138
|
-
data: Data format as expected by the predict API of the core estimator.
|
139
|
-
input_schema_path: path of input schema.
|
140
|
-
|
141
|
-
Returns
|
142
|
-
-------
|
143
|
-
data: Data format after any processing.
|
144
|
-
|
145
|
-
"""
|
146
|
-
data = deserialize(data, input_schema_path)
|
147
|
-
return data
|
148
|
-
|
149
|
-
def post_inference(yhat):
|
150
|
-
"""
|
151
|
-
Post-process the model results
|
152
|
-
|
153
|
-
Parameters
|
154
|
-
----------
|
155
|
-
yhat: Data format after calling model.predict.
|
156
|
-
|
157
|
-
Returns
|
158
|
-
-------
|
159
|
-
yhat: Data format after any processing.
|
160
|
-
|
161
|
-
"""
|
162
|
-
return yhat.tolist()
|
163
|
-
|
164
|
-
|
165
|
-
def predict(data, model=load_model(), input_schema_path=os.path.join(os.path.dirname(os.path.realpath(__file__)), "input_schema.json")):
|
166
|
-
"""
|
167
|
-
Returns prediction given the model and data to predict
|
168
|
-
|
169
|
-
Parameters
|
170
|
-
----------
|
171
|
-
model: Model instance returned by load_model API
|
172
|
-
data: Data format as expected by the predict API of the core estimator. For eg. in case of sckit models it could be numpy array/List of list/Pandas DataFrame
|
173
|
-
input_schema_path: path of input schema.
|
174
|
-
|
175
|
-
Returns
|
176
|
-
-------
|
177
|
-
predictions: Output from scoring server
|
178
|
-
Format: {'prediction': output from model.predict method}
|
179
|
-
|
180
|
-
"""
|
181
|
-
features = pre_inference(data, input_schema_path)
|
182
|
-
yhat = post_inference(
|
183
|
-
model.predict(features)
|
184
|
-
)
|
185
|
-
return {'prediction': yhat}
|