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,291 @@
|
|
|
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
|
+
# pylint: skip-file
|
|
14
|
+
"""This module provides the JumpStart Hub class."""
|
|
15
|
+
from __future__ import absolute_import
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
import logging
|
|
18
|
+
from typing import Optional, Dict, List, Any, Union
|
|
19
|
+
|
|
20
|
+
from sagemaker.core.jumpstart.constants import JUMPSTART_MODEL_HUB_NAME
|
|
21
|
+
from sagemaker.core.jumpstart.enums import JumpStartScriptScope
|
|
22
|
+
from sagemaker.core.helper.session_helper import Session
|
|
23
|
+
|
|
24
|
+
from sagemaker.core.jumpstart.types import (
|
|
25
|
+
HubContentType,
|
|
26
|
+
)
|
|
27
|
+
from sagemaker.core.jumpstart.filters import Constant, Operator, BooleanValues
|
|
28
|
+
from sagemaker.core.jumpstart.hub.utils import (
|
|
29
|
+
get_hub_model_version,
|
|
30
|
+
get_info_from_hub_resource_arn,
|
|
31
|
+
construct_hub_arn_from_name,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
from sagemaker.core.jumpstart.notebook_utils import (
|
|
35
|
+
list_jumpstart_models,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
from sagemaker.core.jumpstart.hub.interfaces import (
|
|
39
|
+
DescribeHubResponse,
|
|
40
|
+
DescribeHubContentResponse,
|
|
41
|
+
)
|
|
42
|
+
from sagemaker.core.jumpstart.hub.constants import (
|
|
43
|
+
LATEST_VERSION_WILDCARD,
|
|
44
|
+
)
|
|
45
|
+
from sagemaker.core.jumpstart import utils
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Hub:
|
|
49
|
+
"""Class for creating and managing a curated JumpStart hub"""
|
|
50
|
+
|
|
51
|
+
# Setting LOGGER for backward compatibility, in case users import it...
|
|
52
|
+
logger = LOGGER = logging.getLogger("sagemaker")
|
|
53
|
+
|
|
54
|
+
_list_hubs_cache: List[Dict[str, Any]] = []
|
|
55
|
+
|
|
56
|
+
def __init__(
|
|
57
|
+
self,
|
|
58
|
+
hub_name: str,
|
|
59
|
+
sagemaker_session: Session,
|
|
60
|
+
bucket_name: Optional[str] = None,
|
|
61
|
+
) -> None:
|
|
62
|
+
"""Instantiates a SageMaker ``Hub``.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
hub_name (str): The name of the Hub to create.
|
|
66
|
+
sagemaker_session (sagemaker.session.Session): A SageMaker Session
|
|
67
|
+
object, used for SageMaker interactions.
|
|
68
|
+
"""
|
|
69
|
+
self.hub_name = hub_name
|
|
70
|
+
self.region = sagemaker_session.boto_region_name
|
|
71
|
+
self.bucket_name = bucket_name
|
|
72
|
+
self._sagemaker_session = (
|
|
73
|
+
sagemaker_session
|
|
74
|
+
or utils.get_default_jumpstart_session_with_user_agent_suffix(is_hub_content=True)
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
def _get_latest_model_version(self, model_id: str) -> str:
|
|
78
|
+
"""Populates the lastest version of a model from specs no matter what is passed.
|
|
79
|
+
|
|
80
|
+
Returns model ({ model_id: str, version: str })
|
|
81
|
+
"""
|
|
82
|
+
model_specs = utils.verify_model_region_and_return_specs(
|
|
83
|
+
model_id, LATEST_VERSION_WILDCARD, JumpStartScriptScope.INFERENCE, self.region
|
|
84
|
+
)
|
|
85
|
+
return model_specs.version
|
|
86
|
+
|
|
87
|
+
def create(
|
|
88
|
+
self,
|
|
89
|
+
description: str,
|
|
90
|
+
display_name: Optional[str] = None,
|
|
91
|
+
search_keywords: Optional[str] = None,
|
|
92
|
+
tags: Optional[str] = None,
|
|
93
|
+
) -> Dict[str, str]:
|
|
94
|
+
"""Creates a hub with the given description"""
|
|
95
|
+
curr_timestamp = datetime.now().timestamp()
|
|
96
|
+
|
|
97
|
+
request = {
|
|
98
|
+
"hub_name": self.hub_name,
|
|
99
|
+
"hub_description": description,
|
|
100
|
+
"hub_display_name": display_name,
|
|
101
|
+
"hub_search_keywords": search_keywords,
|
|
102
|
+
"tags": tags,
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if self.bucket_name:
|
|
106
|
+
request["s3_storage_config"] = {
|
|
107
|
+
"S3OutputPath": (f"s3://{self.bucket_name}/{self.hub_name}-{curr_timestamp}")
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return self._sagemaker_session.create_hub(**request)
|
|
111
|
+
|
|
112
|
+
def describe(self, hub_name: Optional[str] = None) -> DescribeHubResponse:
|
|
113
|
+
"""Returns descriptive information about the Hub"""
|
|
114
|
+
|
|
115
|
+
hub_description: DescribeHubResponse = self._sagemaker_session.describe_hub(
|
|
116
|
+
hub_name=self.hub_name if not hub_name else hub_name
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
return hub_description
|
|
120
|
+
|
|
121
|
+
def _list_and_paginate_models(self, **kwargs) -> List[Dict[str, Any]]:
|
|
122
|
+
"""List and paginate models from Hub."""
|
|
123
|
+
next_token: Optional[str] = None
|
|
124
|
+
first_iteration: bool = True
|
|
125
|
+
hub_model_summaries: List[Dict[str, Any]] = []
|
|
126
|
+
|
|
127
|
+
while first_iteration or next_token:
|
|
128
|
+
first_iteration = False
|
|
129
|
+
list_hub_content_response = self._sagemaker_session.list_hub_contents(**kwargs)
|
|
130
|
+
hub_model_summaries.extend(list_hub_content_response.get("HubContentSummaries", []))
|
|
131
|
+
next_token = list_hub_content_response.get("NextToken")
|
|
132
|
+
|
|
133
|
+
return hub_model_summaries
|
|
134
|
+
|
|
135
|
+
def list_models(self, clear_cache: bool = True, **kwargs) -> Dict[str, Any]:
|
|
136
|
+
"""Lists the models and model references in this SageMaker Hub.
|
|
137
|
+
|
|
138
|
+
This function caches the models in local memory
|
|
139
|
+
|
|
140
|
+
**kwargs: Passed to invocation of ``Session:list_hub_contents``.
|
|
141
|
+
"""
|
|
142
|
+
response = {}
|
|
143
|
+
|
|
144
|
+
if clear_cache:
|
|
145
|
+
self._list_hubs_cache = None
|
|
146
|
+
if self._list_hubs_cache is None:
|
|
147
|
+
|
|
148
|
+
hub_model_reference_summaries = self._list_and_paginate_models(
|
|
149
|
+
**{
|
|
150
|
+
"hub_name": self.hub_name,
|
|
151
|
+
"hub_content_type": HubContentType.MODEL_REFERENCE.value,
|
|
152
|
+
**kwargs,
|
|
153
|
+
}
|
|
154
|
+
)
|
|
155
|
+
|
|
156
|
+
hub_model_summaries = self._list_and_paginate_models(
|
|
157
|
+
**{
|
|
158
|
+
"hub_name": self.hub_name,
|
|
159
|
+
"hub_content_type": HubContentType.MODEL.value,
|
|
160
|
+
**kwargs,
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
response["hub_content_summaries"] = hub_model_reference_summaries + hub_model_summaries
|
|
164
|
+
response["next_token"] = None # Temporary until pagination is implemented
|
|
165
|
+
return response
|
|
166
|
+
|
|
167
|
+
def list_sagemaker_public_hub_models(
|
|
168
|
+
self,
|
|
169
|
+
filter: Union[Operator, str] = Constant(BooleanValues.TRUE),
|
|
170
|
+
next_token: Optional[str] = None,
|
|
171
|
+
) -> Dict[str, Any]:
|
|
172
|
+
"""Lists the models and model arns from AmazonSageMakerJumpStart Public Hub.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
filter (Union[Operator, str]): Optional. The filter to apply to list models. This can be
|
|
176
|
+
either an ``Operator`` type filter (e.g. ``And("task == ic", "framework == pytorch")``),
|
|
177
|
+
or simply a string filter which will get serialized into an Identity filter.
|
|
178
|
+
(e.g. ``"task == ic"``). If this argument is not supplied, all models will be listed.
|
|
179
|
+
(Default: Constant(BooleanValues.TRUE)).
|
|
180
|
+
next_token (str): Optional. A token to resume pagination of list_inference_components.
|
|
181
|
+
This is currently not implemented.
|
|
182
|
+
"""
|
|
183
|
+
|
|
184
|
+
response = {}
|
|
185
|
+
|
|
186
|
+
jumpstart_public_hub_arn = construct_hub_arn_from_name(
|
|
187
|
+
JUMPSTART_MODEL_HUB_NAME, self.region, self._sagemaker_session
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
hub_content_summaries = []
|
|
191
|
+
models = list_jumpstart_models(filter=filter, list_versions=True)
|
|
192
|
+
for model in models:
|
|
193
|
+
if len(model) <= 63:
|
|
194
|
+
info = get_info_from_hub_resource_arn(jumpstart_public_hub_arn)
|
|
195
|
+
hub_model_arn = (
|
|
196
|
+
f"arn:{info.partition}:"
|
|
197
|
+
f"sagemaker:{info.region}:"
|
|
198
|
+
f"aws:hub-content/{info.hub_name}/"
|
|
199
|
+
f"{HubContentType.MODEL.value}/{model[0]}"
|
|
200
|
+
)
|
|
201
|
+
hub_content_summary = {
|
|
202
|
+
"hub_content_name": model[0],
|
|
203
|
+
"hub_content_arn": hub_model_arn,
|
|
204
|
+
}
|
|
205
|
+
hub_content_summaries.append(hub_content_summary)
|
|
206
|
+
response["hub_content_summaries"] = hub_content_summaries
|
|
207
|
+
|
|
208
|
+
response["next_token"] = None # Temporary until pagination is implemented for this function
|
|
209
|
+
|
|
210
|
+
return response
|
|
211
|
+
|
|
212
|
+
def delete(self) -> None:
|
|
213
|
+
"""Deletes this SageMaker Hub."""
|
|
214
|
+
return self._sagemaker_session.delete_hub(self.hub_name)
|
|
215
|
+
|
|
216
|
+
def create_model_reference(
|
|
217
|
+
self, model_arn: str, model_name: Optional[str] = None, min_version: Optional[str] = None
|
|
218
|
+
):
|
|
219
|
+
"""Adds model reference to this SageMaker Hub."""
|
|
220
|
+
return self._sagemaker_session.create_hub_content_reference(
|
|
221
|
+
hub_name=self.hub_name,
|
|
222
|
+
source_hub_content_arn=model_arn,
|
|
223
|
+
hub_content_name=model_name,
|
|
224
|
+
min_version=min_version,
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
def delete_model_reference(self, model_name: str) -> None:
|
|
228
|
+
"""Deletes model reference from this SageMaker Hub."""
|
|
229
|
+
return self._sagemaker_session.delete_hub_content_reference(
|
|
230
|
+
hub_name=self.hub_name,
|
|
231
|
+
hub_content_type=HubContentType.MODEL_REFERENCE.value,
|
|
232
|
+
hub_content_name=model_name,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
def describe_model(
|
|
236
|
+
self, model_name: str, hub_name: Optional[str] = None, model_version: Optional[str] = None
|
|
237
|
+
) -> DescribeHubContentResponse:
|
|
238
|
+
"""Describe Model or ModelReference in a Hub."""
|
|
239
|
+
hub_name = hub_name or self.hub_name
|
|
240
|
+
|
|
241
|
+
# Users only input model id, not contentType, so first try to describe with ModelReference, then with Model
|
|
242
|
+
try:
|
|
243
|
+
model_version = get_hub_model_version(
|
|
244
|
+
hub_model_name=model_name,
|
|
245
|
+
hub_model_type=HubContentType.MODEL_REFERENCE.value,
|
|
246
|
+
hub_name=hub_name,
|
|
247
|
+
sagemaker_session=self._sagemaker_session,
|
|
248
|
+
hub_model_version=model_version,
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
hub_content_description: Dict[str, Any] = self._sagemaker_session.describe_hub_content(
|
|
252
|
+
hub_name=hub_name,
|
|
253
|
+
hub_content_name=model_name,
|
|
254
|
+
hub_content_version=model_version,
|
|
255
|
+
hub_content_type=HubContentType.MODEL_REFERENCE.value,
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
except Exception as ex:
|
|
259
|
+
logging.info(
|
|
260
|
+
"Received exeption while calling APIs for ContentType ModelReference, retrying with ContentType Model: "
|
|
261
|
+
+ str(ex)
|
|
262
|
+
)
|
|
263
|
+
|
|
264
|
+
# Failed to describe ModelReference, try with Model
|
|
265
|
+
try:
|
|
266
|
+
model_version = get_hub_model_version(
|
|
267
|
+
hub_model_name=model_name,
|
|
268
|
+
hub_model_type=HubContentType.MODEL.value,
|
|
269
|
+
hub_name=hub_name,
|
|
270
|
+
sagemaker_session=self._sagemaker_session,
|
|
271
|
+
hub_model_version=model_version,
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
hub_content_description: Dict[str, Any] = (
|
|
275
|
+
self._sagemaker_session.describe_hub_content(
|
|
276
|
+
hub_name=hub_name,
|
|
277
|
+
hub_content_name=model_name,
|
|
278
|
+
hub_content_version=model_version,
|
|
279
|
+
hub_content_type=HubContentType.MODEL.value,
|
|
280
|
+
)
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
except Exception as ex:
|
|
284
|
+
# Failed with both, throw a custom error message
|
|
285
|
+
raise RuntimeError(
|
|
286
|
+
f"Cannot get details for {model_name} in Hub {hub_name}. \
|
|
287
|
+
{model_name} does not exist as a Model or ModelReference in {hub_name}: \n"
|
|
288
|
+
+ str(ex)
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
return DescribeHubContentResponse(hub_content_description)
|