sagemaker 2.147.0__tar.gz → 2.149.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sagemaker-2.147.0/src/sagemaker.egg-info → sagemaker-2.149.0}/PKG-INFO +3 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/README.rst +2 -0
- sagemaker-2.149.0/VERSION +1 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/extras/test_requirements.txt +1 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/setup.py +2 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/clarify.py +39 -2
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/config/config_schema.py +101 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/run.py +30 -20
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/fw_utils.py +4 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/estimator.py +85 -28
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/pytorch.json +115 -3
- sagemaker-2.149.0/src/sagemaker/image_uri_config/sagemaker-base-python.json +36 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/tensorflow.json +33 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uris.py +35 -10
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/local_session.py +12 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/model_monitoring.py +42 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/__init__.py +16 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/client.py +1131 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/core/serialization.py +271 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/core/stored_function.py +105 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/errors.py +99 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/invoke_function.py +103 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/job.py +653 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/logging_config.py +38 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/runtime_environment/bootstrap_runtime_environment.py +147 -0
- sagemaker-2.149.0/src/sagemaker/remote_function/runtime_environment/runtime_environment_manager.py +366 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/s3.py +76 -11
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/session.py +244 -180
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/clarify_check_step.py +2 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/functions.py +4 -1
- sagemaker-2.149.0/src/sagemaker/wrangler/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0/src/sagemaker.egg-info}/PKG-INFO +3 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker.egg-info/SOURCES.txt +12 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker.egg-info/requires.txt +3 -0
- sagemaker-2.147.0/VERSION +0 -1
- {sagemaker-2.147.0 → sagemaker-2.149.0}/LICENSE.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/MANIFEST.in +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/extras/local_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/extras/scipy_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/doc8_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/docstyle_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/flake8_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/mypy_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/pydocstyle_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/pylint_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/spelling_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/requirements/tox/twine_requirements.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/setup.cfg +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/_studio.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/algorithm.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/amazon_estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/common.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/factorization_machines.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/hyperparameter.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/ipinsights.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/kmeans.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/knn.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/lda.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/linear_learner.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/ntm.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/object2vec.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/pca.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/randomcutforest.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/record_pb2.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/amazon/validation.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/analytics.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/apiutils/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/apiutils/_base_types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/apiutils/_boto_functions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/apiutils/_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/async_inference/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/async_inference/async_inference_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/async_inference/async_inference_response.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/async_inference/waiter_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/automl/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/automl/automl.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/automl/candidate_estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/chainer/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/chainer/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/chainer/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/chainer/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/ast_transformer.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/files.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/airflow.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/deprecated_params.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/framework_version.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/image_uris.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/matching.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/modifier.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/parsing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/predictors.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/renamed_params.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/serde.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/tf_legacy_mode.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/tfs.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/training_input.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/modifiers/training_params.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/compatibility/v2/sagemaker_upgrade_v2.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/cli/framework_upgrade.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/collection.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/config/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/config/config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/content_types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/dataset_definition/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/dataset_definition/inputs.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/debugger.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/framework_profile.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/metrics_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/profiler_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/profiler_constants.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/debugger/utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/deprecations.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/deserializers.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/djl_inference/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/djl_inference/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/djl_inference/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/drift_check_baselines.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/environment_variables.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/exceptions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_api_types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_environment.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_helper.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_metrics.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_run_context.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/experiment.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/trial.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/experiments/trial_component.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/explainer/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/explainer/clarify_explainer_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/explainer/explainer_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/dataset_builder.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/feature_definition.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/feature_group.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/feature_store.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/feature_store/inputs.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/git_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/training_compiler/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/huggingface/training_compiler/config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/hyperparameters.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/autogluon.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/blazingtext.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/chainer.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/clarify.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/coach-mxnet.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/coach-tensorflow.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/data-wrangler.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/debugger.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/djl-deepspeed.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/djl-fastertransformer.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/factorization-machines.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/forecasting-deepar.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/huggingface-neuron.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/huggingface-training-compiler.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/huggingface.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/image-classification-neo.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/image-classification.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/inferentia-mxnet.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/inferentia-pytorch.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/inferentia-tensorflow.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/ipinsights.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/kmeans.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/knn.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/lda.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/linear-learner.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/model-monitor.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/mxnet.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/neo-mxnet.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/neo-pytorch.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/neo-tensorflow.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/ntm.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/object-detection.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/object2vec.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/pca.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/pytorch-neuron.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/pytorch-training-compiler.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/randomcutforest.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/ray-pytorch.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/ray-tensorflow.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/semantic-segmentation.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/seq2seq.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/sklearn.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/spark.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/sparkml-serving.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/vw.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/xgboost-neo.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/image_uri_config/xgboost.json +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/inference_recommender/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/inference_recommender/inference_recommender_mixin.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/inputs.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/instance_group.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/instance_types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/job.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/accessors.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/artifacts.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/cache.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/constants.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/enums.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/exceptions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/filters.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/notebook_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/parameters.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/jumpstart/validators.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lambda_helper.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/_api_types.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/action.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/artifact.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/association.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/context.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/lineage_trial_component.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/query.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/lineage/visualizer.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/data.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/entities.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/exceptions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/image.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/pipeline.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/local/utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/logs.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/metadata_properties.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/metric_definitions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_card/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_card/evaluation_metric_parsers.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_card/helpers.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_card/model_card.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_card/schema_constraints.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_metrics.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/clarify_model_monitoring.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/cron_expression_generator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/data_capture_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/dataset_format.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/monitoring_alert.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_monitor/monitoring_files.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/model_uris.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/multidatamodel.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/mxnet/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/mxnet/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/mxnet/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/mxnet/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/mxnet/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/network.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/parameter.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pipeline.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/predictor.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/predictor_async.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/training_compiler/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/pytorch/training_compiler/config.py +0 -0
- {sagemaker-2.147.0/src/sagemaker/tensorflow/training_compiler → sagemaker-2.149.0/src/sagemaker/remote_function/runtime_environment}/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/rl/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/rl/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/script_uris.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/serializers.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/serverless/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/serverless/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/serverless/predictor.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/serverless/serverless_inference_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/session_settings.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sklearn/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sklearn/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sklearn/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sklearn/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sklearn/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/spark/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/spark/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/spark/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sparkml/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/sparkml/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/serving.py +0 -0
- {sagemaker-2.147.0/src/sagemaker → sagemaker-2.149.0/src/sagemaker/tensorflow}/training_compiler/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tensorflow/training_compiler/config.py +0 -0
- {sagemaker-2.147.0/src/sagemaker/utilities → sagemaker-2.149.0/src/sagemaker/training_compiler}/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/training_compiler/config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/transformer.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/tuner.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/user_agent.py +0 -0
- {sagemaker-2.147.0/src/sagemaker/wrangler → sagemaker-2.149.0/src/sagemaker/utilities}/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/utilities/cache.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/utilities/search_expression.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/vpc_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/_repack_model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/_utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/airflow.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/automl_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/callback_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/check_job_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/condition_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/conditions.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/emr_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/entities.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/execution_variables.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/fail_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/lambda_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/model_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/monitor_batch_transform_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/parallelism_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/parameters.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/pipeline.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/pipeline_context.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/pipeline_experiment_config.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/properties.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/quality_check_step.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/retry.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/step_collections.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/steps.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/workflow/utilities.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/wrangler/ingestion.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/wrangler/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/__init__.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/defaults.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/estimator.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/model.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/processing.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker/xgboost/utils.py +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker.egg-info/dependency_links.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker.egg-info/entry_points.txt +0 -0
- {sagemaker-2.147.0 → sagemaker-2.149.0}/src/sagemaker.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: sagemaker
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.149.0
|
|
4
4
|
Summary: Open source library for training and deploying models on Amazon SageMaker.
|
|
5
5
|
Home-page: https://github.com/aws/sagemaker-python-sdk/
|
|
6
6
|
Author: Amazon Web Services
|
|
@@ -140,6 +140,8 @@ Description: .. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/b
|
|
|
140
140
|
1. AWS account credentials are available in the environment for the boto3 client to use.
|
|
141
141
|
2. The AWS account has an IAM role named :code:`SageMakerRole`.
|
|
142
142
|
It should have the AmazonSageMakerFullAccess policy attached as well as a policy with `the necessary permissions to use Elastic Inference <https://docs.aws.amazon.com/sagemaker/latest/dg/ei-setup.html>`__.
|
|
143
|
+
3. To run remote_function tests, dummy ecr repo should be created. It can be created by running -
|
|
144
|
+
:code:`aws ecr create-repository --repository-name remote-function-dummy-container`
|
|
143
145
|
|
|
144
146
|
We recommend selectively running just those integration tests you'd like to run. You can filter by individual test function names with:
|
|
145
147
|
|
|
@@ -133,6 +133,8 @@ To run the integration tests, the following prerequisites must be met
|
|
|
133
133
|
1. AWS account credentials are available in the environment for the boto3 client to use.
|
|
134
134
|
2. The AWS account has an IAM role named :code:`SageMakerRole`.
|
|
135
135
|
It should have the AmazonSageMakerFullAccess policy attached as well as a policy with `the necessary permissions to use Elastic Inference <https://docs.aws.amazon.com/sagemaker/latest/dg/ei-setup.html>`__.
|
|
136
|
+
3. To run remote_function tests, dummy ecr repo should be created. It can be created by running -
|
|
137
|
+
:code:`aws ecr create-repository --repository-name remote-function-dummy-container`
|
|
136
138
|
|
|
137
139
|
We recommend selectively running just those integration tests you'd like to run. You can filter by individual test function names with:
|
|
138
140
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.149.0
|
|
@@ -49,6 +49,7 @@ def read_requirements(filename):
|
|
|
49
49
|
required_packages = [
|
|
50
50
|
"attrs>=20.3.0,<23",
|
|
51
51
|
"boto3>=1.26.28,<2.0",
|
|
52
|
+
"cloudpickle==2.2.1",
|
|
52
53
|
"google-pasta",
|
|
53
54
|
"numpy>=1.9.0,<2.0",
|
|
54
55
|
"protobuf>=3.1,<4.0",
|
|
@@ -62,6 +63,7 @@ required_packages = [
|
|
|
62
63
|
"PyYAML==5.4.1",
|
|
63
64
|
"jsonschema",
|
|
64
65
|
"platformdirs",
|
|
66
|
+
"tblib==1.7.0",
|
|
65
67
|
]
|
|
66
68
|
|
|
67
69
|
# Specific use case dependencies
|
|
@@ -26,7 +26,7 @@ import re
|
|
|
26
26
|
import tempfile
|
|
27
27
|
from abc import ABC, abstractmethod
|
|
28
28
|
from typing import List, Union, Dict, Optional, Any
|
|
29
|
-
|
|
29
|
+
from enum import Enum
|
|
30
30
|
from schema import Schema, And, Use, Or, Optional as SchemaOptional, Regex
|
|
31
31
|
|
|
32
32
|
from sagemaker import image_uris, s3, utils
|
|
@@ -304,6 +304,16 @@ ANALYSIS_CONFIG_SCHEMA_V1_0 = Schema(
|
|
|
304
304
|
)
|
|
305
305
|
|
|
306
306
|
|
|
307
|
+
class DatasetType(Enum):
|
|
308
|
+
"""Enum to store different dataset types supported in the Analysis config file"""
|
|
309
|
+
|
|
310
|
+
TEXTCSV = "text/csv"
|
|
311
|
+
JSONLINES = "application/jsonlines"
|
|
312
|
+
JSON = "application/json"
|
|
313
|
+
PARQUET = "application/x-parquet"
|
|
314
|
+
IMAGE = "application/x-image"
|
|
315
|
+
|
|
316
|
+
|
|
307
317
|
class DataConfig:
|
|
308
318
|
"""Config object related to configurations of the input and output dataset."""
|
|
309
319
|
|
|
@@ -1451,7 +1461,7 @@ class SageMakerClarifyProcessor(Processor):
|
|
|
1451
1461
|
source=self._CLARIFY_OUTPUT,
|
|
1452
1462
|
destination=data_config.s3_output_path,
|
|
1453
1463
|
output_name="analysis_result",
|
|
1454
|
-
s3_upload_mode=
|
|
1464
|
+
s3_upload_mode=ProcessingOutputHandler.get_s3_upload_mode(analysis_config),
|
|
1455
1465
|
)
|
|
1456
1466
|
|
|
1457
1467
|
return super().run(
|
|
@@ -2171,6 +2181,33 @@ def _upload_analysis_config(analysis_config_file, s3_output_path, sagemaker_sess
|
|
|
2171
2181
|
)
|
|
2172
2182
|
|
|
2173
2183
|
|
|
2184
|
+
class ProcessingOutputHandler:
|
|
2185
|
+
"""Class to handle the parameters for SagemakerProcessor.Processingoutput"""
|
|
2186
|
+
|
|
2187
|
+
class S3UploadMode(Enum):
|
|
2188
|
+
"""Enum values for different uplaod modes to s3 bucket"""
|
|
2189
|
+
|
|
2190
|
+
CONTINUOUS = "Continuous"
|
|
2191
|
+
ENDOFJOB = "EndOfJob"
|
|
2192
|
+
|
|
2193
|
+
@classmethod
|
|
2194
|
+
def get_s3_upload_mode(cls, analysis_config: Dict[str, Any]) -> str:
|
|
2195
|
+
"""Fetches s3_upload mode based on the shap_config values
|
|
2196
|
+
|
|
2197
|
+
Args:
|
|
2198
|
+
analysis_config (dict): dict Config following the analysis_config.json format
|
|
2199
|
+
|
|
2200
|
+
Returns:
|
|
2201
|
+
The s3_upload_mode type for the processing output.
|
|
2202
|
+
"""
|
|
2203
|
+
dataset_type = analysis_config["dataset_type"]
|
|
2204
|
+
return (
|
|
2205
|
+
ProcessingOutputHandler.S3UploadMode.CONTINUOUS.value
|
|
2206
|
+
if dataset_type == DatasetType.IMAGE.value
|
|
2207
|
+
else ProcessingOutputHandler.S3UploadMode.ENDOFJOB.value
|
|
2208
|
+
)
|
|
2209
|
+
|
|
2210
|
+
|
|
2174
2211
|
def _set(value, key, dictionary):
|
|
2175
2212
|
"""Sets dictionary[key] = value if value is not None."""
|
|
2176
2213
|
if value is not None:
|
|
@@ -44,6 +44,17 @@ MONITORING_JOB_DEFINITION = "MonitoringJobDefinition"
|
|
|
44
44
|
SAGEMAKER = "SageMaker"
|
|
45
45
|
PYTHON_SDK = "PythonSDK"
|
|
46
46
|
MODULES = "Modules"
|
|
47
|
+
REMOTE_FUNCTION = "RemoteFunction"
|
|
48
|
+
DEPENDENCIES = "Dependencies"
|
|
49
|
+
PRE_EXECUTION_SCRIPT = "PreExecutionScript"
|
|
50
|
+
PRE_EXECUTION_COMMANDS = "PreExecutionCommands"
|
|
51
|
+
ENVIRONMENT_VARIABLES = "EnvironmentVariables"
|
|
52
|
+
IMAGE_URI = "ImageUri"
|
|
53
|
+
INCLUDE_LOCAL_WORKDIR = "IncludeLocalWorkDir"
|
|
54
|
+
INSTANCE_TYPE = "InstanceType"
|
|
55
|
+
S3_KMS_KEY_ID = "S3KmsKeyId"
|
|
56
|
+
S3_ROOT_URI = "S3RootUri"
|
|
57
|
+
JOB_CONDA_ENV = "JobCondaEnvironment"
|
|
47
58
|
OFFLINE_STORE_CONFIG = "OfflineStoreConfig"
|
|
48
59
|
ONLINE_STORE_CONFIG = "OnlineStoreConfig"
|
|
49
60
|
S3_STORAGE_CONFIG = "S3StorageConfig"
|
|
@@ -221,6 +232,49 @@ MODEL_PACKAGE_VALIDATION_PROFILES_PATH = _simple_path(
|
|
|
221
232
|
SAGEMAKER, MODEL_PACKAGE, VALIDATION_SPECIFICATION, VALIDATION_PROFILES
|
|
222
233
|
)
|
|
223
234
|
|
|
235
|
+
REMOTE_FUNCTION_DEPENDENCIES = _simple_path(
|
|
236
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, DEPENDENCIES
|
|
237
|
+
)
|
|
238
|
+
REMOTE_FUNCTION_PRE_EXECUTION_COMMANDS = _simple_path(
|
|
239
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, PRE_EXECUTION_COMMANDS
|
|
240
|
+
)
|
|
241
|
+
REMOTE_FUNCTION_PRE_EXECUTION_SCRIPT = _simple_path(
|
|
242
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, PRE_EXECUTION_SCRIPT
|
|
243
|
+
)
|
|
244
|
+
REMOTE_FUNCTION_ENVIRONMENT_VARIABLES = _simple_path(
|
|
245
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, ENVIRONMENT_VARIABLES
|
|
246
|
+
)
|
|
247
|
+
REMOTE_FUNCTION_IMAGE_URI = _simple_path(SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, IMAGE_URI)
|
|
248
|
+
REMOTE_FUNCTION_INCLUDE_LOCAL_WORKDIR = _simple_path(
|
|
249
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, INCLUDE_LOCAL_WORKDIR
|
|
250
|
+
)
|
|
251
|
+
REMOTE_FUNCTION_INSTANCE_TYPE = _simple_path(
|
|
252
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, INSTANCE_TYPE
|
|
253
|
+
)
|
|
254
|
+
REMOTE_FUNCTION_JOB_CONDA_ENV = _simple_path(
|
|
255
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, JOB_CONDA_ENV
|
|
256
|
+
)
|
|
257
|
+
REMOTE_FUNCTION_ROLE_ARN = _simple_path(SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, ROLE_ARN)
|
|
258
|
+
REMOTE_FUNCTION_S3_KMS_KEY_ID = _simple_path(
|
|
259
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, S3_KMS_KEY_ID
|
|
260
|
+
)
|
|
261
|
+
REMOTE_FUNCTION_S3_ROOT_URI = _simple_path(
|
|
262
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, S3_ROOT_URI
|
|
263
|
+
)
|
|
264
|
+
REMOTE_FUNCTION_TAGS = _simple_path(SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, TAGS)
|
|
265
|
+
REMOTE_FUNCTION_VOLUME_KMS_KEY_ID = _simple_path(
|
|
266
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, VOLUME_KMS_KEY_ID
|
|
267
|
+
)
|
|
268
|
+
REMOTE_FUNCTION_VPC_CONFIG_SUBNETS = _simple_path(
|
|
269
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, VPC_CONFIG, SUBNETS
|
|
270
|
+
)
|
|
271
|
+
REMOTE_FUNCTION_VPC_CONFIG_SECURITY_GROUP_IDS = _simple_path(
|
|
272
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, VPC_CONFIG, SECURITY_GROUP_IDS
|
|
273
|
+
)
|
|
274
|
+
REMOTE_FUNCTION_ENABLE_INTER_CONTAINER_TRAFFIC_ENCRYPTION = _simple_path(
|
|
275
|
+
SAGEMAKER, PYTHON_SDK, MODULES, REMOTE_FUNCTION, ENABLE_INTER_CONTAINER_TRAFFIC_ENCRYPTION
|
|
276
|
+
)
|
|
277
|
+
|
|
224
278
|
# Paths for reference elsewhere in the SDK.
|
|
225
279
|
# Names include the schema version since the paths could change with other schema versions
|
|
226
280
|
MONITORING_SCHEDULE_INTER_CONTAINER_ENCRYPTION_PATH = _simple_path(
|
|
@@ -245,7 +299,6 @@ TRAINING_JOB_INTER_CONTAINER_ENCRYPTION_PATH = _simple_path(
|
|
|
245
299
|
SAGEMAKER, TRAINING_JOB, ENABLE_INTER_CONTAINER_TRAFFIC_ENCRYPTION
|
|
246
300
|
)
|
|
247
301
|
|
|
248
|
-
|
|
249
302
|
SAGEMAKER_PYTHON_SDK_CONFIG_SCHEMA = {
|
|
250
303
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
251
304
|
TYPE: OBJECT,
|
|
@@ -377,6 +430,23 @@ SAGEMAKER_PYTHON_SDK_CONFIG_SCHEMA = {
|
|
|
377
430
|
"minItems": 0,
|
|
378
431
|
"maxItems": 50,
|
|
379
432
|
},
|
|
433
|
+
# Regex is taken from https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html#sagemaker-CreateTrainingJob-request-Environment
|
|
434
|
+
"environmentVariables": {
|
|
435
|
+
TYPE: OBJECT,
|
|
436
|
+
ADDITIONAL_PROPERTIES: False,
|
|
437
|
+
PATTERN_PROPERTIES: {
|
|
438
|
+
r"([a-zA-Z_][a-zA-Z0-9_]*){1,512}": {
|
|
439
|
+
TYPE: "string",
|
|
440
|
+
"pattern": r"[\S\s]*",
|
|
441
|
+
"maxLength": 512,
|
|
442
|
+
}
|
|
443
|
+
},
|
|
444
|
+
"maxProperties": 48,
|
|
445
|
+
},
|
|
446
|
+
# Regex is taken from https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html#sagemaker-Type-S3DataSource-S3Uri
|
|
447
|
+
"s3Uri": {TYPE: "string", "pattern": "^(https|s3)://([^/]+)/?(.*)$", "maxLength": 1024},
|
|
448
|
+
# Regex is taken from https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AlgorithmSpecification.html#sagemaker-Type-AlgorithmSpecification-ContainerEntrypoint
|
|
449
|
+
"preExecutionCommand": {TYPE: "string", "pattern": r".*"},
|
|
380
450
|
},
|
|
381
451
|
PROPERTIES: {
|
|
382
452
|
SCHEMA_VERSION: {
|
|
@@ -406,6 +476,36 @@ SAGEMAKER_PYTHON_SDK_CONFIG_SCHEMA = {
|
|
|
406
476
|
# Any SageMaker Python SDK specific configuration will be added here.
|
|
407
477
|
TYPE: OBJECT,
|
|
408
478
|
ADDITIONAL_PROPERTIES: False,
|
|
479
|
+
PROPERTIES: {
|
|
480
|
+
REMOTE_FUNCTION: {
|
|
481
|
+
TYPE: OBJECT,
|
|
482
|
+
ADDITIONAL_PROPERTIES: False,
|
|
483
|
+
PROPERTIES: {
|
|
484
|
+
DEPENDENCIES: {TYPE: "string"},
|
|
485
|
+
PRE_EXECUTION_COMMANDS: {
|
|
486
|
+
TYPE: "array",
|
|
487
|
+
"items": {"$ref": "#/definitions/preExecutionCommand"},
|
|
488
|
+
},
|
|
489
|
+
PRE_EXECUTION_SCRIPT: {TYPE: "string"},
|
|
490
|
+
ENABLE_INTER_CONTAINER_TRAFFIC_ENCRYPTION: {
|
|
491
|
+
TYPE: "boolean"
|
|
492
|
+
},
|
|
493
|
+
ENVIRONMENT_VARIABLES: {
|
|
494
|
+
"$ref": "#/definitions/environmentVariables"
|
|
495
|
+
},
|
|
496
|
+
IMAGE_URI: {TYPE: "string"},
|
|
497
|
+
INCLUDE_LOCAL_WORKDIR: {TYPE: "boolean"},
|
|
498
|
+
INSTANCE_TYPE: {TYPE: "string"},
|
|
499
|
+
JOB_CONDA_ENV: {TYPE: "string"},
|
|
500
|
+
ROLE_ARN: {"$ref": "#/definitions/roleArn"},
|
|
501
|
+
S3_KMS_KEY_ID: {"$ref": "#/definitions/kmsKeyId"},
|
|
502
|
+
S3_ROOT_URI: {"$ref": "#/definitions/s3Uri"},
|
|
503
|
+
TAGS: {"$ref": "#/definitions/tags"},
|
|
504
|
+
VOLUME_KMS_KEY_ID: {"$ref": "#/definitions/kmsKeyId"},
|
|
505
|
+
VPC_CONFIG: {"$ref": "#/definitions/vpcConfig"},
|
|
506
|
+
},
|
|
507
|
+
}
|
|
508
|
+
},
|
|
409
509
|
}
|
|
410
510
|
},
|
|
411
511
|
},
|
|
@@ -715,6 +715,14 @@ class Run(object):
|
|
|
715
715
|
|
|
716
716
|
self.close()
|
|
717
717
|
|
|
718
|
+
def __getstate__(self):
|
|
719
|
+
"""Overriding this method to prevent instance of Run from being pickled.
|
|
720
|
+
|
|
721
|
+
Raise:
|
|
722
|
+
NotImplementedError: If attempting to pickle this instance.
|
|
723
|
+
"""
|
|
724
|
+
raise NotImplementedError("Instance of Run type is not allowed to be pickled.")
|
|
725
|
+
|
|
718
726
|
|
|
719
727
|
def load_run(
|
|
720
728
|
run_name: Optional[str] = None,
|
|
@@ -787,36 +795,38 @@ def load_run(
|
|
|
787
795
|
Returns:
|
|
788
796
|
Run: The loaded Run object.
|
|
789
797
|
"""
|
|
790
|
-
sagemaker_session = sagemaker_session or _utils.default_session()
|
|
791
798
|
environment = _RunEnvironment.load()
|
|
792
799
|
|
|
793
800
|
verify_load_input_names(run_name=run_name, experiment_name=experiment_name)
|
|
794
801
|
|
|
795
|
-
if run_name
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
)
|
|
803
|
-
else:
|
|
804
|
-
exp_config = get_tc_and_exp_config_from_job_env(
|
|
805
|
-
environment=environment, sagemaker_session=sagemaker_session
|
|
806
|
-
)
|
|
807
|
-
run_name = Run._extract_run_name_from_tc_name(
|
|
808
|
-
trial_component_name=exp_config[RUN_NAME],
|
|
809
|
-
experiment_name=exp_config[EXPERIMENT_NAME],
|
|
810
|
-
)
|
|
811
|
-
experiment_name = exp_config[EXPERIMENT_NAME]
|
|
812
|
-
|
|
802
|
+
if run_name:
|
|
803
|
+
logger.warning(
|
|
804
|
+
"run_name is explicitly supplied in load_run, "
|
|
805
|
+
"which will be prioritized to load the Run object. "
|
|
806
|
+
"In other words, the run name in the experiment config, fetched from the "
|
|
807
|
+
"job environment or the current run context, will be ignored."
|
|
808
|
+
)
|
|
813
809
|
run_instance = Run(
|
|
814
810
|
experiment_name=experiment_name,
|
|
815
811
|
run_name=run_name,
|
|
816
|
-
sagemaker_session=sagemaker_session,
|
|
812
|
+
sagemaker_session=sagemaker_session or _utils.default_session(),
|
|
817
813
|
)
|
|
818
814
|
elif _RunContext.get_current_run():
|
|
819
815
|
run_instance = _RunContext.get_current_run()
|
|
816
|
+
elif environment:
|
|
817
|
+
exp_config = get_tc_and_exp_config_from_job_env(
|
|
818
|
+
environment=environment, sagemaker_session=sagemaker_session or _utils.default_session()
|
|
819
|
+
)
|
|
820
|
+
run_name = Run._extract_run_name_from_tc_name(
|
|
821
|
+
trial_component_name=exp_config[RUN_NAME],
|
|
822
|
+
experiment_name=exp_config[EXPERIMENT_NAME],
|
|
823
|
+
)
|
|
824
|
+
experiment_name = exp_config[EXPERIMENT_NAME]
|
|
825
|
+
run_instance = Run(
|
|
826
|
+
experiment_name=experiment_name,
|
|
827
|
+
run_name=run_name,
|
|
828
|
+
sagemaker_session=sagemaker_session or _utils.default_session(),
|
|
829
|
+
)
|
|
820
830
|
else:
|
|
821
831
|
raise RuntimeError(
|
|
822
832
|
"Failed to load a Run object. "
|
|
@@ -135,6 +135,7 @@ SM_DATAPARALLEL_SUPPORTED_FRAMEWORK_VERSIONS = {
|
|
|
135
135
|
"1.12.0",
|
|
136
136
|
"1.12.1",
|
|
137
137
|
"1.13.1",
|
|
138
|
+
"2.0.0",
|
|
138
139
|
],
|
|
139
140
|
}
|
|
140
141
|
|
|
@@ -148,10 +149,11 @@ PYTORCHDDP_SUPPORTED_FRAMEWORK_VERSIONS = [
|
|
|
148
149
|
"1.12.0",
|
|
149
150
|
"1.12.1",
|
|
150
151
|
"1.13.1",
|
|
152
|
+
"2.0.0",
|
|
151
153
|
]
|
|
152
154
|
|
|
153
155
|
|
|
154
|
-
TORCH_DISTRIBUTED_GPU_SUPPORTED_FRAMEWORK_VERSIONS = ["1.13.1"]
|
|
156
|
+
TORCH_DISTRIBUTED_GPU_SUPPORTED_FRAMEWORK_VERSIONS = ["1.13.1", "2.0.0"]
|
|
155
157
|
|
|
156
158
|
TRAINIUM_SUPPORTED_DISTRIBUTION_STRATEGIES = ["torch_distributed"]
|
|
157
159
|
TRAINIUM_SUPPORTED_TORCH_DISTRIBUTED_FRAMEWORK_VERSIONS = [
|
|
@@ -161,6 +163,7 @@ TRAINIUM_SUPPORTED_TORCH_DISTRIBUTED_FRAMEWORK_VERSIONS = [
|
|
|
161
163
|
"1.12.0",
|
|
162
164
|
"1.12.1",
|
|
163
165
|
"1.13.1",
|
|
166
|
+
"2.0.0",
|
|
164
167
|
]
|
|
165
168
|
|
|
166
169
|
SMDISTRIBUTED_SUPPORTED_STRATEGIES = ["dataparallel", "modelparallel"]
|
|
@@ -17,12 +17,10 @@ import logging
|
|
|
17
17
|
import re
|
|
18
18
|
from typing import Optional, Union, Dict
|
|
19
19
|
|
|
20
|
-
from sagemaker.deprecations import renamed_kwargs
|
|
21
20
|
from sagemaker.estimator import Framework, EstimatorBase
|
|
22
21
|
from sagemaker.fw_utils import (
|
|
23
22
|
framework_name_from_image,
|
|
24
|
-
|
|
25
|
-
validate_smdistributed,
|
|
23
|
+
validate_distribution,
|
|
26
24
|
)
|
|
27
25
|
from sagemaker.huggingface.model import HuggingFaceModel
|
|
28
26
|
from sagemaker.vpc_utils import VPC_CONFIG_DEFAULT
|
|
@@ -37,6 +35,9 @@ class HuggingFace(Framework):
|
|
|
37
35
|
"""Handle training of custom HuggingFace code."""
|
|
38
36
|
|
|
39
37
|
_framework_name = "huggingface"
|
|
38
|
+
LAUNCH_PYTORCH_DDP_ENV_NAME = "sagemaker_pytorch_ddp_enabled"
|
|
39
|
+
LAUNCH_TORCH_DISTRIBUTED_ENV_NAME = "sagemaker_torch_distributed_enabled"
|
|
40
|
+
INSTANCE_TYPE_ENV_NAME = "sagemaker_instance_type"
|
|
40
41
|
|
|
41
42
|
def __init__(
|
|
42
43
|
self,
|
|
@@ -142,6 +143,36 @@ class HuggingFace(Framework):
|
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
|
|
146
|
+
**To enable PyTorch DDP:**
|
|
147
|
+
|
|
148
|
+
.. code:: python
|
|
149
|
+
|
|
150
|
+
{
|
|
151
|
+
"pytorchddp": {
|
|
152
|
+
"enabled": True
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
To learn more, see `Distributed PyTorch Training
|
|
157
|
+
<https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training>`_.
|
|
158
|
+
|
|
159
|
+
**To enable Torch Distributed:**
|
|
160
|
+
|
|
161
|
+
This is available for general distributed training on
|
|
162
|
+
GPU instances from PyTorch v1.13.1 and later.
|
|
163
|
+
|
|
164
|
+
.. code:: python
|
|
165
|
+
|
|
166
|
+
{
|
|
167
|
+
"torch_distributed": {
|
|
168
|
+
"enabled": True
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
This option also supports distributed training on Trn1.
|
|
173
|
+
To learn more, see `Distributed PyTorch Training on Trainium
|
|
174
|
+
<https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training-on-trainium>`_.
|
|
175
|
+
|
|
145
176
|
To enable distributed training with
|
|
146
177
|
`SageMaker Training Compiler <https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler.html>`_
|
|
147
178
|
for Hugging Face Transformers with PyTorch:
|
|
@@ -182,29 +213,6 @@ class HuggingFace(Framework):
|
|
|
182
213
|
|
|
183
214
|
self._validate_args(image_uri=image_uri)
|
|
184
215
|
|
|
185
|
-
instance_type = renamed_kwargs(
|
|
186
|
-
"train_instance_type", "instance_type", kwargs.get("instance_type"), kwargs
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
base_framework_name = "tensorflow" if tensorflow_version is not None else "pytorch"
|
|
190
|
-
base_framework_version = (
|
|
191
|
-
tensorflow_version if tensorflow_version is not None else pytorch_version
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
if distribution is not None:
|
|
195
|
-
validate_smdistributed(
|
|
196
|
-
instance_type=instance_type,
|
|
197
|
-
framework_name=base_framework_name,
|
|
198
|
-
framework_version=base_framework_version,
|
|
199
|
-
py_version=self.py_version,
|
|
200
|
-
distribution=distribution,
|
|
201
|
-
image_uri=image_uri,
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
warn_if_parameter_server_with_multi_gpu(
|
|
205
|
-
training_instance_type=instance_type, distribution=distribution
|
|
206
|
-
)
|
|
207
|
-
|
|
208
216
|
if "enable_sagemaker_metrics" not in kwargs:
|
|
209
217
|
kwargs["enable_sagemaker_metrics"] = True
|
|
210
218
|
|
|
@@ -214,6 +222,25 @@ class HuggingFace(Framework):
|
|
|
214
222
|
entry_point, source_dir, hyperparameters, image_uri=image_uri, **kwargs
|
|
215
223
|
)
|
|
216
224
|
|
|
225
|
+
if "entry_point" not in kwargs:
|
|
226
|
+
kwargs["entry_point"] = entry_point
|
|
227
|
+
|
|
228
|
+
self.base_framework_name = "tensorflow" if tensorflow_version is not None else "pytorch"
|
|
229
|
+
self.base_framework_version = (
|
|
230
|
+
tensorflow_version if tensorflow_version is not None else pytorch_version
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
if distribution is not None:
|
|
234
|
+
distribution = validate_distribution(
|
|
235
|
+
distribution,
|
|
236
|
+
self.instance_groups,
|
|
237
|
+
self.base_framework_name,
|
|
238
|
+
self.base_framework_version,
|
|
239
|
+
py_version,
|
|
240
|
+
image_uri,
|
|
241
|
+
kwargs,
|
|
242
|
+
)
|
|
243
|
+
|
|
217
244
|
self.distribution = distribution or {}
|
|
218
245
|
|
|
219
246
|
if compiler_config is not None:
|
|
@@ -267,14 +294,44 @@ class HuggingFace(Framework):
|
|
|
267
294
|
"transformers_version, tensorflow_version and pytorch_version."
|
|
268
295
|
)
|
|
269
296
|
|
|
297
|
+
def _huggingface_distribution_configuration(self, distribution):
|
|
298
|
+
"""Returns a dict of distribution config for Hugging Face training
|
|
299
|
+
|
|
300
|
+
Args:
|
|
301
|
+
distribution (dict): A dictionary with information on how to run distributed training.
|
|
302
|
+
Returns:
|
|
303
|
+
dict containing Pytorch DDP config
|
|
304
|
+
"""
|
|
305
|
+
distribution_config = {}
|
|
306
|
+
pytorch_ddp_enabled = False
|
|
307
|
+
torch_distributed_enabled = False
|
|
308
|
+
|
|
309
|
+
if "pytorchddp" in distribution:
|
|
310
|
+
pytorch_ddp_enabled = distribution.get("pytorchddp").get("enabled", False)
|
|
311
|
+
elif "torch_distributed" in distribution:
|
|
312
|
+
torch_distributed_enabled = distribution.get("torch_distributed").get("enabled", False)
|
|
313
|
+
|
|
314
|
+
if pytorch_ddp_enabled:
|
|
315
|
+
distribution_config[self.LAUNCH_PYTORCH_DDP_ENV_NAME] = pytorch_ddp_enabled
|
|
316
|
+
if self.instance_type is not None:
|
|
317
|
+
distribution_config[self.INSTANCE_TYPE_ENV_NAME] = self.instance_type
|
|
318
|
+
elif torch_distributed_enabled:
|
|
319
|
+
distribution_config[self.LAUNCH_TORCH_DISTRIBUTED_ENV_NAME] = torch_distributed_enabled
|
|
320
|
+
if self.instance_type is not None:
|
|
321
|
+
distribution_config[self.INSTANCE_TYPE_ENV_NAME] = self.instance_type
|
|
322
|
+
else:
|
|
323
|
+
distribution_config = self._distribution_configuration(distribution=distribution)
|
|
324
|
+
|
|
325
|
+
return distribution_config
|
|
326
|
+
|
|
270
327
|
def hyperparameters(self):
|
|
271
328
|
"""Return hyperparameters used by your custom PyTorch code during model training."""
|
|
272
329
|
hyperparameters = super(HuggingFace, self).hyperparameters()
|
|
273
|
-
|
|
330
|
+
additional_hyperparameters = self._huggingface_distribution_configuration(
|
|
274
331
|
distribution=self.distribution
|
|
275
332
|
)
|
|
276
333
|
hyperparameters.update(
|
|
277
|
-
EstimatorBase._json_encode_hyperparameters(
|
|
334
|
+
EstimatorBase._json_encode_hyperparameters(additional_hyperparameters)
|
|
278
335
|
)
|
|
279
336
|
|
|
280
337
|
if self.compiler_config:
|