sagemaker-core 1.0.62__py3-none-any.whl → 2.1.1__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.
- sagemaker/core/__init__.py +16 -0
- sagemaker/core/_studio.py +116 -0
- sagemaker/core/_version.py +11 -0
- sagemaker/core/accept_types.py +131 -0
- sagemaker/core/analytics.py +744 -0
- sagemaker/core/apiutils/__init__.py +13 -0
- sagemaker/core/apiutils/_base_types.py +228 -0
- sagemaker/core/apiutils/_boto_functions.py +130 -0
- sagemaker/core/apiutils/_utils.py +34 -0
- sagemaker/core/base_deserializers.py +35 -0
- sagemaker/core/base_serializers.py +35 -0
- sagemaker/core/clarify/__init__.py +2898 -0
- sagemaker/core/collection.py +467 -0
- sagemaker/core/common_utils.py +2281 -0
- sagemaker/core/compute_resource_requirements/__init__.py +18 -0
- sagemaker/core/compute_resource_requirements/resource_requirements.py +94 -0
- sagemaker/core/config/__init__.py +181 -0
- sagemaker/core/config/config.py +238 -0
- sagemaker/core/config/config_manager.py +595 -0
- sagemaker/core/config/config_schema.py +1220 -0
- sagemaker/core/config/config_utils.py +297 -0
- {sagemaker_core/main → sagemaker/core}/config_schema.py +408 -3
- sagemaker/core/constants.py +73 -0
- sagemaker/core/content_types.py +137 -0
- sagemaker/core/debugger/__init__.py +39 -0
- sagemaker/core/debugger/debugger.py +945 -0
- sagemaker/core/debugger/framework_profile.py +292 -0
- sagemaker/core/debugger/metrics_config.py +468 -0
- sagemaker/core/debugger/profiler.py +42 -0
- sagemaker/core/debugger/profiler_config.py +190 -0
- sagemaker/core/debugger/profiler_constants.py +40 -0
- sagemaker/core/debugger/utils.py +148 -0
- sagemaker/core/deprecations.py +254 -0
- sagemaker/core/deserializers/__init__.py +10 -0
- sagemaker/core/deserializers/base.py +424 -0
- sagemaker/core/deserializers/implementations.py +157 -0
- sagemaker/core/drift_check_baselines.py +106 -0
- sagemaker/core/enums.py +51 -0
- sagemaker/core/environment_variables.py +101 -0
- sagemaker/core/exceptions.py +108 -0
- sagemaker/core/experiments/__init__.py +53 -0
- sagemaker/core/experiments/_api_types.py +251 -0
- sagemaker/core/experiments/_environment.py +124 -0
- sagemaker/core/experiments/_helper.py +294 -0
- sagemaker/core/experiments/_metrics.py +333 -0
- sagemaker/core/experiments/_run_context.py +58 -0
- sagemaker/core/experiments/_utils.py +216 -0
- sagemaker/core/experiments/experiment.py +244 -0
- sagemaker/core/experiments/run.py +970 -0
- sagemaker/core/experiments/trial.py +296 -0
- sagemaker/core/experiments/trial_component.py +387 -0
- sagemaker/core/explainer/__init__.py +24 -0
- sagemaker/core/explainer/clarify_explainer_config.py +298 -0
- sagemaker/core/explainer/explainer_config.py +44 -0
- sagemaker/core/fw_utils.py +1176 -0
- sagemaker/core/git_utils.py +349 -0
- sagemaker/core/helper/pipeline_variable.py +82 -0
- sagemaker/core/helper/session_helper.py +2965 -0
- sagemaker/core/huggingface/__init__.py +29 -0
- sagemaker/core/huggingface/llm_utils.py +150 -0
- sagemaker/core/huggingface/processing.py +139 -0
- sagemaker/core/huggingface/training_compiler/config.py +167 -0
- sagemaker/core/hyperparameters.py +172 -0
- sagemaker/core/image_retriever/__init__.py +3 -0
- sagemaker/core/image_retriever/image_retriever.py +640 -0
- sagemaker/core/image_retriever/image_retriever_utils.py +511 -0
- sagemaker/core/image_retriever/test.py +7 -0
- sagemaker/core/image_uri_config/__init__.py +13 -0
- sagemaker/core/image_uri_config/autogluon.json +1335 -0
- sagemaker/core/image_uri_config/blazingtext.json +50 -0
- sagemaker/core/image_uri_config/chainer.json +104 -0
- sagemaker/core/image_uri_config/clarify.json +39 -0
- sagemaker/core/image_uri_config/coach-mxnet.json +70 -0
- sagemaker/core/image_uri_config/coach-tensorflow.json +186 -0
- sagemaker/core/image_uri_config/data-wrangler.json +91 -0
- sagemaker/core/image_uri_config/debugger.json +34 -0
- sagemaker/core/image_uri_config/detailed-profiler.json +18 -0
- sagemaker/core/image_uri_config/djl-deepspeed.json +385 -0
- sagemaker/core/image_uri_config/djl-fastertransformer.json +167 -0
- sagemaker/core/image_uri_config/djl-lmi.json +136 -0
- sagemaker/core/image_uri_config/djl-neuronx.json +258 -0
- sagemaker/core/image_uri_config/djl-tensorrtllm.json +262 -0
- sagemaker/core/image_uri_config/factorization-machines.json +50 -0
- sagemaker/core/image_uri_config/forecasting-deepar.json +50 -0
- sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +660 -0
- sagemaker/core/image_uri_config/huggingface-llm.json +1158 -0
- sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
- sagemaker/core/image_uri_config/huggingface-neuronx.json +510 -0
- sagemaker/core/image_uri_config/huggingface-tei-cpu.json +298 -0
- sagemaker/core/image_uri_config/huggingface-tei.json +298 -0
- sagemaker/core/image_uri_config/huggingface-training-compiler.json +195 -0
- sagemaker/core/image_uri_config/huggingface.json +2138 -0
- sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +52 -0
- sagemaker/core/image_uri_config/image-classification-neo.json +43 -0
- sagemaker/core/image_uri_config/image-classification.json +50 -0
- sagemaker/core/image_uri_config/inferentia-mxnet.json +88 -0
- sagemaker/core/image_uri_config/inferentia-pytorch.json +127 -0
- sagemaker/core/image_uri_config/inferentia-tensorflow.json +88 -0
- sagemaker/core/image_uri_config/instance_gpu_info.json +782 -0
- sagemaker/core/image_uri_config/ipinsights.json +50 -0
- sagemaker/core/image_uri_config/kmeans.json +50 -0
- sagemaker/core/image_uri_config/knn.json +50 -0
- sagemaker/core/image_uri_config/lda.json +26 -0
- sagemaker/core/image_uri_config/linear-learner.json +50 -0
- sagemaker/core/image_uri_config/model-monitor.json +42 -0
- sagemaker/core/image_uri_config/mxnet.json +1154 -0
- sagemaker/core/image_uri_config/neo-mxnet.json +64 -0
- sagemaker/core/image_uri_config/neo-pytorch.json +341 -0
- sagemaker/core/image_uri_config/neo-tensorflow.json +109 -0
- sagemaker/core/image_uri_config/ntm.json +50 -0
- sagemaker/core/image_uri_config/object-detection.json +50 -0
- sagemaker/core/image_uri_config/object2vec.json +50 -0
- sagemaker/core/image_uri_config/pca.json +50 -0
- sagemaker/core/image_uri_config/pytorch-neuron.json +43 -0
- sagemaker/core/image_uri_config/pytorch-smp.json +218 -0
- sagemaker/core/image_uri_config/pytorch-training-compiler.json +80 -0
- sagemaker/core/image_uri_config/pytorch.json +3101 -0
- sagemaker/core/image_uri_config/randomcutforest.json +50 -0
- sagemaker/core/image_uri_config/ray-pytorch.json +46 -0
- sagemaker/core/image_uri_config/ray-tensorflow.json +194 -0
- sagemaker/core/image_uri_config/sagemaker-base-python.json +46 -0
- sagemaker/core/image_uri_config/sagemaker-distribution.json +37 -0
- sagemaker/core/image_uri_config/sagemaker-geospatial.json +13 -0
- sagemaker/core/image_uri_config/sagemaker-tritonserver.json +212 -0
- sagemaker/core/image_uri_config/semantic-segmentation.json +50 -0
- sagemaker/core/image_uri_config/seq2seq.json +50 -0
- sagemaker/core/image_uri_config/sklearn.json +446 -0
- sagemaker/core/image_uri_config/spark.json +280 -0
- sagemaker/core/image_uri_config/sparkml-serving.json +97 -0
- sagemaker/core/image_uri_config/stabilityai.json +53 -0
- sagemaker/core/image_uri_config/tensorflow.json +5086 -0
- sagemaker/core/image_uri_config/vw.json +25 -0
- sagemaker/core/image_uri_config/xgboost-neo.json +43 -0
- sagemaker/core/image_uri_config/xgboost.json +888 -0
- sagemaker/core/image_uris.py +810 -0
- sagemaker/core/inference_config.py +144 -0
- sagemaker/core/inference_recommender/__init__.py +18 -0
- sagemaker/core/inference_recommender/inference_recommender_mixin.py +622 -0
- sagemaker/core/inputs.py +366 -0
- sagemaker/core/instance_group.py +61 -0
- sagemaker/core/instance_types.py +164 -0
- sagemaker/core/instance_types_gpu_info.py +43 -0
- sagemaker/core/interactive_apps/__init__.py +41 -0
- sagemaker/core/interactive_apps/base_interactive_app.py +204 -0
- sagemaker/core/interactive_apps/detail_profiler_app.py +139 -0
- sagemaker/core/interactive_apps/tensorboard.py +149 -0
- sagemaker/core/iterators.py +186 -0
- sagemaker/core/job.py +380 -0
- sagemaker/core/jumpstart/__init__.py +156 -0
- sagemaker/core/jumpstart/accessors.py +390 -0
- sagemaker/core/jumpstart/artifacts/__init__.py +69 -0
- sagemaker/core/jumpstart/artifacts/environment_variables.py +252 -0
- sagemaker/core/jumpstart/artifacts/hyperparameters.py +120 -0
- sagemaker/core/jumpstart/artifacts/image_uris.py +139 -0
- sagemaker/core/jumpstart/artifacts/incremental_training.py +87 -0
- sagemaker/core/jumpstart/artifacts/instance_types.py +223 -0
- sagemaker/core/jumpstart/artifacts/kwargs.py +289 -0
- sagemaker/core/jumpstart/artifacts/metric_definitions.py +117 -0
- sagemaker/core/jumpstart/artifacts/model_packages.py +202 -0
- sagemaker/core/jumpstart/artifacts/model_uris.py +252 -0
- sagemaker/core/jumpstart/artifacts/payloads.py +96 -0
- sagemaker/core/jumpstart/artifacts/predictors.py +540 -0
- sagemaker/core/jumpstart/artifacts/resource_names.py +86 -0
- sagemaker/core/jumpstart/artifacts/resource_requirements.py +162 -0
- sagemaker/core/jumpstart/artifacts/script_uris.py +172 -0
- sagemaker/core/jumpstart/cache.py +663 -0
- sagemaker/core/jumpstart/configs.py +50 -0
- sagemaker/core/jumpstart/constants.py +198 -0
- sagemaker/core/jumpstart/deserializers.py +81 -0
- sagemaker/core/jumpstart/document.py +76 -0
- sagemaker/core/jumpstart/enums.py +168 -0
- sagemaker/core/jumpstart/exceptions.py +236 -0
- sagemaker/core/jumpstart/factory/utils.py +833 -0
- sagemaker/core/jumpstart/filters.py +597 -0
- sagemaker/core/jumpstart/hub/constants.py +16 -0
- sagemaker/core/jumpstart/hub/hub.py +291 -0
- sagemaker/core/jumpstart/hub/interfaces.py +936 -0
- sagemaker/core/jumpstart/hub/parser_utils.py +70 -0
- sagemaker/core/jumpstart/hub/parsers.py +288 -0
- sagemaker/core/jumpstart/hub/types.py +35 -0
- sagemaker/core/jumpstart/hub/utils.py +260 -0
- sagemaker/core/jumpstart/models.py +499 -0
- sagemaker/core/jumpstart/notebook_utils.py +575 -0
- sagemaker/core/jumpstart/parameters.py +20 -0
- sagemaker/core/jumpstart/payload_utils.py +239 -0
- sagemaker/core/jumpstart/region_config.json +163 -0
- sagemaker/core/jumpstart/search.py +171 -0
- sagemaker/core/jumpstart/serializers.py +81 -0
- sagemaker/core/jumpstart/session_utils.py +234 -0
- sagemaker/core/jumpstart/types.py +3044 -0
- sagemaker/core/jumpstart/utils.py +1731 -0
- sagemaker/core/jumpstart/validators.py +257 -0
- sagemaker/core/lambda_helper.py +312 -0
- sagemaker/core/lineage/__init__.py +42 -0
- sagemaker/core/lineage/_api_types.py +239 -0
- sagemaker/core/lineage/_utils.py +49 -0
- sagemaker/core/lineage/action.py +345 -0
- sagemaker/core/lineage/artifact.py +646 -0
- sagemaker/core/lineage/association.py +190 -0
- sagemaker/core/lineage/context.py +505 -0
- sagemaker/core/lineage/lineage_trial_component.py +191 -0
- sagemaker/core/lineage/query.py +732 -0
- sagemaker/core/lineage/visualizer.py +346 -0
- sagemaker/core/local/__init__.py +18 -0
- sagemaker/core/local/data.py +413 -0
- sagemaker/core/local/entities.py +678 -0
- sagemaker/core/local/exceptions.py +17 -0
- sagemaker/core/local/image.py +1243 -0
- sagemaker/core/local/local_session.py +739 -0
- sagemaker/core/local/utils.py +245 -0
- sagemaker/core/logs.py +181 -0
- sagemaker/core/metadata_properties.py +56 -0
- sagemaker/core/metric_definitions.py +91 -0
- sagemaker/core/mlflow/__init__.py +38 -0
- sagemaker/core/mlflow/forward_sagemaker_metrics.py +44 -0
- sagemaker/core/model_card/__init__.py +26 -0
- sagemaker/core/model_life_cycle.py +51 -0
- sagemaker/core/model_metrics.py +160 -0
- sagemaker/core/model_monitor/__init__.py +66 -0
- sagemaker/core/model_monitor/clarify_model_monitoring.py +1495 -0
- sagemaker/core/model_monitor/cron_expression_generator.py +82 -0
- sagemaker/core/model_monitor/data_capture_config.py +115 -0
- sagemaker/core/model_monitor/data_quality_monitoring_config.py +66 -0
- sagemaker/core/model_monitor/dataset_format.py +102 -0
- sagemaker/core/model_monitor/model_monitoring.py +4266 -0
- sagemaker/core/model_monitor/monitoring_alert.py +76 -0
- sagemaker/core/model_monitor/monitoring_files.py +506 -0
- sagemaker/core/model_monitor/utils.py +793 -0
- sagemaker/core/model_registry.py +480 -0
- sagemaker/core/model_uris.py +97 -0
- sagemaker/core/modules/__init__.py +19 -0
- sagemaker/core/modules/configs.py +226 -0
- sagemaker/core/modules/constants.py +37 -0
- sagemaker/core/modules/distributed.py +182 -0
- sagemaker/core/modules/local_core/__init__.py +0 -0
- sagemaker/core/modules/local_core/local_container.py +605 -0
- sagemaker/core/modules/templates.py +83 -0
- sagemaker/core/modules/train/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/common/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/common/utils.py +213 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +81 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +123 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +302 -0
- sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +129 -0
- sagemaker/core/modules/train/container_drivers/scripts/__init__.py +14 -0
- sagemaker/core/modules/train/container_drivers/scripts/environment.py +305 -0
- sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
- sagemaker/core/modules/train/sm_recipes/utils.py +330 -0
- sagemaker/core/modules/types.py +19 -0
- sagemaker/core/modules/utils.py +194 -0
- sagemaker/core/network.py +185 -0
- sagemaker/core/parameter.py +173 -0
- sagemaker/core/payloads.py +185 -0
- sagemaker/core/processing.py +1597 -0
- sagemaker/core/remote_function/__init__.py +19 -0
- sagemaker/core/remote_function/checkpoint_location.py +47 -0
- sagemaker/core/remote_function/client.py +1285 -0
- sagemaker/core/remote_function/core/__init__.py +0 -0
- sagemaker/core/remote_function/core/_custom_dispatch_table.py +72 -0
- sagemaker/core/remote_function/core/pipeline_variables.py +353 -0
- sagemaker/core/remote_function/core/serialization.py +422 -0
- sagemaker/core/remote_function/core/stored_function.py +226 -0
- sagemaker/core/remote_function/custom_file_filter.py +128 -0
- sagemaker/core/remote_function/errors.py +104 -0
- sagemaker/core/remote_function/invoke_function.py +172 -0
- sagemaker/core/remote_function/job.py +2140 -0
- sagemaker/core/remote_function/logging_config.py +38 -0
- sagemaker/core/remote_function/runtime_environment/__init__.py +14 -0
- sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +605 -0
- sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +252 -0
- sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +554 -0
- sagemaker/core/remote_function/runtime_environment/spark_app.py +18 -0
- sagemaker/core/remote_function/spark_config.py +149 -0
- sagemaker/core/resource_requirements.py +168 -0
- {sagemaker_core/main → sagemaker/core}/resources.py +19098 -10895
- sagemaker/core/s3/__init__.py +41 -0
- sagemaker/core/s3/client.py +367 -0
- sagemaker/core/s3/utils.py +175 -0
- sagemaker/core/script_uris.py +93 -0
- sagemaker/core/serializers/__init__.py +11 -0
- sagemaker/core/serializers/base.py +510 -0
- sagemaker/core/serializers/implementations.py +159 -0
- sagemaker/core/serializers/utils.py +223 -0
- sagemaker/core/serverless_inference_config.py +63 -0
- sagemaker/core/session_settings.py +55 -0
- sagemaker/core/shapes/__init__.py +3 -0
- sagemaker/core/shapes/model_card_shapes.py +159 -0
- {sagemaker_core/main → sagemaker/core/shapes}/shapes.py +5810 -1806
- sagemaker/core/spark/__init__.py +16 -0
- sagemaker/core/spark/defaults.py +16 -0
- sagemaker/core/spark/processing.py +1380 -0
- sagemaker/core/telemetry/__init__.py +23 -0
- sagemaker/core/telemetry/constants.py +84 -0
- sagemaker/core/telemetry/telemetry_logging.py +284 -0
- sagemaker/core/tools/__init__.py +1 -0
- {sagemaker_core → sagemaker/core}/tools/codegen.py +4 -4
- {sagemaker_core → sagemaker/core}/tools/constants.py +23 -15
- {sagemaker_core → sagemaker/core}/tools/data_extractor.py +1 -1
- {sagemaker_core → sagemaker/core}/tools/method.py +1 -1
- sagemaker/core/tools/model_card/generate_model_card_from_schema.py +562 -0
- {sagemaker_core → sagemaker/core}/tools/resources_codegen.py +165 -98
- {sagemaker_core → sagemaker/core}/tools/resources_extractor.py +5 -13
- {sagemaker_core → sagemaker/core}/tools/shapes_codegen.py +16 -17
- {sagemaker_core → sagemaker/core}/tools/shapes_extractor.py +29 -67
- {sagemaker_core → sagemaker/core}/tools/templates.py +39 -17
- sagemaker/core/training/__init__.py +14 -0
- sagemaker/core/training/configs.py +333 -0
- sagemaker/core/training/constants.py +37 -0
- sagemaker/core/training/utils.py +77 -0
- sagemaker/core/training_compiler/__init__.py +16 -0
- sagemaker/core/training_compiler/config.py +197 -0
- sagemaker/core/training_compiler_config.py +197 -0
- sagemaker/core/transformer.py +793 -0
- sagemaker/core/user_agent.py +76 -0
- sagemaker/core/utilities/__init__.py +24 -0
- sagemaker/core/utilities/cache.py +169 -0
- sagemaker/core/utilities/search_expression.py +133 -0
- sagemaker/core/utils/__init__.py +48 -0
- sagemaker/core/utils/code_injection/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/codec.py +2 -2
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/shape_dag.py +5979 -176
- {sagemaker_core/main → sagemaker/core/utils}/exceptions.py +8 -8
- sagemaker_core/main/default_configs_helper.py → sagemaker/core/utils/intelligent_defaults_helper.py +5 -6
- {sagemaker_core/main → sagemaker/core/utils}/logs.py +1 -2
- {sagemaker_core/main → sagemaker/core/utils}/utils.py +27 -22
- sagemaker/core/workflow/__init__.py +152 -0
- sagemaker/core/workflow/conditions.py +313 -0
- sagemaker/core/workflow/entities.py +58 -0
- sagemaker/core/workflow/execution_variables.py +89 -0
- sagemaker/core/workflow/functions.py +193 -0
- sagemaker/core/workflow/parameters.py +222 -0
- sagemaker/core/workflow/pipeline_context.py +394 -0
- sagemaker/core/workflow/pipeline_definition_config.py +31 -0
- sagemaker/core/workflow/properties.py +285 -0
- sagemaker/core/workflow/step_outputs.py +65 -0
- sagemaker/core/workflow/utilities.py +507 -0
- sagemaker/lineage/__init__.py +33 -0
- sagemaker/lineage/action.py +28 -0
- sagemaker/lineage/artifact.py +28 -0
- sagemaker/lineage/context.py +28 -0
- sagemaker/lineage/lineage_trial_component.py +28 -0
- {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/METADATA +28 -9
- sagemaker_core-2.1.1.dist-info/RECORD +355 -0
- sagemaker_core-2.1.1.dist-info/top_level.txt +1 -0
- sagemaker_core/_version.py +0 -3
- sagemaker_core/helper/session_helper.py +0 -769
- sagemaker_core/resources/__init__.py +0 -1
- sagemaker_core/shapes/__init__.py +0 -1
- sagemaker_core/tools/__init__.py +0 -1
- sagemaker_core-1.0.62.dist-info/RECORD +0 -35
- sagemaker_core-1.0.62.dist-info/top_level.txt +0 -1
- {sagemaker_core → sagemaker/core/helper}/__init__.py +0 -0
- {sagemaker_core/helper → sagemaker/core/huggingface/training_compiler}/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/jumpstart/factory}/__init__.py +0 -0
- {sagemaker_core/main/code_injection → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/base.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/code_injection/constants.py +0 -0
- {sagemaker_core/main → sagemaker/core/utils}/user_agent.py +0 -0
- {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/WHEEL +0 -0
- {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
"""This module contains code related to the CronExpressionGenerator class.
|
|
14
|
+
|
|
15
|
+
Codes are used for generating cron expressions compatible with Amazon SageMaker Model
|
|
16
|
+
Monitoring Schedules.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import print_function, absolute_import
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class CronExpressionGenerator(object):
|
|
22
|
+
"""Generates cron expression strings for the SageMaker Model Monitoring Schedule API."""
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def hourly():
|
|
26
|
+
"""Generates hourly cron expression that denotes that a job runs at the top of every hour.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
str: The cron expression format accepted by the Amazon SageMaker Model Monitoring
|
|
30
|
+
Schedule API.
|
|
31
|
+
|
|
32
|
+
"""
|
|
33
|
+
return "cron(0 * ? * * *)"
|
|
34
|
+
|
|
35
|
+
@staticmethod
|
|
36
|
+
def daily(hour=0):
|
|
37
|
+
"""Generates daily cron expression that denotes that a job runs at the top of every hour.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
hour (int): The hour in HH24 format (UTC) to run the job at, on a daily schedule.
|
|
41
|
+
Examples:
|
|
42
|
+
- 00
|
|
43
|
+
- 12
|
|
44
|
+
- 17
|
|
45
|
+
- 23
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
str: The cron expression format accepted by the Amazon SageMaker Model Monitoring
|
|
49
|
+
Schedule API.
|
|
50
|
+
|
|
51
|
+
"""
|
|
52
|
+
return "cron(0 {} ? * * *)".format(hour)
|
|
53
|
+
|
|
54
|
+
@staticmethod
|
|
55
|
+
def daily_every_x_hours(hour_interval, starting_hour=0):
|
|
56
|
+
"""Generates "daily every x hours" cron expression.
|
|
57
|
+
|
|
58
|
+
That denotes that a job runs every day at the specified hour, and then every x hours,
|
|
59
|
+
as specified in hour_interval.
|
|
60
|
+
|
|
61
|
+
Example:
|
|
62
|
+
>>> daily_every_x_hours(hour_interval=2, starting_hour=0)
|
|
63
|
+
This will run every 2 hours starting at midnight.
|
|
64
|
+
|
|
65
|
+
>>> daily_every_x_hours(hour_interval=10, starting_hour=0)
|
|
66
|
+
This will run at midnight, 10am, and 8pm every day.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
hour_interval (int): The hour interval to run the job at.
|
|
70
|
+
starting_hour (int): The hour at which to begin in HH24 format (UTC).
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
str: The cron expression format accepted by the Amazon SageMaker Model Monitoring
|
|
74
|
+
Schedule API.
|
|
75
|
+
|
|
76
|
+
"""
|
|
77
|
+
return "cron(0 {}/{} ? * * *)".format(starting_hour, hour_interval)
|
|
78
|
+
|
|
79
|
+
@staticmethod
|
|
80
|
+
def now():
|
|
81
|
+
"""Returns the string used to depict the one-time schedule"""
|
|
82
|
+
return "NOW"
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
"""This module contains code related to the DataCaptureConfig class.
|
|
14
|
+
|
|
15
|
+
Codes are used for configuring capture, collection, and storage, for prediction requests and
|
|
16
|
+
responses for models hosted on SageMaker Endpoints.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import print_function, absolute_import
|
|
19
|
+
|
|
20
|
+
from sagemaker.core import s3
|
|
21
|
+
from sagemaker.core.config.config_schema import ENDPOINT_CONFIG_DATA_CAPTURE_KMS_KEY_ID_PATH
|
|
22
|
+
from sagemaker.core.helper.session_helper import Session
|
|
23
|
+
from sagemaker.core.common_utils import resolve_value_from_config
|
|
24
|
+
|
|
25
|
+
_MODEL_MONITOR_S3_PATH = "model-monitor"
|
|
26
|
+
_DATA_CAPTURE_S3_PATH = "data-capture"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class DataCaptureConfig(object):
|
|
30
|
+
"""Configuration object passed in when deploying models to Amazon SageMaker Endpoints.
|
|
31
|
+
|
|
32
|
+
This object specifies configuration related to endpoint data capture for use with
|
|
33
|
+
Amazon SageMaker Model Monitoring.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
API_MAPPING = {"REQUEST": "Input", "RESPONSE": "Output"}
|
|
37
|
+
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
enable_capture,
|
|
41
|
+
sampling_percentage=20,
|
|
42
|
+
destination_s3_uri=None,
|
|
43
|
+
kms_key_id=None,
|
|
44
|
+
capture_options=None,
|
|
45
|
+
csv_content_types=None,
|
|
46
|
+
json_content_types=None,
|
|
47
|
+
sagemaker_session=None,
|
|
48
|
+
):
|
|
49
|
+
"""Initialize a DataCaptureConfig object for capturing data from Amazon SageMaker Endpoints.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
enable_capture (bool): Required. Whether data capture should be enabled or not.
|
|
53
|
+
sampling_percentage (int): Optional. Default=20. The percentage of data to sample.
|
|
54
|
+
Must be between 0 and 100.
|
|
55
|
+
destination_s3_uri (str): Optional. Defaults to "s3://<default-session-bucket>/
|
|
56
|
+
model-monitor/data-capture".
|
|
57
|
+
kms_key_id (str): Optional. Default=None. The kms key to use when writing to S3.
|
|
58
|
+
capture_options ([str]): Optional. Must be a list containing any combination of the
|
|
59
|
+
following values: "REQUEST", "RESPONSE". Default=["REQUEST", "RESPONSE"]. Denotes
|
|
60
|
+
which data to capture between request and response.
|
|
61
|
+
csv_content_types ([str]): Optional. Default=["text/csv"].
|
|
62
|
+
json_content_types([str]): Optional. Default=["application/json"].
|
|
63
|
+
sagemaker_session (sagemaker.core.helper.session.Session): A SageMaker Session
|
|
64
|
+
object, used for SageMaker interactions (default: None). If not
|
|
65
|
+
specified, one is created using the default AWS configuration
|
|
66
|
+
chain.
|
|
67
|
+
"""
|
|
68
|
+
self.enable_capture = enable_capture
|
|
69
|
+
self.sampling_percentage = sampling_percentage
|
|
70
|
+
self.destination_s3_uri = destination_s3_uri
|
|
71
|
+
sagemaker_session = sagemaker_session or Session()
|
|
72
|
+
if self.destination_s3_uri is None:
|
|
73
|
+
self.destination_s3_uri = s3.s3_path_join(
|
|
74
|
+
"s3://",
|
|
75
|
+
sagemaker_session.default_bucket(),
|
|
76
|
+
sagemaker_session.default_bucket_prefix,
|
|
77
|
+
_MODEL_MONITOR_S3_PATH,
|
|
78
|
+
_DATA_CAPTURE_S3_PATH,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
self.kms_key_id = resolve_value_from_config(
|
|
82
|
+
kms_key_id,
|
|
83
|
+
ENDPOINT_CONFIG_DATA_CAPTURE_KMS_KEY_ID_PATH,
|
|
84
|
+
sagemaker_session=sagemaker_session,
|
|
85
|
+
)
|
|
86
|
+
self.capture_options = capture_options or ["REQUEST", "RESPONSE"]
|
|
87
|
+
self.csv_content_types = csv_content_types or ["text/csv"]
|
|
88
|
+
self.json_content_types = json_content_types or ["application/json"]
|
|
89
|
+
|
|
90
|
+
def _to_request_dict(self):
|
|
91
|
+
"""Generates a request dictionary using the parameters provided to the class."""
|
|
92
|
+
request_dict = {
|
|
93
|
+
"EnableCapture": self.enable_capture,
|
|
94
|
+
"InitialSamplingPercentage": self.sampling_percentage,
|
|
95
|
+
"DestinationS3Uri": self.destination_s3_uri,
|
|
96
|
+
"CaptureOptions": [
|
|
97
|
+
# Convert to API values or pass value directly through if unable to convert.
|
|
98
|
+
{"CaptureMode": self.API_MAPPING.get(capture_option.upper(), capture_option)}
|
|
99
|
+
for capture_option in self.capture_options
|
|
100
|
+
],
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if self.kms_key_id is not None:
|
|
104
|
+
request_dict["KmsKeyId"] = self.kms_key_id
|
|
105
|
+
|
|
106
|
+
if self.csv_content_types is not None or self.json_content_types is not None:
|
|
107
|
+
request_dict["CaptureContentTypeHeader"] = {}
|
|
108
|
+
|
|
109
|
+
if self.csv_content_types is not None:
|
|
110
|
+
request_dict["CaptureContentTypeHeader"]["CsvContentTypes"] = self.csv_content_types
|
|
111
|
+
|
|
112
|
+
if self.json_content_types is not None:
|
|
113
|
+
request_dict["CaptureContentTypeHeader"]["JsonContentTypes"] = self.json_content_types
|
|
114
|
+
|
|
115
|
+
return request_dict
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
"""This module contains code related to the MonitoringConfig of constraints file.
|
|
14
|
+
|
|
15
|
+
Code is used to represent the Monitoring Config object and its parameters suggested
|
|
16
|
+
in constraints file by Model Monitor Container in data quality analysis.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import print_function, absolute_import
|
|
19
|
+
|
|
20
|
+
CHI_SQUARED_METHOD = "ChiSquared"
|
|
21
|
+
L_INFINITY_METHOD = "LInfinity"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DataQualityDistributionConstraints:
|
|
25
|
+
"""Represents the distribution_constraints object of monitoring_config in constraints file."""
|
|
26
|
+
|
|
27
|
+
def __init__(self, categorical_drift_method: str = None):
|
|
28
|
+
self.categorical_drift_method = categorical_drift_method
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def valid_distribution_constraints(distribution_constraints):
|
|
32
|
+
"""Checks whether distribution_constraints are valid or not."""
|
|
33
|
+
|
|
34
|
+
if not distribution_constraints:
|
|
35
|
+
return True
|
|
36
|
+
|
|
37
|
+
return DataQualityDistributionConstraints.valid_categorical_drift_method(
|
|
38
|
+
distribution_constraints.categorical_drift_method
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
@staticmethod
|
|
42
|
+
def valid_categorical_drift_method(categorical_drift_method):
|
|
43
|
+
"""Checks whether categorical_drift_method is valid or not."""
|
|
44
|
+
|
|
45
|
+
if not categorical_drift_method:
|
|
46
|
+
return True
|
|
47
|
+
|
|
48
|
+
return categorical_drift_method in [CHI_SQUARED_METHOD, L_INFINITY_METHOD]
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class DataQualityMonitoringConfig:
|
|
52
|
+
"""Represents monitoring_config object in constraints file."""
|
|
53
|
+
|
|
54
|
+
def __init__(self, distribution_constraints: DataQualityDistributionConstraints = None):
|
|
55
|
+
self.distribution_constraints = distribution_constraints
|
|
56
|
+
|
|
57
|
+
@staticmethod
|
|
58
|
+
def valid_monitoring_config(monitoring_config):
|
|
59
|
+
"""Checks whether monitoring_config is valid or not."""
|
|
60
|
+
|
|
61
|
+
if not monitoring_config:
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
return DataQualityDistributionConstraints.valid_distribution_constraints(
|
|
65
|
+
monitoring_config.distribution_constraints
|
|
66
|
+
)
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
"""This module contains code related to the DatasetFormat class.
|
|
14
|
+
|
|
15
|
+
Codes are used for managing the constraints JSON file generated and consumed by Amazon SageMaker
|
|
16
|
+
Model Monitoring Schedules.
|
|
17
|
+
"""
|
|
18
|
+
from __future__ import print_function, absolute_import
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DatasetFormat(object):
|
|
22
|
+
"""Represents a Dataset Format that is used when calling a DefaultModelMonitor."""
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def csv(header=True, output_columns_position="START"):
|
|
26
|
+
"""Returns a DatasetFormat JSON string for use with a DefaultModelMonitor.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
header (bool): Whether the csv dataset to baseline and monitor has a header.
|
|
30
|
+
Default: True.
|
|
31
|
+
output_columns_position (str): The position of the output columns.
|
|
32
|
+
Must be one of ("START", "END"). Default: "START".
|
|
33
|
+
|
|
34
|
+
Returns:
|
|
35
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
return {"csv": {"header": header, "output_columns_position": output_columns_position}}
|
|
39
|
+
|
|
40
|
+
@staticmethod
|
|
41
|
+
def json(lines=True):
|
|
42
|
+
"""Returns a DatasetFormat JSON string for use with a DefaultModelMonitor.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
lines (bool): Whether the file should be read as a json object per line. Default: True.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
return {"json": {"lines": lines}}
|
|
52
|
+
|
|
53
|
+
@staticmethod
|
|
54
|
+
def sagemaker_capture_json():
|
|
55
|
+
"""Returns a DatasetFormat SageMaker Capture Json string for use with a DefaultModelMonitor.
|
|
56
|
+
|
|
57
|
+
Returns:
|
|
58
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
59
|
+
|
|
60
|
+
"""
|
|
61
|
+
return {"sagemakerCaptureJson": {}}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class MonitoringDatasetFormat(object):
|
|
65
|
+
"""Represents a Dataset Format that is used when calling a DefaultModelMonitor."""
|
|
66
|
+
|
|
67
|
+
@staticmethod
|
|
68
|
+
def csv(header=True):
|
|
69
|
+
"""Returns a DatasetFormat JSON string for use with a DefaultModelMonitor.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
header (bool): Whether the csv dataset to baseline and monitor has a header.
|
|
73
|
+
Default: True.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
77
|
+
|
|
78
|
+
"""
|
|
79
|
+
return {"Csv": {"Header": header}}
|
|
80
|
+
|
|
81
|
+
@staticmethod
|
|
82
|
+
def json(lines=True):
|
|
83
|
+
"""Returns a DatasetFormat JSON string for use with a DefaultModelMonitor.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
lines (bool): Whether the file should be read as a json object per line. Default: True.
|
|
87
|
+
|
|
88
|
+
Returns:
|
|
89
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
90
|
+
|
|
91
|
+
"""
|
|
92
|
+
return {"Json": {"Line": lines}}
|
|
93
|
+
|
|
94
|
+
@staticmethod
|
|
95
|
+
def parquet():
|
|
96
|
+
"""Returns a DatasetFormat SageMaker Capture Json string for use with a DefaultModelMonitor.
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
dict: JSON string containing DatasetFormat to be used by DefaultModelMonitor.
|
|
100
|
+
|
|
101
|
+
"""
|
|
102
|
+
return {"Parquet": {}}
|