sagemaker-core 1.0.62__py3-none-any.whl → 2.3.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/__init__.py +2 -0
- 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 +2399 -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 +247 -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 +1220 -0
- sagemaker/core/git_utils.py +415 -0
- sagemaker/core/helper/pipeline_variable.py +82 -0
- sagemaker/core/helper/session_helper.py +2977 -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 +509 -0
- sagemaker/core/image_retriever/test.py +7 -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 +770 -0
- sagemaker/core/image_uri_config/huggingface-llm.json +1267 -0
- sagemaker/core/image_uri_config/huggingface-neuron.json +52 -0
- sagemaker/core/image_uri_config/huggingface-neuronx.json +686 -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-vllm-neuronx.json +38 -0
- sagemaker/core/image_uri_config/huggingface.json +2287 -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 +252 -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 +494 -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 +972 -0
- sagemaker/core/image_uris.py +816 -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 +197 -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 +501 -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 +171 -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 +423 -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 +246 -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 +1497 -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 +239 -0
- sagemaker/core/modules/constants.py +37 -0
- sagemaker/core/modules/distributed.py +182 -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 +205 -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 +1599 -0
- sagemaker/core/remote_function/__init__.py +19 -0
- sagemaker/core/remote_function/checkpoint_location.py +47 -0
- sagemaker/core/remote_function/client.py +1310 -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 +347 -0
- sagemaker/core/remote_function/core/serialization.py +410 -0
- sagemaker/core/remote_function/core/stored_function.py +223 -0
- sagemaker/core/remote_function/custom_file_filter.py +128 -0
- sagemaker/core/remote_function/errors.py +102 -0
- sagemaker/core/remote_function/invoke_function.py +167 -0
- sagemaker/core/remote_function/job.py +2121 -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 +82 -0
- sagemaker/core/telemetry/telemetry_logging.py +285 -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 +345 -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 +514 -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.3.1.dist-info}/METADATA +28 -9
- sagemaker_core-2.3.1.dist-info/RECORD +351 -0
- sagemaker_core-2.3.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/jumpstart/factory}/__init__.py +0 -0
- {sagemaker_core/main → sagemaker/core/jumpstart/hub}/__init__.py +0 -0
- {sagemaker_core/main/code_injection → sagemaker/core/modules/local_core}/__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.3.1.dist-info}/WHEEL +0 -0
- {sagemaker_core-1.0.62.dist-info → sagemaker_core-2.3.1.dist-info}/licenses/LICENSE +0 -0
sagemaker/core/inputs.py
ADDED
|
@@ -0,0 +1,366 @@
|
|
|
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
|
+
"""Amazon SageMaker channel configurations for S3 data sources and file system data sources"""
|
|
14
|
+
from __future__ import absolute_import, print_function
|
|
15
|
+
|
|
16
|
+
from typing import Union, Optional, List
|
|
17
|
+
import attr
|
|
18
|
+
|
|
19
|
+
from sagemaker.core.helper.pipeline_variable import PipelineVariable
|
|
20
|
+
|
|
21
|
+
FILE_SYSTEM_TYPES = ["FSxLustre", "EFS"]
|
|
22
|
+
FILE_SYSTEM_ACCESS_MODES = ["ro", "rw"]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class TrainingInput(object):
|
|
26
|
+
"""Amazon SageMaker channel configurations for S3 data sources.
|
|
27
|
+
|
|
28
|
+
Attributes:
|
|
29
|
+
config (dict[str, dict]): A SageMaker ``DataSource`` referencing
|
|
30
|
+
a SageMaker ``S3DataSource``.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(
|
|
34
|
+
self,
|
|
35
|
+
s3_data: Union[str, PipelineVariable],
|
|
36
|
+
distribution: Optional[Union[str, PipelineVariable]] = None,
|
|
37
|
+
compression: Optional[Union[str, PipelineVariable]] = None,
|
|
38
|
+
content_type: Optional[Union[str, PipelineVariable]] = None,
|
|
39
|
+
record_wrapping: Optional[Union[str, PipelineVariable]] = None,
|
|
40
|
+
s3_data_type: Union[str, PipelineVariable] = "S3Prefix",
|
|
41
|
+
instance_groups: Optional[List[Union[str, PipelineVariable]]] = None,
|
|
42
|
+
input_mode: Optional[Union[str, PipelineVariable]] = None,
|
|
43
|
+
attribute_names: Optional[List[Union[str, PipelineVariable]]] = None,
|
|
44
|
+
target_attribute_name: Optional[Union[str, PipelineVariable]] = None,
|
|
45
|
+
shuffle_config: Optional["ShuffleConfig"] = None,
|
|
46
|
+
hub_access_config: Optional[dict] = None,
|
|
47
|
+
model_access_config: Optional[dict] = None,
|
|
48
|
+
):
|
|
49
|
+
r"""Create a definition for input data used by an SageMaker training job.
|
|
50
|
+
|
|
51
|
+
See AWS documentation on the ``CreateTrainingJob`` API for more details
|
|
52
|
+
on the parameters.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
s3_data (str or PipelineVariable): Defines the location of S3 data to train on.
|
|
56
|
+
distribution (str or PipelineVariable): Valid values: ``'FullyReplicated'``,
|
|
57
|
+
``'ShardedByS3Key'`` (default: ``'FullyReplicated'``).
|
|
58
|
+
compression (str or PipelineVariable): Valid values: ``'Gzip'``, ``None``
|
|
59
|
+
(default: None). This is used only in Pipe input mode.
|
|
60
|
+
content_type (str or PipelineVariable): MIME type of the input data
|
|
61
|
+
(default: None).
|
|
62
|
+
record_wrapping (str or PipelineVariable): Valid values: 'RecordIO'
|
|
63
|
+
(default: None).
|
|
64
|
+
s3_data_type (str or PipelineVariable): Valid values: ``'S3Prefix'``,
|
|
65
|
+
``'ManifestFile'``, ``'AugmentedManifestFile'``.
|
|
66
|
+
If ``'S3Prefix'``, ``s3_data`` defines a prefix of s3 objects to train on.
|
|
67
|
+
All objects with s3 keys beginning with ``s3_data`` will be used to train.
|
|
68
|
+
If ``'ManifestFile'`` or ``'AugmentedManifestFile'``,
|
|
69
|
+
then ``s3_data`` defines a
|
|
70
|
+
single S3 manifest file or augmented manifest file respectively,
|
|
71
|
+
listing the S3 data to train on. Both the ManifestFile and
|
|
72
|
+
AugmentedManifestFile formats are described at `S3DataSource
|
|
73
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/API_S3DataSource.html>`_
|
|
74
|
+
in the `Amazon SageMaker API reference`.
|
|
75
|
+
instance_groups (list[str] or list[PipelineVariable]): Optional. A list of
|
|
76
|
+
instance group names in string format that you specified while configuring
|
|
77
|
+
a heterogeneous cluster using the :class:`sagemaker.instance_group.InstanceGroup`.
|
|
78
|
+
S3 data will be sent to all instance groups in the specified list.
|
|
79
|
+
For instructions on how to use InstanceGroup objects
|
|
80
|
+
to configure a heterogeneous cluster
|
|
81
|
+
through the SageMaker generic and framework estimator classes, see
|
|
82
|
+
`Train Using a Heterogeneous Cluster
|
|
83
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/train-heterogeneous-cluster.html>`_
|
|
84
|
+
in the *Amazon SageMaker developer guide*.
|
|
85
|
+
(default: None)
|
|
86
|
+
input_mode (str or PipelineVariable): Optional override for this channel's input mode
|
|
87
|
+
(default: None). By default, channels will use the input mode defined on
|
|
88
|
+
``sagemaker.estimator.EstimatorBase.input_mode``, but they will ignore
|
|
89
|
+
that setting if this parameter is set.
|
|
90
|
+
|
|
91
|
+
* None - Amazon SageMaker will use the input mode specified in the ``Estimator``
|
|
92
|
+
* 'File' - Amazon SageMaker copies the training dataset from the S3 location to
|
|
93
|
+
a local directory.
|
|
94
|
+
* 'Pipe' - Amazon SageMaker streams data directly from S3 to the container via
|
|
95
|
+
a Unix-named pipe.
|
|
96
|
+
* 'FastFile' - Amazon SageMaker streams data from S3 on demand instead of
|
|
97
|
+
downloading the entire dataset before training begins.
|
|
98
|
+
|
|
99
|
+
attribute_names (list[str] or list[PipelineVariable]): A list of one or more attribute
|
|
100
|
+
names to use that are found in a specified AugmentedManifestFile.
|
|
101
|
+
target_attribute_name (str or PipelineVariable): The name of the attribute will be
|
|
102
|
+
predicted (classified) in a SageMaker AutoML job. It is required if the input is
|
|
103
|
+
for SageMaker AutoML job.
|
|
104
|
+
shuffle_config (sagemaker.inputs.ShuffleConfig): If specified this configuration enables
|
|
105
|
+
shuffling on this channel. See the SageMaker API documentation for more info:
|
|
106
|
+
https://docs.aws.amazon.com/sagemaker/latest/dg/API_ShuffleConfig.html
|
|
107
|
+
hub_access_config (dict): Specify the HubAccessConfig of a
|
|
108
|
+
Model Reference for which a training job is being created for.
|
|
109
|
+
model_access_config (dict): For models that require a Model Access Config, specify True
|
|
110
|
+
or False for to indicate whether model terms of use have been accepted.
|
|
111
|
+
The `accept_eula` value must be explicitly defined as `True` in order to
|
|
112
|
+
accept the end-user license agreement (EULA) that some
|
|
113
|
+
models require. (Default: None).
|
|
114
|
+
"""
|
|
115
|
+
self.config = {
|
|
116
|
+
"DataSource": {"S3DataSource": {"S3DataType": s3_data_type, "S3Uri": s3_data}}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if not (target_attribute_name or distribution):
|
|
120
|
+
distribution = "FullyReplicated"
|
|
121
|
+
|
|
122
|
+
if distribution is not None:
|
|
123
|
+
self.config["DataSource"]["S3DataSource"]["S3DataDistributionType"] = distribution
|
|
124
|
+
|
|
125
|
+
if compression is not None:
|
|
126
|
+
self.config["CompressionType"] = compression
|
|
127
|
+
if content_type is not None:
|
|
128
|
+
self.config["ContentType"] = content_type
|
|
129
|
+
if record_wrapping is not None:
|
|
130
|
+
self.config["RecordWrapperType"] = record_wrapping
|
|
131
|
+
if instance_groups is not None:
|
|
132
|
+
self.config["DataSource"]["S3DataSource"]["InstanceGroupNames"] = instance_groups
|
|
133
|
+
if input_mode is not None:
|
|
134
|
+
self.config["InputMode"] = input_mode
|
|
135
|
+
if attribute_names is not None:
|
|
136
|
+
self.config["DataSource"]["S3DataSource"]["AttributeNames"] = attribute_names
|
|
137
|
+
if target_attribute_name is not None:
|
|
138
|
+
self.config["TargetAttributeName"] = target_attribute_name
|
|
139
|
+
if shuffle_config is not None:
|
|
140
|
+
self.config["ShuffleConfig"] = {"Seed": shuffle_config.seed}
|
|
141
|
+
self.add_hub_access_config(hub_access_config)
|
|
142
|
+
self.add_model_access_config(model_access_config)
|
|
143
|
+
|
|
144
|
+
def add_hub_access_config(self, hub_access_config=None):
|
|
145
|
+
"""Add Hub Access Config to the channel's configuration.
|
|
146
|
+
|
|
147
|
+
Args:
|
|
148
|
+
hub_access_config (dict): The HubAccessConfig to be added to the
|
|
149
|
+
channel's configuration.
|
|
150
|
+
"""
|
|
151
|
+
if hub_access_config is not None:
|
|
152
|
+
self.config["DataSource"]["S3DataSource"]["HubAccessConfig"] = hub_access_config
|
|
153
|
+
|
|
154
|
+
def add_model_access_config(self, model_access_config=None):
|
|
155
|
+
"""Add Model Access Config to the channel's configuration.
|
|
156
|
+
|
|
157
|
+
Args:
|
|
158
|
+
model_access_config (dict): Whether model terms of use have been accepted.
|
|
159
|
+
"""
|
|
160
|
+
if model_access_config is not None:
|
|
161
|
+
self.config["DataSource"]["S3DataSource"]["ModelAccessConfig"] = model_access_config
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class ShuffleConfig(object):
|
|
165
|
+
"""For configuring channel shuffling using a seed.
|
|
166
|
+
|
|
167
|
+
For more detail, see the AWS documentation:
|
|
168
|
+
https://docs.aws.amazon.com/sagemaker/latest/dg/API_ShuffleConfig.html
|
|
169
|
+
"""
|
|
170
|
+
|
|
171
|
+
def __init__(self, seed):
|
|
172
|
+
"""Create a ShuffleConfig.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
seed (long): the long value used to seed the shuffled sequence.
|
|
176
|
+
"""
|
|
177
|
+
self.seed = seed
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
@attr.s
|
|
181
|
+
class CreateModelInput(object):
|
|
182
|
+
"""A class containing parameters which can be used to create a SageMaker Model
|
|
183
|
+
|
|
184
|
+
Parameters:
|
|
185
|
+
instance_type (str): type or EC2 instance will be used for model deployment.
|
|
186
|
+
accelerator_type (str): elastic inference accelerator type.
|
|
187
|
+
"""
|
|
188
|
+
|
|
189
|
+
instance_type: str = attr.ib(default=None)
|
|
190
|
+
accelerator_type: str = attr.ib(default=None)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
@attr.s
|
|
194
|
+
class TransformInput(object):
|
|
195
|
+
"""Creates a class containing parameters for configuring input data for a batch tramsform job.
|
|
196
|
+
|
|
197
|
+
It can be used when calling ``sagemaker.transformer.Transformer.transform()``
|
|
198
|
+
|
|
199
|
+
Args:
|
|
200
|
+
data (str): The S3 location of the input data that the model can consume.
|
|
201
|
+
data_type (str): The data type for a batch transform job.
|
|
202
|
+
(default: ``'S3Prefix'``)
|
|
203
|
+
content_type (str): The multi-purpose internet email extension (MIME) type of the data.
|
|
204
|
+
(default: None)
|
|
205
|
+
compression_type (str): If your transform data is compressed, specify the compression type.
|
|
206
|
+
Valid values: ``'Gzip'``, ``None``
|
|
207
|
+
(default: None)
|
|
208
|
+
split_type (str): The method to use to split the transform job's data files into smaller
|
|
209
|
+
batches.
|
|
210
|
+
Valid values: ``'Line'``, ``RecordIO``, ``'TFRecord'``, None
|
|
211
|
+
(default: None)
|
|
212
|
+
input_filter (str): A JSONPath expression for selecting a portion of the input data to pass
|
|
213
|
+
to the algorithm. For example, you can use this parameter to exclude fields, such as an
|
|
214
|
+
ID column, from the input. If you want SageMaker to pass the entire input dataset to the
|
|
215
|
+
algorithm, accept the default value ``$``. For more information on batch transform data
|
|
216
|
+
processing, input, join, and output, see
|
|
217
|
+
`Associate Prediction Results with Input Records
|
|
218
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html?>`_
|
|
219
|
+
in the *Amazon SageMaker developer guide*.
|
|
220
|
+
Example value: ``$``. For more information about valid values for this parameter, see
|
|
221
|
+
`JSONPath Operators
|
|
222
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators>`_
|
|
223
|
+
in the *Amazon SageMaker developer guide*.
|
|
224
|
+
(default: ``$``)
|
|
225
|
+
output_filter (str): A JSONPath expression for selecting a portion of the joined dataset to
|
|
226
|
+
save in the output file for a batch transform job. If you want SageMaker to store the
|
|
227
|
+
entire input dataset in the output file, leave the default value, $. If you specify
|
|
228
|
+
indexes that aren't within the dimension size of the joined dataset, you get an error.
|
|
229
|
+
Example value: ``$``. For more information about valid values for this parameter, see
|
|
230
|
+
`JSONPath Operators
|
|
231
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform-data-processing.html#data-processing-operators>`_
|
|
232
|
+
in the *Amazon SageMaker developer guide*.
|
|
233
|
+
(default: ``$``)
|
|
234
|
+
join_source (str): Specifies the source of the data to join with the transformed data.
|
|
235
|
+
The default value is ``None``, which specifies not to join the input with the
|
|
236
|
+
transformed data. If you want the batch transform job to join the original input data
|
|
237
|
+
with the transformed data, set to ``Input``.
|
|
238
|
+
Valid values: ``None``, ``Input``
|
|
239
|
+
(default: None)
|
|
240
|
+
model_client_config (dict): Configures the timeout and maximum number of retries for
|
|
241
|
+
processing a transform job invocation.
|
|
242
|
+
|
|
243
|
+
* ``'InvocationsTimeoutInSeconds'`` (int) - The timeout value in seconds for an
|
|
244
|
+
invocation request. The default value is 600.
|
|
245
|
+
* ``'InvocationsMaxRetries'`` (int) - The maximum number of retries when invocation
|
|
246
|
+
requests are failing.
|
|
247
|
+
|
|
248
|
+
(default: ``{600,3}``)
|
|
249
|
+
batch_data_capture_config (dict): The dict is an object of `BatchDataCaptureConfig
|
|
250
|
+
<https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html#sagemaker.inputs.BatchDataCaptureConfig>`_
|
|
251
|
+
and specifies configuration related to batch transform job
|
|
252
|
+
for use with Amazon SageMaker Model Monitoring. For more information,
|
|
253
|
+
see `Capture data from batch transform job
|
|
254
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor-data-capture-batch.html>`_
|
|
255
|
+
in the *Amazon SageMaker developer guide*.
|
|
256
|
+
(default: None)
|
|
257
|
+
"""
|
|
258
|
+
|
|
259
|
+
data: str = attr.ib()
|
|
260
|
+
data_type: str = attr.ib(default="S3Prefix")
|
|
261
|
+
content_type: str = attr.ib(default=None)
|
|
262
|
+
compression_type: str = attr.ib(default=None)
|
|
263
|
+
split_type: str = attr.ib(default=None)
|
|
264
|
+
input_filter: str = attr.ib(default=None)
|
|
265
|
+
output_filter: str = attr.ib(default=None)
|
|
266
|
+
join_source: str = attr.ib(default=None)
|
|
267
|
+
model_client_config: dict = attr.ib(default=None)
|
|
268
|
+
batch_data_capture_config: dict = attr.ib(default=None)
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class FileSystemInput(object):
|
|
272
|
+
"""Amazon SageMaker channel configurations for file system data sources.
|
|
273
|
+
|
|
274
|
+
Attributes:
|
|
275
|
+
config (dict[str, dict]): A Sagemaker File System ``DataSource``.
|
|
276
|
+
"""
|
|
277
|
+
|
|
278
|
+
def __init__(
|
|
279
|
+
self,
|
|
280
|
+
file_system_id,
|
|
281
|
+
file_system_type,
|
|
282
|
+
directory_path,
|
|
283
|
+
file_system_access_mode="ro",
|
|
284
|
+
content_type=None,
|
|
285
|
+
):
|
|
286
|
+
"""Create a new file system input used by an SageMaker training job.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
file_system_id (str): An Amazon file system ID starting with 'fs-'.
|
|
290
|
+
file_system_type (str): The type of file system used for the input.
|
|
291
|
+
Valid values: 'EFS', 'FSxLustre'.
|
|
292
|
+
directory_path (str): Absolute or normalized path to the root directory (mount point) in
|
|
293
|
+
the file system.
|
|
294
|
+
Reference: https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html and
|
|
295
|
+
https://docs.aws.amazon.com/fsx/latest/LustreGuide/mount-fs-auto-mount-onreboot.html
|
|
296
|
+
file_system_access_mode (str): Permissions for read and write.
|
|
297
|
+
Valid values: 'ro' or 'rw'. Defaults to 'ro'.
|
|
298
|
+
"""
|
|
299
|
+
|
|
300
|
+
if file_system_type not in FILE_SYSTEM_TYPES:
|
|
301
|
+
raise ValueError(
|
|
302
|
+
"Unrecognized file system type: %s. Valid values: %s."
|
|
303
|
+
% (file_system_type, ", ".join(FILE_SYSTEM_TYPES))
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
if file_system_access_mode not in FILE_SYSTEM_ACCESS_MODES:
|
|
307
|
+
raise ValueError(
|
|
308
|
+
"Unrecognized file system access mode: %s. Valid values: %s."
|
|
309
|
+
% (file_system_access_mode, ", ".join(FILE_SYSTEM_ACCESS_MODES))
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
self.config = {
|
|
313
|
+
"DataSource": {
|
|
314
|
+
"FileSystemDataSource": {
|
|
315
|
+
"FileSystemId": file_system_id,
|
|
316
|
+
"FileSystemType": file_system_type,
|
|
317
|
+
"DirectoryPath": directory_path,
|
|
318
|
+
"FileSystemAccessMode": file_system_access_mode,
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
if content_type:
|
|
324
|
+
self.config["ContentType"] = content_type
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
class BatchDataCaptureConfig(object):
|
|
328
|
+
"""Configuration object passed in when create a batch transform job.
|
|
329
|
+
|
|
330
|
+
Specifies configuration related to batch transform job data capture for use with
|
|
331
|
+
Amazon SageMaker Model Monitoring
|
|
332
|
+
"""
|
|
333
|
+
|
|
334
|
+
def __init__(
|
|
335
|
+
self,
|
|
336
|
+
destination_s3_uri: str,
|
|
337
|
+
kms_key_id: str = None,
|
|
338
|
+
generate_inference_id: bool = None,
|
|
339
|
+
):
|
|
340
|
+
"""Create new BatchDataCaptureConfig
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
destination_s3_uri (str): S3 Location to store the captured data
|
|
344
|
+
kms_key_id (str): The KMS key to use when writing to S3.
|
|
345
|
+
KmsKeyId can be an ID of a KMS key, ARN of a KMS key, alias of a KMS key,
|
|
346
|
+
or alias of a KMS key. The KmsKeyId is applied to all outputs.
|
|
347
|
+
(default: None)
|
|
348
|
+
generate_inference_id (bool): Flag to generate an inference id
|
|
349
|
+
(default: None)
|
|
350
|
+
"""
|
|
351
|
+
self.destination_s3_uri = destination_s3_uri
|
|
352
|
+
self.kms_key_id = kms_key_id
|
|
353
|
+
self.generate_inference_id = generate_inference_id
|
|
354
|
+
|
|
355
|
+
def _to_request_dict(self):
|
|
356
|
+
"""Generates a request dictionary using the parameters provided to the class."""
|
|
357
|
+
batch_data_capture_config = {
|
|
358
|
+
"DestinationS3Uri": self.destination_s3_uri,
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if self.kms_key_id is not None:
|
|
362
|
+
batch_data_capture_config["KmsKeyId"] = self.kms_key_id
|
|
363
|
+
if self.generate_inference_id is not None:
|
|
364
|
+
batch_data_capture_config["GenerateInferenceId"] = self.generate_inference_id
|
|
365
|
+
|
|
366
|
+
return batch_data_capture_config
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
"""Defines the InstanceGroup class that configures a heterogeneous cluster."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class InstanceGroup(object):
|
|
18
|
+
"""The class to create instance groups for a heterogeneous cluster."""
|
|
19
|
+
|
|
20
|
+
def __init__(
|
|
21
|
+
self,
|
|
22
|
+
instance_group_name=None,
|
|
23
|
+
instance_type=None,
|
|
24
|
+
instance_count=None,
|
|
25
|
+
):
|
|
26
|
+
"""It initializes an ``InstanceGroup`` instance.
|
|
27
|
+
|
|
28
|
+
You can create instance group object of the ``InstanceGroup`` class
|
|
29
|
+
by specifying the instance group configuration arguments.
|
|
30
|
+
|
|
31
|
+
For instructions on how to use InstanceGroup objects
|
|
32
|
+
to configure a heterogeneous cluster
|
|
33
|
+
through the SageMaker generic and framework estimator classes, see
|
|
34
|
+
`Train Using a Heterogeneous Cluster
|
|
35
|
+
<https://docs.aws.amazon.com/sagemaker/latest/dg/train-heterogeneous-cluster.html>`_
|
|
36
|
+
in the *Amazon SageMaker developer guide*.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
instance_group_name (str): The name of the instance group.
|
|
40
|
+
instance_type (str): The instance type to use in the instance group.
|
|
41
|
+
instance_count (int): The number of instances to use in the instance group.
|
|
42
|
+
|
|
43
|
+
.. tip::
|
|
44
|
+
|
|
45
|
+
For more information about available values for the arguments,
|
|
46
|
+
see `InstanceGroup
|
|
47
|
+
<https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html>`_
|
|
48
|
+
API in the `Amazon SageMaker API reference`.
|
|
49
|
+
|
|
50
|
+
"""
|
|
51
|
+
self.instance_group_name = instance_group_name
|
|
52
|
+
self.instance_type = instance_type
|
|
53
|
+
self.instance_count = instance_count
|
|
54
|
+
|
|
55
|
+
def _to_request_dict(self):
|
|
56
|
+
"""Generates a request dictionary using the parameters provided to the class."""
|
|
57
|
+
return {
|
|
58
|
+
"InstanceGroupName": self.instance_group_name,
|
|
59
|
+
"InstanceType": self.instance_type,
|
|
60
|
+
"InstanceCount": self.instance_count,
|
|
61
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
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
|
+
"""Accessors to retrieve instance types."""
|
|
14
|
+
|
|
15
|
+
from __future__ import absolute_import
|
|
16
|
+
|
|
17
|
+
import logging
|
|
18
|
+
from typing import List, Optional
|
|
19
|
+
|
|
20
|
+
from sagemaker.core.jumpstart import utils as jumpstart_utils
|
|
21
|
+
from sagemaker.core.jumpstart import artifacts
|
|
22
|
+
from sagemaker.core.jumpstart.constants import DEFAULT_JUMPSTART_SAGEMAKER_SESSION
|
|
23
|
+
from sagemaker.core.jumpstart.enums import JumpStartModelType
|
|
24
|
+
from sagemaker.core.helper.session_helper import Session
|
|
25
|
+
|
|
26
|
+
logger = logging.getLogger(__name__)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def retrieve_default(
|
|
30
|
+
region: Optional[str] = None,
|
|
31
|
+
model_id: Optional[str] = None,
|
|
32
|
+
model_version: Optional[str] = None,
|
|
33
|
+
hub_arn: Optional[str] = None,
|
|
34
|
+
scope: Optional[str] = None,
|
|
35
|
+
tolerate_vulnerable_model: bool = False,
|
|
36
|
+
tolerate_deprecated_model: bool = False,
|
|
37
|
+
sagemaker_session: Session = DEFAULT_JUMPSTART_SAGEMAKER_SESSION,
|
|
38
|
+
training_instance_type: Optional[str] = None,
|
|
39
|
+
model_type: JumpStartModelType = JumpStartModelType.OPEN_WEIGHTS,
|
|
40
|
+
config_name: Optional[str] = None,
|
|
41
|
+
) -> str:
|
|
42
|
+
"""Retrieves the default instance type for the model matching the given arguments.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
region (str): The AWS Region for which to retrieve the default instance type.
|
|
46
|
+
Defaults to ``None``.
|
|
47
|
+
model_id (str): The model ID of the model for which to
|
|
48
|
+
retrieve the default instance type. (Default: None).
|
|
49
|
+
model_version (str): The version of the model for which to retrieve the
|
|
50
|
+
default instance type. (Default: None).
|
|
51
|
+
hub_arn (str): The arn of the SageMaker Hub for which to retrieve
|
|
52
|
+
model details from. (default: None).
|
|
53
|
+
scope (str): The model type, i.e. what it is used for.
|
|
54
|
+
Valid values: "training" and "inference".
|
|
55
|
+
tolerate_vulnerable_model (bool): True if vulnerable versions of model
|
|
56
|
+
specifications should be tolerated (exception not raised). If False, raises an
|
|
57
|
+
exception if the script used by this version of the model has dependencies with known
|
|
58
|
+
security vulnerabilities. (Default: False).
|
|
59
|
+
tolerate_deprecated_model (bool): True if deprecated models should be tolerated
|
|
60
|
+
(exception not raised). False if these models should raise an exception.
|
|
61
|
+
(Default: False).
|
|
62
|
+
sagemaker_session (sagemaker.session.Session): A SageMaker Session
|
|
63
|
+
object, used for SageMaker interactions. If not
|
|
64
|
+
specified, one is created using the default AWS configuration
|
|
65
|
+
chain. (Default: sagemaker.jumpstart.constants.DEFAULT_JUMPSTART_SAGEMAKER_SESSION).
|
|
66
|
+
training_instance_type (str): In the case of a model fine-tuned on SageMaker, the training
|
|
67
|
+
instance type used for the training job that produced the fine-tuned weights.
|
|
68
|
+
Optionally supply this to get a inference instance type conditioned
|
|
69
|
+
on the training instance, to ensure compatability of training artifact to inference
|
|
70
|
+
instance. (Default: None).
|
|
71
|
+
config_name (Optional[str]): Name of the JumpStart Model config to apply. (Default: None).
|
|
72
|
+
Returns:
|
|
73
|
+
str: The default instance type to use for the model.
|
|
74
|
+
|
|
75
|
+
Raises:
|
|
76
|
+
ValueError: If the combination of arguments specified is not supported.
|
|
77
|
+
"""
|
|
78
|
+
if not jumpstart_utils.is_jumpstart_model_input(model_id, model_version):
|
|
79
|
+
raise ValueError(
|
|
80
|
+
"Must specify JumpStart `model_id` and `model_version` when retrieving instance types."
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
if scope is None:
|
|
84
|
+
raise ValueError("Must specify scope for instance types.")
|
|
85
|
+
|
|
86
|
+
return artifacts._retrieve_default_instance_type(
|
|
87
|
+
model_id,
|
|
88
|
+
model_version,
|
|
89
|
+
scope,
|
|
90
|
+
hub_arn,
|
|
91
|
+
region,
|
|
92
|
+
tolerate_vulnerable_model,
|
|
93
|
+
tolerate_deprecated_model,
|
|
94
|
+
sagemaker_session=sagemaker_session,
|
|
95
|
+
training_instance_type=training_instance_type,
|
|
96
|
+
model_type=model_type,
|
|
97
|
+
config_name=config_name,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def retrieve(
|
|
102
|
+
region: Optional[str] = None,
|
|
103
|
+
model_id: Optional[str] = None,
|
|
104
|
+
model_version: Optional[str] = None,
|
|
105
|
+
hub_arn: Optional[str] = None,
|
|
106
|
+
scope: Optional[str] = None,
|
|
107
|
+
tolerate_vulnerable_model: bool = False,
|
|
108
|
+
tolerate_deprecated_model: bool = False,
|
|
109
|
+
sagemaker_session: Session = DEFAULT_JUMPSTART_SAGEMAKER_SESSION,
|
|
110
|
+
training_instance_type: Optional[str] = None,
|
|
111
|
+
) -> List[str]:
|
|
112
|
+
"""Retrieves the supported training instance types for the model matching the given arguments.
|
|
113
|
+
|
|
114
|
+
Args:
|
|
115
|
+
region (str): The AWS Region for which to retrieve the supported instance types.
|
|
116
|
+
Defaults to ``None``.
|
|
117
|
+
model_id (str): The model ID of the model for which to
|
|
118
|
+
retrieve the supported instance types. (Default: None).
|
|
119
|
+
model_version (str): The version of the model for which to retrieve the
|
|
120
|
+
supported instance types. (Default: None).
|
|
121
|
+
hub_arn (str): The arn of the SageMaker Hub for which to retrieve
|
|
122
|
+
model details from. (Default: None).
|
|
123
|
+
tolerate_vulnerable_model (bool): True if vulnerable versions of model
|
|
124
|
+
specifications should be tolerated (exception not raised). If False, raises an
|
|
125
|
+
exception if the script used by this version of the model has dependencies with known
|
|
126
|
+
security vulnerabilities. (Default: False).
|
|
127
|
+
tolerate_deprecated_model (bool): True if deprecated models should be tolerated
|
|
128
|
+
(exception not raised). False if these models should raise an exception.
|
|
129
|
+
(Default: False).
|
|
130
|
+
sagemaker_session (sagemaker.session.Session): A SageMaker Session
|
|
131
|
+
object, used for SageMaker interactions. If not
|
|
132
|
+
specified, one is created using the default AWS configuration
|
|
133
|
+
chain. (Default: sagemaker.jumpstart.constants.DEFAULT_JUMPSTART_SAGEMAKER_SESSION).
|
|
134
|
+
training_instance_type (str): In the case of a model fine-tuned on SageMaker, the training
|
|
135
|
+
instance type used for the training job that produced the fine-tuned weights.
|
|
136
|
+
Optionally supply this to get a inference instance type conditioned
|
|
137
|
+
on the training instance, to ensure compatability of training artifact to inference
|
|
138
|
+
instance. (Default: None).
|
|
139
|
+
|
|
140
|
+
Returns:
|
|
141
|
+
list: The supported instance types to use for the model.
|
|
142
|
+
|
|
143
|
+
Raises:
|
|
144
|
+
ValueError: If the combination of arguments specified is not supported.
|
|
145
|
+
"""
|
|
146
|
+
if not jumpstart_utils.is_jumpstart_model_input(model_id, model_version):
|
|
147
|
+
raise ValueError(
|
|
148
|
+
"Must specify JumpStart `model_id` and `model_version` when retrieving instance types."
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
if scope is None:
|
|
152
|
+
raise ValueError("Must specify scope for instance types.")
|
|
153
|
+
|
|
154
|
+
return artifacts._retrieve_instance_types(
|
|
155
|
+
model_id=model_id,
|
|
156
|
+
model_version=model_version,
|
|
157
|
+
scope=scope,
|
|
158
|
+
hub_arn=hub_arn,
|
|
159
|
+
region=region,
|
|
160
|
+
tolerate_vulnerable_model=tolerate_vulnerable_model,
|
|
161
|
+
tolerate_deprecated_model=tolerate_deprecated_model,
|
|
162
|
+
sagemaker_session=sagemaker_session,
|
|
163
|
+
training_instance_type=training_instance_type,
|
|
164
|
+
)
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
"""Accessors to retrieve instance types GPU info."""
|
|
14
|
+
from __future__ import absolute_import
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
from typing import Dict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def retrieve(region: str) -> Dict[str, Dict[str, int]]:
|
|
22
|
+
"""Retrieves instance types GPU info of the given region.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
region (str): The AWS region.
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
dict[str, dict[str, int]]: A dictionary that contains instance types as keys
|
|
29
|
+
and GPU info as values or empty dictionary if the
|
|
30
|
+
config for the given region is not found.
|
|
31
|
+
|
|
32
|
+
Raises:
|
|
33
|
+
ValueError: If no config found.
|
|
34
|
+
"""
|
|
35
|
+
config_path = os.path.join(
|
|
36
|
+
os.path.dirname(__file__), "image_uri_config", "instance_gpu_info.json"
|
|
37
|
+
)
|
|
38
|
+
try:
|
|
39
|
+
with open(config_path) as f:
|
|
40
|
+
instance_types_gpu_info_config = json.load(f)
|
|
41
|
+
return instance_types_gpu_info_config.get(region, {})
|
|
42
|
+
except FileNotFoundError:
|
|
43
|
+
raise ValueError("Could not find instance types gpu info.")
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
"""Classes for starting/accessing apps hosted on Amazon SageMaker Studio."""
|
|
14
|
+
|
|
15
|
+
from __future__ import absolute_import
|
|
16
|
+
|
|
17
|
+
from enum import Enum
|
|
18
|
+
|
|
19
|
+
from sagemaker.core.interactive_apps.base_interactive_app import ( # noqa: F401
|
|
20
|
+
BaseInteractiveApp,
|
|
21
|
+
)
|
|
22
|
+
from sagemaker.core.interactive_apps.detail_profiler_app import ( # noqa: F401
|
|
23
|
+
DetailProfilerApp,
|
|
24
|
+
)
|
|
25
|
+
from sagemaker.core.interactive_apps.tensorboard import ( # noqa: F401
|
|
26
|
+
TensorBoardApp,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SupportedInteractiveAppTypes(Enum):
|
|
31
|
+
"""SupportedInteractiveAppTypes indicates which apps are supported."""
|
|
32
|
+
|
|
33
|
+
TENSORBOARD = 1
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
__all__ = [
|
|
37
|
+
"BaseInteractiveApp",
|
|
38
|
+
"DetailProfilerApp",
|
|
39
|
+
"SupportedInteractiveAppTypes",
|
|
40
|
+
"TensorBoardApp",
|
|
41
|
+
]
|