sagemaker 2.166.0__tar.gz → 2.167.0__tar.gz
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.
- {sagemaker-2.166.0/src/sagemaker.egg-info → sagemaker-2.167.0}/PKG-INFO +2 -1
- sagemaker-2.167.0/VERSION +1 -0
- sagemaker-2.167.0/requirements/extras/feature-processor_requirements.txt +2 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/extras/test_requirements.txt +2 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/setup.py +3 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/estimator.py +36 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/__init__.py +35 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_config_uploader.py +180 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_constants.py +42 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_data_source.py +88 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_enums.py +23 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_env.py +78 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_event_bridge_scheduler_helper.py +118 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_exceptions.py +18 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_factory.py +151 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_feature_processor_config.py +64 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_input_loader.py +366 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_input_offset_parser.py +127 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_params_loader.py +83 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_spark_factory.py +189 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_udf_arg_provider.py +221 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_udf_output_receiver.py +98 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_udf_wrapper.py +88 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/_validation.py +174 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/feature_processor.py +117 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/feature_scheduler.py +792 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_feature_group_contexts.py +31 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_feature_group_lineage_entity_handler.py +184 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_feature_processor_lineage.py +632 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_feature_processor_lineage_name_helper.py +95 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_lineage_association_handler.py +300 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_pipeline_lineage_entity_handler.py +105 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_pipeline_schedule.py +44 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_pipeline_version_lineage_entity_handler.py +92 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_s3_lineage_entity_handler.py +249 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/_transformation_code.py +31 -0
- sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage/constants.py +43 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/spark.json +30 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/estimator.py +13 -7
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/model.py +13 -7
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/client.py +54 -34
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/job.py +510 -13
- sagemaker-2.167.0/src/sagemaker/remote_function/runtime_environment/spark_app.py +18 -0
- sagemaker-2.167.0/src/sagemaker/remote_function/spark_config.py +62 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/session.py +22 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/spark/processing.py +88 -56
- sagemaker-2.167.0/src/sagemaker/wrangler/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0/src/sagemaker.egg-info}/PKG-INFO +2 -1
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker.egg-info/SOURCES.txt +35 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker.egg-info/requires.txt +8 -0
- sagemaker-2.166.0/VERSION +0 -1
- {sagemaker-2.166.0 → sagemaker-2.167.0}/LICENSE.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/MANIFEST.in +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/README.rst +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/extras/local_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/extras/scipy_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/doc8_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/docstyle_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/flake8_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/mypy_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/pydocstyle_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/pylint_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/spelling_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/requirements/tox/twine_requirements.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/setup.cfg +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/_studio.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/accept_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/algorithm.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/amazon_estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/common.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/factorization_machines.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/hyperparameter.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/ipinsights.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/kmeans.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/knn.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/lda.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/linear_learner.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/ntm.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/object2vec.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/pca.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/randomcutforest.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/record_pb2.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/amazon/validation.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/analytics.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/apiutils/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/apiutils/_base_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/apiutils/_boto_functions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/apiutils/_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/async_inference/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/async_inference/async_inference_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/async_inference/async_inference_response.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/async_inference/waiter_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/automl/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/automl/automl.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/automl/candidate_estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/base_deserializers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/base_predictor.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/base_serializers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/chainer/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/chainer/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/chainer/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/chainer/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/clarify.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/ast_transformer.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/files.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/airflow.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/deprecated_params.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/framework_version.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/image_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/matching.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/modifier.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/parsing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/predictors.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/renamed_params.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/serde.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/tf_legacy_mode.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/tfs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/training_input.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/modifiers/training_params.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/compatibility/v2/sagemaker_upgrade_v2.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/cli/framework_upgrade.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/collection.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/config/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/config/config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/config/config_schema.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/config/config_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/content_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/dataset_definition/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/dataset_definition/inputs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/debugger.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/framework_profile.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/metrics_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/profiler_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/profiler_constants.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/debugger/utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/deprecations.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/deserializers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/djl_inference/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/djl_inference/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/djl_inference/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/drift_check_baselines.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/environment_variables.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/exceptions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_api_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_environment.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_helper.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_metrics.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_run_context.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/experiment.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/run.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/trial.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/experiments/trial_component.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/explainer/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/explainer/clarify_explainer_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/explainer/explainer_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/dataset_builder.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/feature_definition.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/feature_group.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/huggingface/training_compiler → sagemaker-2.167.0/src/sagemaker/feature_store/feature_processor/lineage}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/feature_store.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/feature_store/inputs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/fw_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/git_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/llm_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/processing.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/jumpstart → sagemaker-2.167.0/src/sagemaker/huggingface/training_compiler}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/huggingface/training_compiler/config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/hyperparameters.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/autogluon.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/blazingtext.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/chainer.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/clarify.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/coach-mxnet.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/coach-tensorflow.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/data-wrangler.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/debugger.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/djl-deepspeed.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/djl-fastertransformer.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/djl-neuronx.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/factorization-machines.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/forecasting-deepar.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/huggingface-llm.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/huggingface-neuron.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/huggingface-neuronx.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/huggingface-training-compiler.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/huggingface.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/image-classification-neo.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/image-classification.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/inferentia-mxnet.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/inferentia-pytorch.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/inferentia-tensorflow.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/ipinsights.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/kmeans.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/knn.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/lda.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/linear-learner.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/model-monitor.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/mxnet.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/neo-mxnet.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/neo-pytorch.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/neo-tensorflow.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/ntm.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/object-detection.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/object2vec.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/pca.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/pytorch-neuron.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/pytorch-training-compiler.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/pytorch.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/randomcutforest.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/ray-pytorch.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/ray-tensorflow.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/sagemaker-base-python.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/semantic-segmentation.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/seq2seq.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/sklearn.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/sparkml-serving.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/tensorflow.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/vw.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/xgboost-neo.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uri_config/xgboost.json +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/image_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/inference_recommender/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/inference_recommender/inference_recommender_mixin.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/inputs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/instance_group.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/instance_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/interactive_apps/tensorboard.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/job.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/jumpstart/factory → sagemaker-2.167.0/src/sagemaker/jumpstart}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/accessors.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/environment_variables.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/hyperparameters.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/image_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/incremental_training.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/instance_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/kwargs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/metric_definitions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/model_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/predictors.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/prepack.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/resource_names.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/artifacts/script_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/cache.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/constants.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/enums.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/exceptions.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/pytorch/training_compiler → sagemaker-2.167.0/src/sagemaker/jumpstart/factory}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/factory/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/factory/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/filters.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/notebook_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/parameters.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/jumpstart/validators.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lambda_helper.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/_api_types.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/action.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/artifact.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/association.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/context.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/lineage_trial_component.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/query.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/lineage/visualizer.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/data.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/entities.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/exceptions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/image.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/local_session.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/pipeline.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/local/utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/logs.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/metadata_properties.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/metric_definitions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_card/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_card/evaluation_metric_parsers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_card/helpers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_card/model_card.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_card/schema_constraints.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_metrics.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/clarify_model_monitoring.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/cron_expression_generator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/data_capture_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/dataset_format.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/model_monitoring.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/monitoring_alert.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_monitor/monitoring_files.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/model_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/multidatamodel.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/mxnet/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/mxnet/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/mxnet/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/mxnet/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/mxnet/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/network.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/parameter.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pipeline.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/predictor.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/predictor_async.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/processing.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/remote_function/runtime_environment → sagemaker-2.167.0/src/sagemaker/pytorch/training_compiler}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/pytorch/training_compiler/config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/core/serialization.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/core/stored_function.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/errors.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/invoke_function.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/logging_config.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/tensorflow/training_compiler → sagemaker-2.167.0/src/sagemaker/remote_function/runtime_environment}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/runtime_environment/bootstrap_runtime_environment.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/remote_function/runtime_environment/runtime_environment_manager.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/rl/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/rl/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/s3.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/s3_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/script_uris.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/serializers.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/serverless/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/serverless/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/serverless/predictor.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/serverless/serverless_inference_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/session_settings.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sklearn/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sklearn/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sklearn/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sklearn/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sklearn/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/spark/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/spark/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sparkml/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/sparkml/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/serving.py +0 -0
- {sagemaker-2.166.0/src/sagemaker → sagemaker-2.167.0/src/sagemaker/tensorflow}/training_compiler/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tensorflow/training_compiler/config.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/utilities → sagemaker-2.167.0/src/sagemaker/training_compiler}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/training_compiler/config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/transformer.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/tuner.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/user_agent.py +0 -0
- {sagemaker-2.166.0/src/sagemaker/wrangler → sagemaker-2.167.0/src/sagemaker/utilities}/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/utilities/cache.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/utilities/search_expression.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/vpc_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/_repack_model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/_utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/airflow.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/automl_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/callback_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/check_job_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/clarify_check_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/condition_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/conditions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/emr_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/entities.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/execution_variables.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/fail_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/functions.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/lambda_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/model_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/monitor_batch_transform_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/parallelism_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/parameters.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/pipeline.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/pipeline_context.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/pipeline_experiment_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/properties.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/quality_check_step.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/retry.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/selective_execution_config.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/step_collections.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/steps.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/workflow/utilities.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/wrangler/ingestion.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/wrangler/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/__init__.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/defaults.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/estimator.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/model.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/processing.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker/xgboost/utils.py +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker.egg-info/dependency_links.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker.egg-info/entry_points.txt +0 -0
- {sagemaker-2.166.0 → sagemaker-2.167.0}/src/sagemaker.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sagemaker
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.167.0
|
|
4
4
|
Summary: Open source library for training and deploying models on Amazon SageMaker.
|
|
5
5
|
Home-page: https://github.com/aws/sagemaker-python-sdk/
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -262,5 +262,6 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
262
262
|
Requires-Python: >= 3.6
|
|
263
263
|
Provides-Extra: local
|
|
264
264
|
Provides-Extra: scipy
|
|
265
|
+
Provides-Extra: feature-processor
|
|
265
266
|
Provides-Extra: all
|
|
266
267
|
Provides-Extra: test
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.167.0
|
|
@@ -71,6 +71,9 @@ required_packages = [
|
|
|
71
71
|
extras = {
|
|
72
72
|
"local": read_requirements("requirements/extras/local_requirements.txt"),
|
|
73
73
|
"scipy": read_requirements("requirements/extras/scipy_requirements.txt"),
|
|
74
|
+
"feature-processor": read_requirements(
|
|
75
|
+
"requirements/extras/feature-processor_requirements.txt"
|
|
76
|
+
),
|
|
74
77
|
}
|
|
75
78
|
# Meta dependency groups
|
|
76
79
|
extras["all"] = [item for group in extras.values() for item in group]
|
|
@@ -170,6 +170,8 @@ class EstimatorBase(with_metaclass(ABCMeta, object)): # pylint: disable=too-man
|
|
|
170
170
|
instance_groups: Optional[List[InstanceGroup]] = None,
|
|
171
171
|
training_repository_access_mode: Optional[Union[str, PipelineVariable]] = None,
|
|
172
172
|
training_repository_credentials_provider_arn: Optional[Union[str, PipelineVariable]] = None,
|
|
173
|
+
container_entry_point: Optional[List[str]] = None,
|
|
174
|
+
container_arguments: Optional[List[str]] = None,
|
|
173
175
|
**kwargs,
|
|
174
176
|
):
|
|
175
177
|
"""Initialize an ``EstimatorBase`` instance.
|
|
@@ -523,6 +525,11 @@ class EstimatorBase(with_metaclass(ABCMeta, object)): # pylint: disable=too-man
|
|
|
523
525
|
private Docker registry where your training image is hosted (default: None).
|
|
524
526
|
When it's set to None, SageMaker will not do authentication before pulling the image
|
|
525
527
|
in the private Docker registry.
|
|
528
|
+
container_entry_point (List[str]): Optional. The entrypoint script for a Docker
|
|
529
|
+
container used to run a training job. This script takes precedence over
|
|
530
|
+
the default train processing instructions.
|
|
531
|
+
container_arguments (List[str]): Optional. The arguments for a container used to run
|
|
532
|
+
a training job.
|
|
526
533
|
"""
|
|
527
534
|
instance_count = renamed_kwargs(
|
|
528
535
|
"train_instance_count", "instance_count", instance_count, kwargs
|
|
@@ -647,6 +654,10 @@ class EstimatorBase(with_metaclass(ABCMeta, object)): # pylint: disable=too-man
|
|
|
647
654
|
training_repository_credentials_provider_arn
|
|
648
655
|
)
|
|
649
656
|
|
|
657
|
+
# container entry point / arguments configs
|
|
658
|
+
self.container_entry_point = container_entry_point
|
|
659
|
+
self.container_arguments = container_arguments
|
|
660
|
+
|
|
650
661
|
self.encrypt_inter_container_traffic = resolve_value_from_config(
|
|
651
662
|
direct_input=encrypt_inter_container_traffic,
|
|
652
663
|
config_path=TRAINING_JOB_INTER_CONTAINER_ENCRYPTION_PATH,
|
|
@@ -1786,6 +1797,16 @@ class EstimatorBase(with_metaclass(ABCMeta, object)): # pylint: disable=too-man
|
|
|
1786
1797
|
"MetricsDefinition"
|
|
1787
1798
|
]
|
|
1788
1799
|
|
|
1800
|
+
if "ContainerEntrypoint" in job_details["AlgorithmSpecification"]:
|
|
1801
|
+
init_params["container_entry_point"] = job_details["AlgorithmSpecification"][
|
|
1802
|
+
"ContainerEntrypoint"
|
|
1803
|
+
]
|
|
1804
|
+
|
|
1805
|
+
if "ContainerArguments" in job_details["AlgorithmSpecification"]:
|
|
1806
|
+
init_params["container_arguments"] = job_details["AlgorithmSpecification"][
|
|
1807
|
+
"ContainerArguments"
|
|
1808
|
+
]
|
|
1809
|
+
|
|
1789
1810
|
if "EnableInterContainerTrafficEncryption" in job_details:
|
|
1790
1811
|
init_params["encrypt_inter_container_traffic"] = job_details[
|
|
1791
1812
|
"EnableInterContainerTrafficEncryption"
|
|
@@ -2266,6 +2287,12 @@ class _TrainingJob(_Job):
|
|
|
2266
2287
|
] = estimator.training_repository_credentials_provider_arn
|
|
2267
2288
|
train_args["training_image_config"] = training_image_config
|
|
2268
2289
|
|
|
2290
|
+
if estimator.container_entry_point is not None:
|
|
2291
|
+
train_args["container_entry_point"] = estimator.container_entry_point
|
|
2292
|
+
|
|
2293
|
+
if estimator.container_arguments is not None:
|
|
2294
|
+
train_args["container_arguments"] = estimator.container_arguments
|
|
2295
|
+
|
|
2269
2296
|
# encrypt_inter_container_traffic may be a pipeline variable place holder object
|
|
2270
2297
|
# which is parsed in execution time
|
|
2271
2298
|
# This does not check config because the EstimatorBase constuctor already did that check
|
|
@@ -2472,6 +2499,8 @@ class Estimator(EstimatorBase):
|
|
|
2472
2499
|
instance_groups: Optional[List[InstanceGroup]] = None,
|
|
2473
2500
|
training_repository_access_mode: Optional[Union[str, PipelineVariable]] = None,
|
|
2474
2501
|
training_repository_credentials_provider_arn: Optional[Union[str, PipelineVariable]] = None,
|
|
2502
|
+
container_entry_point: Optional[List[str]] = None,
|
|
2503
|
+
container_arguments: Optional[List[str]] = None,
|
|
2475
2504
|
**kwargs,
|
|
2476
2505
|
):
|
|
2477
2506
|
"""Initialize an ``Estimator`` instance.
|
|
@@ -2824,6 +2853,11 @@ class Estimator(EstimatorBase):
|
|
|
2824
2853
|
private Docker registry where your training image is hosted (default: None).
|
|
2825
2854
|
When it's set to None, SageMaker will not do authentication before pulling the image
|
|
2826
2855
|
in the private Docker registry.
|
|
2856
|
+
container_entry_point (List[str]): Optional. The entrypoint script for a Docker
|
|
2857
|
+
container used to run a training job. This script takes precedence over
|
|
2858
|
+
the default train processing instructions.
|
|
2859
|
+
container_arguments (List[str]): Optional. The arguments for a container used to run
|
|
2860
|
+
a training job.
|
|
2827
2861
|
"""
|
|
2828
2862
|
self.image_uri = image_uri
|
|
2829
2863
|
self._hyperparameters = hyperparameters.copy() if hyperparameters else {}
|
|
@@ -2871,6 +2905,8 @@ class Estimator(EstimatorBase):
|
|
|
2871
2905
|
instance_groups=instance_groups,
|
|
2872
2906
|
training_repository_access_mode=training_repository_access_mode,
|
|
2873
2907
|
training_repository_credentials_provider_arn=training_repository_credentials_provider_arn, # noqa: E501 # pylint: disable=line-too-long
|
|
2908
|
+
container_entry_point=container_entry_point,
|
|
2909
|
+
container_arguments=container_arguments,
|
|
2874
2910
|
**kwargs,
|
|
2875
2911
|
)
|
|
2876
2912
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Exported classes for the sagemaker.feature_store.feature_processor module."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
from sagemaker.feature_store.feature_processor._data_source import ( # noqa: F401
|
|
17
|
+
CSVDataSource,
|
|
18
|
+
FeatureGroupDataSource,
|
|
19
|
+
ParquetDataSource,
|
|
20
|
+
)
|
|
21
|
+
from sagemaker.feature_store.feature_processor._exceptions import ( # noqa: F401
|
|
22
|
+
IngestionError,
|
|
23
|
+
)
|
|
24
|
+
from sagemaker.feature_store.feature_processor.feature_processor import ( # noqa: F401
|
|
25
|
+
feature_processor,
|
|
26
|
+
)
|
|
27
|
+
from sagemaker.feature_store.feature_processor.feature_scheduler import ( # noqa: F401
|
|
28
|
+
to_pipeline,
|
|
29
|
+
schedule,
|
|
30
|
+
describe,
|
|
31
|
+
delete_schedule,
|
|
32
|
+
list_pipelines,
|
|
33
|
+
execute,
|
|
34
|
+
TransformationCode,
|
|
35
|
+
)
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Contains classes for preparing and uploading configs for a scheduled feature processor."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
from typing import Callable, Dict, Tuple, List
|
|
16
|
+
|
|
17
|
+
import attr
|
|
18
|
+
|
|
19
|
+
from sagemaker import Session
|
|
20
|
+
from sagemaker.feature_store.feature_processor._constants import (
|
|
21
|
+
SPARK_JAR_FILES_PATH,
|
|
22
|
+
SPARK_PY_FILES_PATH,
|
|
23
|
+
SPARK_FILES_PATH,
|
|
24
|
+
S3_DATA_DISTRIBUTION_TYPE,
|
|
25
|
+
)
|
|
26
|
+
from sagemaker.inputs import TrainingInput
|
|
27
|
+
from sagemaker.remote_function.core.stored_function import StoredFunction
|
|
28
|
+
from sagemaker.remote_function.job import (
|
|
29
|
+
_prepare_and_upload_dependencies,
|
|
30
|
+
_prepare_and_upload_runtime_scripts,
|
|
31
|
+
_JobSettings,
|
|
32
|
+
RUNTIME_SCRIPTS_CHANNEL_NAME,
|
|
33
|
+
REMOTE_FUNCTION_WORKSPACE,
|
|
34
|
+
SPARK_CONF_WORKSPACE,
|
|
35
|
+
_prepare_and_upload_spark_dependent_files,
|
|
36
|
+
)
|
|
37
|
+
from sagemaker.remote_function.runtime_environment.runtime_environment_manager import (
|
|
38
|
+
RuntimeEnvironmentManager,
|
|
39
|
+
)
|
|
40
|
+
from sagemaker.remote_function.spark_config import SparkConfig
|
|
41
|
+
from sagemaker.s3 import s3_path_join
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@attr.s
|
|
45
|
+
class ConfigUploader:
|
|
46
|
+
"""Prepares and uploads customer provided configs to S3"""
|
|
47
|
+
|
|
48
|
+
remote_decorator_config: _JobSettings = attr.ib()
|
|
49
|
+
runtime_env_manager: RuntimeEnvironmentManager = attr.ib()
|
|
50
|
+
|
|
51
|
+
def prepare_step_input_channel_for_spark_mode(
|
|
52
|
+
self, func: Callable, s3_base_uri: str, sagemaker_session: Session
|
|
53
|
+
) -> Tuple[Dict, Dict]:
|
|
54
|
+
"""Prepares input channels for SageMaker Pipeline Step."""
|
|
55
|
+
self._prepare_and_upload_callable(func, s3_base_uri, sagemaker_session)
|
|
56
|
+
bootstrap_scripts_s3uri = self._prepare_and_upload_runtime_scripts(
|
|
57
|
+
self.remote_decorator_config.spark_config,
|
|
58
|
+
s3_base_uri,
|
|
59
|
+
self.remote_decorator_config.s3_kms_key,
|
|
60
|
+
sagemaker_session,
|
|
61
|
+
)
|
|
62
|
+
dependencies_list_path = self.runtime_env_manager.snapshot(
|
|
63
|
+
self.remote_decorator_config.dependencies
|
|
64
|
+
)
|
|
65
|
+
user_dependencies_s3uri = self._prepare_and_upload_dependencies(
|
|
66
|
+
dependencies_list_path,
|
|
67
|
+
self.remote_decorator_config.include_local_workdir,
|
|
68
|
+
self.remote_decorator_config.pre_execution_commands,
|
|
69
|
+
self.remote_decorator_config.pre_execution_script,
|
|
70
|
+
s3_base_uri,
|
|
71
|
+
self.remote_decorator_config.s3_kms_key,
|
|
72
|
+
sagemaker_session,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
(
|
|
76
|
+
submit_jars_s3_paths,
|
|
77
|
+
submit_py_files_s3_paths,
|
|
78
|
+
submit_files_s3_path,
|
|
79
|
+
config_file_s3_uri,
|
|
80
|
+
) = self._prepare_and_upload_spark_dependent_files(
|
|
81
|
+
self.remote_decorator_config.spark_config,
|
|
82
|
+
s3_base_uri,
|
|
83
|
+
self.remote_decorator_config.s3_kms_key,
|
|
84
|
+
sagemaker_session,
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
input_data_config = {
|
|
88
|
+
RUNTIME_SCRIPTS_CHANNEL_NAME: TrainingInput(
|
|
89
|
+
s3_data=bootstrap_scripts_s3uri,
|
|
90
|
+
s3_data_type="S3Prefix",
|
|
91
|
+
distribution=S3_DATA_DISTRIBUTION_TYPE,
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
if user_dependencies_s3uri:
|
|
95
|
+
input_data_config[REMOTE_FUNCTION_WORKSPACE] = TrainingInput(
|
|
96
|
+
s3_data=s3_path_join(s3_base_uri, REMOTE_FUNCTION_WORKSPACE),
|
|
97
|
+
s3_data_type="S3Prefix",
|
|
98
|
+
distribution=S3_DATA_DISTRIBUTION_TYPE,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
if config_file_s3_uri:
|
|
102
|
+
input_data_config[SPARK_CONF_WORKSPACE] = TrainingInput(
|
|
103
|
+
s3_data=config_file_s3_uri,
|
|
104
|
+
s3_data_type="S3Prefix",
|
|
105
|
+
distribution=S3_DATA_DISTRIBUTION_TYPE,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
return input_data_config, {
|
|
109
|
+
SPARK_JAR_FILES_PATH: submit_jars_s3_paths,
|
|
110
|
+
SPARK_PY_FILES_PATH: submit_py_files_s3_paths,
|
|
111
|
+
SPARK_FILES_PATH: submit_files_s3_path,
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
def _prepare_and_upload_callable(
|
|
115
|
+
self, func: Callable, s3_base_uri: str, sagemaker_session: Session
|
|
116
|
+
) -> None:
|
|
117
|
+
"""Prepares and uploads callable to S3"""
|
|
118
|
+
stored_function = StoredFunction(
|
|
119
|
+
sagemaker_session=sagemaker_session,
|
|
120
|
+
s3_base_uri=s3_base_uri,
|
|
121
|
+
hmac_key=self.remote_decorator_config.environment_variables[
|
|
122
|
+
"REMOTE_FUNCTION_SECRET_KEY"
|
|
123
|
+
],
|
|
124
|
+
s3_kms_key=self.remote_decorator_config.s3_kms_key,
|
|
125
|
+
)
|
|
126
|
+
stored_function.save(func)
|
|
127
|
+
|
|
128
|
+
def _prepare_and_upload_dependencies(
|
|
129
|
+
self,
|
|
130
|
+
local_dependencies_path: str,
|
|
131
|
+
include_local_workdir: bool,
|
|
132
|
+
pre_execution_commands: List[str],
|
|
133
|
+
pre_execution_script_local_path: str,
|
|
134
|
+
s3_base_uri: str,
|
|
135
|
+
s3_kms_key: str,
|
|
136
|
+
sagemaker_session: Session,
|
|
137
|
+
) -> str:
|
|
138
|
+
"""Upload the training step dependencies to S3 if present"""
|
|
139
|
+
return _prepare_and_upload_dependencies(
|
|
140
|
+
local_dependencies_path=local_dependencies_path,
|
|
141
|
+
include_local_workdir=include_local_workdir,
|
|
142
|
+
pre_execution_commands=pre_execution_commands,
|
|
143
|
+
pre_execution_script_local_path=pre_execution_script_local_path,
|
|
144
|
+
s3_base_uri=s3_base_uri,
|
|
145
|
+
s3_kms_key=s3_kms_key,
|
|
146
|
+
sagemaker_session=sagemaker_session,
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
def _prepare_and_upload_runtime_scripts(
|
|
150
|
+
self,
|
|
151
|
+
spark_config: SparkConfig,
|
|
152
|
+
s3_base_uri: str,
|
|
153
|
+
s3_kms_key: str,
|
|
154
|
+
sagemaker_session: Session,
|
|
155
|
+
) -> str:
|
|
156
|
+
"""Copy runtime scripts to a folder and upload to S3"""
|
|
157
|
+
return _prepare_and_upload_runtime_scripts(
|
|
158
|
+
spark_config=spark_config,
|
|
159
|
+
s3_base_uri=s3_base_uri,
|
|
160
|
+
s3_kms_key=s3_kms_key,
|
|
161
|
+
sagemaker_session=sagemaker_session,
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
def _prepare_and_upload_spark_dependent_files(
|
|
165
|
+
self,
|
|
166
|
+
spark_config: SparkConfig,
|
|
167
|
+
s3_base_uri: str,
|
|
168
|
+
s3_kms_key: str,
|
|
169
|
+
sagemaker_session: Session,
|
|
170
|
+
) -> Tuple:
|
|
171
|
+
"""Upload the spark dependencies to S3 if present"""
|
|
172
|
+
if not spark_config:
|
|
173
|
+
return None, None, None, None
|
|
174
|
+
|
|
175
|
+
return _prepare_and_upload_spark_dependent_files(
|
|
176
|
+
spark_config=spark_config,
|
|
177
|
+
s3_base_uri=s3_base_uri,
|
|
178
|
+
s3_kms_key=s3_kms_key,
|
|
179
|
+
sagemaker_session=sagemaker_session,
|
|
180
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Module containing constants for feature_processor and feature_scheduler module."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
from sagemaker.workflow.parameters import Parameter, ParameterTypeEnum
|
|
17
|
+
|
|
18
|
+
DEFAULT_INSTANCE_TYPE = "ml.m5.xlarge"
|
|
19
|
+
DEFAULT_SCHEDULE_STATE = "ENABLED"
|
|
20
|
+
UNDERSCORE = "_"
|
|
21
|
+
RESOURCE_NOT_FOUND_EXCEPTION = "ResourceNotFoundException"
|
|
22
|
+
RESOURCE_NOT_FOUND = "ResourceNotFound"
|
|
23
|
+
EXECUTION_TIME_PIPELINE_PARAMETER = "scheduled_time"
|
|
24
|
+
VALIDATION_EXCEPTION = "ValidationException"
|
|
25
|
+
EVENT_BRIDGE_INVOCATION_TIME = "<aws.scheduler.scheduled-time>"
|
|
26
|
+
SCHEDULED_TIME_PIPELINE_PARAMETER = Parameter(
|
|
27
|
+
name=EXECUTION_TIME_PIPELINE_PARAMETER, parameter_type=ParameterTypeEnum.STRING
|
|
28
|
+
)
|
|
29
|
+
EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT = "%Y-%m-%dT%H:%M:%SZ" # 2023-01-01T07:00:00Z
|
|
30
|
+
NO_FLEXIBLE_TIME_WINDOW = dict(Mode="OFF")
|
|
31
|
+
PIPELINE_NAME_MAXIMUM_LENGTH = 80
|
|
32
|
+
PIPELINE_CONTEXT_TYPE = "FeatureEngineeringPipeline"
|
|
33
|
+
SPARK_JAR_FILES_PATH = "submit_jars_s3_paths"
|
|
34
|
+
SPARK_PY_FILES_PATH = "submit_py_files_s3_paths"
|
|
35
|
+
SPARK_FILES_PATH = "submit_files_s3_path"
|
|
36
|
+
FEATURE_PROCESSOR_TAG_KEY = "sm-fs-fe:created-from"
|
|
37
|
+
FEATURE_PROCESSOR_TAG_VALUE = "fp-to-pipeline"
|
|
38
|
+
FEATURE_GROUP_ARN_REGEX_PATTERN = r"arn:(.*?):sagemaker:(.*?):(.*?):feature-group/(.*?)$"
|
|
39
|
+
SAGEMAKER_WHL_FILE_S3_PATH = "s3://ada-private-beta/sagemaker-2.151.1.dev0-py2.py3-none-any.whl"
|
|
40
|
+
S3_DATA_DISTRIBUTION_TYPE = "FullyReplicated"
|
|
41
|
+
PIPELINE_CONTEXT_NAME_TAG_KEY = "sm-fs-fe:feature-engineering-pipeline-context-name"
|
|
42
|
+
PIPELINE_VERSION_CONTEXT_NAME_TAG_KEY = "sm-fs-fe:feature-engineering-pipeline-version-context-name"
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Contains classes to define input data sources."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
from typing import Optional
|
|
17
|
+
|
|
18
|
+
import attr
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@attr.s
|
|
22
|
+
class FeatureGroupDataSource:
|
|
23
|
+
"""A Feature Group data source definition for a FeatureProcessor.
|
|
24
|
+
|
|
25
|
+
Attributes:
|
|
26
|
+
name (str): The name or ARN of the Feature Group.
|
|
27
|
+
input_start_offset (Optional[str], optional): A duration specified as a string in the
|
|
28
|
+
format '<no> <unit>' where 'no' is a number and 'unit' is a unit of time in ['hours',
|
|
29
|
+
'days', 'weeks', 'months', 'years'] (plural and singluar forms). Inputs contain data
|
|
30
|
+
with event times no earlier than input_start_offset in the past. Offsets are relative
|
|
31
|
+
to the function execution time. If the function is executed by a Schedule, then the
|
|
32
|
+
offset is relative to the scheduled start time. Defaults to None.
|
|
33
|
+
input_end_offset (Optional[str], optional): The 'end' (as opposed to start) counterpart for
|
|
34
|
+
the 'input_start_offset'. Inputs will contain records with event times no later than
|
|
35
|
+
'input_end_offset' in the past. Defaults to None.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
name: str = attr.ib()
|
|
39
|
+
input_start_offset: Optional[str] = attr.ib(default=None)
|
|
40
|
+
input_end_offset: Optional[str] = attr.ib(default=None)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
@attr.s
|
|
44
|
+
class CSVDataSource:
|
|
45
|
+
"""An CSV data source definition for a FeatureProcessor.
|
|
46
|
+
|
|
47
|
+
Attributes:
|
|
48
|
+
s3_uri (str): S3 URI of the data source.
|
|
49
|
+
csv_header (bool): Whether to read the first line of the CSV file as column names. This
|
|
50
|
+
option is only valid when file_format is set to csv. By default the value of this
|
|
51
|
+
option is true, and all column types are assumed to be a string.
|
|
52
|
+
infer_schema (bool): Whether to infer the schema of the CSV data source. This option is only
|
|
53
|
+
valid when file_format is set to csv. If set to true, two passes of the data is required
|
|
54
|
+
to load and infer the schema.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
s3_uri: str = attr.ib()
|
|
58
|
+
csv_header: bool = attr.ib(default=True)
|
|
59
|
+
csv_infer_schema: bool = attr.ib(default=False)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@attr.s
|
|
63
|
+
class ParquetDataSource:
|
|
64
|
+
"""An parquet data source definition for a FeatureProcessor.
|
|
65
|
+
|
|
66
|
+
Attributes:
|
|
67
|
+
s3_uri (str): S3 URI of the data source.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
s3_uri: str = attr.ib()
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@attr.s
|
|
74
|
+
class IcebergTableDataSource:
|
|
75
|
+
"""An iceberg table data source definition for FeatureProcessor
|
|
76
|
+
|
|
77
|
+
Attributes:
|
|
78
|
+
warehouse_s3_uri (str): S3 URI of data warehouse. The value is usually
|
|
79
|
+
the URI where data is stored.
|
|
80
|
+
catalog (str): Name of the catalog.
|
|
81
|
+
database (str): Name of the database.
|
|
82
|
+
table (str): Name of the table.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
warehouse_s3_uri: str = attr.ib()
|
|
86
|
+
catalog: str = attr.ib()
|
|
87
|
+
database: str = attr.ib()
|
|
88
|
+
table: str = attr.ib()
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Module containing Enums for the feature_processor module."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
from enum import Enum
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class FeatureProcessorMode(Enum):
|
|
20
|
+
"""Enum of feature_processor modes."""
|
|
21
|
+
|
|
22
|
+
PYSPARK = "pyspark" # Execute a pyspark job.
|
|
23
|
+
PYTHON = "python" # Execute a regular python script.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
"""Contains class that determines the current execution environment."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
from typing import Dict, Optional
|
|
18
|
+
from datetime import datetime, timezone
|
|
19
|
+
import json
|
|
20
|
+
import logging
|
|
21
|
+
import os
|
|
22
|
+
import attr
|
|
23
|
+
from sagemaker.feature_store.feature_processor._constants import (
|
|
24
|
+
EXECUTION_TIME_PIPELINE_PARAMETER,
|
|
25
|
+
EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
logger = logging.getLogger("sagemaker")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@attr.s
|
|
33
|
+
class EnvironmentHelper:
|
|
34
|
+
"""Helper class to retrieve info from environment.
|
|
35
|
+
|
|
36
|
+
Attributes:
|
|
37
|
+
current_time (datetime): The current datetime.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
current_time = attr.ib(default=datetime.now(timezone.utc))
|
|
41
|
+
|
|
42
|
+
def is_training_job(self) -> bool:
|
|
43
|
+
"""Determine if the current execution environment is inside a SageMaker Training Job"""
|
|
44
|
+
return self.load_training_resource_config() is not None
|
|
45
|
+
|
|
46
|
+
def get_instance_count(self) -> int:
|
|
47
|
+
"""Determine the number of instances for the current execution environment."""
|
|
48
|
+
resource_config = self.load_training_resource_config()
|
|
49
|
+
return len(resource_config["hosts"]) if resource_config else 1
|
|
50
|
+
|
|
51
|
+
def load_training_resource_config(self) -> Optional[Dict]:
|
|
52
|
+
"""Load the contents of resourceconfig.json contents.
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Optional[Dict]: None if not found.
|
|
56
|
+
"""
|
|
57
|
+
SM_TRAINING_CONFIG_FILE_PATH = "/opt/ml/input/config/resourceconfig.json"
|
|
58
|
+
try:
|
|
59
|
+
with open(SM_TRAINING_CONFIG_FILE_PATH, "r") as cfgfile:
|
|
60
|
+
resource_config = json.load(cfgfile)
|
|
61
|
+
logger.debug("Contents of %s: %s", SM_TRAINING_CONFIG_FILE_PATH, resource_config)
|
|
62
|
+
return resource_config
|
|
63
|
+
except FileNotFoundError:
|
|
64
|
+
return None
|
|
65
|
+
|
|
66
|
+
def get_job_scheduled_time(self) -> str:
|
|
67
|
+
"""Get the job scheduled time.
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
str: Timestamp when the job is scheduled.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
scheduled_time = self.current_time.strftime(EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT)
|
|
74
|
+
if self.is_training_job():
|
|
75
|
+
envs = dict(os.environ)
|
|
76
|
+
return envs.get(EXECUTION_TIME_PIPELINE_PARAMETER, scheduled_time)
|
|
77
|
+
|
|
78
|
+
return scheduled_time
|