sagemaker-core 2.24.0__tar.gz → 2.26.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sagemaker_core-2.24.0/src/sagemaker_core.egg-info → sagemaker_core-2.26.0}/PKG-INFO +1 -1
- sagemaker_core-2.26.0/VERSION +1 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config_schema.py +25 -1
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/iam_role_resolver.py +123 -19
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-neuronx.json +8 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uris.py +1 -1
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/models.py +44 -3
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/region_config.json +8 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/data.py +6 -2
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/entities.py +19 -5
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/image.py +8 -12
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/local_session.py +41 -1
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/clarify_model_monitoring.py +4 -5
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/model_monitoring.py +20 -4
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_registry.py +25 -4
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/processing.py +67 -19
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/resources.py +477 -13
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/shapes/shapes.py +623 -81
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/spark/processing.py +27 -9
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/resources_codegen.py +8 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/code_injection/shape_dag.py +504 -16
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/job_config_document.py +2 -3
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/pipeline_capture.py +6 -3
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0/src/sagemaker_core.egg-info}/PKG-INFO +1 -1
- sagemaker_core-2.24.0/VERSION +0 -1
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/LICENSE +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/MANIFEST.in +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/README.rst +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/pyproject.toml +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/setup.cfg +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/_studio.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/_version.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/accept_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/analytics.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/apiutils/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/apiutils/_base_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/apiutils/_boto_functions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/apiutils/_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/base_deserializers.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/base_serializers.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/clarify/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/collection.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/common_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/compute_resource_requirements/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/compute_resource_requirements/resource_requirements.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config/config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config/config_manager.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config/config_schema.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/config/config_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/content_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/debugger.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/framework_profile.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/metrics_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/profiler.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/profiler_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/profiler_constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/debugger/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/deprecations.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/deserializers/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/deserializers/base.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/deserializers/implementations.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/drift_check_baselines.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/enums.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/environment_variables.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/exceptions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_api_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_environment.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_helper.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_metrics.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_run_context.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/experiment.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/run.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/trial.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/experiments/trial_component.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/explainer/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/explainer/clarify_explainer_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/explainer/explainer_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/fw_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/git_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/iam_policies.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/pipeline_variable.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/session_helper.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/hyperparameters.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_retriever/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_retriever/image_retriever.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_retriever/image_retriever_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/autogluon.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/blazingtext.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/chainer.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/clarify.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/coach-mxnet.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/coach-tensorflow.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/data-wrangler.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/debugger.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/detailed-profiler.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-deepspeed.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-fastertransformer.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-lmi.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-tensorrtllm.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/factorization-machines.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/forecasting-deepar.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-llamacpp.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-llm-neuronx.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-llm.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-neuron.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-neuronx.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-sglang.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-tei-cpu.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-tei.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-training-compiler.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-vllm-neuronx.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-vllm-omni.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface-vllm.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/huggingface.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/hyperpod-recipes-neuron.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/image-classification-neo.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/image-classification.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/inferentia-mxnet.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/inferentia-pytorch.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/inferentia-tensorflow.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/instance_gpu_info.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/ipinsights.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/kmeans.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/knn.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/lda.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/linear-learner.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/llama-cpp-arm64.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/llama-cpp.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/model-monitor.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/mxnet.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/neo-mxnet.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/neo-pytorch.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/neo-tensorflow.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/ntm.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/object-detection.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/object2vec.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pca.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pytorch-amzn2023.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pytorch-neuron.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pytorch-smp.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pytorch-training-compiler.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/pytorch.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/randomcutforest.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/ray-pytorch.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/ray-serve.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/ray-tensorflow.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sagemaker-base-python.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sagemaker-distribution.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sagemaker-geospatial.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sagemaker-inspect-ai.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sagemaker-tritonserver.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/semantic-segmentation.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/seq2seq.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sglang-server.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sglang.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sklearn.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/spark.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/sparkml-serving.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/stabilityai.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/tensorflow.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/vllm-omni.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/vllm-server.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/vllm.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/vw.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/whisperx.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/xgboost-neo.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/xgboost.json +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/inference_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/inference_recommender/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/inference_recommender/inference_recommender_mixin.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/inputs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/instance_group.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/instance_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/instance_types_gpu_info.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/interactive_apps/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/interactive_apps/base_interactive_app.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/interactive_apps/detail_profiler_app.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/interactive_apps/tensorboard.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/iterators.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/job.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/accessors.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/environment_variables.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/hyperparameters.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/image_uris.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/incremental_training.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/instance_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/kwargs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/metric_definitions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/model_packages.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/model_uris.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/payloads.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/predictors.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/resource_names.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/resource_requirements.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/artifacts/script_uris.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/cache.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/configs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/deserializers.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/document.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/enums.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/exceptions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/factory/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/factory/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/filters.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/hub.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/interfaces.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/parser_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/parsers.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/hub/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/notebook_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/parameters.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/payload_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/search.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/serializers.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/session_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/validators.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lambda_helper.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/_api_types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/action.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/artifact.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/association.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/context.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/lineage_trial_component.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/query.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/lineage/visualizer.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/exceptions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/local/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/logs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/metadata_properties.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/metric_definitions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/mlflow/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/mlflow/forward_sagemaker_metrics.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_card/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_life_cycle.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_metrics.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/cron_expression_generator.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/data_capture_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/data_quality_monitoring_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/dataset_format.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/monitoring_alert.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/monitoring_files.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_monitor/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/model_uris.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/configs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/distributed.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/local_core/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/local_core/local_container.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/templates.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/common/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/common/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/distributed_drivers/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/distributed_drivers/basic_script_driver.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_driver.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/distributed_drivers/mpi_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/distributed_drivers/torchrun_driver.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/scripts/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/container_drivers/scripts/environment.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/sm_recipes/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/train/sm_recipes/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/types.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/modules/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/network.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/parameter.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/partner_app/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/partner_app/auth_provider.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/partner_app/auth_utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/payloads.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/checkpoint_location.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/client.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/core/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/core/_custom_dispatch_table.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/core/pipeline_variables.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/core/serialization.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/core/stored_function.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/custom_file_filter.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/errors.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/invoke_function.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/job.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/logging_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/runtime_environment/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/runtime_environment/bootstrap_runtime_environment.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/runtime_environment/mpi_utils_remote.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/runtime_environment/runtime_environment_manager.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/runtime_environment/spark_app.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/remote_function/spark_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/resource_requirements.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/s3/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/s3/client.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/s3/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/script_uris.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/serializers/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/serializers/base.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/serializers/implementations.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/serializers/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/serverless_inference_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/session_settings.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/shapes/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/shapes/model_card_shapes.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/spark/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/spark/defaults.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/telemetry/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/telemetry/attribution.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/telemetry/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/telemetry/resource_creation.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/telemetry/telemetry_logging.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/token_generator/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/token_generator/token_generator.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/codegen.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/data_extractor.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/method.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/model_card/generate_model_card_from_schema.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/resources_extractor.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/shapes_codegen.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/shapes_extractor.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/tools/templates.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training/configs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training_compiler/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training_compiler/config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/training_compiler_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/transformer.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/user_agent.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utilities/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utilities/cache.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utilities/search_expression.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/code_injection/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/code_injection/base.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/code_injection/codec.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/code_injection/constants.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/exceptions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/install_requirements.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/intelligent_defaults_helper.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/logs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/user_agent.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/utils/utils.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/conditions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/entities.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/execution_variables.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/functions.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/parameters.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/pipeline_context.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/pipeline_definition_config.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/properties.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/step_outputs.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/workflow/utilities.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/lineage/__init__.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/lineage/action.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/lineage/artifact.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/lineage/context.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/lineage/lineage_trial_component.py +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker_core.egg-info/SOURCES.txt +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker_core.egg-info/dependency_links.txt +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker_core.egg-info/requires.txt +0 -0
- {sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker_core.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.26.0
|
|
@@ -501,7 +501,10 @@ SAGEMAKER_PYTHON_SDK_CONFIG_SCHEMA = {
|
|
|
501
501
|
},
|
|
502
502
|
"MlflowApp": {
|
|
503
503
|
"type": "object",
|
|
504
|
-
"properties": {
|
|
504
|
+
"properties": {
|
|
505
|
+
"role_arn": {"type": "string"},
|
|
506
|
+
"kms_key_id": {"type": "string"},
|
|
507
|
+
},
|
|
505
508
|
},
|
|
506
509
|
"MlflowTrackingServer": {
|
|
507
510
|
"type": "object",
|
|
@@ -873,6 +876,27 @@ SAGEMAKER_PYTHON_SDK_CONFIG_SCHEMA = {
|
|
|
873
876
|
"profiler_config": {"s3_output_path": {"type": "string"}},
|
|
874
877
|
},
|
|
875
878
|
},
|
|
879
|
+
"TrainingSession": {
|
|
880
|
+
"type": "object",
|
|
881
|
+
"properties": {
|
|
882
|
+
"training_session_detail": {
|
|
883
|
+
"vpc_config": {
|
|
884
|
+
"security_group_ids": {
|
|
885
|
+
"type": "array",
|
|
886
|
+
"items": {"type": "string"},
|
|
887
|
+
},
|
|
888
|
+
"subnets": {
|
|
889
|
+
"type": "array",
|
|
890
|
+
"items": {"type": "string"},
|
|
891
|
+
},
|
|
892
|
+
},
|
|
893
|
+
"role_arn": {"type": "string"},
|
|
894
|
+
"output_config": {
|
|
895
|
+
"s3_location": {"kms_key_arn": {"type": "string"}}
|
|
896
|
+
},
|
|
897
|
+
}
|
|
898
|
+
},
|
|
899
|
+
},
|
|
876
900
|
"TransformJob": {
|
|
877
901
|
"type": "object",
|
|
878
902
|
"properties": {
|
{sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/helper/iam_role_resolver.py
RENAMED
|
@@ -16,6 +16,7 @@ from __future__ import absolute_import
|
|
|
16
16
|
|
|
17
17
|
import json
|
|
18
18
|
import logging
|
|
19
|
+
import os
|
|
19
20
|
import time
|
|
20
21
|
from typing import List, Optional, Set, Tuple, Union
|
|
21
22
|
from urllib.parse import unquote
|
|
@@ -369,13 +370,47 @@ def _resolve_config_default_role(role_type: str, sagemaker_session=None) -> Opti
|
|
|
369
370
|
# ---------------------------------------------------------------------------
|
|
370
371
|
# Read-only permission / trust validation
|
|
371
372
|
# ---------------------------------------------------------------------------
|
|
372
|
-
def
|
|
373
|
-
"""Return
|
|
373
|
+
def _is_unverifiable_denial(result: dict) -> bool:
|
|
374
|
+
"""Return True if an evaluation result's non-allowed decision is unverifiable.
|
|
375
|
+
|
|
376
|
+
Because iam:SimulatePrincipalPolicy does not evaluate condition-based SCPs or
|
|
377
|
+
condition-based permissions boundaries, an `implicitDeny` caused by (or
|
|
378
|
+
masked by) `AllowedByOrganizations == false` or
|
|
379
|
+
`AllowedByPermissionsBoundary == false` cannot be definitively verified by
|
|
380
|
+
the client-side policy simulator.
|
|
381
|
+
"""
|
|
382
|
+
if result.get("EvalDecision") == "explicitDeny":
|
|
383
|
+
return False
|
|
384
|
+
org_detail = result.get("OrganizationsDecisionDetail", {})
|
|
385
|
+
org_allowed = org_detail.get("AllowedByOrganizations") if isinstance(org_detail, dict) else None
|
|
386
|
+
pb_detail = result.get("PermissionsBoundaryDecisionDetail", {})
|
|
387
|
+
pb_allowed = (
|
|
388
|
+
pb_detail.get("AllowedByPermissionsBoundary") if isinstance(pb_detail, dict) else None
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
# Handle boolean False, string "false", "False", etc.
|
|
392
|
+
if org_allowed in (False, "false", "False") or pb_allowed in (False, "false", "False"):
|
|
393
|
+
return True
|
|
394
|
+
return False
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
def _simulate_denied_actions(
|
|
398
|
+
iam_client, role_arn: str, actions: List[str]
|
|
399
|
+
) -> Tuple[List[str], List[str]]:
|
|
400
|
+
"""Return lists of (denied_actions, unverifiable_actions) for ``role_arn``.
|
|
374
401
|
|
|
375
402
|
Wraps the paginated ``iam:SimulatePrincipalPolicy`` call so both the role-
|
|
376
403
|
validation path and the HyperPod caller-side check share one implementation.
|
|
377
|
-
|
|
378
|
-
|
|
404
|
+
The pagination matters: a truncated first page must not produce a false
|
|
405
|
+
"all allowed" verdict.
|
|
406
|
+
|
|
407
|
+
Returns:
|
|
408
|
+
(denied_actions, unverifiable_actions):
|
|
409
|
+
denied_actions: actions definitively denied (explicitDeny, or
|
|
410
|
+
implicitDeny without org/permissions-boundary conditions).
|
|
411
|
+
unverifiable_actions: actions returning implicitDeny with
|
|
412
|
+
AllowedByOrganizations=False or AllowedByPermissionsBoundary=False,
|
|
413
|
+
which the simulator cannot evaluate due to conditions.
|
|
379
414
|
|
|
380
415
|
Raises ClientError on failures the caller must interpret (e.g. AccessDenied
|
|
381
416
|
when the principal can't self-simulate, NoSuchEntity when the role is gone).
|
|
@@ -385,11 +420,16 @@ def _simulate_denied_actions(iam_client, role_arn: str, actions: List[str]) -> L
|
|
|
385
420
|
for page in paginator.paginate(PolicySourceArn=role_arn, ActionNames=actions):
|
|
386
421
|
evaluation_results.extend(page.get("EvaluationResults", []))
|
|
387
422
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
if result
|
|
392
|
-
|
|
423
|
+
denied = []
|
|
424
|
+
unverifiable = []
|
|
425
|
+
for result in evaluation_results:
|
|
426
|
+
if result.get("EvalDecision") != "allowed":
|
|
427
|
+
action_name = result["EvalActionName"]
|
|
428
|
+
if _is_unverifiable_denial(result):
|
|
429
|
+
unverifiable.append(action_name)
|
|
430
|
+
else:
|
|
431
|
+
denied.append(action_name)
|
|
432
|
+
return denied, unverifiable
|
|
393
433
|
|
|
394
434
|
|
|
395
435
|
def _evaluate_permissions(
|
|
@@ -405,14 +445,15 @@ def _evaluate_permissions(
|
|
|
405
445
|
verdict True — all gated actions are allowed (denied_actions empty).
|
|
406
446
|
verdict False — at least one gated action is denied (denied_actions lists them).
|
|
407
447
|
verdict None — could not be determined, e.g. the caller lacks
|
|
408
|
-
iam:SimulatePrincipalPolicy
|
|
448
|
+
iam:SimulatePrincipalPolicy or conditional SCPs prevent
|
|
449
|
+
evaluation (denied_actions empty).
|
|
409
450
|
"""
|
|
410
451
|
required_actions = _get_smoke_test_actions(role_type)
|
|
411
452
|
if not required_actions:
|
|
412
453
|
return True, []
|
|
413
454
|
|
|
414
455
|
try:
|
|
415
|
-
denied = _simulate_denied_actions(iam_client, role_arn, required_actions)
|
|
456
|
+
denied, unverifiable = _simulate_denied_actions(iam_client, role_arn, required_actions)
|
|
416
457
|
if denied:
|
|
417
458
|
logger.info(
|
|
418
459
|
"Role '%s' is missing permissions for: %s",
|
|
@@ -420,6 +461,16 @@ def _evaluate_permissions(
|
|
|
420
461
|
", ".join(denied[:5]) + ("..." if len(denied) > 5 else ""),
|
|
421
462
|
)
|
|
422
463
|
return False, denied
|
|
464
|
+
if unverifiable:
|
|
465
|
+
logger.info(
|
|
466
|
+
"Cannot definitively verify permissions for role '%s' due to "
|
|
467
|
+
"Organizations SCPs or permissions boundaries (%s returned implicitDeny "
|
|
468
|
+
"with AllowedByOrganizations/AllowedByPermissionsBoundary=false); "
|
|
469
|
+
"permission verdict unknown.",
|
|
470
|
+
role_arn,
|
|
471
|
+
", ".join(unverifiable[:5]) + ("..." if len(unverifiable) > 5 else ""),
|
|
472
|
+
)
|
|
473
|
+
return None, []
|
|
423
474
|
return True, []
|
|
424
475
|
|
|
425
476
|
except ClientError as e:
|
|
@@ -580,9 +631,12 @@ def _build_validation_error_message(
|
|
|
580
631
|
|
|
581
632
|
|
|
582
633
|
def resolve_and_validate_role(
|
|
583
|
-
provided_role: Optional[str],
|
|
584
|
-
role_type: str,
|
|
634
|
+
provided_role: Optional[str] = None,
|
|
635
|
+
role_type: str = "training",
|
|
585
636
|
sagemaker_session=None,
|
|
637
|
+
validate_role: bool = True,
|
|
638
|
+
*,
|
|
639
|
+
role_arn: Optional[str] = None,
|
|
586
640
|
) -> str:
|
|
587
641
|
"""Resolve the role to use and validate it (read-only; does not mutate IAM).
|
|
588
642
|
|
|
@@ -593,17 +647,21 @@ def resolve_and_validate_role(
|
|
|
593
647
|
3. Otherwise → resolve the caller's own identity role.
|
|
594
648
|
|
|
595
649
|
The resolved role is then VALIDATED (read-only, via iam:SimulatePrincipalPolicy
|
|
596
|
-
+ trust inspection)
|
|
650
|
+
+ trust inspection) unless ``validate_role=False`` or environment variable
|
|
651
|
+
``SAGEMAKER_VALIDATE_ROLE=false`` is set:
|
|
597
652
|
* permissions allowed AND trusted → return the ARN.
|
|
598
653
|
* a required permission is definitively denied → raise RoleValidationError.
|
|
599
654
|
* the trust policy definitively excludes the service → raise RoleValidationError.
|
|
600
655
|
* permissions cannot be verified (caller lacks iam:SimulatePrincipalPolicy,
|
|
601
|
-
|
|
656
|
+
or conditional SCPs/permissions boundaries prevent evaluation) → return
|
|
657
|
+
the ARN with a WARNING.
|
|
602
658
|
|
|
603
659
|
Args:
|
|
604
660
|
provided_role: User-supplied role name or ARN. If set, used directly.
|
|
605
661
|
role_type: One of ROLE_TYPES.
|
|
606
662
|
sagemaker_session: SageMaker session (used to get the boto session).
|
|
663
|
+
validate_role: If False, skips client-side permission/trust validation.
|
|
664
|
+
role_arn: Keyword alias for ``provided_role``.
|
|
607
665
|
|
|
608
666
|
Returns:
|
|
609
667
|
IAM role ARN.
|
|
@@ -616,6 +674,7 @@ def resolve_and_validate_role(
|
|
|
616
674
|
if role_type not in ROLE_TYPES:
|
|
617
675
|
raise ValueError(f"Invalid role_type '{role_type}'. Must be one of: {ROLE_TYPES}")
|
|
618
676
|
|
|
677
|
+
provided_role = provided_role or role_arn
|
|
619
678
|
boto_session = _get_boto_session(sagemaker_session)
|
|
620
679
|
iam_client = boto_session.client("iam")
|
|
621
680
|
|
|
@@ -640,6 +699,14 @@ def resolve_and_validate_role(
|
|
|
640
699
|
if not role_arn:
|
|
641
700
|
raise RoleValidationError(_build_validation_error_message(None, role_type))
|
|
642
701
|
|
|
702
|
+
if not validate_role or os.getenv("SAGEMAKER_VALIDATE_ROLE", "true").lower() in (
|
|
703
|
+
"false",
|
|
704
|
+
"0",
|
|
705
|
+
"no",
|
|
706
|
+
):
|
|
707
|
+
logger.info("Skipping IAM role validation for '%s' (%s).", role_arn, role_type)
|
|
708
|
+
return role_arn
|
|
709
|
+
|
|
643
710
|
# Permission check (definitive denial blocks; unverifiable warns).
|
|
644
711
|
verdict, denied = _evaluate_permissions(iam_client, role_arn, role_type)
|
|
645
712
|
if verdict is False:
|
|
@@ -657,7 +724,8 @@ def resolve_and_validate_role(
|
|
|
657
724
|
if verdict is None:
|
|
658
725
|
logger.warning(
|
|
659
726
|
"Could not verify permissions for role '%s' (caller lacks "
|
|
660
|
-
"iam:SimulatePrincipalPolicy
|
|
727
|
+
"iam:SimulatePrincipalPolicy or conditional SCPs/permissions boundaries "
|
|
728
|
+
"prevent evaluation). Proceeding with it. If the operation "
|
|
661
729
|
"later fails with an access-denied error, ensure the role has the "
|
|
662
730
|
"required permissions for '%s' (see "
|
|
663
731
|
"IamRoleResolver().get_required_actions('%s')) or create a dedicated "
|
|
@@ -716,7 +784,7 @@ def verify_hyperpod_connect_permissions(
|
|
|
716
784
|
return None
|
|
717
785
|
|
|
718
786
|
try:
|
|
719
|
-
denied = _simulate_denied_actions(
|
|
787
|
+
denied, unverifiable = _simulate_denied_actions(
|
|
720
788
|
iam_client, caller_role_arn, list(HYPERPOD_CLI_CONNECT_ACTIONS)
|
|
721
789
|
)
|
|
722
790
|
except ClientError as e:
|
|
@@ -744,6 +812,15 @@ def verify_hyperpod_connect_permissions(
|
|
|
744
812
|
)
|
|
745
813
|
return False
|
|
746
814
|
|
|
815
|
+
if unverifiable:
|
|
816
|
+
logger.info(
|
|
817
|
+
"Cannot definitively verify HyperPod connect permissions for '%s' due to "
|
|
818
|
+
"Organizations SCPs or permissions boundaries; the HyperPod CLI will "
|
|
819
|
+
"validate access at submit time.",
|
|
820
|
+
caller_role_arn,
|
|
821
|
+
)
|
|
822
|
+
return None
|
|
823
|
+
|
|
747
824
|
logger.info("Caller '%s' has the HyperPod CLI connect permissions.", caller_role_arn)
|
|
748
825
|
return True
|
|
749
826
|
|
|
@@ -765,7 +842,9 @@ def verify_evaluation_caller_permissions(
|
|
|
765
842
|
|
|
766
843
|
Returns:
|
|
767
844
|
True — all evaluation caller actions are allowed.
|
|
768
|
-
None — could not be determined (caller is not a role,
|
|
845
|
+
None — could not be determined (caller is not a role, cannot simulate, or
|
|
846
|
+
the decision is unverifiable because of condition-based SCPs or
|
|
847
|
+
permissions boundaries).
|
|
769
848
|
|
|
770
849
|
Raises:
|
|
771
850
|
RoleValidationError: If permissions are definitively denied.
|
|
@@ -788,7 +867,7 @@ def verify_evaluation_caller_permissions(
|
|
|
788
867
|
return None
|
|
789
868
|
|
|
790
869
|
try:
|
|
791
|
-
denied = _simulate_denied_actions(
|
|
870
|
+
denied, unverifiable = _simulate_denied_actions(
|
|
792
871
|
iam_client, caller_role_arn, list(EVALUATION_CALLER_ACTIONS)
|
|
793
872
|
)
|
|
794
873
|
except ClientError as e:
|
|
@@ -816,6 +895,15 @@ def verify_evaluation_caller_permissions(
|
|
|
816
895
|
)
|
|
817
896
|
raise RoleValidationError(message)
|
|
818
897
|
|
|
898
|
+
if unverifiable:
|
|
899
|
+
logger.info(
|
|
900
|
+
"Cannot definitively verify evaluation pipeline permissions for '%s' due to "
|
|
901
|
+
"Organizations SCPs or permissions boundaries; errors will surface at "
|
|
902
|
+
"pipeline creation time.",
|
|
903
|
+
caller_role_arn,
|
|
904
|
+
)
|
|
905
|
+
return None
|
|
906
|
+
|
|
819
907
|
logger.info(
|
|
820
908
|
"Caller '%s' has the evaluation pipeline orchestration permissions.",
|
|
821
909
|
caller_role_arn,
|
|
@@ -878,6 +966,22 @@ class IamRoleResolver:
|
|
|
878
966
|
self._sts_client = self._boto_session.client("sts")
|
|
879
967
|
|
|
880
968
|
# -- public API ---------------------------------------------------------
|
|
969
|
+
def resolve_and_validate_role(
|
|
970
|
+
self,
|
|
971
|
+
provided_role: Optional[str] = None,
|
|
972
|
+
role_type: str = "training",
|
|
973
|
+
*,
|
|
974
|
+
role_arn: Optional[str] = None,
|
|
975
|
+
validate_role: bool = True,
|
|
976
|
+
) -> str:
|
|
977
|
+
"""Resolve and validate an IAM role (read-only; does not mutate IAM)."""
|
|
978
|
+
return resolve_and_validate_role(
|
|
979
|
+
provided_role=provided_role or role_arn,
|
|
980
|
+
role_type=role_type,
|
|
981
|
+
sagemaker_session=self._sagemaker_session,
|
|
982
|
+
validate_role=validate_role,
|
|
983
|
+
)
|
|
984
|
+
|
|
881
985
|
def get_required_actions(self, role_type: str) -> List[str]:
|
|
882
986
|
"""Return the IAM actions a role of ``role_type`` needs (read-only preview)."""
|
|
883
987
|
self._validate_role_type(role_type)
|
{sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/image_uri_config/djl-neuronx.json
RENAMED
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"eu-west-3": "763104351884",
|
|
24
24
|
"mx-central-1": "637423239942",
|
|
25
25
|
"sa-east-1": "763104351884",
|
|
26
|
+
"sa-west-1": "434457397001",
|
|
26
27
|
"us-east-1": "763104351884",
|
|
27
28
|
"us-east-2": "763104351884",
|
|
28
29
|
"us-gov-east-1": "446045086412",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"eu-west-3": "763104351884",
|
|
60
61
|
"mx-central-1": "637423239942",
|
|
61
62
|
"sa-east-1": "763104351884",
|
|
63
|
+
"sa-west-1": "434457397001",
|
|
62
64
|
"us-east-1": "763104351884",
|
|
63
65
|
"us-east-2": "763104351884",
|
|
64
66
|
"us-gov-east-1": "446045086412",
|
|
@@ -91,6 +93,7 @@
|
|
|
91
93
|
"eu-west-3": "763104351884",
|
|
92
94
|
"mx-central-1": "637423239942",
|
|
93
95
|
"sa-east-1": "763104351884",
|
|
96
|
+
"sa-west-1": "434457397001",
|
|
94
97
|
"us-east-1": "763104351884",
|
|
95
98
|
"us-east-2": "763104351884",
|
|
96
99
|
"us-gov-east-1": "446045086412",
|
|
@@ -123,6 +126,7 @@
|
|
|
123
126
|
"eu-west-3": "763104351884",
|
|
124
127
|
"mx-central-1": "637423239942",
|
|
125
128
|
"sa-east-1": "763104351884",
|
|
129
|
+
"sa-west-1": "434457397001",
|
|
126
130
|
"us-east-1": "763104351884",
|
|
127
131
|
"us-east-2": "763104351884",
|
|
128
132
|
"us-gov-east-1": "446045086412",
|
|
@@ -155,6 +159,7 @@
|
|
|
155
159
|
"eu-west-3": "763104351884",
|
|
156
160
|
"mx-central-1": "637423239942",
|
|
157
161
|
"sa-east-1": "763104351884",
|
|
162
|
+
"sa-west-1": "434457397001",
|
|
158
163
|
"us-east-1": "763104351884",
|
|
159
164
|
"us-east-2": "763104351884",
|
|
160
165
|
"us-gov-east-1": "446045086412",
|
|
@@ -185,6 +190,7 @@
|
|
|
185
190
|
"eu-west-3": "763104351884",
|
|
186
191
|
"mx-central-1": "637423239942",
|
|
187
192
|
"sa-east-1": "763104351884",
|
|
193
|
+
"sa-west-1": "434457397001",
|
|
188
194
|
"us-east-1": "763104351884",
|
|
189
195
|
"us-east-2": "763104351884",
|
|
190
196
|
"us-gov-east-1": "446045086412",
|
|
@@ -215,6 +221,7 @@
|
|
|
215
221
|
"eu-west-3": "763104351884",
|
|
216
222
|
"mx-central-1": "637423239942",
|
|
217
223
|
"sa-east-1": "763104351884",
|
|
224
|
+
"sa-west-1": "434457397001",
|
|
218
225
|
"us-east-1": "763104351884",
|
|
219
226
|
"us-east-2": "763104351884",
|
|
220
227
|
"us-gov-east-1": "446045086412",
|
|
@@ -245,6 +252,7 @@
|
|
|
245
252
|
"eu-west-3": "763104351884",
|
|
246
253
|
"mx-central-1": "637423239942",
|
|
247
254
|
"sa-east-1": "763104351884",
|
|
255
|
+
"sa-west-1": "434457397001",
|
|
248
256
|
"us-east-1": "763104351884",
|
|
249
257
|
"us-east-2": "763104351884",
|
|
250
258
|
"us-gov-east-1": "446045086412",
|
|
@@ -258,7 +258,7 @@ def retrieve(
|
|
|
258
258
|
pt_or_tf_version = (
|
|
259
259
|
re.compile("^(pytorch|tensorflow)(.*)$").match(base_framework_version).group(2)
|
|
260
260
|
)
|
|
261
|
-
_version =
|
|
261
|
+
_version = _version_for_config(version, config)
|
|
262
262
|
|
|
263
263
|
if repo in [
|
|
264
264
|
"huggingface-pytorch-trcomp-training",
|
|
@@ -14,12 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import absolute_import, annotations
|
|
16
16
|
|
|
17
|
+
import logging
|
|
17
18
|
from enum import Enum
|
|
18
19
|
from typing import Any, Dict, List, Optional, Union
|
|
19
|
-
from pydantic import Field, ConfigDict
|
|
20
|
+
from pydantic import Field, ConfigDict, field_validator
|
|
20
21
|
|
|
21
22
|
from sagemaker.core.jumpstart.configs import BaseConfig
|
|
22
23
|
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
class StrEnum(str, Enum):
|
|
25
28
|
"""A string-valued enumeration."""
|
|
@@ -406,6 +409,31 @@ class CapabilityEnum(StrEnum):
|
|
|
406
409
|
FINE_TUNING = "FINE_TUNING"
|
|
407
410
|
VALIDATION = "VALIDATION"
|
|
408
411
|
INCREMENTAL_TRAINING = "INCREMENTAL_TRAINING"
|
|
412
|
+
CUSTOMIZATION = "CUSTOMIZATION"
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
def _coerce_capabilities(value: Any) -> Any:
|
|
416
|
+
"""Coerce ``Capabilities`` values, tolerating unknown entries.
|
|
417
|
+
|
|
418
|
+
Known values are converted to ``CapabilityEnum`` members. Unknown values
|
|
419
|
+
are kept as plain strings with a warning, so a new service-side capability
|
|
420
|
+
cannot fail validation of the entire ``HubContentDocument`` for a pinned
|
|
421
|
+
SDK version.
|
|
422
|
+
"""
|
|
423
|
+
if not isinstance(value, list):
|
|
424
|
+
return value
|
|
425
|
+
coerced = []
|
|
426
|
+
for item in value:
|
|
427
|
+
try:
|
|
428
|
+
coerced.append(CapabilityEnum(item))
|
|
429
|
+
except ValueError:
|
|
430
|
+
logger.warning(
|
|
431
|
+
"Unknown capability %r is not a member of CapabilityEnum; "
|
|
432
|
+
"keeping it as a string.",
|
|
433
|
+
item,
|
|
434
|
+
)
|
|
435
|
+
coerced.append(item)
|
|
436
|
+
return coerced
|
|
409
437
|
|
|
410
438
|
|
|
411
439
|
class DemoNotebookModel(BaseConfig):
|
|
@@ -444,7 +472,14 @@ class HostingComponentsModel(BaseConfig):
|
|
|
444
472
|
DynamicContainerDeploymentSupported: Optional[bool] = None
|
|
445
473
|
HostingAdditionalDataSources: Optional[Dict[str, List[HostingAdditionalDataSourceModel]]] = None
|
|
446
474
|
BedrockIOMappingId: Optional[str] = None
|
|
447
|
-
Capabilities: Optional[List[CapabilityEnum]] = None
|
|
475
|
+
Capabilities: Optional[List[Union[CapabilityEnum, str]]] = None
|
|
476
|
+
|
|
477
|
+
@field_validator("Capabilities", mode="before")
|
|
478
|
+
@classmethod
|
|
479
|
+
def _validate_capabilities(cls, value: Any) -> Any:
|
|
480
|
+
"""Keep unknown capability values as strings instead of failing."""
|
|
481
|
+
return _coerce_capabilities(value)
|
|
482
|
+
|
|
448
483
|
HostingEcrUri: Optional[str] = None
|
|
449
484
|
HostingArtifactS3DataType: Optional[HostingArtifactS3DataTypeEnum] = None
|
|
450
485
|
HostingArtifactCompressionType: Optional[HostingArtifactCompressionTypeEnum] = None
|
|
@@ -506,4 +541,10 @@ class HubContentDocument(HostingComponentsModel, TrainingComponentsModel):
|
|
|
506
541
|
TrainingConfigRankings: Optional[Dict[str, RankingSchemaModel]] = None
|
|
507
542
|
Resources: Optional[List[ResourceModel]] = None
|
|
508
543
|
Highlights: Optional[List[str]] = None
|
|
509
|
-
Capabilities: List[CapabilityEnum] = None
|
|
544
|
+
Capabilities: List[Union[CapabilityEnum, str]] = None
|
|
545
|
+
|
|
546
|
+
@field_validator("Capabilities", mode="before")
|
|
547
|
+
@classmethod
|
|
548
|
+
def _validate_capabilities(cls, value: Any) -> Any:
|
|
549
|
+
"""Keep unknown capability values as strings instead of failing."""
|
|
550
|
+
return _coerce_capabilities(value)
|
{sagemaker_core-2.24.0 → sagemaker_core-2.26.0}/src/sagemaker/core/jumpstart/region_config.json
RENAMED
|
@@ -139,6 +139,10 @@
|
|
|
139
139
|
"content_bucket": "jumpstart-cache-prod-me-south-1",
|
|
140
140
|
"gated_content_bucket": "jumpstart-private-cache-prod-me-south-1"
|
|
141
141
|
},
|
|
142
|
+
"me-west-1": {
|
|
143
|
+
"content_bucket": "jumpstart-cache-prod-me-west-1",
|
|
144
|
+
"gated_content_bucket": "jumpstart-private-cache-prod-me-west-1"
|
|
145
|
+
},
|
|
142
146
|
"mx-central-1": {
|
|
143
147
|
"content_bucket": "jumpstart-cache-prod-mx-central-1",
|
|
144
148
|
"gated_content_bucket": "jumpstart-private-cache-prod-mx-central-1"
|
|
@@ -148,6 +152,10 @@
|
|
|
148
152
|
"gated_content_bucket": "jumpstart-private-cache-prod-sa-east-1",
|
|
149
153
|
"neo_content_bucket": "sagemaker-sd-models-prod-sa-east-1"
|
|
150
154
|
},
|
|
155
|
+
"sa-west-1": {
|
|
156
|
+
"content_bucket": "jumpstart-cache-prod-sa-west-1",
|
|
157
|
+
"gated_content_bucket": "jumpstart-private-cache-prod-sa-west-1"
|
|
158
|
+
},
|
|
151
159
|
"us-east-1": {
|
|
152
160
|
"content_bucket": "jumpstart-cache-prod-us-east-1",
|
|
153
161
|
"gated_content_bucket": "jumpstart-private-cache-prod-us-east-1",
|
|
@@ -357,15 +357,19 @@ class MultiRecordStrategy(BatchStrategy):
|
|
|
357
357
|
Returns:
|
|
358
358
|
generator of records
|
|
359
359
|
"""
|
|
360
|
-
buffer =
|
|
360
|
+
buffer = None
|
|
361
361
|
for element in self.splitter.split(file):
|
|
362
|
+
if buffer is None:
|
|
363
|
+
# Match the buffer type to the record type so binary inputs
|
|
364
|
+
# concatenate correctly instead of raising a TypeError.
|
|
365
|
+
buffer = b"" if isinstance(element, bytes) else ""
|
|
362
366
|
if _payload_size_within_limit(buffer + element, size):
|
|
363
367
|
buffer += element
|
|
364
368
|
else:
|
|
365
369
|
tmp = buffer
|
|
366
370
|
buffer = element
|
|
367
371
|
yield tmp
|
|
368
|
-
if _validate_payload_size(buffer, size):
|
|
372
|
+
if buffer is not None and _validate_payload_size(buffer, size):
|
|
369
373
|
yield buffer
|
|
370
374
|
|
|
371
375
|
|
|
@@ -338,7 +338,11 @@ class _LocalTransformJob(object):
|
|
|
338
338
|
self.container.serve(self.primary_container["ModelDataUrl"], environment)
|
|
339
339
|
|
|
340
340
|
serving_port = get_config_value("local.serving_port", self.local_session.config) or 8080
|
|
341
|
-
|
|
341
|
+
health_check_timeout = (
|
|
342
|
+
get_config_value("local.health_check_timeout", self.local_session.config)
|
|
343
|
+
or HEALTH_CHECK_TIMEOUT_LIMIT
|
|
344
|
+
)
|
|
345
|
+
_wait_for_serving_container(serving_port, timeout=health_check_timeout)
|
|
342
346
|
|
|
343
347
|
# Get capabilities from Container if needed
|
|
344
348
|
endpoint_url = "http://%s:%d/execution-parameters" % (get_docker_host(), serving_port)
|
|
@@ -632,7 +636,11 @@ class _LocalEndpoint(object):
|
|
|
632
636
|
)
|
|
633
637
|
|
|
634
638
|
serving_port = get_config_value("local.serving_port", self.local_session.config) or 8080
|
|
635
|
-
|
|
639
|
+
health_check_timeout = (
|
|
640
|
+
get_config_value("local.health_check_timeout", self.local_session.config)
|
|
641
|
+
or HEALTH_CHECK_TIMEOUT_LIMIT
|
|
642
|
+
)
|
|
643
|
+
_wait_for_serving_container(serving_port, timeout=health_check_timeout)
|
|
636
644
|
# the container is running and it passed the healthcheck status is now InService
|
|
637
645
|
self.state = _LocalEndpoint._IN_SERVICE
|
|
638
646
|
|
|
@@ -655,15 +663,21 @@ class _LocalEndpoint(object):
|
|
|
655
663
|
return response
|
|
656
664
|
|
|
657
665
|
|
|
658
|
-
def _wait_for_serving_container(serving_port):
|
|
659
|
-
"""
|
|
666
|
+
def _wait_for_serving_container(serving_port, timeout=HEALTH_CHECK_TIMEOUT_LIMIT):
|
|
667
|
+
"""Wait for the serving container to become healthy.
|
|
668
|
+
|
|
669
|
+
Args:
|
|
670
|
+
serving_port (int): The port the serving container is listening on.
|
|
671
|
+
timeout (int): Maximum number of seconds to wait for the container to become healthy.
|
|
672
|
+
Defaults to ``HEALTH_CHECK_TIMEOUT_LIMIT``.
|
|
673
|
+
"""
|
|
660
674
|
i = 0
|
|
661
675
|
http = urllib3.PoolManager()
|
|
662
676
|
|
|
663
677
|
endpoint_url = "http://%s:%d/ping" % (get_docker_host(), serving_port)
|
|
664
678
|
while True:
|
|
665
679
|
i += 5
|
|
666
|
-
if i >=
|
|
680
|
+
if i >= timeout:
|
|
667
681
|
raise RuntimeError("Giving up, endpoint didn't launch correctly")
|
|
668
682
|
|
|
669
683
|
logger.info("Checking if serving container is up, attempt: %s", i)
|
|
@@ -39,6 +39,7 @@ import sagemaker
|
|
|
39
39
|
from sagemaker.core.config.config_schema import CONTAINER_CONFIG, LOCAL
|
|
40
40
|
import sagemaker.core
|
|
41
41
|
from sagemaker.core.common_utils import custom_extractall_tarfile
|
|
42
|
+
from sagemaker.core.constants import DIR_PARAM_NAME, SAGEMAKER_OUTPUT_LOCATION
|
|
42
43
|
|
|
43
44
|
CONTAINER_PREFIX = "algo"
|
|
44
45
|
STUDIO_HOST_NAME = "sagemaker-local"
|
|
@@ -277,9 +278,7 @@ class _SageMakerContainer(object):
|
|
|
277
278
|
data_dir, input_data_config, output_data_config, hyperparameters
|
|
278
279
|
)
|
|
279
280
|
# If local, source directory needs to be updated to mounted /opt/ml/code path
|
|
280
|
-
hyperparameters = self._update_local_src_path(
|
|
281
|
-
hyperparameters, key=sagemaker.serve.model_builder.DIR_PARAM_NAME
|
|
282
|
-
)
|
|
281
|
+
hyperparameters = self._update_local_src_path(hyperparameters, key=DIR_PARAM_NAME)
|
|
283
282
|
|
|
284
283
|
# Create the configuration files for each container that we will create
|
|
285
284
|
# Each container will map the additional local volumes (if any).
|
|
@@ -344,15 +343,15 @@ class _SageMakerContainer(object):
|
|
|
344
343
|
volumes = self._prepare_serving_volumes(model_dir)
|
|
345
344
|
|
|
346
345
|
# If the user script was passed as a file:// mount it to the container.
|
|
347
|
-
if
|
|
348
|
-
script_dir = environment[
|
|
346
|
+
if DIR_PARAM_NAME.upper() in environment:
|
|
347
|
+
script_dir = environment[DIR_PARAM_NAME.upper()]
|
|
349
348
|
parsed_uri = urlparse(script_dir)
|
|
350
349
|
if parsed_uri.scheme == "file":
|
|
351
350
|
host_dir = os.path.abspath(parsed_uri.netloc + parsed_uri.path)
|
|
352
351
|
volumes.append(_Volume(host_dir, "/opt/ml/code"))
|
|
353
352
|
# Update path to mount location
|
|
354
353
|
environment = environment.copy()
|
|
355
|
-
environment[
|
|
354
|
+
environment[DIR_PARAM_NAME.upper()] = "/opt/ml/code"
|
|
356
355
|
|
|
357
356
|
if _ecr_login_if_needed(self.sagemaker_session.boto_session, self.image):
|
|
358
357
|
_pull_image(self.image)
|
|
@@ -583,8 +582,8 @@ class _SageMakerContainer(object):
|
|
|
583
582
|
|
|
584
583
|
# If there is a training script directory and it is a local directory,
|
|
585
584
|
# mount it to the container.
|
|
586
|
-
if
|
|
587
|
-
training_dir = json.loads(hyperparameters[
|
|
585
|
+
if DIR_PARAM_NAME in hyperparameters:
|
|
586
|
+
training_dir = json.loads(hyperparameters[DIR_PARAM_NAME])
|
|
588
587
|
parsed_uri = urlparse(training_dir)
|
|
589
588
|
if parsed_uri.scheme == "file":
|
|
590
589
|
host_dir = os.path.abspath(parsed_uri.netloc + parsed_uri.path)
|
|
@@ -593,10 +592,7 @@ class _SageMakerContainer(object):
|
|
|
593
592
|
volumes.append(_Volume(shared_dir, "/opt/ml/shared"))
|
|
594
593
|
|
|
595
594
|
parsed_uri = urlparse(output_data_config["S3OutputPath"])
|
|
596
|
-
if
|
|
597
|
-
parsed_uri.scheme == "file"
|
|
598
|
-
and sagemaker.serve.model_builder.SAGEMAKER_OUTPUT_LOCATION in hyperparameters
|
|
599
|
-
):
|
|
595
|
+
if parsed_uri.scheme == "file" and SAGEMAKER_OUTPUT_LOCATION in hyperparameters:
|
|
600
596
|
dir_path = os.path.abspath(parsed_uri.netloc + parsed_uri.path)
|
|
601
597
|
intermediate_dir = os.path.join(dir_path, "output", "intermediate")
|
|
602
598
|
if not os.path.exists(intermediate_dir):
|