From e26724457ea2c9785baaa94a15c5e88a07b411a4 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:10:23 -0700 Subject: [PATCH 01/79] Base model trainer (#1521) * Base model trainer * flake8 * add testing notebook * add param validation & set defaults * Implement simple train method --- src/sagemaker/modules/__init__.py | 18 ++ src/sagemaker/modules/configs.py | 68 +++++ src/sagemaker/modules/constants.py | 16 ++ src/sagemaker/modules/image_spec.py | 96 +++++++ src/sagemaker/modules/scripts/train.sh | 1 + .../base_model_trainer.ipynb | 55 ++++ src/sagemaker/modules/train/__init__.py | 14 + src/sagemaker/modules/train/model_trainer.py | 249 ++++++++++++++++++ src/sagemaker/modules/types.py | 19 ++ src/sagemaker/modules/utils.py | 122 +++++++++ 10 files changed, 658 insertions(+) create mode 100644 src/sagemaker/modules/__init__.py create mode 100644 src/sagemaker/modules/configs.py create mode 100644 src/sagemaker/modules/constants.py create mode 100644 src/sagemaker/modules/image_spec.py create mode 100644 src/sagemaker/modules/scripts/train.sh create mode 100644 src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb create mode 100644 src/sagemaker/modules/train/__init__.py create mode 100644 src/sagemaker/modules/train/model_trainer.py create mode 100644 src/sagemaker/modules/types.py create mode 100644 src/sagemaker/modules/utils.py diff --git a/src/sagemaker/modules/__init__.py b/src/sagemaker/modules/__init__.py new file mode 100644 index 0000000000..67758a7af1 --- /dev/null +++ b/src/sagemaker/modules/__init__.py @@ -0,0 +1,18 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""SageMaker modules directory.""" +from __future__ import absolute_import + +from sagemaker_core.main.utils import logger as sagemaker_core_logger + +logger = sagemaker_core_logger diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py new file mode 100644 index 0000000000..566436a3fa --- /dev/null +++ b/src/sagemaker/modules/configs.py @@ -0,0 +1,68 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Configuration classes.""" +from __future__ import absolute_import + +from typing import Optional +from pydantic import BaseModel + +from sagemaker_core.shapes import ( + ResourceConfig, + StoppingCondition, + OutputDataConfig, + AlgorithmSpecification, + Channel, + S3DataSource, + FileSystemDataSource, + TrainingImageConfig, + VpcConfig, +) + +__all__ = [ + "SourceCodeConfig", + "ResourceConfig", + "StoppingCondition", + "OutputDataConfig", + "AlgorithmSpecification", + "Channel", + "S3DataSource", + "FileSystemDataSource", + "TrainingImageConfig", + "VpcConfig", +] + + +class SourceCodeConfig(BaseModel): + """SourceCodeConfig. + + This config allows the user to specify the source code location, dependencies, + entry script, or commands to be executed in the training job container. + + Attributes: + command (Optional[str]): + The command(s) to execute in the training job container. Example: "python my_script.py". + If not specified, entry_script must be provided + source_dir (Optional[str]): + The local directory containing the source code to be used in the training job container. + requirements (Optional[str]): + The path within `source_dir` to a `requirements.txt` file. If specified, the listed + requirements will be installed in the training job container. + entry_script (Optional[str]): + The path within `source_dir` to the entry script that will be executed in the training + job container. If not specified, command must be provided. + """ + + command: Optional[str] + source_dir: Optional[str] + requirements: Optional[str] + entry_script: Optional[str] diff --git a/src/sagemaker/modules/constants.py b/src/sagemaker/modules/constants.py new file mode 100644 index 0000000000..fbc3fd82bc --- /dev/null +++ b/src/sagemaker/modules/constants.py @@ -0,0 +1,16 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Constants module.""" +from __future__ import absolute_import + +DEFAULT_INSTANCE_TYPE = "ml.m5.xlarge" diff --git a/src/sagemaker/modules/image_spec.py b/src/sagemaker/modules/image_spec.py new file mode 100644 index 0000000000..7d744bca78 --- /dev/null +++ b/src/sagemaker/modules/image_spec.py @@ -0,0 +1,96 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""ImageSpec class module.""" +from __future__ import absolute_import + +from typing import Optional + +from sagemaker import image_uris, Session +from sagemaker.serverless import ServerlessInferenceConfig +from sagemaker.training_compiler.config import TrainingCompilerConfig + + +class ImageSpec: + """ImageSpec class to get image URI for a specific framework version.""" + + def __init__( + self, + framework_name: str, + version: str, + image_scope: Optional[str] = None, + instance_type: Optional[str] = None, + py_version: Optional[str] = None, + region: Optional[str] = "us-west-2", + accelerator_type: Optional[str] = None, + container_version: Optional[str] = None, + distribution: Optional[dict] = None, + base_framework_version: Optional[str] = None, + training_compiler_config: Optional[TrainingCompilerConfig] = None, + model_id: Optional[str] = None, + model_version: Optional[str] = None, + hub_arn: Optional[str] = None, + tolerate_vulnerable_model: Optional[bool] = False, + tolerate_deprecated_model: Optional[bool] = False, + sdk_version: Optional[str] = None, + inference_tool: Optional[str] = None, + serverless_inference_config: Optional[ServerlessInferenceConfig] = None, + config_name: Optional[str] = None, + sagemaker_session: Optional[Session] = None, + ): + self.framework_name = framework_name + self.version = version + self.image_scope = image_scope + self.instance_type = instance_type + self.py_version = py_version + self.region = region + self.accelerator_type = accelerator_type + self.container_version = container_version + self.distribution = distribution + self.base_framework_version = base_framework_version + self.training_compiler_config = training_compiler_config + self.model_id = model_id + self.model_version = model_version + self.hub_arn = hub_arn + self.tolerate_vulnerable_model = tolerate_vulnerable_model + self.tolerate_deprecated_model = tolerate_deprecated_model + self.sdk_version = sdk_version + self.inference_tool = inference_tool + self.serverless_inference_config = serverless_inference_config + self.config_name = config_name + self.sagemaker_session = sagemaker_session + + def get_image_uri(self): + """Get image URI for a specific framework version.""" + return image_uris.retrieve( + framework=self.framework_name, + image_scope=self.image_scope, + instance_type=self.instance_type, + py_version=self.py_version, + region=self.region, + version=self.version, + accelerator_type=self.accelerator_type, + container_version=self.container_version, + distribution=self.distribution, + base_framework_version=self.base_framework_version, + training_compiler_config=self.training_compiler_config, + model_id=self.model_id, + model_version=self.model_version, + hub_arn=self.hub_arn, + tolerate_vulnerable_model=self.tolerate_vulnerable_model, + tolerate_deprecated_model=self.tolerate_deprecated_model, + sdk_version=self.sdk_version, + inference_tool=self.inference_tool, + serverless_inference_config=self.serverless_inference_config, + config_name=self.config_name, + sagemaker_session=self.sagemaker_session, + ) diff --git a/src/sagemaker/modules/scripts/train.sh b/src/sagemaker/modules/scripts/train.sh new file mode 100644 index 0000000000..21fce8ebd5 --- /dev/null +++ b/src/sagemaker/modules/scripts/train.sh @@ -0,0 +1 @@ +# place holder for training script \ No newline at end of file diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb new file mode 100644 index 0000000000..5d639f0350 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -0,0 +1,55 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import sys, os\n", + "# Get the absolute path of the root directory\n", + "root_dir = os.path.abspath(os.path.join(os.getcwd(), '../../..'))\n", + "sys.path.insert(0, root_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "\n", + "model_trainer = ModelTrainer(training_image=\"python:3.10.15-slim\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/sagemaker/modules/train/__init__.py b/src/sagemaker/modules/train/__init__.py new file mode 100644 index 0000000000..c5b5d01ed4 --- /dev/null +++ b/src/sagemaker/modules/train/__init__.py @@ -0,0 +1,14 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Sagemaker modules train directory.""" +from __future__ import absolute_import diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py new file mode 100644 index 0000000000..11867a3c0e --- /dev/null +++ b/src/sagemaker/modules/train/model_trainer.py @@ -0,0 +1,249 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""ModelTrainer class module.""" +from __future__ import absolute_import + +from typing import Optional, List, Union, Dict +from pydantic import BaseModel, ConfigDict, model_validator +from pydantic_core import PydanticCustomError + +from sagemaker_core.resources import TrainingJob +from sagemaker_core.shapes import AlgorithmSpecification + +from sagemaker import get_execution_role, Session +from sagemaker.modules.configs import ( + ResourceConfig, + StoppingCondition, + OutputDataConfig, + SourceCodeConfig, + TrainingImageConfig, + Channel, + VpcConfig, +) +from sagemaker.modules.utils import ( + _get_repo_name_from_image, + _get_unique_name, +) +from sagemaker.modules.types import DataSourceType +from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE +from sagemaker.modules.image_spec import ImageSpec +from sagemaker.modules import logger + + +class ModelTrainer(BaseModel): + """Class that trains a model using AWS SageMaker. + + Attributes: + session (Optiona(Session)): + The SageMaker session. + If not specified, a new session will be created. + role (Optional(str)): + The IAM role ARN for the training job. + If not specified, the default SageMaker execution role will be used. + base_name (Optional[str]): + The base name for the training job. + If not specified, a default name will be generated using the algorithm name + or training image. + resource_config (Optional[ResourceConfig]): + The resource configuration. This is used to specify the compute resources for + the training job. + If not specified, will default to 1 instance of ml.m5.xlarge. + stopping_condition (Optional[StoppingCondition]): + The stopping condition. This is used to specify the different stopping + conditions for the training job. + If not specified, will default to 1 hour max run time. + output_data_config (Optional[OutputDataConfig]): + The output data configuration. This is used to specify the output data location + for the training job. + If not specified, will default to s3:////output/. + input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): + The input data channels for the training job. + Takes a list of Channel objects or a dictionary of channel names to DataSourceType. + DataSourceType can be an S3 URI string, local file path string, + S3DataSource object, or FileSystemDataSource object. + source_code_config (Optional[SourceCodeConfig]): + The source code configuration. This is used to configure the source code for + running the training job. + algorithm_name (Optional[str]): + The SageMaker marketplace algorithm name to use for the training job. + algorithm_name cannot be specified if training_image is specified. + training_image (Optional[Union[str, ImageSpec]]): + The training image URI to use for the training job container. + training_image cannot be specified if algorithm_name is specified. + training_input_mode (Optional[str]): + The input mode for the training job. Valid values are "Pipe", "File", "FastFile". + Defaults to "File". + training_image_config (Optional[TrainingImageConfig]: + Training image Config. This is the configuration to use an image from a private + Docker registry for a training job. + environment (Optional[Dict[str, str]]): + The environment variables for the training job. + hyper_parameters (Optional[Dict[str, str]]): + The hyperparameters for the training job. + vpc_config: (Optional[VpcConfig]): + The VPC configuration. + """ + + model_config = ConfigDict(arbitrary_types_allowed=True) + + session: Optional[Session] = None + role: Optional[str] = None + base_name: Optional[str] = None + resource_config: Optional[ResourceConfig] = None + stopping_condition: Optional[StoppingCondition] = None + output_data_config: Optional[OutputDataConfig] = None + input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None + source_code_config: Optional[SourceCodeConfig] = None + algorithm_name: Optional[str] = None + training_image: Optional[Union[str, ImageSpec]] = None + training_input_mode: Optional[str] = None + training_image_config: Optional[TrainingImageConfig] = None + environment: Optional[Dict[str, str]] = None + hyper_parameters: Optional[Dict[str, str]] = None + vpc_config: Optional[VpcConfig] = None + + @model_validator(mode="after") + def _set_defaults(self): + """Set default values for session, role, base_name, and other interdependent fields.""" + + if not self.training_image and not self.algorithm_name: + raise PydanticCustomError( + "validation_error", + "Atleast one of 'training_image' or 'algorithm_name' must be provided.", + ) + + if self.training_image and self.algorithm_name: + raise PydanticCustomError( + "validation_error", + "Only one of 'training_image' or 'algorithm_name' must be provided.", + ) + + if self.session is None: + self.session = Session() + logger.warn("Session not provided. Using default Session.") + + if self.role is None: + self.role = get_execution_role() + logger.warn(f"Role not provided. Using default role:\n{self.role}") + + if self.base_name is None: + if self.algorithm_name: + self.base_name = self.algorithm_name + elif self.training_image: + self.base_name = _get_repo_name_from_image(self.training_image) + + logger.warn(f"Base name not provided. Using default name:\n{self.base_name}") + + if self.resource_config is None: + self.resource_config = ResourceConfig( + volume_size_in_gb=30, + instance_count=1, + instance_type=DEFAULT_INSTANCE_TYPE, + volume_kms_key_id=None, + keep_alive_period_in_seconds=None, + instance_groups=None, + ) + logger.warn(f"ResourceConfig not provided. Using default:\n{self.resource_config}") + + if self.stopping_condition is None: + self.stopping_condition = StoppingCondition( + max_runtime_in_seconds=3600, + max_pending_time_in_seconds=None, + max_wait_time_in_seconds=None, + ) + logger.warn( + f"StoppingCondition not provided. Using default:\n{self.stopping_condition}" + ) + + if self.output_data_config is None: + session = self.session + base_name = self.base_name + self.output_data_config = OutputDataConfig( + s3_output_path=f"s3://{session.default_bucket()}/{base_name}/output", + compression_type="NONE", + kms_key_id=None, + ) + logger.warn(f"OutputDataConfig not provided. Using default:\n{self.output_data_config}") + return self + + def train( + self, + input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None, + source_code_config: Optional[SourceCodeConfig] = None, + hyper_parameters: Optional[Dict[str, str]] = None, + environment: Optional[Dict[str, str]] = None, + wait: bool = True, + logs: bool = True, + ): + """Train a model using AWS SageMaker. + + Args: + input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): + The input data channels for the training job. + Takes a list of Channel objects or a dictionary of channel names to DataSourceType. + DataSourceType can be an S3 URI string, local file path string, + S3DataSource object, or FileSystemDataSource object. + source_code_config (Optional[SourceCodeConfig]): + The source code configuration. This is used to configure the source code for + running the training job. + hyper_parameters (Optional[Dict[str, str]]): + The hyperparameters for the training job. + environment (Optional[Dict[str,str]]): + The environment variables for the training job. + wait (Optional[bool]): + Whether to wait for the training job to complete before returning. + Defaults to True. + logs (Optional[bool]): + Whether to display the training container logs while training. + Defaults to True. + """ + if input_data_channels: + self.input_data_channels = input_data_channels + if source_code_config: + self.source_code_config = source_code_config + if hyper_parameters: + self.hyper_parameters = hyper_parameters + if environment: + self.environment = environment + + algorithm_specification = AlgorithmSpecification( + algorithm_name=self.algorithm_name, + training_image=self.training_image, # TODO: Implement ImageSpec + training_input_mode=self.training_input_mode, + training_image_config=self.training_image_config, + ) + + if self.source_code_config: + # TODO: Implement creating the run.sh script + pass + if self.input_data_channels: + # TODO: Implement InputDataConfig + pass + + training_job = TrainingJob.create( + session=self.session.boto_session, + role_arn=self.role, + training_job_name=_get_unique_name(self.base_name), + algorithm_specification=algorithm_specification, + resource_config=self.resource_config, + stopping_condition=self.stopping_condition, + output_data_config=self.output_data_config, + environment=self.environment, + hyper_parameters=self.hyper_parameters, + vpc_config=self.vpc_config, + ) + + if wait: + training_job.wait(logs=logs) + if logs and not wait: + logger.warning("Not displaing the training container logs as 'wait' is set to False.") diff --git a/src/sagemaker/modules/types.py b/src/sagemaker/modules/types.py new file mode 100644 index 0000000000..18bdcce3bd --- /dev/null +++ b/src/sagemaker/modules/types.py @@ -0,0 +1,19 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Types module.""" +from __future__ import absolute_import + +from typing import Union +from sagemaker.modules.configs import S3DataSource, FileSystemDataSource + +DataSourceType = Union[str, S3DataSource, FileSystemDataSource] diff --git a/src/sagemaker/modules/utils.py b/src/sagemaker/modules/utils.py new file mode 100644 index 0000000000..dc70e86efb --- /dev/null +++ b/src/sagemaker/modules/utils.py @@ -0,0 +1,122 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Utils module.""" +from __future__ import absolute_import + +import re +import os +from datetime import datetime +from typing import Literal + + +def _is_valid_ecr_image(image: str) -> bool: + """Check if the image is a valid ECR image URI. + + Args: + image (str): The image URI sting to validate + + Returns: + bool: True if the image is a valid ECR image URI, False otherwise + """ + pattern = r"^\d{12}\.dkr\.ecr\.\w+-\d{1,2}\.amazonaws\.com\/[\w-]+(:[\w.-]+)?$" + return bool(re.match(pattern, image)) + + +def _is_valid_s3_uri(path: str, path_type: Literal["File", "Directory", "Any"] = "Any") -> bool: + """Check if the path is a valid S3 URI. + + This method checks if the path is a valid S3 URI. If the path_type is specified, + it will also check if the path is a file or a directory. + This method does not check if the S3 bucket or object exists. + + Args: + path (str): S3 URI to validate + path_type (Optional(Literal["File", "Directory", "Any"])): The type of the path to validate. + Defaults to "Any". + + Returns: + bool: True if the path is a valid S3 URI, False otherwise + """ + # Check if the path is a valid S3 URI + if not path.startswith("s3://"): + return False + + if path_type == "File": + # If it's a file, it should not end with a slash + return not path.endswith("/") + if path_type == "Directory": + # If it's a directory, it should end with a slash + return path.endswith("/") + + return path_type == "Any" + + +def _is_valid_path(path: str, path_type: Literal["File", "Directory", "Any"] = "Any") -> bool: + """Check if the path is a valid local path. + + Args: + path (str): Local path to validate + path_type (Optional(Literal["File", "Directory", "Any"])): The type of the path to validate. + Defaults to "Any". + + Returns: + bool: True if the path is a valid local path, False otherwise + """ + if not os.path.exists(path): + return False + + if path_type == "File": + return os.path.isfile(path) + if path_type == "Directory": + return os.path.isdir(path) + + return path_type == "Any" + + +def _get_unique_name(base, max_length=63): + """Generate a unique name based on the base name. + + This method generates a unique name based on the base name. + The unique name is generated by appending the current timestamp + to the base name. + + Args: + base (str): The base name to use + max_length (int): The maximum length of the unique name. Defaults to 63. + + Returns: + str: The unique name + """ + current_time = datetime.now().strftime("%Y%m%d%H%M%S") + unique_name = f"{base}-{current_time}" + unique_name = re.sub(r"[^a-zA-Z0-9-]", "", unique_name) # Remove invalid characters + unique_name = unique_name[:max_length] # Truncate to max_length + return unique_name + + +def _get_repo_name_from_image(image: str) -> str: + """Get the repository name from the image URI. + + Example: + ``` python + _get_repo_name_from_image("123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repo:latest") + # Returns "my-repo" + ``` + + Args: + image (str): The image URI + + Returns: + str: The repository name + """ + return image.split("/")[-1].split(":")[0] From 9774f9ed0605c0099c9ecee0018d5b490375257f Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:31:18 -0700 Subject: [PATCH 02/79] feature: support script mode with local train.sh (#1523) * feature: support script mode with local train.sh * Stop tracking train.sh and add it to .gitignore * update message * make dir if not exist * fix docs * fix: docstyle * Address comments * fix hyperparams * Revert pydantic custom error * pylint --- .gitignore | 1 + src/sagemaker/modules/configs.py | 22 +- src/sagemaker/modules/constants.py | 14 + src/sagemaker/modules/image_spec.py | 7 +- src/sagemaker/modules/scripts/train.sh | 1 - src/sagemaker/modules/templates.py | 51 +++ .../base_model_trainer.ipynb | 26 +- src/sagemaker/modules/train/model_trainer.py | 308 ++++++++++++++++-- 8 files changed, 386 insertions(+), 44 deletions(-) delete mode 100644 src/sagemaker/modules/scripts/train.sh create mode 100644 src/sagemaker/modules/templates.py diff --git a/.gitignore b/.gitignore index ad6e488dbd..9b8f732547 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ env/ .python-version *.html **/_repack_script_launcher.sh +src/sagemaker/modules/scripts/train.sh tests/data/**/_repack_model.py tests/data/experiment/sagemaker-dev-1.0.tar.gz src/sagemaker/serve/tmp_workspace \ No newline at end of file diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py index 566436a3fa..c53449a1d3 100644 --- a/src/sagemaker/modules/configs.py +++ b/src/sagemaker/modules/configs.py @@ -10,7 +10,15 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -"""Configuration classes.""" +"""This module provides the configuration classes used in `sagemaker.modules`. + +Some of these classes are re-exported from `sagemaker-core.shapes`. For convinence, +users can import these classes directly from `sagemaker.modules.configs`. + +For more documentation on `sagemaker-core.shapes`, see: + - https://sagemaker-core.readthedocs.io/en/stable/#sagemaker-core-shapes +""" + from __future__ import absolute_import from typing import Optional @@ -20,8 +28,8 @@ ResourceConfig, StoppingCondition, OutputDataConfig, - AlgorithmSpecification, Channel, + DataSource, S3DataSource, FileSystemDataSource, TrainingImageConfig, @@ -33,8 +41,8 @@ "ResourceConfig", "StoppingCondition", "OutputDataConfig", - "AlgorithmSpecification", "Channel", + "DataSource", "S3DataSource", "FileSystemDataSource", "TrainingImageConfig", @@ -62,7 +70,7 @@ class SourceCodeConfig(BaseModel): job container. If not specified, command must be provided. """ - command: Optional[str] - source_dir: Optional[str] - requirements: Optional[str] - entry_script: Optional[str] + command: Optional[str] = None + source_dir: Optional[str] = None + requirements: Optional[str] = None + entry_script: Optional[str] = None diff --git a/src/sagemaker/modules/constants.py b/src/sagemaker/modules/constants.py index fbc3fd82bc..7cdd10e970 100644 --- a/src/sagemaker/modules/constants.py +++ b/src/sagemaker/modules/constants.py @@ -12,5 +12,19 @@ # language governing permissions and limitations under the License. """Constants module.""" from __future__ import absolute_import +import os DEFAULT_INSTANCE_TYPE = "ml.m5.xlarge" + +SOURCE_CODE_CONTAINER_PATH = "/opt/ml/input/data/code" + +SM_CODE_CONTAINER_PATH = "/opt/ml/input/data/sm_code" +SM_CODE_LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scripts") +TRAIN_SCRIPT = "train.sh" + +DEFAULT_CONTAINER_ENTRYPOINT = ["/bin/bash"] +DEFAULT_CONTAINER_ARGUMENTS = [ + "-c", + f"chmod +x {SM_CODE_CONTAINER_PATH}/{TRAIN_SCRIPT} " + + f"&& {SM_CODE_CONTAINER_PATH}/{TRAIN_SCRIPT}", +] diff --git a/src/sagemaker/modules/image_spec.py b/src/sagemaker/modules/image_spec.py index 7d744bca78..7d5d38cb8c 100644 --- a/src/sagemaker/modules/image_spec.py +++ b/src/sagemaker/modules/image_spec.py @@ -69,8 +69,13 @@ def __init__( self.config_name = config_name self.sagemaker_session = sagemaker_session - def get_image_uri(self): + def get_image_uri( + self, image_scope: Optional[str] = None, instance_type: Optional[str] = None + ) -> str: """Get image URI for a specific framework version.""" + + self.image_scope = image_scope or self.image_scope + self.instance_type = instance_type or self.instance_type return image_uris.retrieve( framework=self.framework_name, image_scope=self.image_scope, diff --git a/src/sagemaker/modules/scripts/train.sh b/src/sagemaker/modules/scripts/train.sh deleted file mode 100644 index 21fce8ebd5..0000000000 --- a/src/sagemaker/modules/scripts/train.sh +++ /dev/null @@ -1 +0,0 @@ -# place holder for training script \ No newline at end of file diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py new file mode 100644 index 0000000000..f040919829 --- /dev/null +++ b/src/sagemaker/modules/templates.py @@ -0,0 +1,51 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Templates module.""" +from __future__ import absolute_import + +TRAIN_SCRIPT_TEMPLATE = """ +#!/bin/bash +echo "Starting training script" + +echo "/opt/ml/input/config/resourceconfig.json:" +cat /opt/ml/input/config/resourceconfig.json +echo + +echo "/opt/ml/input/config/inputdataconfig.json:" +cat /opt/ml/input/config/inputdataconfig.json +echo + +echo "/opt/ml/input/config/hyperparameters.json:" +cat /opt/ml/input/config/hyperparameters.json +echo + +python --version +{working_dir} +{install_requirements} +CMD="{command}" +echo "Running command: $CMD" +eval $CMD +EXIT_STATUS=$? + +if [ $EXIT_STATUS -ne 0 ]; then + echo "Command failed with exit status $EXIT_STATUS" + if [ ! -s /opt/ml/output/failure ]; then + echo "Command failed with exit code $EXIT_STATUS. +For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. +TrainingJob - $TRAINING_JOB_NAME" >> /opt/ml/output/failure + fi + exit $EXIT_STATUS +else + echo "Command succeeded" +fi +""" diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 5d639f0350..0b832d540e 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -19,8 +19,32 @@ "outputs": [], "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "from sagemaker.modules.image_spec import ImageSpec\n", "\n", - "model_trainer = ModelTrainer(training_image=\"python:3.10.15-slim\")\n" + "pytorch_image = ImageSpec(\n", + " framework_name=\"pytorch\",\n", + " version=\"1.13.1\",\n", + " py_version=\"py39\"\n", + ")\n", + "\n", + "python_ecr_image = \"public.ecr.aws/docker/library/python:3.10.15-slim\"\n", + "python_docker_image = \"python:3.10.15-slim\"\n", + "\n", + "model_trainer = ModelTrainer(training_image=pytorch_image)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.configs import SourceCodeConfig\n", + "\n", + "source_code_config = SourceCodeConfig(\n", + " command=\"echo 'Hello World' && env\",\n", + ")\n", + "model_trainer.train(source_code_config=source_code_config)" ] }, { diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 11867a3c0e..3dd3e58fb7 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -13,9 +13,10 @@ """ModelTrainer class module.""" from __future__ import absolute_import +import os + from typing import Optional, List, Union, Dict -from pydantic import BaseModel, ConfigDict, model_validator -from pydantic_core import PydanticCustomError +from pydantic import BaseModel, ConfigDict from sagemaker_core.resources import TrainingJob from sagemaker_core.shapes import AlgorithmSpecification @@ -28,14 +29,27 @@ SourceCodeConfig, TrainingImageConfig, Channel, + DataSource, + S3DataSource, + FileSystemDataSource, VpcConfig, ) from sagemaker.modules.utils import ( _get_repo_name_from_image, _get_unique_name, + _is_valid_path, + _is_valid_s3_uri, ) from sagemaker.modules.types import DataSourceType -from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE +from sagemaker.modules.constants import ( + DEFAULT_INSTANCE_TYPE, + SOURCE_CODE_CONTAINER_PATH, + SM_CODE_LOCAL_PATH, + TRAIN_SCRIPT, + DEFAULT_CONTAINER_ENTRYPOINT, + DEFAULT_CONTAINER_ARGUMENTS, +) +from sagemaker.modules.templates import TRAIN_SCRIPT_TEMPLATE from sagemaker.modules.image_spec import ImageSpec from sagemaker.modules import logger @@ -75,7 +89,7 @@ class ModelTrainer(BaseModel): The source code configuration. This is used to configure the source code for running the training job. algorithm_name (Optional[str]): - The SageMaker marketplace algorithm name to use for the training job. + The SageMaker marketplace algorithm name/arn to use for the training job. algorithm_name cannot be specified if training_image is specified. training_image (Optional[Union[str, ImageSpec]]): The training image URI to use for the training job container. @@ -106,43 +120,85 @@ class ModelTrainer(BaseModel): source_code_config: Optional[SourceCodeConfig] = None algorithm_name: Optional[str] = None training_image: Optional[Union[str, ImageSpec]] = None - training_input_mode: Optional[str] = None + training_input_mode: Optional[str] = "File" training_image_config: Optional[TrainingImageConfig] = None environment: Optional[Dict[str, str]] = None hyper_parameters: Optional[Dict[str, str]] = None vpc_config: Optional[VpcConfig] = None - @model_validator(mode="after") - def _set_defaults(self): - """Set default values for session, role, base_name, and other interdependent fields.""" - - if not self.training_image and not self.algorithm_name: - raise PydanticCustomError( - "validation_error", + def _validate_training_image_and_algorithm_name( + self, training_image: Optional[str], algorithm_name: Optional[str] + ): + """Validate that only one of 'training_image' or 'algorithm_name' is provided.""" + if not training_image and not algorithm_name: + raise ValueError( "Atleast one of 'training_image' or 'algorithm_name' must be provided.", ) - - if self.training_image and self.algorithm_name: - raise PydanticCustomError( - "validation_error", + if training_image and algorithm_name: + raise ValueError( "Only one of 'training_image' or 'algorithm_name' must be provided.", ) + def _validate_source_code_config(self, source_code_config: Optional[SourceCodeConfig]): + """Validate the source code configuration.""" + if source_code_config: + if source_code_config.requirements or source_code_config.entry_script: + source_dir = source_code_config.source_dir + requirements = source_code_config.requirements + entry_script = source_code_config.entry_script + if not source_dir: + raise ValueError( + "If 'requirements' or 'entry_script' is provided in 'source_code_config', " + + "'source_dir' must also be provided.", + ) + if not _is_valid_path(source_dir, path_type="Directory"): + raise ValueError( + f"Invalid 'source_dir' path: {source_dir}. " + "Must be a valid directory.", + ) + if requirements: + if not _is_valid_path( + f"{source_dir}/{entry_script}", + path_type="File", + ): + raise ValueError( + f"Invalid 'requirements': {requirements}. " + + "Must be a valid file within the 'source_dir'.", + ) + if entry_script: + if not _is_valid_path( + f"{source_dir}/{entry_script}", + path_type="File", + ): + raise ValueError( + f"Invalid 'entry_script': {entry_script}. " + + "Must be a valid file within the 'source_dir'.", + ) + + def __init__(self, **data): + """Set default values for session, role, base_name, and other interdependent fields.""" + # Validate types with pydantic + super().__init__(**data) + + self._validate_training_image_and_algorithm_name(self.training_image, self.algorithm_name) + self._validate_source_code_config(self.source_code_config) + if self.session is None: self.session = Session() - logger.warn("Session not provided. Using default Session.") + logger.warning("Session not provided. Using default Session.") if self.role is None: self.role = get_execution_role() - logger.warn(f"Role not provided. Using default role:\n{self.role}") + logger.warning(f"Role not provided. Using default role:\n{self.role}") if self.base_name is None: if self.algorithm_name: - self.base_name = self.algorithm_name + self.base_name = f"{self.algorithm_name}-job" elif self.training_image: - self.base_name = _get_repo_name_from_image(self.training_image) - - logger.warn(f"Base name not provided. Using default name:\n{self.base_name}") + if isinstance(self.training_image, ImageSpec): + self.base_name = f"{self.training_image.framework_name}-job" + else: + self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" + logger.warning(f"Base name not provided. Using default name:\n{self.base_name}") if self.resource_config is None: self.resource_config = ResourceConfig( @@ -153,7 +209,7 @@ def _set_defaults(self): keep_alive_period_in_seconds=None, instance_groups=None, ) - logger.warn(f"ResourceConfig not provided. Using default:\n{self.resource_config}") + logger.warning(f"ResourceConfig not provided. Using default:\n{self.resource_config}") if self.stopping_condition is None: self.stopping_condition = StoppingCondition( @@ -161,7 +217,7 @@ def _set_defaults(self): max_pending_time_in_seconds=None, max_wait_time_in_seconds=None, ) - logger.warn( + logger.warning( f"StoppingCondition not provided. Using default:\n{self.stopping_condition}" ) @@ -173,8 +229,16 @@ def _set_defaults(self): compression_type="NONE", kms_key_id=None, ) - logger.warn(f"OutputDataConfig not provided. Using default:\n{self.output_data_config}") - return self + logger.warning( + f"OutputDataConfig not provided. Using default:\n{self.output_data_config}" + ) + + if self.training_image: + if isinstance(self.training_image, ImageSpec): + self.training_image = self.training_image.get_image_uri( + image_scope="training", instance_type=self.resource_config.instance_type + ) + logger.info(f"Training image URI: {self.training_image}") def train( self, @@ -216,19 +280,60 @@ def train( if environment: self.environment = environment + input_data_config = self._get_input_data_config(self.input_data_channels) + + container_entrypoint = None + container_arguments = None + if self.source_code_config: + if not input_data_config: + input_data_config = [] + + # If source code is provided, create a channel for the source code + # The source code will be mounted at /opt/ml/input/data/code in the container + # and set as the working directory + working_dir = "" + if self.source_code_config.source_dir: + source_code_channel = self.create_input_data_channel( + "code", self.source_code_config.source_dir + ) + input_data_config.append(source_code_channel) + working_dir = SOURCE_CODE_CONTAINER_PATH + + # Get the commands to execute in the training job container + # and prepare the train.sh script + commands = self._get_script_mode_command(self.source_code_config) + self._prepare_train_script( + command=commands, + requirements=self.source_code_config.requirements, + working_dir=working_dir, + ) + + # Create an input channel for scripts packaged by the sdk + sm_scripts_channel = self.create_input_data_channel("sm_code", SM_CODE_LOCAL_PATH) + input_data_config.append(sm_scripts_channel) + + # If source_code_config is provided, we will always use + # the default container entrypoint and arguments + # to execute the train.sh script. + # Any commands generated from the source_code_config will be + # executed from the train.sh script. + container_entrypoint = DEFAULT_CONTAINER_ENTRYPOINT + container_arguments = DEFAULT_CONTAINER_ARGUMENTS + algorithm_specification = AlgorithmSpecification( algorithm_name=self.algorithm_name, - training_image=self.training_image, # TODO: Implement ImageSpec + training_image=self.training_image, training_input_mode=self.training_input_mode, training_image_config=self.training_image_config, + container_entrypoint=container_entrypoint, + container_arguments=container_arguments, ) - if self.source_code_config: - # TODO: Implement creating the run.sh script - pass - if self.input_data_channels: - # TODO: Implement InputDataConfig - pass + # Unfortunately, API requires hyperparameters to be strings + string_hyper_parameters = {} + if hyper_parameters: + for hyper_parameter, value in hyper_parameters.items(): + string_hyper_parameters[hyper_parameter] = str(value) training_job = TrainingJob.create( session=self.session.boto_session, @@ -237,9 +342,10 @@ def train( algorithm_specification=algorithm_specification, resource_config=self.resource_config, stopping_condition=self.stopping_condition, + input_data_config=input_data_config, output_data_config=self.output_data_config, environment=self.environment, - hyper_parameters=self.hyper_parameters, + hyper_parameters=string_hyper_parameters, vpc_config=self.vpc_config, ) @@ -247,3 +353,137 @@ def train( training_job.wait(logs=logs) if logs and not wait: logger.warning("Not displaing the training container logs as 'wait' is set to False.") + + def create_input_data_channel(self, channel_name: str, data_source: DataSourceType) -> Channel: + """Create an input data channel for the training job. + + Args: + channel_name (str): The name of the input data channel. + data_source (DataSourceType): The data source for the input data channel. + DataSourceType can be an S3 URI string, local file path string, + S3DataSource object, or FileSystemDataSource object. + """ + channel = None + if isinstance(data_source, str): + if _is_valid_s3_uri(data_source): + channel = Channel( + channel_name=channel_name, + data_source=DataSource( + s3_data_source=S3DataSource( + s3_data_type="S3Prefix", + s3_uri=data_source, + s3_data_distribution_type="FullyReplicated", + ), + ), + input_mode="File", + ) + elif _is_valid_path(data_source): + s3_uri = self.session.upload_data( + path=data_source, + bucket=self.session.default_bucket(), + key_prefix=f"{self.base_name}/input/{channel_name}", + ) + channel = Channel( + channel_name=channel_name, + data_source=DataSource( + s3_data_source=S3DataSource( + s3_data_type="S3Prefix", + s3_uri=s3_uri, + s3_data_distribution_type="FullyReplicated", + ), + ), + input_mode="File", + ) + else: + raise ValueError(f"Not a valid S3 URI or local file path: {data_source}.") + elif isinstance(data_source, S3DataSource): + channel = Channel(channel_name=channel_name, data_source=data_source) + elif isinstance(data_source, FileSystemDataSource): + channel = Channel(channel_name=channel_name, data_source=data_source) + return channel + + def _get_input_data_config( + self, input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] + ) -> List[Channel]: + """Get the input data configuration for the training job. + + Args: + input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): + The input data channels for the training job. + Takes a list of Channel objects or a dictionary of channel names to DataSourceType. + DataSourceType can be an S3 URI string, local file path string, + S3DataSource object, or FileSystemDataSource object. + """ + if input_data_channels is None: + return [] + + if isinstance(input_data_channels, list): + return input_data_channels + return [ + self.create_input_data_channel(channel_name, data_source) + for channel_name, data_source in input_data_channels.items() + ] + + def _get_script_mode_command(self, source_code_config: SourceCodeConfig) -> str: + """Get the command to execute in the training job container for script mode. + + Args: + source_code_config (SourceCodeConfig): The source code configuration. + """ + if source_code_config.command: + if source_code_config.entry_script: + logger.warning( + "Both 'command' and 'entry_script' are provided in the SourceCodeConfig. " + + "Defaulting to 'command'." + ) + commands = source_code_config.command.split() + return " ".join(commands) + + assert ( + source_code_config.entry_script + ), "Either 'command' or 'entry_script' must be provided." + + if source_code_config.entry_script.endswith(".py"): + return f"python {source_code_config.entry_script}" + if source_code_config.entry_script.endswith(".sh"): + return ( + f"chmod +x {source_code_config.entry_script} && " + f"bash {source_code_config.entry_script}" + ) + + raise ValueError( + f"Unsupported entry script: {source_code_config.entry_script}." + + "Only .py and .sh scripts are supported." + ) + + def _prepare_train_script( + self, command: str, requirements: Optional[str], working_dir: Optional[str] + ): + """Prepare the training script to be executed in the training job container. + + Args: + command (str): The command to execute in the training job container. + requirements (str): The path to the requirements file within the source code directory. + working_dir (str): The working directory for the training job container + """ + install_requirements = "" + if requirements: + install_requirements = "echo 'Installing requirements'\n" + install_requirements = f"pip install -r {requirements}" + + if working_dir: + working_dir = f"cd {working_dir}" + + train_script = TRAIN_SCRIPT_TEMPLATE.format( + working_dir=working_dir, + install_requirements=install_requirements, + command=command, + ) + + os.makedirs(SM_CODE_LOCAL_PATH, exist_ok=True) + with open(os.path.join(SM_CODE_LOCAL_PATH, TRAIN_SCRIPT), "w") as f: + f.write(train_script) + + def get_training_image_uri(self) -> str: + """Get the training image URI for the training job.""" + return self.training_image From fba3285c421c1eeccf45e9acb4b7a08bd8788300 Mon Sep 17 00:00:00 2001 From: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Date: Thu, 3 Oct 2024 15:05:46 -0700 Subject: [PATCH 03/79] Image Spec refactoring and updates (#1525) * Image Spec refactoring and updates * Unit tests and update function for Image Spec * Fix hugging face test * Fix Tests --- src/sagemaker/modules/image_spec.py | 296 ++++++++++++++---- tests/unit/sagemaker/modules/__init__.py | 0 .../unit/sagemaker/modules/test_image_spec.py | 42 +++ 3 files changed, 270 insertions(+), 68 deletions(-) create mode 100644 tests/unit/sagemaker/modules/__init__.py create mode 100644 tests/unit/sagemaker/modules/test_image_spec.py diff --git a/src/sagemaker/modules/image_spec.py b/src/sagemaker/modules/image_spec.py index 7d5d38cb8c..775c7e691f 100644 --- a/src/sagemaker/modules/image_spec.py +++ b/src/sagemaker/modules/image_spec.py @@ -13,41 +13,71 @@ """ImageSpec class module.""" from __future__ import absolute_import +import re +from enum import Enum from typing import Optional -from sagemaker import image_uris, Session -from sagemaker.serverless import ServerlessInferenceConfig -from sagemaker.training_compiler.config import TrainingCompilerConfig +from sagemaker import utils +from sagemaker.image_uris import _validate_version_and_set_if_needed, _version_for_config, \ + _config_for_framework_and_scope, _validate_py_version_and_set_if_needed, _registry_from_region, ECR_URI_TEMPLATE, \ + _get_latest_versions, _validate_instance_deprecation, _get_image_tag, _validate_arg +from packaging.version import Version + +DEFAULT_TOLERATE_MODEL = False + + +class Framework(Enum): + HUGGING_FACE = "huggingface" + HUGGING_FACE_NEURON = "huggingface-neuron" + HUGGING_FACE_NEURON_X = "huggingface-neuronx" + HUGGING_FACE_LLM = "huggingface-llm" + HUGGING_FACE_TEI_GPU = "huggingface-tei" + HUGGING_FACE_TEI_CPU = "huggingface-tei-cpu" + HUGGING_FACE_LLM_NEURONX = "huggingface-llm-neuronx" + HUGGING_FACE_TRAINING_COMPILER = "huggingface-training-compiler" + XGBOOST = "xgboost" + XG_BOOST_NEO = "xg-boost-neo" + SKLEARN = "sklearn" + PYTORCH = "pytorch" + PYTORCH_TRAINING_COMPILER = "pytorch-training-compiler" + DATA_WRANGLER = "data-wrangler" + STABILITYAI = "stabilityai" + SAGEMAKER_TRITONSERVER = "sagemaker-tritonserver" + + +class ImageScope(Enum): + TRAINING = "training" + INFERENCE = "inference" + INFERENCE_GRAVITON = "inference-graviton" + + +class Processor(Enum): + INF = "inf" + NEURON = "neuron" + GPU = "gpu" + CPU = "cpu" + TRN = "trn" class ImageSpec: """ImageSpec class to get image URI for a specific framework version.""" - def __init__( - self, - framework_name: str, - version: str, - image_scope: Optional[str] = None, - instance_type: Optional[str] = None, - py_version: Optional[str] = None, - region: Optional[str] = "us-west-2", - accelerator_type: Optional[str] = None, - container_version: Optional[str] = None, - distribution: Optional[dict] = None, - base_framework_version: Optional[str] = None, - training_compiler_config: Optional[TrainingCompilerConfig] = None, - model_id: Optional[str] = None, - model_version: Optional[str] = None, - hub_arn: Optional[str] = None, - tolerate_vulnerable_model: Optional[bool] = False, - tolerate_deprecated_model: Optional[bool] = False, - sdk_version: Optional[str] = None, - inference_tool: Optional[str] = None, - serverless_inference_config: Optional[ServerlessInferenceConfig] = None, - config_name: Optional[str] = None, - sagemaker_session: Optional[Session] = None, - ): - self.framework_name = framework_name + def __init__(self, + framework: Framework, + processor: Optional[Processor] = Processor.CPU, + region: Optional[str] = "us-west-2", + version=None, + py_version=None, + instance_type=None, + accelerator_type=None, + image_scope: ImageScope = ImageScope.TRAINING, + container_version=None, + distribution=None, + base_framework_version=None, + sdk_version=None, + inference_tool=None): + self.framework = framework + self.processor = processor self.version = version self.image_scope = image_scope self.instance_type = instance_type @@ -57,45 +87,175 @@ def __init__( self.container_version = container_version self.distribution = distribution self.base_framework_version = base_framework_version - self.training_compiler_config = training_compiler_config - self.model_id = model_id - self.model_version = model_version - self.hub_arn = hub_arn - self.tolerate_vulnerable_model = tolerate_vulnerable_model - self.tolerate_deprecated_model = tolerate_deprecated_model self.sdk_version = sdk_version self.inference_tool = inference_tool - self.serverless_inference_config = serverless_inference_config - self.config_name = config_name - self.sagemaker_session = sagemaker_session - - def get_image_uri( - self, image_scope: Optional[str] = None, instance_type: Optional[str] = None - ) -> str: - """Get image URI for a specific framework version.""" - - self.image_scope = image_scope or self.image_scope - self.instance_type = instance_type or self.instance_type - return image_uris.retrieve( - framework=self.framework_name, - image_scope=self.image_scope, - instance_type=self.instance_type, - py_version=self.py_version, - region=self.region, - version=self.version, - accelerator_type=self.accelerator_type, - container_version=self.container_version, - distribution=self.distribution, - base_framework_version=self.base_framework_version, - training_compiler_config=self.training_compiler_config, - model_id=self.model_id, - model_version=self.model_version, - hub_arn=self.hub_arn, - tolerate_vulnerable_model=self.tolerate_vulnerable_model, - tolerate_deprecated_model=self.tolerate_deprecated_model, - sdk_version=self.sdk_version, - inference_tool=self.inference_tool, - serverless_inference_config=self.serverless_inference_config, - config_name=self.config_name, - sagemaker_session=self.sagemaker_session, - ) + + def update_image_spec(self, **kwargs): + for key, value in kwargs.items(): + if hasattr(self, key): + setattr(self, key, value) + + def retrieve(self) -> str: + """Retrieves the ECR URI for the Docker image matching the given arguments. + + Ideally this function should not be called directly, rather it should be called from the + fit() function inside framework estimator. + + Args: + framework (Framework): The name of the framework or algorithm. + processor (Processor): The name of the processor (CPU, GPU, etc.). + region (str): The AWS region. + version (str): The framework or algorithm version. This is required if there is + more than one supported version for the given framework or algorithm. + py_version (str): The Python version. This is required if there is + more than one supported Python version for the given framework version. + instance_type (str): The SageMaker instance type. For supported types, see + https://aws.amazon.com/sagemaker/pricing. This is required if + there are different images for different processor types. + accelerator_type (str): Elastic Inference accelerator type. For more, see + https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html. + image_scope (str): The image type, i.e. what it is used for. + Valid values: "training", "inference", "inference_graviton", "eia". + If ``accelerator_type`` is set, ``image_scope`` is ignored. + container_version (str): the version of docker image. + Ideally the value of parameter should be created inside the framework. + For custom use, see the list of supported container versions: + https://github.com/aws/deep-learning-containers/blob/master/available_images.md + (default: None). + distribution (dict): A dictionary with information on how to run distributed training + sdk_version (str): the version of python-sdk that will be used in the image retrieval. + (default: None). + inference_tool (str): the tool that will be used to aid in the inference. + Valid values: "neuron, neuronx, None" + (default: None). + + Returns: + str: The ECR URI for the corresponding SageMaker Docker image. + + Raises: + NotImplementedError: If the scope is not supported. + ValueError: If the combination of arguments specified is not supported or + any PipelineVariable object is passed in. + VulnerableJumpStartModelError: If any of the dependencies required by the script have + known security vulnerabilities. + DeprecatedJumpStartModelError: If the version of the model is deprecated. + """ + config = _config_for_framework_and_scope(self.framework.value, + self.image_scope.value, + self.accelerator_type) + + original_version = self.version + try: + version = _validate_version_and_set_if_needed(self.version, config, self.framework.value) + except ValueError: + version = None + if not version: + version = self._fetch_latest_version_from_config(config) + + version_config = config["versions"][_version_for_config(version, config)] + + if "huggingface" in self.framework.value: + if version_config.get("version_aliases"): + full_base_framework_version = version_config["version_aliases"].get( + self.base_framework_version, self.base_framework_version + ) + _validate_arg(full_base_framework_version, list(version_config.keys()), "base framework") + version_config = version_config.get(full_base_framework_version) + + self.py_version = _validate_py_version_and_set_if_needed(self.py_version, + version_config, + self.framework.value) + version_config = version_config.get(self.py_version) or version_config + + registry = _registry_from_region(self.region, version_config["registries"]) + endpoint_data = utils._botocore_resolver().construct_endpoint("ecr", self.region) + if self.region == "il-central-1" and not endpoint_data: + endpoint_data = {"hostname": "ecr.{}.amazonaws.com".format(self.region)} + hostname = endpoint_data["hostname"] + + repo = version_config["repository"] + + # if container version is available in .json file, utilize that + if version_config.get("container_version"): + self.container_version = version_config["container_version"][self.processor.value] + + # Append sdk version in case of trainium instances + if repo in ["pytorch-training-neuron"]: + if not self.sdk_version: + sdk_version = _get_latest_versions(version_config["sdk_versions"]) + self.container_version = self.sdk_version + "-" + self.container_version + + if self.framework == Framework.HUGGING_FACE: + pt_or_tf_version = ( + re.compile("^(pytorch|tensorflow)(.*)$").match(self.base_framework_version).group(2) + ) + _version = original_version + + if repo in [ + "huggingface-pytorch-trcomp-training", + "huggingface-tensorflow-trcomp-training", + ]: + _version = version + if repo in [ + "huggingface-pytorch-inference-neuron", + "huggingface-pytorch-inference-neuronx", + ]: + if not sdk_version: + self.sdk_version = _get_latest_versions(version_config["sdk_versions"]) + self.container_version = self.sdk_version + "-" + self.container_version + if config.get("version_aliases").get(original_version): + _version = config.get("version_aliases")[original_version] + if ( + config.get("versions", {}) + .get(_version, {}) + .get("version_aliases", {}) + .get(self.base_framework_version, {}) + ): + _base_framework_version = config.get("versions")[_version]["version_aliases"][ + self.base_framework_version + ] + pt_or_tf_version = ( + re.compile("^(pytorch|tensorflow)(.*)$").match(_base_framework_version).group(2) + ) + + tag_prefix = f"{pt_or_tf_version}-transformers{_version}" + else: + tag_prefix = version_config.get("tag_prefix", version) + + if repo == f"{self.framework.value}-inference-graviton": + self.container_version = f"{self.container_version}-sagemaker" + _validate_instance_deprecation(self.framework, + self.instance_type, + version) + + tag = _get_image_tag( + self.container_version, + self.distribution, + self.image_scope.value, + self.framework, + self.inference_tool, + self.instance_type, + self.processor.value, + self.py_version, + tag_prefix, + version) + + if tag: + repo += ":{}".format(tag) + + return ECR_URI_TEMPLATE.format(registry=registry, hostname=hostname, repository=repo) + + def _fetch_latest_version_from_config(self, + framework_config: dict) -> str: + if self.image_scope.value in framework_config: + if image_scope_config := framework_config[self.image_scope.value]: + if version_aliases := image_scope_config["version_aliases"]: + if latest_version := version_aliases["latest"]: + return latest_version + versions = list(framework_config["versions"].keys()) + top_version = versions[0] + bottom_version = versions[-1] + + if Version(top_version) >= Version(bottom_version): + return top_version + return bottom_version diff --git a/tests/unit/sagemaker/modules/__init__.py b/tests/unit/sagemaker/modules/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/sagemaker/modules/test_image_spec.py b/tests/unit/sagemaker/modules/test_image_spec.py new file mode 100644 index 0000000000..23d70f133c --- /dev/null +++ b/tests/unit/sagemaker/modules/test_image_spec.py @@ -0,0 +1,42 @@ +import unittest + +from sagemaker.modules.image_spec import ImageSpec, Framework, Processor + + +class TestImageSpec(unittest.TestCase): + + def test_image_spec_update(self): + image_spec = ImageSpec(framework=Framework.HUGGING_FACE) + assert image_spec.version == None + image_spec.update_image_spec(version="v3") + assert image_spec.version == "v3" + + def test_image_spec_retrive(self): + # Asserting substrings because full string uri can change with newer versions + image_spec = ImageSpec(framework=Framework.XGBOOST) + xgboost_uri = image_spec.retrieve() + assert "dkr.ecr.us-west-2.amazonaws.com" in xgboost_uri + assert "sagemaker-xgboost" in xgboost_uri + + image_spec = ImageSpec(framework=Framework.HUGGING_FACE, + processor=Processor.GPU, + base_framework_version="pytorch2.1.0") + hugging_face_uri = image_spec.retrieve() + assert "dkr.ecr.us-west-2.amazonaws.com" in hugging_face_uri + assert "huggingface-pytorch-training" in hugging_face_uri + + image_spec = ImageSpec(framework=Framework.PYTORCH) + pytorch_uri = image_spec.retrieve() + assert "dkr.ecr.us-west-2.amazonaws.com" in pytorch_uri + assert "pytorch-training" in pytorch_uri + + image_spec = ImageSpec(framework=Framework.SKLEARN) + sklearn_uri = image_spec.retrieve() + assert "dkr.ecr.us-west-2.amazonaws.com" in sklearn_uri + assert "sagemaker-scikit-learn" in sklearn_uri + + def test_image_spec_retrive_with_version(self): + image_spec = ImageSpec(framework=Framework.XGBOOST, + version="0.90-1") + xgboost_uri = image_spec.retrieve() + assert xgboost_uri == '246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:0.90-1-cpu-py3' From 6a0224f0272064cefbc06ab1d77a4ec532ece287 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Thu, 3 Oct 2024 15:37:41 -0700 Subject: [PATCH 04/79] Add unit tests for ModelTrainer (#1527) * Add unit tests for ModelTrainer * Flake8 * format --- src/sagemaker/modules/train/model_trainer.py | 18 +- src/sagemaker/modules/utils.py | 13 - tests/unit/sagemaker/modules/test_utils.py | 140 ++++++++ .../unit/sagemaker/modules/train/__init__.py | 0 .../modules/train/test_model_trainer.py | 332 ++++++++++++++++++ 5 files changed, 484 insertions(+), 19 deletions(-) create mode 100644 tests/unit/sagemaker/modules/test_utils.py create mode 100644 tests/unit/sagemaker/modules/train/__init__.py create mode 100644 tests/unit/sagemaker/modules/train/test_model_trainer.py diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 3dd3e58fb7..9df9f57b56 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -108,7 +108,7 @@ class ModelTrainer(BaseModel): The VPC configuration. """ - model_config = ConfigDict(arbitrary_types_allowed=True) + model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") session: Optional[Session] = None role: Optional[str] = None @@ -274,19 +274,20 @@ def train( if input_data_channels: self.input_data_channels = input_data_channels if source_code_config: + self._validate_source_code_config(source_code_config) self.source_code_config = source_code_config if hyper_parameters: self.hyper_parameters = hyper_parameters if environment: self.environment = environment - input_data_config = self._get_input_data_config(self.input_data_channels) + input_data_config = [] + if self.input_data_channels: + input_data_config = self._get_input_data_config(self.input_data_channels) container_entrypoint = None container_arguments = None if self.source_code_config: - if not input_data_config: - input_data_config = [] # If source code is provided, create a channel for the source code # The source code will be mounted at /opt/ml/input/data/code in the container @@ -397,9 +398,14 @@ def create_input_data_channel(self, channel_name: str, data_source: DataSourceTy else: raise ValueError(f"Not a valid S3 URI or local file path: {data_source}.") elif isinstance(data_source, S3DataSource): - channel = Channel(channel_name=channel_name, data_source=data_source) + channel = Channel( + channel_name=channel_name, data_source=DataSource(s3_data_source=data_source) + ) elif isinstance(data_source, FileSystemDataSource): - channel = Channel(channel_name=channel_name, data_source=data_source) + channel = Channel( + channel_name=channel_name, + data_source=DataSource(file_system_data_source=data_source), + ) return channel def _get_input_data_config( diff --git a/src/sagemaker/modules/utils.py b/src/sagemaker/modules/utils.py index dc70e86efb..a1e391f45c 100644 --- a/src/sagemaker/modules/utils.py +++ b/src/sagemaker/modules/utils.py @@ -19,19 +19,6 @@ from typing import Literal -def _is_valid_ecr_image(image: str) -> bool: - """Check if the image is a valid ECR image URI. - - Args: - image (str): The image URI sting to validate - - Returns: - bool: True if the image is a valid ECR image URI, False otherwise - """ - pattern = r"^\d{12}\.dkr\.ecr\.\w+-\d{1,2}\.amazonaws\.com\/[\w-]+(:[\w.-]+)?$" - return bool(re.match(pattern, image)) - - def _is_valid_s3_uri(path: str, path_type: Literal["File", "Directory", "Any"] = "Any") -> bool: """Check if the path is a valid S3 URI. diff --git a/tests/unit/sagemaker/modules/test_utils.py b/tests/unit/sagemaker/modules/test_utils.py new file mode 100644 index 0000000000..efe43f1792 --- /dev/null +++ b/tests/unit/sagemaker/modules/test_utils.py @@ -0,0 +1,140 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Utils Tests.""" +from __future__ import absolute_import + +import pytest + +from tests.unit import DATA_DIR +from sagemaker.modules.utils import ( + _is_valid_s3_uri, + _is_valid_path, + _get_unique_name, + _get_repo_name_from_image, +) + + +@pytest.mark.parametrize( + "test_case", + [ + { + "path": "s3://bucket/key", + "path_type": "Any", + "expected": True, + }, + { + "path": "s3://bucket/key", + "path_type": "File", + "expected": True, + }, + { + "path": "s3://bucket/key/", + "path_type": "Directory", + "expected": True, + }, + { + "path": "s3://bucket/key/", + "path_type": "File", + "expected": False, + }, + { + "path": "s3://bucket/key", + "path_type": "Directory", + "expected": False, + }, + { + "path": "/bucket/key", + "path_type": "Any", + "expected": False, + }, + ], +) +def test_is_valid_s3_uri(test_case): + assert _is_valid_s3_uri(test_case["path"], test_case["path_type"]) == test_case["expected"] + + +@pytest.mark.parametrize( + "test_case", + [ + { + "path": DATA_DIR, + "path_type": "Any", + "expected": True, + }, + { + "path": DATA_DIR, + "path_type": "Directory", + "expected": True, + }, + { + "path": f"{DATA_DIR}/dummy_input.txt", + "path_type": "File", + "expected": True, + }, + { + "path": f"{DATA_DIR}/dummy_input.txt", + "path_type": "Directory", + "expected": False, + }, + { + "path": f"{DATA_DIR}/non_existent", + "path_type": "Any", + "expected": False, + }, + ], +) +def test_is_valid_path(test_case): + assert _is_valid_path(test_case["path"], test_case["path_type"]) == test_case["expected"] + + +@pytest.mark.parametrize( + "test_case", + [ + { + "base": "test", + "max_length": 5, + }, + { + "base": "1111111111" * 7, + "max_length": None, + }, + ], +) +def test_get_unique_name(test_case): + assert ( + len(_get_unique_name(test_case["base"], test_case.get("max_length"))) + <= test_case["max_length"] + if test_case.get("max_length") + else 63 + ) + + +@pytest.mark.parametrize( + "test_case", + [ + { + "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-custom-image:latest", + "expected": "my-custom-image", + }, + { + "image": "my-custom-image:latest", + "expected": "my-custom-image", + }, + { + "image": "public.ecr.aws/docker/library/my-custom-image:latest", + "expected": "my-custom-image", + }, + ], +) +def test_get_repo_name_from_image(test_case): + assert _get_repo_name_from_image(test_case["image"]) == test_case["expected"] diff --git a/tests/unit/sagemaker/modules/train/__init__.py b/tests/unit/sagemaker/modules/train/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py new file mode 100644 index 0000000000..5d4f57c937 --- /dev/null +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -0,0 +1,332 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""ModelTrainer Tests.""" +from __future__ import absolute_import + +import pytest +from unittest.mock import patch, MagicMock, call + +from sagemaker.session import Session +from sagemaker.modules.train.model_trainer import ModelTrainer +from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE, SM_CODE_LOCAL_PATH +from sagemaker.modules.configs import ( + ResourceConfig, + StoppingCondition, + OutputDataConfig, + SourceCodeConfig, + S3DataSource, + FileSystemDataSource, +) +from tests.unit import DATA_DIR + +DEFAULT_BASE_NAME = "dummy-image-job" +DEFAULT_IMAGE = "000000000000.dkr.ecr.us-west-2.amazonaws.com/dummy-image:latest" +DEFAULT_BUCKET = "sagemaker-us-west-2-000000000000" +DEFAULT_ROLE = "arn:aws:iam::000000000000:role/test-role" +DEFAULT_RESOURCE_CONFIG = ResourceConfig( + instance_count=1, + instance_type=DEFAULT_INSTANCE_TYPE, + volume_size_in_gb=30, + volume_kms_key_id=None, + keep_alive_period_in_seconds=None, + instance_groups=None, +) +DEFAULT_OUTPUT_DATA_CONFIG = OutputDataConfig( + s3_output_path=f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}/output", + compression_type="NONE", + kms_key_id=None, +) +DEFAULT_STOPPING_CONDITION = StoppingCondition( + max_runtime_in_seconds=3600, + max_pending_time_in_seconds=None, + max_wait_time_in_seconds=None, +) +DEFAULT_SOURCE_CODE_CONFIG = SourceCodeConfig( + source_dir="test-data", + entry_point="train.py", +) +UNSUPPORTED_SOURCE_CODE_CONFIG = SourceCodeConfig( + entry_script="train.py", +) + + +@pytest.fixture(scope="module", autouse=True) +def modules_session(): + with patch("sagemaker.session.Session", spec=Session) as session_mock: + session_instance = session_mock.return_value + session_instance.default_bucket.return_value = DEFAULT_BUCKET + session_instance.get_caller_identity_arn.return_value = DEFAULT_ROLE + yield session_instance + + +@pytest.fixture +def model_trainer(): + trainer = ModelTrainer( + training_image=DEFAULT_IMAGE, + role=DEFAULT_ROLE, + resource_config=MagicMock(spec=ResourceConfig), + stopping_condition=MagicMock(spec=StoppingCondition), + output_data_config=MagicMock(spec=OutputDataConfig), + ) + return trainer + + +@pytest.mark.parametrize( + "test_case", + [ + { + "init_params": {}, + "should_throw": True, + }, + { + "init_params": { + "training_image": DEFAULT_IMAGE, + }, + "should_throw": False, + }, + { + "init_params": { + "training_image": DEFAULT_IMAGE, + "algorithm_name": "dummy-arn", + }, + "should_throw": True, + }, + { + "init_params": { + "training_image": DEFAULT_IMAGE, + "source_code_config": UNSUPPORTED_SOURCE_CODE_CONFIG, + }, + "should_throw": True, + }, + { + "init_params": { + "training_image": DEFAULT_IMAGE, + "source_code_config": DEFAULT_SOURCE_CODE_CONFIG, + }, + "should_throw": False, + }, + ], + ids=[ + "no_params", + "training_image_and_algorithm_name", + "only_training_image", + "unsupported_source_code_config", + "supported_source_code_config", + ], +) +def test_model_trainer_param_validation(test_case, modules_session): + if test_case["should_throw"]: + with pytest.raises(ValueError): + ModelTrainer(**test_case["init_params"], session=modules_session) + else: + trainer = ModelTrainer(**test_case["init_params"], session=modules_session) + assert trainer is not None + assert trainer.training_image == DEFAULT_IMAGE + assert trainer.resource_config == DEFAULT_RESOURCE_CONFIG + assert trainer.output_data_config == DEFAULT_OUTPUT_DATA_CONFIG + assert trainer.stopping_condition == DEFAULT_STOPPING_CONDITION + assert trainer.base_name == DEFAULT_BASE_NAME + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +def test_train_with_default_params(mock_training_job, model_trainer): + model_trainer.train() + + mock_training_job.create.assert_called_once() + + training_job_instance = mock_training_job.create.return_value + training_job_instance.wait.assert_called_once_with(logs=True) + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +@patch.object(ModelTrainer, "_get_input_data_config") +def test_train_with_input_data_channels(mock_get_input_config, mock_training_job, model_trainer): + mock_input_data_channels = {"train": "train/dir", "test": "test/dir"} + + model_trainer.train(input_data_channels=mock_input_data_channels) + + mock_get_input_config.assert_called_once_with(mock_input_data_channels) + mock_training_job.create.assert_called_once() + + +@pytest.mark.parametrize( + "source_code_config", + [ + None, + SourceCodeConfig( + source_dir="test-data", + entry_script="train.py", + ), + SourceCodeConfig( + command="python train.py", + ), + ], + ids=[ + "no_source_code_config", + "supported_source_code_config", + "unsupported_source_code_config", + ], +) +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +@patch.object(ModelTrainer, "create_input_data_channel") +@patch.object(ModelTrainer, "_validate_source_code_config") +def test_train_with_source_code_config( + mock_validate_source_code_config, + mock_create_input_data_channel, + mock_training_job, + model_trainer, + source_code_config, +): + mock_validate_source_code_config.return_value = None + mock_create_input_data_channel.return_value = None + + model_trainer.train(source_code_config=source_code_config) + + input_channel_calls = [] + if source_code_config: + if source_code_config.source_dir: + input_channel_calls.append(call("code", source_code_config.source_dir)) + mock_validate_source_code_config.assert_called_once_with(source_code_config) + input_channel_calls.append(call("sm_code", SM_CODE_LOCAL_PATH)) + else: + mock_validate_source_code_config.assert_not_called() + mock_create_input_data_channel.assert_not_called() + + mock_create_input_data_channel.assert_has_calls(input_channel_calls) + mock_training_job.create.assert_called_once() + + +@pytest.mark.parametrize( + "test_case", + [ + { + "channel_name": "test", + "data_source": DATA_DIR, + "valid": True, + }, + { + "channel_name": "test", + "data_source": f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}-job/input/test", + "valid": True, + }, + { + "channel_name": "test", + "data_source": S3DataSource( + s3_data_type="S3Prefix", + s3_uri=f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}-job/input/test", + s3_data_distribution_type="FullyReplicated", + ), + "valid": True, + }, + { + "channel_name": "test", + "data_source": FileSystemDataSource( + file_system_id="fs-000000000000", + file_system_access_mode="ro", + file_system_type="EFS", + directory_path="/data/test", + ), + "valid": True, + }, + { + "channel_name": "test", + "data_source": "fake/path", + "valid": False, + }, + ], + ids=[ + "valid_local_path", + "valid_s3_path", + "valid_s3_data_source", + "valid_file_system_data_source", + "invalid_path", + ], +) +@patch("sagemaker.modules.train.model_trainer.Session.upload_data") +def test_create_input_data_channel(mock_upload_data, model_trainer, test_case): + expected_s3_uri = f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}-job/input/test" + mock_upload_data.return_value = expected_s3_uri + + if not test_case["valid"]: + with pytest.raises(ValueError): + model_trainer.create_input_data_channel( + test_case["channel_name"], test_case["data_source"] + ) + else: + channel = model_trainer.create_input_data_channel( + test_case["channel_name"], test_case["data_source"] + ) + assert channel.channel_name == test_case["channel_name"] + + if isinstance(test_case["data_source"], S3DataSource): + assert channel.data_source.s3_data_source == test_case["data_source"] + elif isinstance(test_case["data_source"], FileSystemDataSource): + assert channel.data_source.file_system_data_source == test_case["data_source"] + else: + assert channel.data_source.s3_data_source.s3_uri == expected_s3_uri + + +@pytest.mark.parametrize( + "test_case", + [ + { + "source_code_config": SourceCodeConfig( + source_dir="test-data", + entry_script="train.py", + ), + "expected_command": "python train.py", + "should_throw": False, + }, + { + "source_code_config": SourceCodeConfig( + command="python train.py", + ), + "expected_command": "python train.py", + "should_throw": False, + }, + { + "source_code_config": SourceCodeConfig( + source_dir="test-data", + entry_script="other.py", + command="python train.py", + ), + "expected_command": "python train.py", + "should_throw": False, + }, + { + "source_code_config": SourceCodeConfig(source_dir="test-data", entry_script="train.sh"), + "expected_command": "chmod +x train.sh && bash train.sh", + "should_throw": False, + }, + { + "source_code_config": SourceCodeConfig( + source_dir="test-data", + entry_script="train.ts", + ), + "should_throw": True, + }, + { + "source_code_config": SourceCodeConfig( + source_dir="test-data", + ), + "should_throw": True, + }, + ], +) +def test_get_script_mode_command(model_trainer, test_case): + if test_case["should_throw"]: + with pytest.raises((ValueError, AssertionError)): + model_trainer._get_script_mode_command(test_case["source_code_config"]) + else: + command = model_trainer._get_script_mode_command(test_case["source_code_config"]) + assert command == test_case["expected_command"] From 7446b09a0715945ae159dc36a28577855c8a456b Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Mon, 7 Oct 2024 11:37:56 -0700 Subject: [PATCH 05/79] Add example notebook (#1528) * Add testing notebook * format * use smaller data * remove large dataset * update * pylint * flake8 * ignore docstyle in directories with test * format * format --- .pydocstylerc | 1 + src/sagemaker/modules/image_spec.py | 164 ++++---- .../base_model_trainer.ipynb | 369 ++++++++++++++++- .../basic-script-mode/custom_script.py | 166 ++++++++ .../basic-script-mode/data/test/x_test.npy | Bin 0 -> 19456 bytes .../basic-script-mode/data/test/y_test.npy | Bin 0 -> 2544 bytes .../basic-script-mode/data/train/x_train.npy | Bin 0 -> 77184 bytes .../basic-script-mode/data/train/y_train.npy | Bin 0 -> 9760 bytes .../basic-script-mode/pytorch_model_def.py | 23 ++ .../basic-script-mode/requirements.txt | 3 + .../scripts/merge_peft_adapters.py | 46 +++ .../scripts/requirements.txt | 5 + .../scripts/run_clm_no_trainer.py | 372 ++++++++++++++++++ .../distributed-training/scripts/utils.py | 85 ++++ src/sagemaker/modules/train/model_trainer.py | 15 +- .../unit/sagemaker/modules/test_image_spec.py | 19 +- 16 files changed, 1176 insertions(+), 92 deletions(-) create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/x_test.npy create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/y_test.npy create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/x_train.npy create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/y_train.npy create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/pytorch_model_def.py create mode 100644 src/sagemaker/modules/testing_notebooks/basic-script-mode/requirements.txt create mode 100644 src/sagemaker/modules/testing_notebooks/distributed-training/scripts/merge_peft_adapters.py create mode 100644 src/sagemaker/modules/testing_notebooks/distributed-training/scripts/requirements.txt create mode 100644 src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py create mode 100644 src/sagemaker/modules/testing_notebooks/distributed-training/scripts/utils.py diff --git a/.pydocstylerc b/.pydocstylerc index a5083c0d63..9ed879a760 100644 --- a/.pydocstylerc +++ b/.pydocstylerc @@ -2,3 +2,4 @@ inherit = false ignore = D104,D107,D202,D203,D213,D214,D400,D401,D404,D406,D407,D411,D413,D414,D415,D417 match = (?!record_pb2).*\.py +match-dir = (?!.*test).* \ No newline at end of file diff --git a/src/sagemaker/modules/image_spec.py b/src/sagemaker/modules/image_spec.py index 775c7e691f..60b417aaac 100644 --- a/src/sagemaker/modules/image_spec.py +++ b/src/sagemaker/modules/image_spec.py @@ -16,17 +16,28 @@ import re from enum import Enum from typing import Optional +from packaging.version import Version from sagemaker import utils -from sagemaker.image_uris import _validate_version_and_set_if_needed, _version_for_config, \ - _config_for_framework_and_scope, _validate_py_version_and_set_if_needed, _registry_from_region, ECR_URI_TEMPLATE, \ - _get_latest_versions, _validate_instance_deprecation, _get_image_tag, _validate_arg -from packaging.version import Version +from sagemaker.image_uris import ( + _validate_version_and_set_if_needed, + _version_for_config, + _config_for_framework_and_scope, + _validate_py_version_and_set_if_needed, + _registry_from_region, + ECR_URI_TEMPLATE, + _get_latest_versions, + _validate_instance_deprecation, + _get_image_tag, + _validate_arg, +) DEFAULT_TOLERATE_MODEL = False class Framework(Enum): + """Framework enum class.""" + HUGGING_FACE = "huggingface" HUGGING_FACE_NEURON = "huggingface-neuron" HUGGING_FACE_NEURON_X = "huggingface-neuronx" @@ -46,12 +57,16 @@ class Framework(Enum): class ImageScope(Enum): + """ImageScope enum class.""" + TRAINING = "training" INFERENCE = "inference" INFERENCE_GRAVITON = "inference-graviton" class Processor(Enum): + """Processor enum class.""" + INF = "inf" NEURON = "neuron" GPU = "gpu" @@ -60,22 +75,53 @@ class Processor(Enum): class ImageSpec: - """ImageSpec class to get image URI for a specific framework version.""" - - def __init__(self, - framework: Framework, - processor: Optional[Processor] = Processor.CPU, - region: Optional[str] = "us-west-2", - version=None, - py_version=None, - instance_type=None, - accelerator_type=None, - image_scope: ImageScope = ImageScope.TRAINING, - container_version=None, - distribution=None, - base_framework_version=None, - sdk_version=None, - inference_tool=None): + """ImageSpec class to get image URI for a specific framework version. + + Attributes: + framework (Framework): The name of the framework or algorithm. + processor (Processor): The name of the processor (CPU, GPU, etc.). + region (str): The AWS region. + version (str): The framework or algorithm version. This is required if there is + more than one supported version for the given framework or algorithm. + py_version (str): The Python version. This is required if there is + more than one supported Python version for the given framework version. + instance_type (str): The SageMaker instance type. For supported types, see + https://aws.amazon.com/sagemaker/pricing. This is required if + there are different images for different processor types. + accelerator_type (str): Elastic Inference accelerator type. For more, see + https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html. + image_scope (str): The image type, i.e. what it is used for. + Valid values: "training", "inference", "inference_graviton", "eia". + If ``accelerator_type`` is set, ``image_scope`` is ignored. + container_version (str): the version of docker image. + Ideally the value of parameter should be created inside the framework. + For custom use, see the list of supported container versions: + https://github.com/aws/deep-learning-containers/blob/master/available_images.md + (default: None). + distribution (dict): A dictionary with information on how to run distributed training + sdk_version (str): the version of python-sdk that will be used in the image retrieval. + (default: None). + inference_tool (str): the tool that will be used to aid in the inference. + Valid values: "neuron, neuronx, None" + (default: None). + """ + + def __init__( + self, + framework: Framework, + processor: Optional[Processor] = Processor.CPU, + region: Optional[str] = "us-west-2", + version=None, + py_version=None, + instance_type=None, + accelerator_type=None, + image_scope: ImageScope = ImageScope.TRAINING, + container_version=None, + distribution=None, + base_framework_version=None, + sdk_version=None, + inference_tool=None, + ): self.framework = framework self.processor = processor self.version = version @@ -91,6 +137,7 @@ def __init__(self, self.inference_tool = inference_tool def update_image_spec(self, **kwargs): + """Update the ImageSpec object with the given arguments.""" for key, value in kwargs.items(): if hasattr(self, key): setattr(self, key, value) @@ -98,37 +145,6 @@ def update_image_spec(self, **kwargs): def retrieve(self) -> str: """Retrieves the ECR URI for the Docker image matching the given arguments. - Ideally this function should not be called directly, rather it should be called from the - fit() function inside framework estimator. - - Args: - framework (Framework): The name of the framework or algorithm. - processor (Processor): The name of the processor (CPU, GPU, etc.). - region (str): The AWS region. - version (str): The framework or algorithm version. This is required if there is - more than one supported version for the given framework or algorithm. - py_version (str): The Python version. This is required if there is - more than one supported Python version for the given framework version. - instance_type (str): The SageMaker instance type. For supported types, see - https://aws.amazon.com/sagemaker/pricing. This is required if - there are different images for different processor types. - accelerator_type (str): Elastic Inference accelerator type. For more, see - https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html. - image_scope (str): The image type, i.e. what it is used for. - Valid values: "training", "inference", "inference_graviton", "eia". - If ``accelerator_type`` is set, ``image_scope`` is ignored. - container_version (str): the version of docker image. - Ideally the value of parameter should be created inside the framework. - For custom use, see the list of supported container versions: - https://github.com/aws/deep-learning-containers/blob/master/available_images.md - (default: None). - distribution (dict): A dictionary with information on how to run distributed training - sdk_version (str): the version of python-sdk that will be used in the image retrieval. - (default: None). - inference_tool (str): the tool that will be used to aid in the inference. - Valid values: "neuron, neuronx, None" - (default: None). - Returns: str: The ECR URI for the corresponding SageMaker Docker image. @@ -140,13 +156,14 @@ def retrieve(self) -> str: known security vulnerabilities. DeprecatedJumpStartModelError: If the version of the model is deprecated. """ - config = _config_for_framework_and_scope(self.framework.value, - self.image_scope.value, - self.accelerator_type) - + config = _config_for_framework_and_scope( + self.framework.value, self.image_scope.value, self.accelerator_type + ) original_version = self.version try: - version = _validate_version_and_set_if_needed(self.version, config, self.framework.value) + version = _validate_version_and_set_if_needed( + self.version, config, self.framework.value + ) except ValueError: version = None if not version: @@ -159,12 +176,14 @@ def retrieve(self) -> str: full_base_framework_version = version_config["version_aliases"].get( self.base_framework_version, self.base_framework_version ) - _validate_arg(full_base_framework_version, list(version_config.keys()), "base framework") + _validate_arg( + full_base_framework_version, list(version_config.keys()), "base framework" + ) version_config = version_config.get(full_base_framework_version) - self.py_version = _validate_py_version_and_set_if_needed(self.py_version, - version_config, - self.framework.value) + self.py_version = _validate_py_version_and_set_if_needed( + self.py_version, version_config, self.framework.value + ) version_config = version_config.get(self.py_version) or version_config registry = _registry_from_region(self.region, version_config["registries"]) @@ -206,16 +225,18 @@ def retrieve(self) -> str: if config.get("version_aliases").get(original_version): _version = config.get("version_aliases")[original_version] if ( - config.get("versions", {}) - .get(_version, {}) - .get("version_aliases", {}) - .get(self.base_framework_version, {}) + config.get("versions", {}) + .get(_version, {}) + .get("version_aliases", {}) + .get(self.base_framework_version, {}) ): _base_framework_version = config.get("versions")[_version]["version_aliases"][ self.base_framework_version ] pt_or_tf_version = ( - re.compile("^(pytorch|tensorflow)(.*)$").match(_base_framework_version).group(2) + re.compile("^(pytorch|tensorflow)(.*)$") + .match(_base_framework_version) + .group(2) ) tag_prefix = f"{pt_or_tf_version}-transformers{_version}" @@ -224,29 +245,28 @@ def retrieve(self) -> str: if repo == f"{self.framework.value}-inference-graviton": self.container_version = f"{self.container_version}-sagemaker" - _validate_instance_deprecation(self.framework, - self.instance_type, - version) + _validate_instance_deprecation(self.framework, self.instance_type, version) tag = _get_image_tag( self.container_version, self.distribution, self.image_scope.value, - self.framework, + self.framework.value, self.inference_tool, self.instance_type, self.processor.value, self.py_version, tag_prefix, - version) + version, + ) if tag: repo += ":{}".format(tag) return ECR_URI_TEMPLATE.format(registry=registry, hostname=hostname, repository=repo) - def _fetch_latest_version_from_config(self, - framework_config: dict) -> str: + def _fetch_latest_version_from_config(self, framework_config: dict) -> str: + """Fetches the latest version from the framework config.""" if self.image_scope.value in framework_config: if image_scope_config := framework_config[self.image_scope.value]: if version_aliases := image_scope_config["version_aliases"]: diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 0b832d540e..58c13f7084 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -12,6 +12,17 @@ "sys.path.insert(0, root_dir)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Case Minimally Setup ModelTrainer and Execute Commands\n", + "\n", + "1. No longer have an issue about API Limit\n", + "2. Maintain contract with container (no secret handshake)\n", + "3. Decouple Training Toolkit" + ] + }, { "cell_type": "code", "execution_count": null, @@ -19,17 +30,12 @@ "outputs": [], "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker.modules.image_spec import ImageSpec\n", + "from sagemaker.modules.image_spec import ImageSpec, Framework\n", "\n", "pytorch_image = ImageSpec(\n", - " framework_name=\"pytorch\",\n", - " version=\"1.13.1\",\n", - " py_version=\"py39\"\n", + " framework=Framework.PYTORCH\n", ")\n", "\n", - "python_ecr_image = \"public.ecr.aws/docker/library/python:3.10.15-slim\"\n", - "python_docker_image = \"python:3.10.15-slim\"\n", - "\n", "model_trainer = ModelTrainer(training_image=pytorch_image)\n" ] }, @@ -47,12 +53,359 @@ "model_trainer.train(source_code_config=source_code_config)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Script Mode Case - 1\n", + "\n", + "1. No more code smell of user having to use /opt/ml/input/data/code/custom_script.py\n", + "```python\n", + "source_code_config = SourceCodeConfig(\n", + " source_dir=\"script-mode-basic\",\n", + " command=\"python /opt/ml/input/data/code/custom_script.py\",\n", + ")\n", + "```\n", + "\n", + "2. No more risk of API Limit being reached" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.configs import SourceCodeConfig\n", + "\n", + "source_code_config = SourceCodeConfig(\n", + " source_dir=\"script-mode-basic\",\n", + " command=\"python custom_script.py\",\n", + ")\n", + "model_trainer.train(\n", + " source_code_config=source_code_config,\n", + " input_data_channels={\n", + " \"train\": \"script-mode-basic/data/train\",\n", + " \"test\": \"script-mode-basic/data/test\",\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Script Mode Case - 2\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.configs import SourceCodeConfig\n", + "\n", + "source_code_config = SourceCodeConfig(\n", + " source_dir=\"script-mode-basic\",\n", + " requirements=\"requirements.txt\",\n", + " entry_script=\"custom_script.py\",\n", + ")\n", + "model_trainer.train(\n", + " source_code_config=source_code_config,\n", + " input_data_channels={\n", + " \"train\": \"script-mode-basic/data/train\",\n", + " \"test\": \"script-mode-basic/data/test\",\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Distributed Training Case" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install \"datasets[s3]\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "access_token = os.environ.get(\"HF_TOKEN\", \"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\")\n", + "model_id = \"meta-llama/Llama-2-7b-hf\"\n", + "\n", + "dataset_name = \"tatsu-lab/alpaca\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load Data Set" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from datasets import load_dataset\n", + "from transformers import AutoTokenizer \n", + "\n", + "from huggingface_hub.hf_api import HfFolder;\n", + "\n", + "# Load Tokenizer \n", + "tokenizer = AutoTokenizer.from_pretrained(model_id, access_token=access_token)\n", + "\n", + "\n", + "# Load dataset from huggingface.co\n", + "dataset = load_dataset(dataset_name)\n", + "\n", + "dataset = dataset.shuffle(seed=42)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "if \"validation\" not in dataset.keys():\n", + " dataset[\"validation\"] = load_dataset(\n", + " dataset_name,\n", + " split=\"train[:1%]\"\n", + " )\n", + "\n", + " dataset[\"train\"] = load_dataset(\n", + " dataset_name,\n", + " split=\"train[1%:]\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Prepare Dataset" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from itertools import chain\n", + "from functools import partial\n", + "\n", + "def group_texts(examples,block_size = 2048):\n", + " # Concatenate all texts.\n", + " concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()}\n", + " total_length = len(concatenated_examples[list(examples.keys())[0]])\n", + " # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can\n", + " # customize this part to your needs.\n", + " if total_length >= block_size:\n", + " total_length = (total_length // block_size) * block_size\n", + " # Split by chunks of max_len.\n", + " result = {\n", + " k: [t[i : i + block_size] for i in range(0, total_length, block_size)]\n", + " for k, t in concatenated_examples.items()\n", + " }\n", + " result[\"labels\"] = result[\"input_ids\"].copy()\n", + " return result\n", + "\n", + "column_names = dataset[\"train\"].column_names\n", + "\n", + "lm_dataset = dataset.map(\n", + " lambda sample: tokenizer(sample[\"text\"],return_token_type_ids=False), batched=True, remove_columns=list(column_names)\n", + ").map(\n", + " partial(group_texts, block_size=2048),\n", + " batched=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Save Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#save data locally\n", + "\n", + "training_input_path = f'distributed-training/processed/data/'\n", + "lm_dataset.save_to_disk(training_input_path)\n", + "\n", + "print(f\"Saved data to: {training_input_path}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Model Trainer Torchrun" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "from sagemaker.modules.image_spec import ImageSpec, Framework, Processor\n", + "from sagemaker.modules.configs import ResourceConfig\n", + "\n", + "env = {}\n", + "env['FI_PROVIDER'] = 'efa'\n", + "env['NCCL_PROTO'] = 'simple'\n", + "env['NCCL_SOCKET_IFNAME'] = \"eth0\"\n", + "env['NCCL_IB_DISABLE'] = \"1\"\n", + "env['NCCL_DEBUG'] = \"WARN\"\n", + "env['FI_EFA_USE_DEVICE_RDMA'] = '1'\n", + "env['RDMAV_FORK_SAFE'] = '1'\n", + "\n", + "\n", + "resource_config = ResourceConfig(\n", + " instance_count=2,\n", + " instance_type=\"ml.p4d.24xlarge\" ,\n", + " volume_size_in_gb=96,\n", + ")\n", + "\n", + "hugging_face_image = ImageSpec(\n", + " framework=Framework.HUGGING_FACE,\n", + " processor=Processor.GPU,\n", + " version=\"4.28.1\",\n", + " base_framework_version=\"pytorch2.0.0\",\n", + " py_version=\"py310\",\n", + " distribution={\"torch_distributed\": {\"enabled\": True}}\n", + ")\n", + "\n", + "model_trainer = ModelTrainer(\n", + " training_image=hugging_face_image,\n", + " environment=env,\n", + " resource_config=resource_config\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.configs import SourceCodeConfig\n", + "\n", + "\n", + "hyper_parameters={\n", + " 'dataset_path': '/opt/ml/input/data/dataset',\n", + " 'epochs': 1,\n", + " 'max_steps':100,\n", + " 'fsdp': '\"full_shard auto_wrap\"',\n", + " 'fsdp_transformer_layer_cls_to_wrap': \"LlamaDecoderLayer\",\n", + " 'gradient_checkpointing': True,\n", + " 'optimizer': \"adamw_torch\",\n", + " 'per_device_train_batch_size': 1,\n", + " 'model_id': model_id,\n", + " 'access_token': access_token\n", + "}\n", + "\n", + "source_code_config = SourceCodeConfig(\n", + " source_dir=\"distributed-training/scripts\",\n", + " requirements=\"requirements.txt\",\n", + " command=\"torchrun --nnodes 2 \\\n", + " --nproc_per_node $SM_NUM_GPUS \\\n", + " --master_addr algo-1 \\\n", + " --master_port 7777 \\\n", + " --node_rank $SM_CURRENT_HOST_INDEX \\\n", + " run_clm_no_trainer.py\",\n", + ")\n", + "\n", + "model_trainer.train(\n", + " source_code_config=source_code_config,\n", + " hyper_parameters=hyper_parameters,\n", + " input_data_channels={\"dataset\": training_input_path},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Problems to Solve\n", + "\n", + "### How can we make it easier for user to set a sagemaker distributed image?\n", + "* Would be very nice if user could just provide framework name and we somehow automatically pick latest and resolve some things from ModelTrainer. Many low level technical challanges with this due to legacy image uri configs and conditions that are not predictable from the the `json` (ie, hardcoded prefixes/substrings used for certain specific conditions when building image)\n", + "\n", + "```python\n", + "pytorch_image = ImageSpec(\"pytorch\")\n", + "```\n", + "\n", + "---\n", + "\n", + "\n", + "### How can we make it easier for user to build an image?\n", + "* There are challenges here because of some of the OS differences in installing some ML frameworks which depend on some lower level dependencies being installed like CUDA - https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Amazon-Linux&target_version=2023&target_type=rpm_network\n", + "\n", + "```python\n", + "custom_image = custom_image_builder(\n", + " image_name=\"my_custom_image\",\n", + " requirements=requirements.txt,\n", + " base_image=\"python:3.10.15-slim\",\n", + " docker_file=\"Dockerfile\",\n", + " enviornment={\"SOME_VAR\": 4},\n", + " upload_ecr=True,\n", + " local_snapshot=True,\n", + ")\n", + "\n", + "model_trainer = ModelTrainer(training_image=custom_image)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "\n", + "python_ecr_image = \"public.ecr.aws/docker/library/python:3.10.15-slim\"\n", + "python_docker_image = \"python:3.10.15-slim\"\n", + "\n", + "# This does not work\n", + "model_trainer = ModelTrainer(training_image=python_ecr_image)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "source_code_config = SourceCodeConfig(\n", + " command=\"echo 'Hello World'\",\n", + ")\n", + "model_trainer.train(source_code_config=source_code_config)" + ] } ], "metadata": { diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py b/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py new file mode 100644 index 0000000000..8b8fdb9ec4 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py @@ -0,0 +1,166 @@ +# flake8: noqa +import argparse +import numpy as np +import os +import sys +import logging +import json +import shutil +import torch +import torch.nn as nn +from torch.utils.data import DataLoader, TensorDataset +from pytorch_model_def import get_model + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) +logger.addHandler(logging.StreamHandler(sys.stdout)) + + +def parse_args(): + """ + Parse arguments passed from the SageMaker API + to the container + """ + + parser = argparse.ArgumentParser() + + # Hyperparameters sent by the client are passed as command-line arguments to the script + parser.add_argument("--epochs", type=int, default=os.environ.get("SM_HP_EPOCHS", 1)) + parser.add_argument("--batch_size", type=int, default=os.environ.get("SM_HP_BATCH_SIZE", 64)) + parser.add_argument( + "--learning_rate", type=float, default=os.environ.get("SM_HP_LEARNING_RATE", 0.1) + ) + + # Data directories + parser.add_argument( + "--train", type=str, default=os.environ.get("SM_CHANNEL_TRAIN", "data/train") + ) + parser.add_argument("--test", type=str, default=os.environ.get("SM_CHANNEL_TEST", "data/test")) + + # Model directory: we will use the default set by SageMaker, /opt/ml/model/ + parser.add_argument("--model_dir", type=str, default=os.environ.get("SM_MODEL_DIR")) + + return parser.parse_known_args() + + +def get_train_data(train_dir): + """ + Get the training data and convert to tensors + """ + + x_train = np.load(os.path.join(train_dir, "x_train.npy")) + y_train = np.load(os.path.join(train_dir, "y_train.npy")) + logger.info(f"x train: {x_train.shape}, y train: {y_train.shape}") + + return torch.from_numpy(x_train), torch.from_numpy(y_train) + + +def get_test_data(test_dir): + """ + Get the testing data and convert to tensors + """ + + x_test = np.load(os.path.join(test_dir, "x_test.npy")) + y_test = np.load(os.path.join(test_dir, "y_test.npy")) + logger.info(f"x test: {x_test.shape}, y test: {y_test.shape}") + + return torch.from_numpy(x_test), torch.from_numpy(y_test) + + +def model_fn(model_dir): + """ + Load the model for inference + """ + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model = get_model() + model.load_state_dict(torch.load(model_dir + "/model.pth")) + model.eval() + return model.to(device) + + +def input_fn(request_body, request_content_type): + """ + Deserialize and prepare the prediction input + """ + + if request_content_type == "application/json": + request = json.loads(request_body) + train_inputs = torch.tensor(request) + return train_inputs + + +def predict_fn(input_data, model): + """ + Apply model to the incoming request + """ + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model.to(device) + model.eval() + with torch.no_grad(): + return model(input_data.float()).numpy()[0] + + +def train(): + """ + Train the PyTorch model + """ + + x_train, y_train = get_train_data(args.train) + x_test, y_test = get_test_data(args.test) + train_ds = TensorDataset(x_train, y_train) + + batch_size = args.batch_size + epochs = args.epochs + learning_rate = args.learning_rate + logger.info( + "batch_size = {}, epochs = {}, learning rate = {}".format(batch_size, epochs, learning_rate) + ) + + train_dl = DataLoader(train_ds, batch_size, shuffle=True) + + model = get_model() + model = model.to(device) + criterion = nn.MSELoss() + optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) + + for epoch in range(epochs): + for x_train_batch, y_train_batch in train_dl: + y = model(x_train_batch.float()) + loss = criterion(y.flatten(), y_train_batch.float()) + optimizer.zero_grad() + loss.backward() + optimizer.step() + epoch += 1 + logger.info(f"epoch: {epoch} -> loss: {loss}") + + # evalutate on test set + with torch.no_grad(): + y = model(x_test.float()).flatten() + mse = ((y - y_test) ** 2).sum() / y_test.shape[0] + print("\nTest MSE:", mse.numpy()) + + torch.save(model.state_dict(), args.model_dir + "/model.pth") + # PyTorch requires that the inference script must + # be in the .tar.gz model file and Step Functions SDK doesn't do this. + inference_code_path = args.model_dir + "/code/" + + if not os.path.exists(inference_code_path): + os.mkdir(inference_code_path) + logger.info("Created a folder at {}!".format(inference_code_path)) + + code_dir = os.environ.get("SM_CHANNEL_CODE") + shutil.copy(os.path.join(code_dir, "custom_script.py"), inference_code_path) + shutil.copy(os.path.join(code_dir, "pytorch_model_def.py"), inference_code_path) + logger.info("Saving models files to {}".format(inference_code_path)) + + +if __name__ == "__main__": + print("Running in the training container ...\n") + + args, _ = parse_args() + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + train() diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/x_test.npy b/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/x_test.npy new file mode 100644 index 0000000000000000000000000000000000000000..a9977e39c042722d4103758e390eaffa6653b937 GIT binary patch literal 19456 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 literal 0 HcmV?d00001 diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/y_test.npy b/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/test/y_test.npy new file mode 100644 index 0000000000000000000000000000000000000000..a7191945eea4a7781c091a3177b77db6bcdfbd91 GIT binary patch literal 2544 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 literal 0 HcmV?d00001 diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/x_train.npy b/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/x_train.npy new file mode 100644 index 0000000000000000000000000000000000000000..d267502e654e7274fd83cf0e9d2f9a6d73983b3b GIT binary patch literal 77184 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 F{{u$uPbvTa literal 0 HcmV?d00001 diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/y_train.npy b/src/sagemaker/modules/testing_notebooks/basic-script-mode/data/train/y_train.npy new file mode 100644 index 0000000000000000000000000000000000000000..b8c17c4972c671c08983b1d4c05d9e8521fb495d GIT binary patch literal 9760 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.21 +bitsandbytes +peft diff --git a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py new file mode 100644 index 0000000000..48da810353 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py @@ -0,0 +1,372 @@ +# flake8: noqa +import os +import argparse +import math +from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed, get_scheduler, SchedulerType +from datasets import load_from_disk +import torch +from utils import create_dataloaders, get_module_class_from_name, save_model +import time +from tqdm import tqdm +import torch.distributed as dist +from torch.distributed.fsdp import ( + FullyShardedDataParallel as FSDP, + MixedPrecision, + ShardingStrategy, + BackwardPrefetch, + CPUOffload, +) +from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import ( + checkpoint_wrapper, + CheckpointImpl, + apply_activation_checkpointing, +) + +from torch.distributed.fsdp.wrap import ( + transformer_auto_wrap_policy, +) +import functools + + +# Initialize the distributed environment +dist.init_process_group(backend="nccl") + + +def parse_arge(): + """Parse the arguments.""" + parser = argparse.ArgumentParser() + # add model id and dataset path argument + parser.add_argument( + "--model_id", + type=str, + default=os.environ.get("SM_HP_MODEL_ID", "google/flan-t5-xl"), + help="Model id to use for training.", + ) + parser.add_argument( + "--dataset_path", + type=str, + default=os.environ.get("SM_CHANNEL_DATASET", "lm_dataset"), + help="Path to dataset.", + ) + # add training hyperparameters for epochs, batch size, learning rate, and seed + parser.add_argument( + "--epochs", + type=int, + default=os.environ.get("SM_HP_EPOCHS", 1), + help="Number of epochs to train for.", + ) + parser.add_argument( + "--max_steps", + type=int, + default=os.environ.get("SM_HP_MAX_STEPS", None), + help="Number of epochs to train for.", + ) + parser.add_argument( + "--per_device_train_batch_size", + type=int, + default=os.environ.get("SM_HP_PER_DEVICE_TRAIN_BATCH_SIZE", 1), + help="Batch size to use for training.", + ) + parser.add_argument( + "--lr", + type=float, + default=os.environ.get("SM_HP_LR", 3e-5), + help="Learning rate to use for training.", + ) + parser.add_argument( + "--optimizer", + type=str, + default=os.environ.get("SM_HP_OPTIMIZER", "adamw_hf"), + help="Learning rate to use for training.", + ) + parser.add_argument( + "--seed", + type=int, + default=os.environ.get("SM_HP_SEED", 42), + help="Seed to use for training.", + ) + parser.add_argument( + "--access_token", + type=str, + default=os.environ.get("SM_HP_ACCESS_TOKEN", None), + ) + parser.add_argument( + "--num_train_epochs", + type=int, + default=os.environ.get("SM_HP_NUM_TRAIN_EPOCHS", 1), + help="Total number of training epochs to perform.", + ) + + parser.add_argument( + "--gradient_checkpointing", + type=bool, + default=os.environ.get("SM_HP_GRADIENT_CHECKPOINTING", True), + help="Path to deepspeed config file.", + ) + parser.add_argument( + "--bf16", + type=bool, + default=True if torch.cuda.get_device_capability()[0] == 8 else False, + help="Whether to use bf16.", + ) + parser.add_argument( + "--fsdp", type=str, default=os.environ.get("SM_HP_FSDP", None), help="Whether to use fsdp." + ) + parser.add_argument( + "--fsdp_transformer_layer_cls_to_wrap", + type=str, + default=os.environ.get("SM_HP_FSDP_TRANSFORMER_LAYER_CLS_TO_WRAP", None), + help="Which transformer layer to wrap with fsdp.", + ) + parser.add_argument( + "--max_train_steps", + type=int, + default=os.environ.get("SM_HP_MAX_TRAIN_STEPS", None), + help="Total number of training steps to perform. If provided, overrides num_train_epochs.", + ) + parser.add_argument( + "--learning_rate", + type=float, + default=os.environ.get("SM_HP_LEARNING_RATE", 5e-5), + help="Initial learning rate (after the potential warmup period) to use.", + ) + parser.add_argument( + "--gradient_accumulation_steps", + type=int, + default=os.environ.get("SM_HP_GRADIENT_ACCUMULATION_STEPS", 1), + help="Number of updates steps to accumulate before performing a backward/update pass.", + ) + parser.add_argument( + "--lr_scheduler_type", + type=SchedulerType, + default=os.environ.get("SM_HP_LR_SCHEDULER_TYPE", "linear"), + help="The scheduler type to use.", + choices=[ + "linear", + "cosine", + "cosine_with_restarts", + "polynomial", + "constant", + "constant_with_warmup", + ], + ) + parser.add_argument( + "--num_warmup_steps", + type=int, + default=os.environ.get("SM_HP_NUM_WARMUP_STEPS", 0), + help="Number of steps for the warmup in the lr scheduler.", + ) + parser.add_argument( + "--limit_all_gathers", + type=bool, + default=os.environ.get("SM_HP_LIMIT_ALL_GATHERS", False), + ) + parser.add_argument( + "--forward_prefetch", + type=bool, + default=os.environ.get("SM_HP_FORWARD_PREFETCH", False), + ) + parser.add_argument( + "--weight_decay", + type=float, + default=os.environ.get("SM_HP_WEIGHT_DECAY", 0.0), + help="Weight decay to use.", + ) + parser.add_argument( + "--model_dir", + type=str, + default=os.environ.get("SM_MODEL_DIR", "/opt/ml/model"), + ) + parser.add_argument( + "--cache_dir", + type=str, + default=os.environ.get("SM_HP_CACHE_DIR", None), + ) + + args = parser.parse_known_args() + return args + + +def training_function(args): + # set seed + set_seed(args.seed) + + from huggingface_hub.hf_api import HfFolder + + HfFolder.save_token(args.access_token) + + dataset = load_from_disk(args.dataset_path) + + dist.barrier() + + # load model from the hub + model = AutoModelForCausalLM.from_pretrained( + args.model_id, + # token=args.access_token, + cache_dir=args.cache_dir, + use_cache=( + False if args.gradient_checkpointing else True + ), # this is needed for gradient checkpointing + ) + + tokenizer = AutoTokenizer.from_pretrained(args.model_id) + + train_dataset = dataset["train"] + eval_dataset = dataset["validation"] + + # Create dataloaders for training and evaluation + train_dataloader, eval_dataloader = create_dataloaders( + train_dataset, + eval_dataset, + args.rank, + args.world_size, + args.seed, + args.per_device_train_batch_size, + args.per_device_train_batch_size, + ) + + auto_wrap_policy = functools.partial( + transformer_auto_wrap_policy, + transformer_layer_cls={ + get_module_class_from_name(model, args.fsdp_transformer_layer_cls_to_wrap) + }, + ) + + torch.cuda.set_device(args.local_rank) + + dtype = torch.bfloat16 + + mixed_precision_policy = MixedPrecision( + param_dtype=dtype, reduce_dtype=dtype, buffer_dtype=dtype + ) + + model = FSDP( + model, + auto_wrap_policy=auto_wrap_policy, + mixed_precision=mixed_precision_policy, + sharding_strategy=ShardingStrategy.FULL_SHARD, # SHARD_GRAD_OP #for Zero2 and FULL_SHARD for Zero3, + cpu_offload=CPUOffload(offload_params=True), + backward_prefetch=BackwardPrefetch.BACKWARD_PRE, # BACKWARD_POST, BACKWARD_PRE + forward_prefetch=args.forward_prefetch, + limit_all_gathers=args.limit_all_gathers, + device_id=torch.cuda.current_device(), + ) + + non_reentrant_wrapper = functools.partial( + checkpoint_wrapper, offload_to_cpu=True, checkpoint_impl=CheckpointImpl.NO_REENTRANT + ) + check_fn_gpt = lambda submodule: isinstance( + submodule, get_module_class_from_name(model, args.fsdp_transformer_layer_cls_to_wrap) + ) + apply_activation_checkpointing( + model, checkpoint_wrapper_fn=non_reentrant_wrapper, check_fn=check_fn_gpt + ) + + # Optimizer + # Split weights in two groups, one with weight decay and the other not. + no_decay = ["bias", "LayerNorm.weight", "layer_norm.weight"] + optimizer_grouped_parameters = [ + { + "params": [ + p for n, p in model.named_parameters() if not any(nd in n for nd in no_decay) + ], + "weight_decay": args.weight_decay, + }, + { + "params": [p for n, p in model.named_parameters() if any(nd in n for nd in no_decay)], + "weight_decay": 0.0, + }, + ] + + optimizer = torch.optim.AdamW(optimizer_grouped_parameters, lr=args.learning_rate) + + # Scheduler and math around the number of training steps. + overrode_max_train_steps = False + num_update_steps_per_epoch = math.ceil(len(train_dataloader) / args.gradient_accumulation_steps) + if args.rank == 0: + print(f"Number of update steps per epoch {num_update_steps_per_epoch}") + if args.max_train_steps is None: + args.max_train_steps = args.num_train_epochs * num_update_steps_per_epoch + overrode_max_train_steps = True + + lr_scheduler = get_scheduler( + name=args.lr_scheduler_type, + optimizer=optimizer, + num_warmup_steps=args.num_warmup_steps * args.gradient_accumulation_steps, + num_training_steps=args.max_train_steps * args.gradient_accumulation_steps, + ) + + start = time.time() + device = torch.device(f"cuda:{args.local_rank}") + + # Perform Training Loop for num_train_epochs times + for epoch in range(args.num_train_epochs): + + model.train() + total_steps = 0 + fsdp_loss = torch.zeros(2).to(args.local_rank) + + # Use train_dataloader to get the batch data + for _, batch in enumerate(tqdm(train_dataloader, disable=not (args.rank == 0))): + + batch = {k: v.to(device) for k, v in batch.items()} + output = model(**batch) + loss = output["loss"] + loss.backward() + fsdp_loss[0] += loss.item() + fsdp_loss[1] += len(batch["input_ids"]) + + optimizer.step() + lr_scheduler.step() + optimizer.zero_grad() + total_steps += 1 + if total_steps > args.max_steps: + break + + # Reduce the loss across all processes + torch.distributed.all_reduce(fsdp_loss, op=torch.distributed.ReduceOp.SUM) + train_loss = fsdp_loss[0] / fsdp_loss[1] + train_ppl = torch.exp(train_loss) + + if args.rank == 0: + print(f"******{epoch=}: {train_ppl=} {train_loss=}******") + + model.eval() + eval_loss = 0 + fsdp_eval_loss = torch.zeros(2).to(args.local_rank) + for steps, batch in enumerate(tqdm(eval_dataloader, disable=not (args.rank == 0))): + batch = {k: v.to(device) for k, v in batch.items()} + with torch.no_grad(): + outputs = model(**batch) + loss = outputs["loss"] + + fsdp_eval_loss[0] += loss.item() + fsdp_eval_loss[1] += len(batch["input_ids"]) + if steps > args.max_steps: + break + + torch.distributed.all_reduce(fsdp_eval_loss, op=torch.distributed.ReduceOp.SUM) + eval_loss = fsdp_eval_loss[0] / fsdp_eval_loss[1] + eval_ppl = torch.exp(eval_loss) + + if args.rank == 0: + print(f"*******{epoch=}: {eval_ppl=} {eval_loss=}*******") + + save_model(model, tokenizer, args.model_dir, args.rank) + if args.rank == 0: + print("Training done!") + dist.barrier() + + +def main(): + args, _ = parse_arge() + args.local_rank = int(os.environ["LOCAL_RANK"]) + args.rank = int(os.environ["RANK"]) + args.world_size = int(os.environ["WORLD_SIZE"]) + + print(f"Running with args: {args}") + training_function(args) + + +if __name__ == "__main__": + main() diff --git a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/utils.py b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/utils.py new file mode 100644 index 0000000000..6c25ea22a8 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/utils.py @@ -0,0 +1,85 @@ +# flake8: noqa +import torch +from torch.utils.data import DataLoader +from transformers import default_data_collator +import os + + +def create_dataloaders( + train_dataset, eval_dataset, rank, world_size, seed, train_batch_size, eval_batch_size +): + + train_sampler = torch.utils.data.DistributedSampler( + train_dataset, + shuffle=True, + seed=seed, + rank=rank, + num_replicas=world_size, + drop_last=True, + ) + + eval_sampler = torch.utils.data.DistributedSampler( + eval_dataset, + shuffle=True, + seed=seed, + rank=rank, + num_replicas=world_size, + drop_last=True, + ) + + train_dataloader = DataLoader( + train_dataset, + sampler=train_sampler, + collate_fn=default_data_collator, + batch_size=train_batch_size, + pin_memory=True, + drop_last=True, + ) + + eval_dataloader = DataLoader( + eval_dataset, + sampler=eval_sampler, + collate_fn=default_data_collator, + batch_size=eval_batch_size, + pin_memory=True, + drop_last=True, + ) + + return train_dataloader, eval_dataloader + + +def save_model(model, tokenizer, output_dir, rank): + """Helper method to save model when using FSDP.""" + + from torch.distributed.fsdp import ( + FullyShardedDataParallel as FSDP, + FullStateDictConfig, + StateDictType, + ) + + save_policy = FullStateDictConfig(offload_to_cpu=True, rank0_only=True) + with FSDP.state_dict_type(model, StateDictType.FULL_STATE_DICT, save_policy): + cpu_state_dict = model.state_dict() + if rank == 0: + torch.save(cpu_state_dict, os.path.join(output_dir, "model_weights.pt")) + tokenizer.save_pretrained(output_dir) + + +def get_module_class_from_name(module, name): + """ + Gets a class from a module by its name. + + Args: + module (`torch.nn.Module`): The module to get the class from. + name (`str`): The name of the class. + """ + modules_children = list(module.children()) + if module.__class__.__name__ == name: + return module.__class__ + elif len(modules_children) == 0: + return + else: + for child_module in modules_children: + module_class = get_module_class_from_name(child_module, name) + if module_class is not None: + return module_class diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 9df9f57b56..cb844f95c9 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -50,7 +50,10 @@ DEFAULT_CONTAINER_ARGUMENTS, ) from sagemaker.modules.templates import TRAIN_SCRIPT_TEMPLATE -from sagemaker.modules.image_spec import ImageSpec +from sagemaker.modules.image_spec import ( + ImageSpec, + ImageScope, +) from sagemaker.modules import logger @@ -157,7 +160,7 @@ def _validate_source_code_config(self, source_code_config: Optional[SourceCodeCo ) if requirements: if not _is_valid_path( - f"{source_dir}/{entry_script}", + f"{source_dir}/{requirements}", path_type="File", ): raise ValueError( @@ -195,7 +198,7 @@ def __init__(self, **data): self.base_name = f"{self.algorithm_name}-job" elif self.training_image: if isinstance(self.training_image, ImageSpec): - self.base_name = f"{self.training_image.framework_name}-job" + self.base_name = f"{self.training_image.framework.value}-job" else: self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" logger.warning(f"Base name not provided. Using default name:\n{self.base_name}") @@ -235,9 +238,11 @@ def __init__(self, **data): if self.training_image: if isinstance(self.training_image, ImageSpec): - self.training_image = self.training_image.get_image_uri( - image_scope="training", instance_type=self.resource_config.instance_type + self.training_image.update_image_spec( + image_scope=ImageScope.TRAINING, + instance_type=self.resource_config.instance_type, ) + self.training_image = self.training_image.retrieve() logger.info(f"Training image URI: {self.training_image}") def train( diff --git a/tests/unit/sagemaker/modules/test_image_spec.py b/tests/unit/sagemaker/modules/test_image_spec.py index 23d70f133c..a6bff4cb31 100644 --- a/tests/unit/sagemaker/modules/test_image_spec.py +++ b/tests/unit/sagemaker/modules/test_image_spec.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import import unittest from sagemaker.modules.image_spec import ImageSpec, Framework, Processor @@ -7,7 +8,7 @@ class TestImageSpec(unittest.TestCase): def test_image_spec_update(self): image_spec = ImageSpec(framework=Framework.HUGGING_FACE) - assert image_spec.version == None + assert image_spec.version is None image_spec.update_image_spec(version="v3") assert image_spec.version == "v3" @@ -18,9 +19,11 @@ def test_image_spec_retrive(self): assert "dkr.ecr.us-west-2.amazonaws.com" in xgboost_uri assert "sagemaker-xgboost" in xgboost_uri - image_spec = ImageSpec(framework=Framework.HUGGING_FACE, - processor=Processor.GPU, - base_framework_version="pytorch2.1.0") + image_spec = ImageSpec( + framework=Framework.HUGGING_FACE, + processor=Processor.GPU, + base_framework_version="pytorch2.1.0", + ) hugging_face_uri = image_spec.retrieve() assert "dkr.ecr.us-west-2.amazonaws.com" in hugging_face_uri assert "huggingface-pytorch-training" in hugging_face_uri @@ -36,7 +39,9 @@ def test_image_spec_retrive(self): assert "sagemaker-scikit-learn" in sklearn_uri def test_image_spec_retrive_with_version(self): - image_spec = ImageSpec(framework=Framework.XGBOOST, - version="0.90-1") + image_spec = ImageSpec(framework=Framework.XGBOOST, version="0.90-1") xgboost_uri = image_spec.retrieve() - assert xgboost_uri == '246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:0.90-1-cpu-py3' + assert ( + xgboost_uri + == "246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:0.90-1-cpu-py3" + ) From cb7af786c2a9cfe4b4765bd40fc86290dd87435e Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:11:40 -0700 Subject: [PATCH 06/79] Add enviornment variable bootstrapping script (#1530) * Add enviornment variables scripts * format * fix comment * add docstrings * fix comment --- src/sagemaker/modules/scripts/environment.py | 232 +++++++++++++++++++ src/sagemaker/modules/templates.py | 4 + 2 files changed, 236 insertions(+) create mode 100644 src/sagemaker/modules/scripts/environment.py diff --git a/src/sagemaker/modules/scripts/environment.py b/src/sagemaker/modules/scripts/environment.py new file mode 100644 index 0000000000..db54f001f3 --- /dev/null +++ b/src/sagemaker/modules/scripts/environment.py @@ -0,0 +1,232 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module is used to define the environment variables for the training job container.""" + +from __future__ import absolute_import + +from typing import Dict, Any +import multiprocessing +import subprocess +import json +import os +import sys +import logging + +# Initialize logger +SM_LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", 20) +logger = logging.getLogger(__name__) +console_handler = logging.StreamHandler(sys.stdout) +logger.addHandler(console_handler) +logger.setLevel(SM_LOG_LEVEL) + +SM_MODEL_DIR = "/opt/ml/model" + +SM_INPUT_DIR = "/opt/ml/input" +SM_INPUT_DATA_DIR = "/opt/ml/input/data" +SM_INPUT_CONFIG_DIR = "/opt/ml/input/config" + +SM_OUTPUT_DIR = "/opt/ml/output" +SM_OUTPUT_FAILURE = "/opt/ml/output/failure" +SM_OUTPUT_DATA_DIR = "/opt/ml/output/data" + +SM_MASTER_ADDR = "algo-1" +SM_MASTER_PORT = 7777 + +RESOURCE_CONFIG = f"{SM_INPUT_CONFIG_DIR}/resourceconfig.json" +INPUT_DATA_CONFIG = f"{SM_INPUT_CONFIG_DIR}/inputdataconfig.json" +HYPERPARAMETERS_CONFIG = f"{SM_INPUT_CONFIG_DIR}/hyperparameters.json" + +ENV_OUTPUT_FILE = "sm_training.env" + + +def num_cpus(): + """Return the number of CPUs available in the current container. + + Returns: + int: Number of CPUs available in the current container. + """ + return multiprocessing.cpu_count() + + +def num_gpus(): + """Return the number of GPUs available in the current container. + + Returns: + int: Number of GPUs available in the current container. + """ + try: + cmd = ["nvidia-smi", "--list-gpus"] + output = subprocess.check_output(cmd).decode("utf-8") + return sum(1 for line in output.splitlines() if line.startswith("GPU ")) + except (OSError, subprocess.CalledProcessError): + logger.info("No GPUs detected (normal if no gpus installed)") + return 0 + + +def num_neurons(): + """Return the number of neuron cores available in the current container. + + Returns: + int: Number of Neuron Cores available in the current container. + """ + try: + cmd = ["neuron-ls", "-j"] + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode("utf-8") + j = json.loads(output) + neuron_cores = 0 + for item in j: + neuron_cores += item.get("nc_count", 0) + logger.info(f"Found {neuron_cores} neurons on this instance") + return neuron_cores + except OSError: + logger.info("No Neurons detected (normal if no neurons installed)") + return 0 + except subprocess.CalledProcessError as e: + if e.output is not None: + try: + msg = e.output.decode("utf-8").partition("error=")[2] + logger.info( + "No Neurons detected (normal if no neurons installed). \ + If neuron installed then {}".format( + msg + ) + ) + except AttributeError: + logger.info("No Neurons detected (normal if no neurons installed)") + else: + logger.info("No Neurons detected (normal if no neurons installed)") + + return 0 + + +def set_env( + resource_config: Dict[str, Any] = {}, + input_data_config: Dict[str, Any] = {}, + hyperparameters_config: Dict[str, Any] = {}, + output_file: str = "sm_training.env", + write_to_etc: bool = False, +): + """Set environment variables for the training job container. + + Args: + resource_config (Dict[str, Any]): Resource configuration for the training job. + input_data_config (Dict[str, Any]): Input data configuration for the training job. + hyperparameters_config (Dict[str, Any]): Hyperparameters configuration for the training job. + output_file (str): Output file to write the environment variables. + write_to_etc (bool): Whether to write the environment variables to /etc/environment. + """ + # Constants + env_vars = { + "SM_MODEL_DIR": SM_MODEL_DIR, + "SM_INPUT_DIR": SM_INPUT_DIR, + "SM_INPUT_DATA_DIR": SM_INPUT_DATA_DIR, + "SM_INPUT_CONFIG_DIR": SM_INPUT_CONFIG_DIR, + "SM_OUTPUT_DIR": SM_OUTPUT_DIR, + "SM_OUTPUT_FAILURE": SM_OUTPUT_FAILURE, + "SM_OUTPUT_DATA_DIR": SM_OUTPUT_DATA_DIR, + "SM_LOG_LEVEL": SM_LOG_LEVEL, + "SM_MASTER_ADDR": SM_MASTER_ADDR, + "SM_MASTER_PORT": SM_MASTER_PORT, + } + + # Data Channels + channels = list(input_data_config.keys()) + for channel in channels: + env_vars[f"SM_CHANNEL_{channel.upper()}"] = f"{SM_INPUT_DATA_DIR}/{channel}" + env_vars["SM_CHANNELS"] = channels + + # Hyperparameters + env_vars["SM_HPS"] = hyperparameters_config + for key, value in hyperparameters_config.items(): + env_vars[f"SM_HP_{key.upper()}"] = value + + # Host Variables + current_host = resource_config["current_host"] + hosts = resource_config["hosts"] + sorted_hosts = sorted(hosts) + + env_vars["SM_CURRENT_HOST"] = current_host + env_vars["SM_HOSTS"] = sorted_hosts + env_vars["SM_NETWORK_INTERFACE_NAME"] = resource_config["network_interface_name"] + env_vars["SM_HOST_COUNT"] = len(sorted_hosts) + env_vars["SM_CURRENT_HOST_RANK"] = sorted_hosts.index(current_host) + + env_vars["SM_NUM_CPUS"] = num_cpus() + env_vars["SM_NUM_GPUS"] = num_gpus() + env_vars["SM_NUM_NEURONS"] = num_neurons() + + # Misc. + env_vars["SM_RESOURCE_CONFIG"] = resource_config + env_vars["SM_INPUT_DATA_CONFIG"] = input_data_config + + # All Training Environment Variables + env_vars["SM_TRAINING_ENV"] = { + "channel_input_dirs": { + channel: env_vars[f"SM_CHANNEL_{channel.upper()}"] for channel in channels + }, + "current_host": env_vars["SM_CURRENT_HOST"], + "hosts": env_vars["SM_HOSTS"], + "master_addr": env_vars["SM_MASTER_ADDR"], + "master_port": env_vars["SM_MASTER_PORT"], + "hyperparameters": env_vars["SM_HPS"], + "input_data_config": input_data_config, + "input_config_dir": env_vars["SM_INPUT_CONFIG_DIR"], + "input_data_dir": env_vars["SM_INPUT_DATA_DIR"], + "input_dir": env_vars["SM_INPUT_DIR"], + "job_name": os.environ["TRAINING_JOB_NAME"], + "log_level": env_vars["SM_LOG_LEVEL"], + "model_dir": env_vars["SM_MODEL_DIR"], + "network_interface_name": env_vars["SM_NETWORK_INTERFACE_NAME"], + "num_cpus": env_vars["SM_NUM_CPUS"], + "num_gpus": env_vars["SM_NUM_GPUS"], + "num_neurons": env_vars["SM_NUM_NEURONS"], + "output_data_dir": env_vars["SM_OUTPUT_DATA_DIR"], + "resource_config": env_vars["SM_RESOURCE_CONFIG"], + } + try: + cur_dir = os.path.dirname(os.path.abspath(__file__)) + except NameError: + # Fallback to current working directory + cur_dir = os.getcwd() + with open(os.path.join(cur_dir, output_file), "w") as f: + for key, value in env_vars.items(): + if isinstance(value, (list, dict)): + f.write(f"export {key}='{json.dumps(value)}'\n") + else: + f.write(f"export {key}='{value}'\n") + + # Need to write to /etc/environment for MPI to work + if write_to_etc: + with open("/etc/environment", "a") as f: + for key, value in env_vars.items(): + if isinstance(value, (list, dict)): + f.write(f"{key}='{json.dumps(value)}'\n") + else: + f.write(f"{key}='{value}'\n") + + +if __name__ == "__main__": + with open(RESOURCE_CONFIG, "r") as f: + resource_config = json.load(f) + with open(INPUT_DATA_CONFIG, "r") as f: + input_data_config = json.load(f) + with open(HYPERPARAMETERS_CONFIG, "r") as f: + hyperparameters_config = json.load(f) + + set_env( + resource_config=resource_config, + input_data_config=input_data_config, + hyperparameters_config=hyperparameters_config, + output_file=ENV_OUTPUT_FILE, + write_to_etc=True, + ) diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index f040919829..3040bef5f1 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -29,6 +29,10 @@ cat /opt/ml/input/config/hyperparameters.json echo +echo "Setting up environment variables" +python /opt/ml/input/data/sm_code/environment.py +source /opt/ml/input/data/sm_code/sm_training.env + python --version {working_dir} {install_requirements} From 80a1b897df817adc06c0f2c996494522146653ef Mon Sep 17 00:00:00 2001 From: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Date: Tue, 8 Oct 2024 16:40:30 -0700 Subject: [PATCH 07/79] feature: add utility function to capture local snapshot (#1524) * local snapshot * Update pip list command * Remove function calls * Address comments * Address comments --- src/sagemaker/modules/train/local_snapshot.py | 320 ++++++++++++++++++ 1 file changed, 320 insertions(+) create mode 100644 src/sagemaker/modules/train/local_snapshot.py diff --git a/src/sagemaker/modules/train/local_snapshot.py b/src/sagemaker/modules/train/local_snapshot.py new file mode 100644 index 0000000000..dc694130fd --- /dev/null +++ b/src/sagemaker/modules/train/local_snapshot.py @@ -0,0 +1,320 @@ +import boto3 +import docker +import logging +import subprocess +import sys +from typing import Optional +import yaml + +logger = logging.getLogger(__name__) + +REQUIREMENT_TXT_PATH = "/tmp/requirements.txt" +ENVIRONMENT_YML_PATH = "/tmp/environment.yml" +DOCKERFILE_PATH = "/tmp/Dockerfile" + +CONDA_DOCKERFILE_TEMPLATE = """ +FROM {base_image_name} +ADD environment.yml . + +# Install prerequisites for conda +RUN apt-get update && \ + apt-get install -y wget bzip2 ca-certificates libglib2.0-0 libxext6 libsm6 libxrender1 && \ + apt-get clean + +# Download and install conda +RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ + bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \ + rm Miniconda3-latest-Linux-x86_64.sh + +# Initialize Conda +ENV PATH=/opt/conda/bin:$PATH +RUN conda update -n base -c defaults conda && \ + conda config --add channels conda-forge + +# Create a conda environment from the environment.yml file +RUN conda env create -f environment.yml -n {env_name} + +# Activate the conda environment +RUN conda run -n {env_name} +""" + +PIP_DOCKERFILE_TEMPLATE = """ +FROM {base_image_name} +ADD requirements.txt . + +# Create a virtual environment +RUN python -m venv {env_name} + +# Activate the virtual environment +RUN . {env_name}/bin/activate + +RUN pip install --no-cache-dir -r requirements.txt +""" + + +def capture_local_environment( + image_name: str = "sm-local-capture", + env_name: str = "saved_local_env", + package_manager: str = "pip", + deploy_to_ecr: bool = False, + base_image_name: Optional[str] = None, + job_conda_env: Optional[str] = None, + additional_dependencies: Optional[str] = None, + ecr_repo_name: Optional[str] = None, + boto_session: Optional[boto3.Session] = None, +): + """ + Capture all dependency packages installed in the local environment and build a docker image. + When using this utility method, the docker daemon must be active in the environment. + Please note that this is an experimental feature. This utility function is not be able to detect the package + compatability between platforms. It is also not able to detect dependency conflicts between the local environment + and the additional dependencies. + + Args: + image_name (str): The name of the docker image. + env_name (str): The name of the virtual environment to be activated in the image, defaults to "saved_local_env". + package_manager (str): The package manager, must be one of "conda" or "pip". + deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. If set to True, the AWS + credentials must be configured in the environment. + base_image_name (Optional[str]): If provided will be used as the base image, else the utility will evaluate + from local environment in following manner: + 1. If package manager is conda, it will use ubuntu:latest. + 2. If package manager is pip, it is resolved to base python image with the same python version + as the environment running the local code. + job_conda_env (Optional[str]): If set, the dependencies will be captured from this specific conda Env, + otherwise the dependencies will be the installed packages in the current active environment. This parameter + is only valid when the package manager is conda. + additional_dependencies (Optional[str]): Either the path to a dependencies file (conda environment.yml OR pip + requirements.txt file). Regardless of this setting utility will automatically generate the dependencies + file corresponding to the current active environment’s snapshot. In addition to this, additional dependencies + is configurable. + ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, it will use image_name as + the ECR repo name. This parameter is only valid when deploy_to_ecr is True. + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not provided, a new boto session + will be created. + + Exceptions: + docker.errors.DockerException: Error while fetching server API version: + The docker engine is not running in your environment. + docker.errors.BuildError: The docker failed to build the image. The most likely reason is: 1) Some packages are not + supported in the base image. 2) There are dependency conflicts between your local environment and additional dependencies. + botocore.exceptions.ClientError: AWS credentials are not configured. + """ + + if package_manager == "conda": + if job_conda_env: + subprocess.run( + f"conda env export -n {job_conda_env} > {ENVIRONMENT_YML_PATH} --no-builds", + shell=True, + check=True, + ) + else: + subprocess.run( + f"conda env export > {ENVIRONMENT_YML_PATH} --no-builds", shell=True, check=True + ) + + if additional_dependencies: + if not additional_dependencies.endswith( + ".yml" + ) and not additional_dependencies.endswith(".txt"): + raise ValueError( + "When package manager is conda, additional dependencies file must be a yml file or a txt file." + ) + if additional_dependencies.endswith(".yml"): + _merge_environment_ymls( + env_name, + ENVIRONMENT_YML_PATH, + additional_dependencies, + ENVIRONMENT_YML_PATH, + ) + elif additional_dependencies.endswith(".txt"): + _merge_environment_yml_with_requirement_txt( + env_name, + ENVIRONMENT_YML_PATH, + additional_dependencies, + ENVIRONMENT_YML_PATH, + ) + + if not base_image_name: + base_image_name = "ubuntu:latest" + dockerfile_contents = CONDA_DOCKERFILE_TEMPLATE.format( + base_image_name=base_image_name, + env_name=env_name, + ) + elif package_manager == "pip": + subprocess.run(f"pip list --format=freeze > {REQUIREMENT_TXT_PATH}", shell=True, check=True) + + if additional_dependencies: + if not additional_dependencies.endswith(".txt"): + raise ValueError( + "When package manager is pip, additional dependencies file must be a txt file." + ) + with open(additional_dependencies, "r") as f: + additional_requirements = f.read() + with open(REQUIREMENT_TXT_PATH, "a") as f: + f.write(additional_requirements) + logger.info(f"Merged requirements file saved to {REQUIREMENT_TXT_PATH}") + + if not base_image_name: + version = sys.version_info + base_image_name = f"python:{version.major}.{version.minor}.{version.micro}" + dockerfile_contents = PIP_DOCKERFILE_TEMPLATE.format( + base_image_name=base_image_name, + env_name=env_name, + ) + + else: + raise ValueError( + "The provided package manager is not supported. Use conda or pip as the package manager." + ) + + # Create the Dockerfile + with open(DOCKERFILE_PATH, "w") as f: + f.write(dockerfile_contents) + + client = docker.from_env() + image, logs = client.images.build( + path="/tmp", + dockerfile=DOCKERFILE_PATH, + rm=True, + tag=image_name, + ) + for log in logs: + logger.info(log.get("stream", "").strip()) + logger.info(f"Docker image {image_name} built successfully") + + if deploy_to_ecr: + if boto_session is None: + boto_session = boto3.Session() + _push_image_to_ecr(image_name, ecr_repo_name, boto_session) + + +def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, output_file: str): + """ + Merge two environment.yml files and save to a new environment.yml file. + + Args: + env_name (str): The name of the virtual environment to be activated in the image. + env_file1 (str): The path of the first environment.yml file. + env_file2 (str): The path of the second environment.yml file. + output_file (str): The path of the output environment.yml file. + """ + + # Load the YAML files + with open(env_file1, "r") as f: + env1 = yaml.safe_load(f) + with open(env_file2, "r") as f: + env2 = yaml.safe_load(f) + + # Combine dependencies and channels from both files + dependencies = [] + pip_dependencies = [] + channels = set() + + for env in [env1, env2]: + if "dependencies" in env: + for dep in env["dependencies"]: + if isinstance(dep, str): + # Conda package, e.g., 'python=3.7' + dependencies.append(dep) + elif isinstance(dep, dict): + # Pip package list, e.g., {'pip': ['requests>=2.22.0']} + for pip_package in dep.get("pip", []): + pip_dependencies.append(pip_package) + if "channels" in env: + channels.update(env["channels"]) + + if pip_dependencies: + dependencies.append({"pip": pip_dependencies}) + # Create the merged environment file + merged_env = {"name": env_name, "channels": list(channels), "dependencies": dependencies} + + with open(output_file, "w") as f: + yaml.dump(merged_env, f, sort_keys=False) + + logger.info(f"Merged environment file saved to '{output_file}'") + + +def _merge_environment_yml_with_requirement_txt( + env_name: str, env_file: str, req_txt: str, output_file: str +): + """ + Merge an environment.yml file with a requirements.txt file and save to a new environment.yml file. + + Args: + env_name (str): The name of the virtual environment to be activated in the image. + env_file (str): The path of the environment.yml file. + req_txt (str): The path of the requirements.txt file. + output_file (str): The path of the output environment.yml file. + """ + # Load the files + with open(env_file, "r") as f: + env = yaml.safe_load(f) + with open(req_txt, "r") as f: + requirements = f.read().splitlines() + # Combine pip dependencies from both files + dependencies = [] + pip_dependencies = [] + + if "dependencies" in env: + for dep in env["dependencies"]: + if isinstance(dep, str): + # Conda package, e.g., 'python=3.7' + dependencies.append(dep) + elif isinstance(dep, dict): + # Pip package list, e.g., {'pip': ['requests>=2.22.0']} + for pip_package in dep.get("pip", []): + pip_dependencies.append(pip_package) + + for req in requirements: + if req and not req.startswith("#"): + pip_dependencies.append(req) + + if pip_dependencies: + dependencies.append({"pip": pip_dependencies}) + # Create the merged environment file + merged_env = {"name": env_name, "channels": env["channels"], "dependencies": dependencies} + + with open(output_file, "w") as f: + yaml.dump(merged_env, f, sort_keys=False) + + logger.info(f"Merged environment file saved to '{output_file}'") + + +def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Optional[boto3.Session]): + """ + Push the docker image to AWS ECR. + + Args: + image_name (str): The name of the docker image. + ecr_repo_name (str): The AWS ECR repo to push the docker image. + """ + region = boto_session.region_name + aws_account_id = boto_session.client("sts", region_name=region).get_caller_identity()["Account"] + ecr_client = boto3.client("ecr") + + # Authenticate Docker with ECR + registry_url = f"{aws_account_id}.dkr.ecr.{region}.amazonaws.com" + docker_login_cmd = ( + f"aws ecr get-login-password --region {region} " + f"| docker login --username AWS --password-stdin {aws_account_id}.dkr.ecr.{region}.amazonaws.com" + ) + subprocess.run(docker_login_cmd, shell=True, check=True) + + # Create a new ECR repository (if it doesn't already exist) + ecr_repo_name = ecr_repo_name or image_name + try: + ecr_client.create_repository(repositoryName=ecr_repo_name) + except ecr_client.exceptions.RepositoryAlreadyExistsException: + pass + + # Tag the local Docker image + ecr_image_uri = f"{registry_url}/{ecr_repo_name}:latest" + docker_tag_cmd = f"docker tag {image_name}:latest {ecr_image_uri}" + subprocess.run(docker_tag_cmd, shell=True, check=True) + + # Push the Docker image to ECR + docker_push_cmd = f"docker push {ecr_image_uri}" + subprocess.run(docker_push_cmd, shell=True, check=True) + + logger.info(f"Image {image_name} pushed to {ecr_image_uri}") From 93a3c6dd007502905fdb85f5cb322098d433e1c1 Mon Sep 17 00:00:00 2001 From: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Date: Tue, 15 Oct 2024 11:03:44 -0700 Subject: [PATCH 08/79] Support intelligent parameters (#1540) * Support intelligent parameters * fix codestyle --- .../modules/scripts/intelligent_params.py | 101 ++++++++++++++++ src/sagemaker/modules/train/local_snapshot.py | 88 ++++++++------ .../scripts/test_intelligent_params.py | 109 ++++++++++++++++++ 3 files changed, 264 insertions(+), 34 deletions(-) create mode 100644 src/sagemaker/modules/scripts/intelligent_params.py create mode 100644 tests/unit/sagemaker/modules/scripts/test_intelligent_params.py diff --git a/src/sagemaker/modules/scripts/intelligent_params.py b/src/sagemaker/modules/scripts/intelligent_params.py new file mode 100644 index 0000000000..71a94162a3 --- /dev/null +++ b/src/sagemaker/modules/scripts/intelligent_params.py @@ -0,0 +1,101 @@ +import argparse +import json +import os +import re + +HYPERPARAMETERS_FILE_PATH = "/opt/ml/input/config/hyperparameters.json" + + +def set_intelligent_params(path: str) -> None: + """ + Set intelligent parameters for all python files under the given path. + For python code with comment sm_hyper_param or sm_hp_{variable_name}, the value will be found in + /opt/ml/input/config/hyperparameters.json, and this function will rewrite lines with these comments. + + Args: + path (str): The folder path to set intellingent parameters + """ + with open(HYPERPARAMETERS_FILE_PATH, "r") as f: + hyperparameters = json.load(f) + for root, dirs, files in os.walk(path): + for file in files: + if file.endswith(".py"): + file_path = os.path.join(root, file) + rewrite_file(file_path, hyperparameters) + + +def rewrite_file(file_path: str, hyperparameters: dict) -> None: + """ + Rewrite a single python file with intelligent parameters. + + Args: + file_path (str): The file path to rewrite + hyperparameters (dict): The hyperparameter names and values + """ + with open(file_path, "r", encoding="utf-8") as f: + lines = f.readlines() + for i in range(len(lines)): + lines[i] = rewrite_line(lines[i], hyperparameters) + with open(file_path, "w", encoding="utf-8") as f: + f.writelines(lines) + + +def rewrite_line(line: str, hyperparameters: dict) -> None: + """ + Rewrite a single line of python code with intelligent parameters. + + Args: + line (str): The python code to rewrite + hyperparameters (dict): The hyperparameter names and values + """ + # Remove strings from the line to avoid = and # in strings + line_without_strings = re.sub(r'".*?"', '""', line.strip()) + line_without_strings = re.sub(r"'.*?'", '""', line_without_strings) + + # Match lines with format "a = 1 # comment" + assignment_pattern = r"^[a-zA-Z_][a-zA-Z0-9_]*\s*=.*#.*" + if re.match(assignment_pattern, line_without_strings): + indent = (len(line) - len(line.lstrip())) * " " + variable = line_without_strings.split("=")[0].strip() + comment = line_without_strings.split("#")[-1].strip() + value = get_parameter_value(variable, comment, hyperparameters) + if value is None: + return line + if isinstance(value, str): + new_line = f'{indent}{variable} = "{value}" # set by intelligent parameters\n' + else: + new_line = f"{indent}{variable} = {str(value)} # set by intelligent parameters\n" + return new_line + return line + + +def get_parameter_value(variable: str, comment: str, hyperparameters: dict) -> None: + """ + Get the parameter value by the variable name and comment. + + Args: + variable (str): The variable name + comment (str): The comment string in the python code + hyperparameters (dict): The hyperparameter names and values + """ + if comment == "sm_hyper_param": + # Get the hyperparameter value by the variable name + return hyperparameters.get(variable, None) + if comment.startswith("sm_hp_"): + # Get the hyperparameter value by the suffix of comment + return hyperparameters.get(comment[6:], None) + # Get the hyperparameter value from environment variables + if comment.startswith("sm_"): + return os.environ.get(comment.upper(), None) + return None + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Intelligent parameters") + parser.add_argument( + "-p", "--path", help="The folder path to set intellingent parameters", required=True + ) + + args = parser.parse_args() + + set_intelligent_params(args.path) diff --git a/src/sagemaker/modules/train/local_snapshot.py b/src/sagemaker/modules/train/local_snapshot.py index dc694130fd..b697286a88 100644 --- a/src/sagemaker/modules/train/local_snapshot.py +++ b/src/sagemaker/modules/train/local_snapshot.py @@ -1,9 +1,23 @@ -import boto3 -import docker +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Utility function to capture local environment""" import logging import subprocess import sys from typing import Optional + +import boto3 +import docker import yaml logger = logging.getLogger(__name__) @@ -66,38 +80,41 @@ def capture_local_environment( """ Capture all dependency packages installed in the local environment and build a docker image. When using this utility method, the docker daemon must be active in the environment. - Please note that this is an experimental feature. This utility function is not be able to detect the package - compatability between platforms. It is also not able to detect dependency conflicts between the local environment - and the additional dependencies. + Please note that this is an experimental feature. This utility function is not be able to + detect the package compatability between platforms. It is also not able to detect dependency + conflicts between the local environment and the additional dependencies. Args: image_name (str): The name of the docker image. - env_name (str): The name of the virtual environment to be activated in the image, defaults to "saved_local_env". + env_name (str): The name of the virtual environment to be activated in the image, + defaults to "saved_local_env". package_manager (str): The package manager, must be one of "conda" or "pip". - deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. If set to True, the AWS - credentials must be configured in the environment. - base_image_name (Optional[str]): If provided will be used as the base image, else the utility will evaluate - from local environment in following manner: + deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. + If set to True, the AWS credentials must be configured in the environment. + base_image_name (Optional[str]): If provided will be used as the base image, else the + utility will evaluate from local environment in following manner: 1. If package manager is conda, it will use ubuntu:latest. - 2. If package manager is pip, it is resolved to base python image with the same python version - as the environment running the local code. - job_conda_env (Optional[str]): If set, the dependencies will be captured from this specific conda Env, - otherwise the dependencies will be the installed packages in the current active environment. This parameter - is only valid when the package manager is conda. - additional_dependencies (Optional[str]): Either the path to a dependencies file (conda environment.yml OR pip - requirements.txt file). Regardless of this setting utility will automatically generate the dependencies - file corresponding to the current active environment’s snapshot. In addition to this, additional dependencies - is configurable. - ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, it will use image_name as - the ECR repo name. This parameter is only valid when deploy_to_ecr is True. - boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not provided, a new boto session - will be created. + 2. If package manager is pip, it is resolved to base python image with the same + python version as the environment running the local code. + job_conda_env (Optional[str]): If set, the dependencies will be captured from this specific + conda Env, otherwise the dependencies will be the installed packages in the current + active environment. This parameter is only valid when the package manager is conda. + additional_dependencies (Optional[str]): Either the path to a dependencies file (conda + environment.yml OR pip requirements.txt file). Regardless of this setting utility will + automatically generate the dependencies file corresponding to the current active + environment’s snapshot. In addition to this, additional dependencies is configurable. + ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, + it will use image_name as the ECR repo name. This parameter is only valid when + deploy_to_ecr is True. + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not + provided, a new boto session will be created. Exceptions: docker.errors.DockerException: Error while fetching server API version: The docker engine is not running in your environment. - docker.errors.BuildError: The docker failed to build the image. The most likely reason is: 1) Some packages are not - supported in the base image. 2) There are dependency conflicts between your local environment and additional dependencies. + docker.errors.BuildError: The docker failed to build the image. The most likely reason is: + 1) Some packages are not supported in the base image. 2) There are dependency conflicts + between your local environment and additional dependencies. botocore.exceptions.ClientError: AWS credentials are not configured. """ @@ -118,7 +135,8 @@ def capture_local_environment( ".yml" ) and not additional_dependencies.endswith(".txt"): raise ValueError( - "When package manager is conda, additional dependencies file must be a yml file or a txt file." + "When package manager is conda, additional dependencies " + "file must be a yml file or a txt file." ) if additional_dependencies.endswith(".yml"): _merge_environment_ymls( @@ -153,7 +171,7 @@ def capture_local_environment( additional_requirements = f.read() with open(REQUIREMENT_TXT_PATH, "a") as f: f.write(additional_requirements) - logger.info(f"Merged requirements file saved to {REQUIREMENT_TXT_PATH}") + logger.info("Merged requirements file saved to %s", REQUIREMENT_TXT_PATH) if not base_image_name: version = sys.version_info @@ -165,7 +183,8 @@ def capture_local_environment( else: raise ValueError( - "The provided package manager is not supported. Use conda or pip as the package manager." + "The provided package manager is not supported. " + "Use conda or pip as the package manager." ) # Create the Dockerfile @@ -173,7 +192,7 @@ def capture_local_environment( f.write(dockerfile_contents) client = docker.from_env() - image, logs = client.images.build( + _, logs = client.images.build( path="/tmp", dockerfile=DOCKERFILE_PATH, rm=True, @@ -181,7 +200,7 @@ def capture_local_environment( ) for log in logs: logger.info(log.get("stream", "").strip()) - logger.info(f"Docker image {image_name} built successfully") + logger.info("Docker image %s built successfully", image_name) if deploy_to_ecr: if boto_session is None: @@ -232,14 +251,15 @@ def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, outpu with open(output_file, "w") as f: yaml.dump(merged_env, f, sort_keys=False) - logger.info(f"Merged environment file saved to '{output_file}'") + logger.info("Merged environment file saved to '%s'", output_file) def _merge_environment_yml_with_requirement_txt( env_name: str, env_file: str, req_txt: str, output_file: str ): """ - Merge an environment.yml file with a requirements.txt file and save to a new environment.yml file. + Merge an environment.yml file with a requirements.txt file and save to a new + environment.yml file. Args: env_name (str): The name of the virtual environment to be activated in the image. @@ -278,7 +298,7 @@ def _merge_environment_yml_with_requirement_txt( with open(output_file, "w") as f: yaml.dump(merged_env, f, sort_keys=False) - logger.info(f"Merged environment file saved to '{output_file}'") + logger.info("Merged environment file saved to '%s'", output_file) def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Optional[boto3.Session]): @@ -317,4 +337,4 @@ def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Option docker_push_cmd = f"docker push {ecr_image_uri}" subprocess.run(docker_push_cmd, shell=True, check=True) - logger.info(f"Image {image_name} pushed to {ecr_image_uri}") + logger.info("Image %s pushed to %s", image_name, ecr_image_uri) diff --git a/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py b/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py new file mode 100644 index 0000000000..95939cefae --- /dev/null +++ b/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py @@ -0,0 +1,109 @@ +import os +import pytest +from sagemaker.modules.scripts.intelligent_params import ( + rewrite_file, + rewrite_line, +) + + +@pytest.fixture() +def hyperparameters(): + return {"n_estimators": 3, "epochs": 4, "state": "In Progress", "list_value": [1, 2, 3]} + + +@pytest.fixture() +def python_code(): + return """ +import sagemaker + +def main(args): + n_estimators = 10 # sm_hp_n_estimators + state = "Not Started" # sm_hyper_param + random_seed = 0.1 # sm_hyper_param + + output_dir = "local/dir/" # sm_model_dir + epochs = 5 # sm_hp_epochs + input_data = [0, 0, 0] # sm_hp_list_value + + # Load the Iris dataset + iris = load_iris() + y = iris.target + + # Make predictions on the test set + y_pred = clf.predict(input_data) + + accuracy = accuracy_score(y, y_pred) # calculate the accuracy + print(f"# Model accuracy: {accuracy:.2f}") +""" + + +@pytest.fixture() +def expected_output_code(): + return """ +import sagemaker + +def main(args): + n_estimators = 3 # set by intelligent parameters + state = "In Progress" # set by intelligent parameters + random_seed = 0.1 # sm_hyper_param + + output_dir = "/opt/ml/input" # set by intelligent parameters + epochs = 4 # set by intelligent parameters + input_data = [1, 2, 3] # set by intelligent parameters + + # Load the Iris dataset + iris = load_iris() + y = iris.target + + # Make predictions on the test set + y_pred = clf.predict(input_data) + + accuracy = accuracy_score(y, y_pred) # calculate the accuracy + print(f"# Model accuracy: {accuracy:.2f}") +""" + + +def test_rewrite_line(hyperparameters): + line = "n_estimators = 4 # sm_hyper_param" + new_line = rewrite_line(line, hyperparameters) + assert new_line == "n_estimators = 3 # set by intelligent parameters\n" + + line = " epochs = 5 # sm_hp_epochs" + new_line = rewrite_line(line, hyperparameters) + assert new_line == " epochs = 4 # set by intelligent parameters\n" + + os.environ["SM_MODEL_DIR"] = "/opt/ml/input" + line = 'output_dir = "local/dir/" # sm_model_dir ' + new_line = rewrite_line(line, hyperparameters) + assert new_line == 'output_dir = "/opt/ml/input" # set by intelligent parameters\n' + + line = " random_state = 1 # not an intelligent parameter comment \n" + new_line = rewrite_line(line, hyperparameters) + assert new_line == " random_state = 1 # not an intelligent parameter comment \n" + + line = "not_an_intelligent_parameter = 4 # sm_hyper_param\n" + new_line = rewrite_line(line, hyperparameters) + assert new_line == "not_an_intelligent_parameter = 4 # sm_hyper_param\n" + + line = "not_found_in_hyper_params = 4 # sm_hp_not_found_in_hyper_params\n" + new_line = rewrite_line(line, hyperparameters) + assert new_line == "not_found_in_hyper_params = 4 # sm_hp_not_found_in_hyper_params\n" + + line = "list_value = [4, 5, 6] # sm_hyper_param" + new_line = rewrite_line(line, hyperparameters) + assert new_line == "list_value = [1, 2, 3] # set by intelligent parameters\n" + + +def test_rewrite_file(hyperparameters, python_code, expected_output_code): + test_file_path = "temp_test.py" + + os.environ["SM_MODEL_DIR"] = "/opt/ml/input" + with open(test_file_path, "w") as f: + f.write(python_code) + rewrite_file(test_file_path, hyperparameters) + + with open(test_file_path, "r") as f: + new_python_code = f.read() + assert new_python_code == expected_output_code + + os.remove(test_file_path) From 4fe87383063fa939f05afd2feb25c5f58df19497 Mon Sep 17 00:00:00 2001 From: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Date: Tue, 15 Oct 2024 11:12:06 -0700 Subject: [PATCH 09/79] Revert Image Spec (#1541) --- src/sagemaker/modules/image_spec.py | 281 ------------------ .../base_model_trainer.ipynb | 132 ++++---- src/sagemaker/modules/train/model_trainer.py | 17 +- .../unit/sagemaker/modules/test_image_spec.py | 47 --- 4 files changed, 61 insertions(+), 416 deletions(-) delete mode 100644 src/sagemaker/modules/image_spec.py delete mode 100644 tests/unit/sagemaker/modules/test_image_spec.py diff --git a/src/sagemaker/modules/image_spec.py b/src/sagemaker/modules/image_spec.py deleted file mode 100644 index 60b417aaac..0000000000 --- a/src/sagemaker/modules/image_spec.py +++ /dev/null @@ -1,281 +0,0 @@ -# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"). You -# may not use this file except in compliance with the License. A copy of -# the License is located at -# -# http://aws.amazon.com/apache2.0/ -# -# or in the "license" file accompanying this file. This file is -# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF -# ANY KIND, either express or implied. See the License for the specific -# language governing permissions and limitations under the License. -"""ImageSpec class module.""" -from __future__ import absolute_import - -import re -from enum import Enum -from typing import Optional -from packaging.version import Version - -from sagemaker import utils -from sagemaker.image_uris import ( - _validate_version_and_set_if_needed, - _version_for_config, - _config_for_framework_and_scope, - _validate_py_version_and_set_if_needed, - _registry_from_region, - ECR_URI_TEMPLATE, - _get_latest_versions, - _validate_instance_deprecation, - _get_image_tag, - _validate_arg, -) - -DEFAULT_TOLERATE_MODEL = False - - -class Framework(Enum): - """Framework enum class.""" - - HUGGING_FACE = "huggingface" - HUGGING_FACE_NEURON = "huggingface-neuron" - HUGGING_FACE_NEURON_X = "huggingface-neuronx" - HUGGING_FACE_LLM = "huggingface-llm" - HUGGING_FACE_TEI_GPU = "huggingface-tei" - HUGGING_FACE_TEI_CPU = "huggingface-tei-cpu" - HUGGING_FACE_LLM_NEURONX = "huggingface-llm-neuronx" - HUGGING_FACE_TRAINING_COMPILER = "huggingface-training-compiler" - XGBOOST = "xgboost" - XG_BOOST_NEO = "xg-boost-neo" - SKLEARN = "sklearn" - PYTORCH = "pytorch" - PYTORCH_TRAINING_COMPILER = "pytorch-training-compiler" - DATA_WRANGLER = "data-wrangler" - STABILITYAI = "stabilityai" - SAGEMAKER_TRITONSERVER = "sagemaker-tritonserver" - - -class ImageScope(Enum): - """ImageScope enum class.""" - - TRAINING = "training" - INFERENCE = "inference" - INFERENCE_GRAVITON = "inference-graviton" - - -class Processor(Enum): - """Processor enum class.""" - - INF = "inf" - NEURON = "neuron" - GPU = "gpu" - CPU = "cpu" - TRN = "trn" - - -class ImageSpec: - """ImageSpec class to get image URI for a specific framework version. - - Attributes: - framework (Framework): The name of the framework or algorithm. - processor (Processor): The name of the processor (CPU, GPU, etc.). - region (str): The AWS region. - version (str): The framework or algorithm version. This is required if there is - more than one supported version for the given framework or algorithm. - py_version (str): The Python version. This is required if there is - more than one supported Python version for the given framework version. - instance_type (str): The SageMaker instance type. For supported types, see - https://aws.amazon.com/sagemaker/pricing. This is required if - there are different images for different processor types. - accelerator_type (str): Elastic Inference accelerator type. For more, see - https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html. - image_scope (str): The image type, i.e. what it is used for. - Valid values: "training", "inference", "inference_graviton", "eia". - If ``accelerator_type`` is set, ``image_scope`` is ignored. - container_version (str): the version of docker image. - Ideally the value of parameter should be created inside the framework. - For custom use, see the list of supported container versions: - https://github.com/aws/deep-learning-containers/blob/master/available_images.md - (default: None). - distribution (dict): A dictionary with information on how to run distributed training - sdk_version (str): the version of python-sdk that will be used in the image retrieval. - (default: None). - inference_tool (str): the tool that will be used to aid in the inference. - Valid values: "neuron, neuronx, None" - (default: None). - """ - - def __init__( - self, - framework: Framework, - processor: Optional[Processor] = Processor.CPU, - region: Optional[str] = "us-west-2", - version=None, - py_version=None, - instance_type=None, - accelerator_type=None, - image_scope: ImageScope = ImageScope.TRAINING, - container_version=None, - distribution=None, - base_framework_version=None, - sdk_version=None, - inference_tool=None, - ): - self.framework = framework - self.processor = processor - self.version = version - self.image_scope = image_scope - self.instance_type = instance_type - self.py_version = py_version - self.region = region - self.accelerator_type = accelerator_type - self.container_version = container_version - self.distribution = distribution - self.base_framework_version = base_framework_version - self.sdk_version = sdk_version - self.inference_tool = inference_tool - - def update_image_spec(self, **kwargs): - """Update the ImageSpec object with the given arguments.""" - for key, value in kwargs.items(): - if hasattr(self, key): - setattr(self, key, value) - - def retrieve(self) -> str: - """Retrieves the ECR URI for the Docker image matching the given arguments. - - Returns: - str: The ECR URI for the corresponding SageMaker Docker image. - - Raises: - NotImplementedError: If the scope is not supported. - ValueError: If the combination of arguments specified is not supported or - any PipelineVariable object is passed in. - VulnerableJumpStartModelError: If any of the dependencies required by the script have - known security vulnerabilities. - DeprecatedJumpStartModelError: If the version of the model is deprecated. - """ - config = _config_for_framework_and_scope( - self.framework.value, self.image_scope.value, self.accelerator_type - ) - original_version = self.version - try: - version = _validate_version_and_set_if_needed( - self.version, config, self.framework.value - ) - except ValueError: - version = None - if not version: - version = self._fetch_latest_version_from_config(config) - - version_config = config["versions"][_version_for_config(version, config)] - - if "huggingface" in self.framework.value: - if version_config.get("version_aliases"): - full_base_framework_version = version_config["version_aliases"].get( - self.base_framework_version, self.base_framework_version - ) - _validate_arg( - full_base_framework_version, list(version_config.keys()), "base framework" - ) - version_config = version_config.get(full_base_framework_version) - - self.py_version = _validate_py_version_and_set_if_needed( - self.py_version, version_config, self.framework.value - ) - version_config = version_config.get(self.py_version) or version_config - - registry = _registry_from_region(self.region, version_config["registries"]) - endpoint_data = utils._botocore_resolver().construct_endpoint("ecr", self.region) - if self.region == "il-central-1" and not endpoint_data: - endpoint_data = {"hostname": "ecr.{}.amazonaws.com".format(self.region)} - hostname = endpoint_data["hostname"] - - repo = version_config["repository"] - - # if container version is available in .json file, utilize that - if version_config.get("container_version"): - self.container_version = version_config["container_version"][self.processor.value] - - # Append sdk version in case of trainium instances - if repo in ["pytorch-training-neuron"]: - if not self.sdk_version: - sdk_version = _get_latest_versions(version_config["sdk_versions"]) - self.container_version = self.sdk_version + "-" + self.container_version - - if self.framework == Framework.HUGGING_FACE: - pt_or_tf_version = ( - re.compile("^(pytorch|tensorflow)(.*)$").match(self.base_framework_version).group(2) - ) - _version = original_version - - if repo in [ - "huggingface-pytorch-trcomp-training", - "huggingface-tensorflow-trcomp-training", - ]: - _version = version - if repo in [ - "huggingface-pytorch-inference-neuron", - "huggingface-pytorch-inference-neuronx", - ]: - if not sdk_version: - self.sdk_version = _get_latest_versions(version_config["sdk_versions"]) - self.container_version = self.sdk_version + "-" + self.container_version - if config.get("version_aliases").get(original_version): - _version = config.get("version_aliases")[original_version] - if ( - config.get("versions", {}) - .get(_version, {}) - .get("version_aliases", {}) - .get(self.base_framework_version, {}) - ): - _base_framework_version = config.get("versions")[_version]["version_aliases"][ - self.base_framework_version - ] - pt_or_tf_version = ( - re.compile("^(pytorch|tensorflow)(.*)$") - .match(_base_framework_version) - .group(2) - ) - - tag_prefix = f"{pt_or_tf_version}-transformers{_version}" - else: - tag_prefix = version_config.get("tag_prefix", version) - - if repo == f"{self.framework.value}-inference-graviton": - self.container_version = f"{self.container_version}-sagemaker" - _validate_instance_deprecation(self.framework, self.instance_type, version) - - tag = _get_image_tag( - self.container_version, - self.distribution, - self.image_scope.value, - self.framework.value, - self.inference_tool, - self.instance_type, - self.processor.value, - self.py_version, - tag_prefix, - version, - ) - - if tag: - repo += ":{}".format(tag) - - return ECR_URI_TEMPLATE.format(registry=registry, hostname=hostname, repository=repo) - - def _fetch_latest_version_from_config(self, framework_config: dict) -> str: - """Fetches the latest version from the framework config.""" - if self.image_scope.value in framework_config: - if image_scope_config := framework_config[self.image_scope.value]: - if version_aliases := image_scope_config["version_aliases"]: - if latest_version := version_aliases["latest"]: - return latest_version - versions = list(framework_config["versions"].keys()) - top_version = versions[0] - bottom_version = versions[-1] - - if Version(top_version) >= Version(bottom_version): - return top_version - return bottom_version diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 58c13f7084..567657f6ad 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -2,15 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "import sys, os\n", + "\n", + "from tests.integ.test_processing import image_uri\n", + "\n", "# Get the absolute path of the root directory\n", "root_dir = os.path.abspath(os.path.join(os.getcwd(), '../../..'))\n", "sys.path.insert(0, root_dir)" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -25,25 +28,17 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker.modules.image_spec import ImageSpec, Framework\n", - "\n", - "pytorch_image = ImageSpec(\n", - " framework=Framework.PYTORCH\n", - ")\n", - "\n", - "model_trainer = ModelTrainer(training_image=pytorch_image)\n" - ] + "model_trainer = ModelTrainer(training_image=\"python:3.10.15-slim\")\n" + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", @@ -51,7 +46,9 @@ " command=\"echo 'Hello World' && env\",\n", ")\n", "model_trainer.train(source_code_config=source_code_config)" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -72,9 +69,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", @@ -89,7 +84,9 @@ " \"test\": \"script-mode-basic/data/test\",\n", " }\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -100,9 +97,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", @@ -118,7 +113,9 @@ " \"test\": \"script-mode-basic/data/test\",\n", " }\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -129,24 +126,24 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "!pip install \"datasets[s3]\"" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "access_token = os.environ.get(\"HF_TOKEN\", \"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\")\n", "model_id = \"meta-llama/Llama-2-7b-hf\"\n", "\n", "dataset_name = \"tatsu-lab/alpaca\"\n" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -157,9 +154,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from datasets import load_dataset\n", "from transformers import AutoTokenizer \n", @@ -174,13 +169,13 @@ "dataset = load_dataset(dataset_name)\n", "\n", "dataset = dataset.shuffle(seed=42)\n" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "if \"validation\" not in dataset.keys():\n", " dataset[\"validation\"] = load_dataset(\n", @@ -192,7 +187,9 @@ " dataset_name,\n", " split=\"train[1%:]\"\n", " )" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -203,9 +200,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from itertools import chain\n", "from functools import partial\n", @@ -234,7 +229,9 @@ " partial(group_texts, block_size=2048),\n", " batched=True,\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -245,9 +242,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "#save data locally\n", "\n", @@ -255,7 +250,9 @@ "lm_dataset.save_to_disk(training_input_path)\n", "\n", "print(f\"Saved data to: {training_input_path}\")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -266,12 +263,10 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ + "from sagemaker import image_uris\n", "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker.modules.image_spec import ImageSpec, Framework, Processor\n", "from sagemaker.modules.configs import ResourceConfig\n", "\n", "env = {}\n", @@ -290,27 +285,26 @@ " volume_size_in_gb=96,\n", ")\n", "\n", - "hugging_face_image = ImageSpec(\n", - " framework=Framework.HUGGING_FACE,\n", - " processor=Processor.GPU,\n", - " version=\"4.28.1\",\n", - " base_framework_version=\"pytorch2.0.0\",\n", - " py_version=\"py310\",\n", - " distribution={\"torch_distributed\": {\"enabled\": True}}\n", - ")\n", - "\n", "model_trainer = ModelTrainer(\n", - " training_image=hugging_face_image,\n", + " training_image=image_uris.retrieve(\n", + " framework=\"huggingface\",\n", + " region=\"us-west-2\",\n", + " version=\"4.28.1\",\n", + " base_framework_version=\"pytorch2.0.0\",\n", + " image_scope=\"training\",\n", + " py_version=\"py310\",\n", + " distribution={\"torch_distributed\": {\"enabled\": True}}\n", + " ),\n", " environment=env,\n", " resource_config=resource_config\n", ")\n" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", @@ -344,7 +338,9 @@ " hyper_parameters=hyper_parameters,\n", " input_data_channels={\"dataset\": training_input_path},\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -352,16 +348,6 @@ "source": [ "## Problems to Solve\n", "\n", - "### How can we make it easier for user to set a sagemaker distributed image?\n", - "* Would be very nice if user could just provide framework name and we somehow automatically pick latest and resolve some things from ModelTrainer. Many low level technical challanges with this due to legacy image uri configs and conditions that are not predictable from the the `json` (ie, hardcoded prefixes/substrings used for certain specific conditions when building image)\n", - "\n", - "```python\n", - "pytorch_image = ImageSpec(\"pytorch\")\n", - "```\n", - "\n", - "---\n", - "\n", - "\n", "### How can we make it easier for user to build an image?\n", "* There are challenges here because of some of the OS differences in installing some ML frameworks which depend on some lower level dependencies being installed like CUDA - https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Amazon-Linux&target_version=2023&target_type=rpm_network\n", "\n", @@ -382,9 +368,7 @@ }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "\n", @@ -393,19 +377,21 @@ "\n", "# This does not work\n", "model_trainer = ModelTrainer(training_image=python_ecr_image)\n" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "metadata": {}, - "outputs": [], "source": [ "source_code_config = SourceCodeConfig(\n", " command=\"echo 'Hello World'\",\n", ")\n", "model_trainer.train(source_code_config=source_code_config)" - ] + ], + "outputs": [], + "execution_count": null } ], "metadata": { diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index cb844f95c9..032974dff7 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -50,10 +50,6 @@ DEFAULT_CONTAINER_ARGUMENTS, ) from sagemaker.modules.templates import TRAIN_SCRIPT_TEMPLATE -from sagemaker.modules.image_spec import ( - ImageSpec, - ImageScope, -) from sagemaker.modules import logger @@ -94,7 +90,7 @@ class ModelTrainer(BaseModel): algorithm_name (Optional[str]): The SageMaker marketplace algorithm name/arn to use for the training job. algorithm_name cannot be specified if training_image is specified. - training_image (Optional[Union[str, ImageSpec]]): + training_image (Optional[str]): The training image URI to use for the training job container. training_image cannot be specified if algorithm_name is specified. training_input_mode (Optional[str]): @@ -122,7 +118,7 @@ class ModelTrainer(BaseModel): input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None source_code_config: Optional[SourceCodeConfig] = None algorithm_name: Optional[str] = None - training_image: Optional[Union[str, ImageSpec]] = None + training_image: Optional[str] = None training_input_mode: Optional[str] = "File" training_image_config: Optional[TrainingImageConfig] = None environment: Optional[Dict[str, str]] = None @@ -197,9 +193,6 @@ def __init__(self, **data): if self.algorithm_name: self.base_name = f"{self.algorithm_name}-job" elif self.training_image: - if isinstance(self.training_image, ImageSpec): - self.base_name = f"{self.training_image.framework.value}-job" - else: self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" logger.warning(f"Base name not provided. Using default name:\n{self.base_name}") @@ -237,12 +230,6 @@ def __init__(self, **data): ) if self.training_image: - if isinstance(self.training_image, ImageSpec): - self.training_image.update_image_spec( - image_scope=ImageScope.TRAINING, - instance_type=self.resource_config.instance_type, - ) - self.training_image = self.training_image.retrieve() logger.info(f"Training image URI: {self.training_image}") def train( diff --git a/tests/unit/sagemaker/modules/test_image_spec.py b/tests/unit/sagemaker/modules/test_image_spec.py deleted file mode 100644 index a6bff4cb31..0000000000 --- a/tests/unit/sagemaker/modules/test_image_spec.py +++ /dev/null @@ -1,47 +0,0 @@ -from __future__ import absolute_import -import unittest - -from sagemaker.modules.image_spec import ImageSpec, Framework, Processor - - -class TestImageSpec(unittest.TestCase): - - def test_image_spec_update(self): - image_spec = ImageSpec(framework=Framework.HUGGING_FACE) - assert image_spec.version is None - image_spec.update_image_spec(version="v3") - assert image_spec.version == "v3" - - def test_image_spec_retrive(self): - # Asserting substrings because full string uri can change with newer versions - image_spec = ImageSpec(framework=Framework.XGBOOST) - xgboost_uri = image_spec.retrieve() - assert "dkr.ecr.us-west-2.amazonaws.com" in xgboost_uri - assert "sagemaker-xgboost" in xgboost_uri - - image_spec = ImageSpec( - framework=Framework.HUGGING_FACE, - processor=Processor.GPU, - base_framework_version="pytorch2.1.0", - ) - hugging_face_uri = image_spec.retrieve() - assert "dkr.ecr.us-west-2.amazonaws.com" in hugging_face_uri - assert "huggingface-pytorch-training" in hugging_face_uri - - image_spec = ImageSpec(framework=Framework.PYTORCH) - pytorch_uri = image_spec.retrieve() - assert "dkr.ecr.us-west-2.amazonaws.com" in pytorch_uri - assert "pytorch-training" in pytorch_uri - - image_spec = ImageSpec(framework=Framework.SKLEARN) - sklearn_uri = image_spec.retrieve() - assert "dkr.ecr.us-west-2.amazonaws.com" in sklearn_uri - assert "sagemaker-scikit-learn" in sklearn_uri - - def test_image_spec_retrive_with_version(self): - image_spec = ImageSpec(framework=Framework.XGBOOST, version="0.90-1") - xgboost_uri = image_spec.retrieve() - assert ( - xgboost_uri - == "246618743249.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:0.90-1-cpu-py3" - ) From 72e42661e2bf40f30c33530986e494797967b100 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Tue, 15 Oct 2024 14:40:15 -0700 Subject: [PATCH 10/79] Cleanup ModelTrainer (#1542) --- src/sagemaker/modules/scripts/environment.py | 1 - .../modules/scripts/intelligent_params.py | 28 ++- .../base_model_trainer.ipynb | 225 ++++++++++-------- .../basic-script-mode/custom_script.py | 64 ++--- src/sagemaker/modules/train/local_snapshot.py | 16 +- src/sagemaker/modules/train/model_trainer.py | 38 +-- .../scripts/test_intelligent_params.py | 19 +- .../modules/train/test_model_trainer.py | 51 +--- 8 files changed, 206 insertions(+), 236 deletions(-) diff --git a/src/sagemaker/modules/scripts/environment.py b/src/sagemaker/modules/scripts/environment.py index db54f001f3..4b80dcae72 100644 --- a/src/sagemaker/modules/scripts/environment.py +++ b/src/sagemaker/modules/scripts/environment.py @@ -11,7 +11,6 @@ # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. """This module is used to define the environment variables for the training job container.""" - from __future__ import absolute_import from typing import Dict, Any diff --git a/src/sagemaker/modules/scripts/intelligent_params.py b/src/sagemaker/modules/scripts/intelligent_params.py index 71a94162a3..71624c3925 100644 --- a/src/sagemaker/modules/scripts/intelligent_params.py +++ b/src/sagemaker/modules/scripts/intelligent_params.py @@ -1,3 +1,18 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module is used to set intelligent parameters for all python files under the given path.""" +from __future__ import absolute_import + import argparse import json import os @@ -7,8 +22,8 @@ def set_intelligent_params(path: str) -> None: - """ - Set intelligent parameters for all python files under the given path. + """Set intelligent parameters for all python files under the given path. + For python code with comment sm_hyper_param or sm_hp_{variable_name}, the value will be found in /opt/ml/input/config/hyperparameters.json, and this function will rewrite lines with these comments. @@ -25,8 +40,7 @@ def set_intelligent_params(path: str) -> None: def rewrite_file(file_path: str, hyperparameters: dict) -> None: - """ - Rewrite a single python file with intelligent parameters. + """Rewrite a single python file with intelligent parameters. Args: file_path (str): The file path to rewrite @@ -41,8 +55,7 @@ def rewrite_file(file_path: str, hyperparameters: dict) -> None: def rewrite_line(line: str, hyperparameters: dict) -> None: - """ - Rewrite a single line of python code with intelligent parameters. + """Rewrite a single line of python code with intelligent parameters. Args: line (str): The python code to rewrite @@ -70,8 +83,7 @@ def rewrite_line(line: str, hyperparameters: dict) -> None: def get_parameter_value(variable: str, comment: str, hyperparameters: dict) -> None: - """ - Get the parameter value by the variable name and comment. + """Get the parameter value by the variable name and comment. Args: variable (str): The variable name diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 567657f6ad..9b3e7676fd 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -2,18 +2,17 @@ "cells": [ { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "import sys, os\n", - "\n", - "from tests.integ.test_processing import image_uri\n", + "from sagemaker import image_uris\n", "\n", "# Get the absolute path of the root directory\n", "root_dir = os.path.abspath(os.path.join(os.getcwd(), '../../..'))\n", "sys.path.insert(0, root_dir)" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -28,27 +27,39 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, - "source": [ - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "model_trainer = ModelTrainer(training_image=\"python:3.10.15-slim\")\n" - ], "outputs": [], - "execution_count": null - }, - { - "cell_type": "code", - "metadata": {}, "source": [ + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "from sagemaker.modules.configs import SourceCodeConfig\n", + "from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE\n", + "\n", + "pytorch_image = image_uris.retrieve(\n", + " framework=\"pytorch\",\n", + " region=\"us-west-2\",\n", + " version=\"2.0.0\",\n", + " image_scope=\"training\",\n", + " instance_type=DEFAULT_INSTANCE_TYPE\n", + ")\n", "\n", "source_code_config = SourceCodeConfig(\n", " command=\"echo 'Hello World' && env\",\n", ")\n", - "model_trainer.train(source_code_config=source_code_config)" - ], + "model_trainer = ModelTrainer(\n", + " training_image=pytorch_image,\n", + " source_code_config=source_code_config,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "model_trainer.train()" + ] }, { "cell_type": "markdown", @@ -69,24 +80,31 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", "source_code_config = SourceCodeConfig(\n", - " source_dir=\"script-mode-basic\",\n", + " source_dir=\"basic-script-mode\",\n", " command=\"python custom_script.py\",\n", ")\n", - "model_trainer.train(\n", + "\n", + "model_trainer = ModelTrainer(\n", + " training_image=pytorch_image,\n", " source_code_config=source_code_config,\n", - " input_data_channels={\n", - " \"train\": \"script-mode-basic/data/train\",\n", - " \"test\": \"script-mode-basic/data/test\",\n", - " }\n", - ")" - ], + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "model_trainer.train()" + ] }, { "cell_type": "markdown", @@ -97,25 +115,32 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", "source_code_config = SourceCodeConfig(\n", - " source_dir=\"script-mode-basic\",\n", + " source_dir=\"basic-script-mode\",\n", " requirements=\"requirements.txt\",\n", " entry_script=\"custom_script.py\",\n", ")\n", - "model_trainer.train(\n", + "\n", + "model_trainer = ModelTrainer(\n", + " training_image=pytorch_image,\n", " source_code_config=source_code_config,\n", - " input_data_channels={\n", - " \"train\": \"script-mode-basic/data/train\",\n", - " \"test\": \"script-mode-basic/data/test\",\n", - " }\n", ")" - ], + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "model_trainer.train()" + ] }, { "cell_type": "markdown", @@ -126,24 +151,24 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "!pip install \"datasets[s3]\"" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "access_token = os.environ.get(\"HF_TOKEN\", \"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\")\n", "model_id = \"meta-llama/Llama-2-7b-hf\"\n", "\n", "dataset_name = \"tatsu-lab/alpaca\"\n" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -154,7 +179,9 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "from datasets import load_dataset\n", "from transformers import AutoTokenizer \n", @@ -169,13 +196,13 @@ "dataset = load_dataset(dataset_name)\n", "\n", "dataset = dataset.shuffle(seed=42)\n" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "if \"validation\" not in dataset.keys():\n", " dataset[\"validation\"] = load_dataset(\n", @@ -187,9 +214,7 @@ " dataset_name,\n", " split=\"train[1%:]\"\n", " )" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -200,7 +225,9 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "from itertools import chain\n", "from functools import partial\n", @@ -229,9 +256,7 @@ " partial(group_texts, block_size=2048),\n", " batched=True,\n", ")" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -242,7 +267,9 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "#save data locally\n", "\n", @@ -250,9 +277,7 @@ "lm_dataset.save_to_disk(training_input_path)\n", "\n", "print(f\"Saved data to: {training_input_path}\")" - ], - "outputs": [], - "execution_count": null + ] }, { "cell_type": "markdown", @@ -263,11 +288,12 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ - "from sagemaker import image_uris\n", "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker.modules.configs import ResourceConfig\n", + "from sagemaker.modules.configs import ResourceConfig, SourceCodeConfig\n", "\n", "env = {}\n", "env['FI_PROVIDER'] = 'efa'\n", @@ -278,36 +304,23 @@ "env['FI_EFA_USE_DEVICE_RDMA'] = '1'\n", "env['RDMAV_FORK_SAFE'] = '1'\n", "\n", + "instance_type = \"ml.p4d.24xlarge\"\n", "\n", "resource_config = ResourceConfig(\n", " instance_count=2,\n", - " instance_type=\"ml.p4d.24xlarge\" ,\n", + " instance_type=instance_type,\n", " volume_size_in_gb=96,\n", ")\n", "\n", - "model_trainer = ModelTrainer(\n", - " training_image=image_uris.retrieve(\n", - " framework=\"huggingface\",\n", - " region=\"us-west-2\",\n", - " version=\"4.28.1\",\n", - " base_framework_version=\"pytorch2.0.0\",\n", - " image_scope=\"training\",\n", - " py_version=\"py310\",\n", - " distribution={\"torch_distributed\": {\"enabled\": True}}\n", - " ),\n", - " environment=env,\n", - " resource_config=resource_config\n", - ")\n" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "code", - "metadata": {}, - "source": [ - "from sagemaker.modules.configs import SourceCodeConfig\n", - "\n", + "hugging_face_image = image_uris.retrieve(\n", + " framework=\"huggingface\",\n", + " base_framework_version=\"pytorch2.0.0\",\n", + " region=\"us-west-2\",\n", + " version=\"4.28.1\",\n", + " instance_type=instance_type,\n", + " image_scope=\"training\",\n", + " py_version=\"py310\",\n", + ")\n", "\n", "hyper_parameters={\n", " 'dataset_path': '/opt/ml/input/data/dataset',\n", @@ -325,22 +338,34 @@ "source_code_config = SourceCodeConfig(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", - " command=\"torchrun --nnodes 2 \\\n", + " command=\"torchrun --nnodes $SM_HOST_COUNT \\\n", " --nproc_per_node $SM_NUM_GPUS \\\n", - " --master_addr algo-1 \\\n", - " --master_port 7777 \\\n", - " --node_rank $SM_CURRENT_HOST_INDEX \\\n", + " --master_addr $SM_MASTER_ADDR \\\n", + " --master_port $SM_MASTER_PORT \\\n", + " --node_rank $SM_CURRENT_HOST_RANK \\\n", " run_clm_no_trainer.py\",\n", ")\n", "\n", - "model_trainer.train(\n", - " source_code_config=source_code_config,\n", + "\n", + "model_trainer = ModelTrainer(\n", + " training_image=hugging_face_image,\n", + " resource_config=resource_config,\n", + " environment=env,\n", " hyper_parameters=hyper_parameters,\n", - " input_data_channels={\"dataset\": training_input_path},\n", - ")" - ], + " source_code_config=source_code_config,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], - "execution_count": null + "source": [ + "model_trainer.train(\n", + " input_data_channels={\"dataset\": training_input_path}\n", + ")" + ] }, { "cell_type": "markdown", @@ -368,30 +393,34 @@ }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "\n", "python_ecr_image = \"public.ecr.aws/docker/library/python:3.10.15-slim\"\n", "python_docker_image = \"python:3.10.15-slim\"\n", "\n", + "source_code_config = SourceCodeConfig(\n", + " command=\"echo 'Hello World'\",\n", + ")\n", + "\n", "# This does not work\n", - "model_trainer = ModelTrainer(training_image=python_ecr_image)\n" - ], - "outputs": [], - "execution_count": null + "model_trainer = ModelTrainer(\n", + " training_image=python_ecr_image,\n", + " source_code_config=source_code_config,\n", + ")\n" + ] }, { "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], "source": [ - "source_code_config = SourceCodeConfig(\n", - " command=\"echo 'Hello World'\",\n", - ")\n", "model_trainer.train(source_code_config=source_code_config)" - ], - "outputs": [], - "execution_count": null + ] } ], "metadata": { diff --git a/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py b/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py index 8b8fdb9ec4..acacf6c19e 100644 --- a/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py +++ b/src/sagemaker/modules/testing_notebooks/basic-script-mode/custom_script.py @@ -11,37 +11,10 @@ from torch.utils.data import DataLoader, TensorDataset from pytorch_model_def import get_model - logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) logger.addHandler(logging.StreamHandler(sys.stdout)) - - -def parse_args(): - """ - Parse arguments passed from the SageMaker API - to the container - """ - - parser = argparse.ArgumentParser() - - # Hyperparameters sent by the client are passed as command-line arguments to the script - parser.add_argument("--epochs", type=int, default=os.environ.get("SM_HP_EPOCHS", 1)) - parser.add_argument("--batch_size", type=int, default=os.environ.get("SM_HP_BATCH_SIZE", 64)) - parser.add_argument( - "--learning_rate", type=float, default=os.environ.get("SM_HP_LEARNING_RATE", 0.1) - ) - - # Data directories - parser.add_argument( - "--train", type=str, default=os.environ.get("SM_CHANNEL_TRAIN", "data/train") - ) - parser.add_argument("--test", type=str, default=os.environ.get("SM_CHANNEL_TEST", "data/test")) - - # Model directory: we will use the default set by SageMaker, /opt/ml/model/ - parser.add_argument("--model_dir", type=str, default=os.environ.get("SM_MODEL_DIR")) - - return parser.parse_known_args() +current_dir = os.path.dirname(os.path.abspath(__file__)) def get_train_data(train_dir): @@ -107,25 +80,33 @@ def train(): """ Train the PyTorch model """ - - x_train, y_train = get_train_data(args.train) - x_test, y_test = get_test_data(args.test) + # Directories: train, test and model + train_dir = os.path.join(current_dir, "data/train") + test_dir = os.path.join(current_dir, "data/test") + model_dir = os.environ.get("SM_MODEL_DIR", os.path.join(current_dir, "data/model")) + + # Load the training and testing data + x_train, y_train = get_train_data(train_dir) + x_test, y_test = get_test_data(test_dir) train_ds = TensorDataset(x_train, y_train) - batch_size = args.batch_size - epochs = args.epochs - learning_rate = args.learning_rate + # Training parameters - used to configure the training loop + batch_size = 64 + epochs = 1 + learning_rate = 0.1 logger.info( "batch_size = {}, epochs = {}, learning rate = {}".format(batch_size, epochs, learning_rate) ) train_dl = DataLoader(train_ds, batch_size, shuffle=True) + # Define the model, loss function and optimizer model = get_model() model = model.to(device) criterion = nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) + # Train the model for epoch in range(epochs): for x_train_batch, y_train_batch in train_dl: y = model(x_train_batch.float()) @@ -136,31 +117,30 @@ def train(): epoch += 1 logger.info(f"epoch: {epoch} -> loss: {loss}") - # evalutate on test set + # Test the model with torch.no_grad(): y = model(x_test.float()).flatten() mse = ((y - y_test) ** 2).sum() / y_test.shape[0] print("\nTest MSE:", mse.numpy()) - torch.save(model.state_dict(), args.model_dir + "/model.pth") - # PyTorch requires that the inference script must - # be in the .tar.gz model file and Step Functions SDK doesn't do this. - inference_code_path = args.model_dir + "/code/" + # Save the model + os.makedirs(model_dir, exist_ok=True) + torch.save(model.state_dict(), model_dir + "/model.pth") + inference_code_path = model_dir + "/code/" if not os.path.exists(inference_code_path): os.mkdir(inference_code_path) logger.info("Created a folder at {}!".format(inference_code_path)) - code_dir = os.environ.get("SM_CHANNEL_CODE") + code_dir = os.environ.get("SM_CHANNEL_CODE", current_dir) shutil.copy(os.path.join(code_dir, "custom_script.py"), inference_code_path) shutil.copy(os.path.join(code_dir, "pytorch_model_def.py"), inference_code_path) logger.info("Saving models files to {}".format(inference_code_path)) if __name__ == "__main__": - print("Running in the training container ...\n") + print("Running the training job ...\n") - args, _ = parse_args() device = torch.device("cuda" if torch.cuda.is_available() else "cpu") train() diff --git a/src/sagemaker/modules/train/local_snapshot.py b/src/sagemaker/modules/train/local_snapshot.py index b697286a88..57d25dff98 100644 --- a/src/sagemaker/modules/train/local_snapshot.py +++ b/src/sagemaker/modules/train/local_snapshot.py @@ -11,6 +11,8 @@ # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. """Utility function to capture local environment""" +from __future__ import absolute_import + import logging import subprocess import sys @@ -77,8 +79,8 @@ def capture_local_environment( ecr_repo_name: Optional[str] = None, boto_session: Optional[boto3.Session] = None, ): - """ - Capture all dependency packages installed in the local environment and build a docker image. + """Capture all dependency packages installed in the local environment and build a docker image. + When using this utility method, the docker daemon must be active in the environment. Please note that this is an experimental feature. This utility function is not be able to detect the package compatability between platforms. It is also not able to detect dependency @@ -209,8 +211,7 @@ def capture_local_environment( def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, output_file: str): - """ - Merge two environment.yml files and save to a new environment.yml file. + """Merge two environment.yml files and save to a new environment.yml file. Args: env_name (str): The name of the virtual environment to be activated in the image. @@ -257,9 +258,7 @@ def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, outpu def _merge_environment_yml_with_requirement_txt( env_name: str, env_file: str, req_txt: str, output_file: str ): - """ - Merge an environment.yml file with a requirements.txt file and save to a new - environment.yml file. + """Merge an environment.yml file with a requirements.txt file. Args: env_name (str): The name of the virtual environment to be activated in the image. @@ -302,8 +301,7 @@ def _merge_environment_yml_with_requirement_txt( def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Optional[boto3.Session]): - """ - Push the docker image to AWS ECR. + """Push the docker image to AWS ECR. Args: image_name (str): The name of the docker image. diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 032974dff7..56dc7d96e9 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -15,7 +15,7 @@ import os -from typing import Optional, List, Union, Dict +from typing import Optional, List, Union, Dict, Any from pydantic import BaseModel, ConfigDict from sagemaker_core.resources import TrainingJob @@ -93,6 +93,8 @@ class ModelTrainer(BaseModel): training_image (Optional[str]): The training image URI to use for the training job container. training_image cannot be specified if algorithm_name is specified. + For documentaion on sagemaker distributed images see: + https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html training_input_mode (Optional[str]): The input mode for the training job. Valid values are "Pipe", "File", "FastFile". Defaults to "File". @@ -101,7 +103,7 @@ class ModelTrainer(BaseModel): Docker registry for a training job. environment (Optional[Dict[str, str]]): The environment variables for the training job. - hyper_parameters (Optional[Dict[str, str]]): + hyper_parameters (Optional[Dict[str, Any]]): The hyperparameters for the training job. vpc_config: (Optional[VpcConfig]): The VPC configuration. @@ -122,7 +124,7 @@ class ModelTrainer(BaseModel): training_input_mode: Optional[str] = "File" training_image_config: Optional[TrainingImageConfig] = None environment: Optional[Dict[str, str]] = None - hyper_parameters: Optional[Dict[str, str]] = None + hyper_parameters: Optional[Dict[str, Any]] = None vpc_config: Optional[VpcConfig] = None def _validate_training_image_and_algorithm_name( @@ -173,10 +175,8 @@ def _validate_source_code_config(self, source_code_config: Optional[SourceCodeCo + "Must be a valid file within the 'source_dir'.", ) - def __init__(self, **data): - """Set default values for session, role, base_name, and other interdependent fields.""" - # Validate types with pydantic - super().__init__(**data) + def model_post_init(self, __context: Any): + """Post init method to perform custom validation and set default values.""" self._validate_training_image_and_algorithm_name(self.training_image, self.algorithm_name) self._validate_source_code_config(self.source_code_config) @@ -193,7 +193,7 @@ def __init__(self, **data): if self.algorithm_name: self.base_name = f"{self.algorithm_name}-job" elif self.training_image: - self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" + self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" logger.warning(f"Base name not provided. Using default name:\n{self.base_name}") if self.resource_config is None: @@ -229,15 +229,13 @@ def __init__(self, **data): f"OutputDataConfig not provided. Using default:\n{self.output_data_config}" ) + # TODO: Autodetect which image to use if source_code_config is provided if self.training_image: logger.info(f"Training image URI: {self.training_image}") def train( self, input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None, - source_code_config: Optional[SourceCodeConfig] = None, - hyper_parameters: Optional[Dict[str, str]] = None, - environment: Optional[Dict[str, str]] = None, wait: bool = True, logs: bool = True, ): @@ -249,13 +247,6 @@ def train( Takes a list of Channel objects or a dictionary of channel names to DataSourceType. DataSourceType can be an S3 URI string, local file path string, S3DataSource object, or FileSystemDataSource object. - source_code_config (Optional[SourceCodeConfig]): - The source code configuration. This is used to configure the source code for - running the training job. - hyper_parameters (Optional[Dict[str, str]]): - The hyperparameters for the training job. - environment (Optional[Dict[str,str]]): - The environment variables for the training job. wait (Optional[bool]): Whether to wait for the training job to complete before returning. Defaults to True. @@ -265,13 +256,6 @@ def train( """ if input_data_channels: self.input_data_channels = input_data_channels - if source_code_config: - self._validate_source_code_config(source_code_config) - self.source_code_config = source_code_config - if hyper_parameters: - self.hyper_parameters = hyper_parameters - if environment: - self.environment = environment input_data_config = [] if self.input_data_channels: @@ -324,8 +308,8 @@ def train( # Unfortunately, API requires hyperparameters to be strings string_hyper_parameters = {} - if hyper_parameters: - for hyper_parameter, value in hyper_parameters.items(): + if self.hyper_parameters: + for hyper_parameter, value in self.hyper_parameters.items(): string_hyper_parameters[hyper_parameter] = str(value) training_job = TrainingJob.create( diff --git a/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py b/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py index 95939cefae..a9d3363ee5 100644 --- a/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py +++ b/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py @@ -1,3 +1,18 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Intelligent Parameter Tests.""" +from __future__ import absolute_import + import os import pytest from sagemaker.modules.scripts.intelligent_params import ( @@ -20,7 +35,7 @@ def main(args): n_estimators = 10 # sm_hp_n_estimators state = "Not Started" # sm_hyper_param random_seed = 0.1 # sm_hyper_param - + output_dir = "local/dir/" # sm_model_dir epochs = 5 # sm_hp_epochs input_data = [0, 0, 0] # sm_hp_list_value @@ -46,7 +61,7 @@ def main(args): n_estimators = 3 # set by intelligent parameters state = "In Progress" # set by intelligent parameters random_seed = 0.1 # sm_hyper_param - + output_dir = "/opt/ml/input" # set by intelligent parameters epochs = 4 # set by intelligent parameters input_data = [1, 2, 3] # set by intelligent parameters diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index 5d4f57c937..9cfd27d70e 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -14,11 +14,11 @@ from __future__ import absolute_import import pytest -from unittest.mock import patch, MagicMock, call +from unittest.mock import patch, MagicMock from sagemaker.session import Session from sagemaker.modules.train.model_trainer import ModelTrainer -from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE, SM_CODE_LOCAL_PATH +from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE from sagemaker.modules.configs import ( ResourceConfig, StoppingCondition, @@ -159,53 +159,6 @@ def test_train_with_input_data_channels(mock_get_input_config, mock_training_job mock_training_job.create.assert_called_once() -@pytest.mark.parametrize( - "source_code_config", - [ - None, - SourceCodeConfig( - source_dir="test-data", - entry_script="train.py", - ), - SourceCodeConfig( - command="python train.py", - ), - ], - ids=[ - "no_source_code_config", - "supported_source_code_config", - "unsupported_source_code_config", - ], -) -@patch("sagemaker.modules.train.model_trainer.TrainingJob") -@patch.object(ModelTrainer, "create_input_data_channel") -@patch.object(ModelTrainer, "_validate_source_code_config") -def test_train_with_source_code_config( - mock_validate_source_code_config, - mock_create_input_data_channel, - mock_training_job, - model_trainer, - source_code_config, -): - mock_validate_source_code_config.return_value = None - mock_create_input_data_channel.return_value = None - - model_trainer.train(source_code_config=source_code_config) - - input_channel_calls = [] - if source_code_config: - if source_code_config.source_dir: - input_channel_calls.append(call("code", source_code_config.source_dir)) - mock_validate_source_code_config.assert_called_once_with(source_code_config) - input_channel_calls.append(call("sm_code", SM_CODE_LOCAL_PATH)) - else: - mock_validate_source_code_config.assert_not_called() - mock_create_input_data_channel.assert_not_called() - - mock_create_input_data_channel.assert_has_calls(input_channel_calls) - mock_training_job.create.assert_called_once() - - @pytest.mark.parametrize( "test_case", [ From 89edb6dd2976d60eee7e14c4b02d2d96712037b0 Mon Sep 17 00:00:00 2001 From: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Date: Fri, 18 Oct 2024 13:43:49 -0700 Subject: [PATCH 11/79] General image builder (#1546) * General image builder * General image builder * Fix codestyle * Fix codestyle * Move location * Add warnings * Add integ tests * Fix integ test * Fix integ test * Fix region error * Add region --- .../local_snapshot.py => image_builder.py} | 246 ++++++++++++++---- tests/integ/sagemaker/modules/__init__.py | 13 + tests/integ/sagemaker/modules/environment.yml | 11 + .../integ/sagemaker/modules/requirements.txt | 3 + .../sagemaker/modules/test_image_builder.py | 38 +++ 5 files changed, 263 insertions(+), 48 deletions(-) rename src/sagemaker/modules/{train/local_snapshot.py => image_builder.py} (59%) create mode 100644 tests/integ/sagemaker/modules/__init__.py create mode 100644 tests/integ/sagemaker/modules/environment.yml create mode 100644 tests/integ/sagemaker/modules/requirements.txt create mode 100644 tests/integ/sagemaker/modules/test_image_builder.py diff --git a/src/sagemaker/modules/train/local_snapshot.py b/src/sagemaker/modules/image_builder.py similarity index 59% rename from src/sagemaker/modules/train/local_snapshot.py rename to src/sagemaker/modules/image_builder.py index 57d25dff98..e27bc7fba0 100644 --- a/src/sagemaker/modules/train/local_snapshot.py +++ b/src/sagemaker/modules/image_builder.py @@ -10,10 +10,12 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -"""Utility function to capture local environment""" +"""Utility functions to build docker image""" from __future__ import absolute_import import logging +import os +import shutil import subprocess import sys from typing import Optional @@ -24,12 +26,12 @@ logger = logging.getLogger(__name__) -REQUIREMENT_TXT_PATH = "/tmp/requirements.txt" -ENVIRONMENT_YML_PATH = "/tmp/environment.yml" +REQUIREMENT_TXT_PATH = "/tmp/{image_name}/requirements.txt" +ENVIRONMENT_YML_PATH = "/tmp/{image_name}/environment.yml" DOCKERFILE_PATH = "/tmp/Dockerfile" CONDA_DOCKERFILE_TEMPLATE = """ -FROM {base_image_name} +FROM {base_image} ADD environment.yml . # Install prerequisites for conda @@ -55,31 +57,126 @@ """ PIP_DOCKERFILE_TEMPLATE = """ -FROM {base_image_name} +FROM {base_image} + +# Install the latest Python3 if the base image doesn't have python pre-installed +RUN python --version || {{ \ + apt-get update; \ + apt-get install -y python3-full python3-pip; \ + }} + ADD requirements.txt . # Create a virtual environment -RUN python -m venv {env_name} +RUN python3 -m venv {env_name} # Activate the virtual environment -RUN . {env_name}/bin/activate +ENV PATH="{env_name}/bin:$PATH" RUN pip install --no-cache-dir -r requirements.txt """ +BASE_IMAGE_TEMPLATE = """ +FROM {base_image} +""" + + +def build_image( + image_name: str = "sm-custom-image", + env_name: str = "sm_custom_env", + deploy_to_ecr: bool = False, + base_image: Optional[str] = "ubuntu:latest", + dependency_file: Optional[str] = None, + ecr_repo_name: Optional[str] = None, + boto_session: Optional[boto3.Session] = None, + region: Optional[str] = None, +) -> Optional[str]: + """WARNING: This function is expremental and not intended for production use. + + Build a docker image with the given base image and dependencies. + + When using this utility method, the docker daemon must be active in the environment. + + Args: + image_name (str): The name of the docker image. + env_name (str): The name of the virtual environment to be activated in the image, + defaults to "sm_custom_env". + deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. + If set to True, the AWS credentials must be configured in the environment. + base_image (Optional[str]): The base Docker image, can be an AWS ECR image URI, defaults + to ubuntu:latest. + dependency_file (Optional[str]): Either the path to a dependencies file (conda + environment.yml OR pip requirements.txt file). + ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, + it will use image_name as the ECR repo name. This parameter is only valid when + deploy_to_ecr is True. + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not + provided, a new boto session will be created. + region (Optional[str]): The AWS region. + + Returns: + Optional[str]: If deploy_to_ecr set to True, return the AWS ECR uri of the image. + + Exceptions: + docker.errors.DockerException: Error while fetching server API version: + The docker engine is not running in your environment. + docker.errors.BuildError: The docker failed to build the image. The most likely reason is: + 1) Some packages are not supported in the base image. + botocore.exceptions.ClientError: AWS credentials are not configured. + """ + if ".dkr.ecr." in base_image: + # If the base image is on AWS ECR, need to authenticate first + _docker_ecr_login(boto_session, region) + + path = f"/tmp/{image_name}" + if os.path.exists(path): + shutil.rmtree(path) + os.mkdir(path) + environment_yml_path = ENVIRONMENT_YML_PATH.format(image_name=image_name) + requirement_txt_path = REQUIREMENT_TXT_PATH.format(image_name=image_name) + + if dependency_file: + if dependency_file.endswith(".yml"): + shutil.copy(dependency_file, environment_yml_path) + dockerfile_contents = CONDA_DOCKERFILE_TEMPLATE.format( + base_image=base_image, + env_name=env_name, + ) + elif dependency_file.endswith(".txt"): + shutil.copy(dependency_file, requirement_txt_path) + dockerfile_contents = PIP_DOCKERFILE_TEMPLATE.format( + base_image=base_image, + env_name=env_name, + ) + else: + raise ValueError( + "The dependency file must be a conda " + "environment.yml file or a pip requirements.txt file." + ) + else: + dockerfile_contents = BASE_IMAGE_TEMPLATE.format(base_image=base_image) + + _build_docker_image(image_name, dockerfile_contents) + if deploy_to_ecr: + return _push_image_to_ecr(image_name, ecr_repo_name, boto_session, region) + return None + def capture_local_environment( image_name: str = "sm-local-capture", env_name: str = "saved_local_env", package_manager: str = "pip", deploy_to_ecr: bool = False, - base_image_name: Optional[str] = None, + base_image: Optional[str] = None, job_conda_env: Optional[str] = None, additional_dependencies: Optional[str] = None, ecr_repo_name: Optional[str] = None, boto_session: Optional[boto3.Session] = None, -): - """Capture all dependency packages installed in the local environment and build a docker image. + region: Optional[str] = None, +) -> Optional[str]: + """WARNING: This function is expremental and not intended for production use. + + Capture all dependency packages installed in the local environment and build a docker image. When using this utility method, the docker daemon must be active in the environment. Please note that this is an experimental feature. This utility function is not be able to @@ -93,8 +190,8 @@ def capture_local_environment( package_manager (str): The package manager, must be one of "conda" or "pip". deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. If set to True, the AWS credentials must be configured in the environment. - base_image_name (Optional[str]): If provided will be used as the base image, else the - utility will evaluate from local environment in following manner: + base_image (Optional[str]): If provided will be used as the base image, can be an AWS ECR + image URI, else the utility will evaluate from local environment in following manner: 1. If package manager is conda, it will use ubuntu:latest. 2. If package manager is pip, it is resolved to base python image with the same python version as the environment running the local code. @@ -104,12 +201,16 @@ def capture_local_environment( additional_dependencies (Optional[str]): Either the path to a dependencies file (conda environment.yml OR pip requirements.txt file). Regardless of this setting utility will automatically generate the dependencies file corresponding to the current active - environment’s snapshot. In addition to this, additional dependencies is configurable. + environment's snapshot. In addition to this, additional dependencies is configurable. ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, it will use image_name as the ECR repo name. This parameter is only valid when deploy_to_ecr is True. boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not provided, a new boto session will be created. + region (Optional[str]): The AWS region. + + Returns: + Optional[str]: If deploy_to_ecr set to True, return the AWS ECR uri of the image. Exceptions: docker.errors.DockerException: Error while fetching server API version: @@ -119,17 +220,23 @@ def capture_local_environment( between your local environment and additional dependencies. botocore.exceptions.ClientError: AWS credentials are not configured. """ + path = f"/tmp/{image_name}" + if os.path.exists(path): + shutil.rmtree(path) + os.mkdir(path) + environment_yml_path = ENVIRONMENT_YML_PATH.format(image_name=image_name) + requirement_txt_path = REQUIREMENT_TXT_PATH.format(image_name=image_name) if package_manager == "conda": if job_conda_env: subprocess.run( - f"conda env export -n {job_conda_env} > {ENVIRONMENT_YML_PATH} --no-builds", + f"conda env export -n {job_conda_env} > {environment_yml_path} --no-builds", shell=True, check=True, ) else: subprocess.run( - f"conda env export > {ENVIRONMENT_YML_PATH} --no-builds", shell=True, check=True + f"conda env export > {environment_yml_path} --no-builds", shell=True, check=True ) if additional_dependencies: @@ -143,26 +250,29 @@ def capture_local_environment( if additional_dependencies.endswith(".yml"): _merge_environment_ymls( env_name, - ENVIRONMENT_YML_PATH, + environment_yml_path, additional_dependencies, - ENVIRONMENT_YML_PATH, + environment_yml_path, ) elif additional_dependencies.endswith(".txt"): _merge_environment_yml_with_requirement_txt( env_name, - ENVIRONMENT_YML_PATH, + environment_yml_path, additional_dependencies, - ENVIRONMENT_YML_PATH, + environment_yml_path, ) - if not base_image_name: - base_image_name = "ubuntu:latest" + if not base_image: + base_image = "ubuntu:latest" + elif ".dkr.ecr." in base_image: + # If the base image is on AWS ECR, need to authenticate first + _docker_ecr_login(boto_session, region) dockerfile_contents = CONDA_DOCKERFILE_TEMPLATE.format( - base_image_name=base_image_name, + base_image=base_image, env_name=env_name, ) elif package_manager == "pip": - subprocess.run(f"pip list --format=freeze > {REQUIREMENT_TXT_PATH}", shell=True, check=True) + subprocess.run(f"pip list --format=freeze > {requirement_txt_path}", shell=True, check=True) if additional_dependencies: if not additional_dependencies.endswith(".txt"): @@ -171,15 +281,15 @@ def capture_local_environment( ) with open(additional_dependencies, "r") as f: additional_requirements = f.read() - with open(REQUIREMENT_TXT_PATH, "a") as f: + with open(requirement_txt_path, "a") as f: f.write(additional_requirements) - logger.info("Merged requirements file saved to %s", REQUIREMENT_TXT_PATH) + logger.info("Merged requirements file saved to %s", requirement_txt_path) - if not base_image_name: + if not base_image: version = sys.version_info - base_image_name = f"python:{version.major}.{version.minor}.{version.micro}" + base_image = f"python:{version.major}.{version.minor}.{version.micro}" dockerfile_contents = PIP_DOCKERFILE_TEMPLATE.format( - base_image_name=base_image_name, + base_image=base_image, env_name=env_name, ) @@ -189,25 +299,11 @@ def capture_local_environment( "Use conda or pip as the package manager." ) - # Create the Dockerfile - with open(DOCKERFILE_PATH, "w") as f: - f.write(dockerfile_contents) - - client = docker.from_env() - _, logs = client.images.build( - path="/tmp", - dockerfile=DOCKERFILE_PATH, - rm=True, - tag=image_name, - ) - for log in logs: - logger.info(log.get("stream", "").strip()) - logger.info("Docker image %s built successfully", image_name) + _build_docker_image(image_name, dockerfile_contents) if deploy_to_ecr: - if boto_session is None: - boto_session = boto3.Session() - _push_image_to_ecr(image_name, ecr_repo_name, boto_session) + return _push_image_to_ecr(image_name, ecr_repo_name, boto_session, region) + return None def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, output_file: str): @@ -300,16 +396,68 @@ def _merge_environment_yml_with_requirement_txt( logger.info("Merged environment file saved to '%s'", output_file) -def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Optional[boto3.Session]): +def _build_docker_image(image_name: str, dockerfile_contents: str): + """Build the Docker image locally. + + Args: + image_name (str): The name of the docker image. + dockerfile_contents (str): The content of Dockerfile. + """ + # Create the Dockerfile + with open(DOCKERFILE_PATH, "w") as f: + f.write(dockerfile_contents) + + client = docker.from_env() + _, logs = client.images.build( + path=f"/tmp/{image_name}", + dockerfile=DOCKERFILE_PATH, + rm=True, + tag=image_name, + ) + for log in logs: + logger.info(log.get("stream", "").strip()) + logger.info("Docker image %s built successfully", image_name) + + +def _docker_ecr_login(boto_session: Optional[boto3.Session], region: Optional[str]): + """Authenticate Docker with AWS ECR credentials + + Args: + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not + provided, a new boto session will be created. + region (Optional[str]): The AWS region. + """ + if boto_session is None: + boto_session = boto3.Session(region_name=region) + region = boto_session.region_name or "us-west-2" + aws_account_id = boto_session.client("sts", region_name=region).get_caller_identity()["Account"] + docker_login_cmd = ( + f"aws ecr get-login-password --region {region} " + f"| docker login --username AWS --password-stdin {aws_account_id}.dkr.ecr.{region}.amazonaws.com" + ) + subprocess.run(docker_login_cmd, shell=True, check=True) + + +def _push_image_to_ecr( + image_name: str, + ecr_repo_name: str, + boto_session: Optional[boto3.Session], + region: Optional[str], +): """Push the docker image to AWS ECR. Args: image_name (str): The name of the docker image. ecr_repo_name (str): The AWS ECR repo to push the docker image. + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not + provided, a new boto session will be created. + region (Optional[str]): The AWS region. """ - region = boto_session.region_name + if boto_session is None: + boto_session = boto3.Session(region_name=region) + region = boto_session.region_name or "us-west-2" aws_account_id = boto_session.client("sts", region_name=region).get_caller_identity()["Account"] - ecr_client = boto3.client("ecr") + ecr_client = boto_session.client("ecr", region_name=region) # Authenticate Docker with ECR registry_url = f"{aws_account_id}.dkr.ecr.{region}.amazonaws.com" @@ -336,3 +484,5 @@ def _push_image_to_ecr(image_name: str, ecr_repo_name: str, boto_session: Option subprocess.run(docker_push_cmd, shell=True, check=True) logger.info("Image %s pushed to %s", image_name, ecr_image_uri) + + return ecr_image_uri diff --git a/tests/integ/sagemaker/modules/__init__.py b/tests/integ/sagemaker/modules/__init__.py new file mode 100644 index 0000000000..9d8bffee3f --- /dev/null +++ b/tests/integ/sagemaker/modules/__init__.py @@ -0,0 +1,13 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Placeholder docstring""" diff --git a/tests/integ/sagemaker/modules/environment.yml b/tests/integ/sagemaker/modules/environment.yml new file mode 100644 index 0000000000..649853d6cc --- /dev/null +++ b/tests/integ/sagemaker/modules/environment.yml @@ -0,0 +1,11 @@ +channels: + - defaults +dependencies: + - pip=24.2 + - python=3.12.4 + - setuptools=75.1.0 + - sqlite=3.45.3 + - pip: + - boto3==1.35.31 + - botocore==1.35.31 + - requests==2.32.3 diff --git a/tests/integ/sagemaker/modules/requirements.txt b/tests/integ/sagemaker/modules/requirements.txt new file mode 100644 index 0000000000..3142f3de01 --- /dev/null +++ b/tests/integ/sagemaker/modules/requirements.txt @@ -0,0 +1,3 @@ +numpy +sagemaker +scipy diff --git a/tests/integ/sagemaker/modules/test_image_builder.py b/tests/integ/sagemaker/modules/test_image_builder.py new file mode 100644 index 0000000000..7e4b5de8fa --- /dev/null +++ b/tests/integ/sagemaker/modules/test_image_builder.py @@ -0,0 +1,38 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module contains code to test image builder""" +from __future__ import absolute_import + +import os + +from sagemaker.modules.image_builder import build_image + + +def test_build_public_image_locally(): + build_image(image_name="python_310", base_image="python:3.10") + + +def test_build_with_dependency_file(): + dependency_file_path = os.getcwd() + "/tests/integ/sagemaker/modules/requirements.txt" + build_image(image_name="ubuntu_with_dependencies", dependency_file=dependency_file_path) + + +def test_build_image_and_push_to_ecr(): + dependency_file_path = os.getcwd() + "/tests/integ/sagemaker/modules/environment.yml" + build_image( + image_name="ecr_test_image", + dependency_file=dependency_file_path, + base_image="debian", + deploy_to_ecr=True, + ecr_repo_name="image_builder_integ_test", + ) From b40a499a32906aa6916b2ffd7bcaa442c1ae8c1a Mon Sep 17 00:00:00 2001 From: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Date: Mon, 21 Oct 2024 14:45:00 -0700 Subject: [PATCH 12/79] Latest Container Image (#1545) * Latest Container Image * Test Fixes * Parameterized tests and some logic updates * Test fixes * Move to Image URI * Fixes for unit test * Fixes for unit test * Fix codestyle error checks --- src/sagemaker/image_uris.py | 256 ++++++++++++++---- .../container_drivers/distributed_runner.json | 1 + .../train/container_drivers/sm_train.sh | 64 +++++ .../train/container_drivers/sourcecode.json | 1 + .../image_uris/test_latest_container_image.py | 110 ++++++++ 5 files changed, 373 insertions(+), 59 deletions(-) create mode 100644 src/sagemaker/modules/train/container_drivers/distributed_runner.json create mode 100644 src/sagemaker/modules/train/container_drivers/sm_train.sh create mode 100644 src/sagemaker/modules/train/container_drivers/sourcecode.json create mode 100644 tests/unit/sagemaker/image_uris/test_latest_container_image.py diff --git a/src/sagemaker/image_uris.py b/src/sagemaker/image_uris.py index dd7012b2f2..710fdc8a3a 100644 --- a/src/sagemaker/image_uris.py +++ b/src/sagemaker/image_uris.py @@ -17,7 +17,7 @@ import logging import os import re -from typing import Optional +from typing import Optional, Tuple from packaging.version import Version from sagemaker import utils @@ -52,28 +52,28 @@ @override_pipeline_parameter_var def retrieve( - framework, - region, - version=None, - py_version=None, - instance_type=None, - accelerator_type=None, - image_scope=None, - container_version=None, - distribution=None, - base_framework_version=None, - training_compiler_config=None, - model_id=None, - model_version=None, - hub_arn=None, - tolerate_vulnerable_model=False, - tolerate_deprecated_model=False, - sdk_version=None, - inference_tool=None, - serverless_inference_config=None, - sagemaker_session=DEFAULT_JUMPSTART_SAGEMAKER_SESSION, - config_name=None, - model_type: JumpStartModelType = JumpStartModelType.OPEN_WEIGHTS, + framework, + region, + version=None, + py_version=None, + instance_type=None, + accelerator_type=None, + image_scope=None, + container_version=None, + distribution=None, + base_framework_version=None, + training_compiler_config=None, + model_id=None, + model_version=None, + hub_arn=None, + tolerate_vulnerable_model=False, + tolerate_deprecated_model=False, + sdk_version=None, + inference_tool=None, + serverless_inference_config=None, + sagemaker_session=DEFAULT_JUMPSTART_SAGEMAKER_SESSION, + config_name=None, + model_type: JumpStartModelType = JumpStartModelType.OPEN_WEIGHTS, ) -> str: """Retrieves the ECR URI for the Docker image matching the given arguments. @@ -250,10 +250,10 @@ def retrieve( if config.get("version_aliases").get(original_version): _version = config.get("version_aliases")[original_version] if ( - config.get("versions", {}) - .get(_version, {}) - .get("version_aliases", {}) - .get(base_framework_version, {}) + config.get("versions", {}) + .get(_version, {}) + .get("version_aliases", {}) + .get(base_framework_version, {}) ): _base_framework_version = config.get("versions")[_version]["version_aliases"][ base_framework_version @@ -290,16 +290,16 @@ def retrieve( def _get_image_tag( - container_version, - distribution, - final_image_scope, - framework, - inference_tool, - instance_type, - processor, - py_version, - tag_prefix, - version, + container_version, + distribution, + final_image_scope, + framework, + inference_tool, + instance_type, + processor, + py_version, + tag_prefix, + version, ): """Return image tag based on framework, container, and compute configuration(s).""" instance_type_family = utils.get_instance_type_family(instance_type) @@ -311,8 +311,8 @@ def _get_image_tag( "instance type", ) if ( - instance_type_family in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY - or final_image_scope == INFERENCE_GRAVITON + instance_type_family in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + or final_image_scope == INFERENCE_GRAVITON ): version_to_arm64_tag_mapping = { "xgboost": { @@ -330,7 +330,7 @@ def _get_image_tag( tag = _format_tag(tag_prefix, processor, py_version, container_version, inference_tool) if instance_type is not None and _should_auto_select_container_version( - instance_type, distribution + instance_type, distribution ): container_versions = { "tensorflow-2.3-gpu-py37": "cu110-ubuntu18.04-v3", @@ -398,7 +398,7 @@ def _validate_instance_deprecation(framework, instance_type, version): """Check if instance type is deprecated for a certain framework with a certain version""" if utils.get_instance_type_family(instance_type) == "p2": if (framework == "pytorch" and Version(version) >= Version("1.13")) or ( - framework == "tensorflow" and Version(version) >= Version("2.12") + framework == "tensorflow" and Version(version) >= Version("2.12") ): raise ValueError( "P2 instances have been deprecated for sagemaker jobs starting PyTorch 1.13 and TensorFlow 2.12" @@ -411,17 +411,17 @@ def _validate_for_suppported_frameworks_and_instance_type(framework, instance_ty """Validate if framework is supported for the instance_type""" # Validate for Trainium allowed frameworks if ( - instance_type is not None - and "trn" in instance_type - and framework not in TRAINIUM_ALLOWED_FRAMEWORKS + instance_type is not None + and "trn" in instance_type + and framework not in TRAINIUM_ALLOWED_FRAMEWORKS ): _validate_framework(framework, TRAINIUM_ALLOWED_FRAMEWORKS, "framework", "Trainium") # Validate for Graviton allowed frameowrks if ( - instance_type is not None - and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY - and framework not in GRAVITON_ALLOWED_FRAMEWORKS + instance_type is not None + and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + and framework not in GRAVITON_ALLOWED_FRAMEWORKS ): _validate_framework(framework, GRAVITON_ALLOWED_FRAMEWORKS, "framework", "Graviton") @@ -436,8 +436,8 @@ def config_for_framework(framework): def _get_final_image_scope(framework, instance_type, image_scope): """Return final image scope based on provided framework and instance type.""" if ( - framework in GRAVITON_ALLOWED_FRAMEWORKS - and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + framework in GRAVITON_ALLOWED_FRAMEWORKS + and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY ): return INFERENCE_GRAVITON if image_scope is None and framework in (XGBOOST_FRAMEWORK, SKLEARN_FRAMEWORK): @@ -635,16 +635,16 @@ def _format_tag(tag_prefix, processor, py_version, container_version, inference_ @override_pipeline_parameter_var def get_training_image_uri( - region, - framework, - framework_version=None, - py_version=None, - image_uri=None, - distribution=None, - compiler_config=None, - tensorflow_version=None, - pytorch_version=None, - instance_type=None, + region, + framework, + framework_version=None, + py_version=None, + image_uri=None, + distribution=None, + compiler_config=None, + tensorflow_version=None, + pytorch_version=None, + instance_type=None, ) -> str: """Retrieves the image URI for training. @@ -746,3 +746,141 @@ def get_base_python_image_uri(region, py_version="310") -> str: repo_and_tag = repo + ":" + version return ECR_URI_TEMPLATE.format(registry=registry, hostname=hostname, repository=repo_and_tag) + + +def get_latest_container_image(framework: str, + image_scope: Optional[str] = None, + instance_type: Optional[str] = None, + py_version: Optional[str] = None, + region: str = "us-west-2", + version: Optional[str] = None, + accelerator_type=None, + container_version=None, + distribution=None, + base_framework_version=None, + training_compiler_config=None, + model_id=None, + model_version=None, + hub_arn=None, + sdk_version=None, + inference_tool=None, + serverless_inference_config=None, + config_name=None, + ) -> Tuple[str, str]: + """Retrieves the latest container image URI + Args: + framework (str): The name of the framework or algorithm. + image_scope (str): The image type, i.e. what it is used for. + Valid values: "training", "inference", "inference_graviton", "eia". + If ``accelerator_type`` is set, ``image_scope`` is ignored. + region (str): The AWS region. + version (str): The framework or algorithm version. This is required if there is + more than one supported version for the given framework or algorithm. + py_version (str): The Python version. This is required if there is + more than one supported Python version for the given framework version. + instance_type (str): The SageMaker instance type. For supported types, see + https://aws.amazon.com/sagemaker/pricing. This is required if + there are different images for different processor types. + accelerator_type (str): Elastic Inference accelerator type. For more, see + https://docs.aws.amazon.com/sagemaker/latest/dg/ei.html. + container_version (str): the version of docker image. + Ideally the value of parameter should be created inside the framework. + For custom use, see the list of supported container versions: + https://github.com/aws/deep-learning-containers/blob/master/available_images.md + (default: None). + distribution (dict): A dictionary with information on how to run distributed training + training_compiler_config (:class:`~sagemaker.training_compiler.TrainingCompilerConfig`): + A configuration class for the SageMaker Training Compiler + (default: None). + model_id (str): The JumpStart model ID for which to retrieve the image URI + (default: None). + model_version (str): The version of the JumpStart model for which to retrieve the + image URI (default: None). + hub_arn (str): The arn of the SageMaker Hub for which to retrieve + model details from. (Default: None). + sdk_version (str): the version of python-sdk that will be used in the image retrieval. + (default: None). + inference_tool (str): the tool that will be used to aid in the inference. + Valid values: "neuron, neuronx, None" + (default: None). + serverless_inference_config (sagemaker.serverless.ServerlessInferenceConfig): + Specifies configuration related to serverless endpoint. Instance type is + not provided in serverless inference. So this is used to determine processor type. + config_name (Optional[str]): Name of the JumpStart Model config to apply. (Default: None). + """ + try: + framework_config = config_for_framework(framework) + except FileNotFoundError: + raise ValueError("Invalid framework {}".format(framework)) + + if not framework_config: + raise ValueError("Invalid framework {}".format(framework)) + + if not version: + version = _fetch_latest_version_from_config(framework_config, image_scope) + image_uri = retrieve(framework=framework, + region=region, + version=version, + instance_type=instance_type, + py_version=py_version, + accelerator_type=accelerator_type, + image_scope=image_scope, + container_version=container_version, + distribution=distribution, + base_framework_version=base_framework_version, + training_compiler_config=training_compiler_config, + model_id=model_id, + model_version=model_version, + hub_arn=hub_arn, + sdk_version=sdk_version, + inference_tool=inference_tool, + serverless_inference_config=serverless_inference_config, + config_name=config_name + ) + return image_uri, version + + +def _fetch_latest_version_from_config(framework_config: dict, + image_scope: Optional[str] = None) -> Optional[str]: + """ Helper function to fetch the latest version as a string from a framework's config + Args: + framework_config (dict): A framework config dict. + image_scope (str): Scope of the image, eg: training, inference + Returns: + Version string if latest version found else None + """ + if image_scope in framework_config: + if image_scope_config := framework_config[image_scope]: + if "version_aliases" in image_scope_config: + if "latest" in image_scope_config["version_aliases"]: + return image_scope_config["version_aliases"]["latest"] + top_version = None + bottom_version = None + + if "versions" in framework_config: + versions = list(framework_config["versions"].keys()) + top_version = versions[0] + bottom_version = versions[-1] + if top_version == "latest" or bottom_version == "latest": + return None + elif (image_scope is not None and image_scope in framework_config + and "versions" in framework_config[image_scope]): + versions = list(framework_config[image_scope]["versions"].keys()) + top_version = versions[0] + bottom_version = versions[-1] + elif "processing" in framework_config and "versions" in framework_config["processing"]: + versions = list(framework_config["processing"]["versions"].keys()) + top_version = versions[0] + bottom_version = versions[-1] + + if top_version and bottom_version: + if top_version.endswith(".x") or bottom_version.endswith(".x"): + top_number = int(top_version[:-2]) + bottom_number = int(bottom_version[:-2]) + max_version = max(top_number, bottom_number) + return f"{max_version}.x" + if Version(top_version) >= Version(bottom_version): + return top_version + return bottom_version + + return None diff --git a/src/sagemaker/modules/train/container_drivers/distributed_runner.json b/src/sagemaker/modules/train/container_drivers/distributed_runner.json new file mode 100644 index 0000000000..a90706c134 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/distributed_runner.json @@ -0,0 +1 @@ +{"mpi_additional_options": ["-x", "MASTER_ADDR=algo-1", "-x", "MASTER_PORT=7777"], "_type": "mpi"} \ No newline at end of file diff --git a/src/sagemaker/modules/train/container_drivers/sm_train.sh b/src/sagemaker/modules/train/container_drivers/sm_train.sh new file mode 100644 index 0000000000..cc3915c887 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/sm_train.sh @@ -0,0 +1,64 @@ + +#!/bin/bash +set -e +echo "Starting training script" + +handle_error() { + EXIT_STATUS=$? + echo "An error occurred with exit code $EXIT_STATUS" + if [ ! -s /opt/ml/output/failure ]; then + echo "Training Execution failed. For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. +TrainingJob - $TRAINING_JOB_NAME" >> /opt/ml/output/failure + fi + exit $EXIT_STATUS +} + +check_python() { + if command -v python3 &>/dev/null; then + SM_PYTHON_CMD="python3" + SM_PIP_CMD="pip3" + echo "Found python3" + elif command -v python &>/dev/null; then + SM_PYTHON_CMD="python" + SM_PIP_CMD="pip" + echo "Found python" + else + echo "Python may not be installed" + return 1 + fi +} + +trap 'handle_error' ERR + +check_python + +$SM_PYTHON_CMD --version + +echo "/opt/ml/input/config/resourceconfig.json:" +cat /opt/ml/input/config/resourceconfig.json +echo + +echo "/opt/ml/input/config/inputdataconfig.json:" +cat /opt/ml/input/config/inputdataconfig.json +echo + +echo "/opt/ml/input/data/sm_drivers/sourcecode.json" +cat /opt/ml/input/data/sm_drivers/sourcecode.json +echo + +echo "/opt/ml/input/data/sm_drivers/distributed_runner.json" +cat /opt/ml/input/data/sm_drivers/distributed_runner.json +echo + +echo "Setting up environment variables" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/scripts/environment.py +source /opt/ml/input/data/sm_drivers/scripts/sm_training.env + +cd /opt/ml/input/data/sm_code +$SM_PIP_CMD install -r requirements.txt + +echo "Running MPI driver" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/mpi_driver.py + + +echo "Training Container Execution Completed" diff --git a/src/sagemaker/modules/train/container_drivers/sourcecode.json b/src/sagemaker/modules/train/container_drivers/sourcecode.json new file mode 100644 index 0000000000..bee6559762 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/sourcecode.json @@ -0,0 +1 @@ +{"source_dir": "distributed-training/scripts", "requirements": "requirements.txt", "entry_script": "run_clm_no_trainer.py"} \ No newline at end of file diff --git a/tests/unit/sagemaker/image_uris/test_latest_container_image.py b/tests/unit/sagemaker/image_uris/test_latest_container_image.py new file mode 100644 index 0000000000..0e4c337160 --- /dev/null +++ b/tests/unit/sagemaker/image_uris/test_latest_container_image.py @@ -0,0 +1,110 @@ +import json +import unittest +from unittest.mock import patch + +import pytest + +from src.sagemaker.image_uris import get_latest_container_image + + +class TestImageUtils(unittest.TestCase): + + @patch('src.sagemaker.image_uris.config_for_framework') + def test_get_latest_container_image_invalid_framework(self, + mock_config_for_framework): + mock_config_for_framework.side_effect = FileNotFoundError + + with self.assertRaises(ValueError) as e: + get_latest_container_image("xgboost", "inference") + assert "No framework config for framework" in str(e.exception) + + @patch('src.sagemaker.image_uris.config_for_framework') + def test_get_latest_container_image_no_framework(self, + mock_config_for_framework): + mock_config_for_framework.return_value = {} + + with self.assertRaises(ValueError) as e: + get_latest_container_image("xgboost", "inference") + assert "No framework config for framework" in str(e.exception) + + +@pytest.mark.parametrize("framework", ['object-detection', + 'instance_gpu_info', + 'object2vec', + 'pytorch', + 'djl-lmi', + 'mxnet', + 'debugger', + 'data-wrangler', + 'spark', + 'blazingtext', + 'pytorch-neuron', + 'forecasting-deepar', + 'huggingface-neuron', + 'ntm', + 'neo-mxnet', + 'image-classification', + 'xgboost', + 'autogluon', + 'sparkml-serving', + 'clarify', + 'inferentia-pytorch', + 'neo-tensorflow', + 'huggingface-tei-cpu', + 'huggingface', + 'sagemaker-tritonserver', + 'pytorch-smp', + 'knn', + 'linear-learner', + 'model-monitor', + 'ray-tensorflow', + 'djl-neuronx', + 'huggingface-llm-neuronx', + 'image-classification-neo', + 'lda', + 'stabilityai', + 'ray-pytorch', + 'chainer', + 'coach-mxnet', + 'pca', + 'sagemaker-geospatial', + 'djl-tensorrtllm', + 'huggingface-training-compiler', + 'pytorch-training-compiler', + 'vw', + 'huggingface-neuronx', + 'ipinsights', + 'detailed-profiler', + 'inferentia-tensorflow', + 'semantic-segmentation', + 'inferentia-mxnet', + 'xgboost-neo', + 'neo-pytorch', + 'djl-deepspeed', + 'djl-fastertransformer', + 'sklearn', + 'tensorflow', + 'randomcutforest', + 'huggingface-llm', + 'factorization-machines', + 'huggingface-tei', + 'coach-tensorflow', + 'seq2seq', + 'kmeans', + 'sagemaker-base-python']) +@patch('src.sagemaker.image_uris.config_for_framework') +@patch('src.sagemaker.image_uris.retrieve') +def test_get_latest_container_image_parameterized(mock_image_retrieve, + mock_config_for_framework, + framework): + file_path = f"src/sagemaker/image_uri_config/{framework}.json" + with open(file_path, 'r') as json_file: + config_for_framework = json.load(json_file) + + mock_config_for_framework.return_value = config_for_framework + mock_image_retrieve.return_value = "latest-image" + image, version = get_latest_container_image(framework=framework, + image_scope="inference", + instance_type="ml.c4.xlarge", + region="us-east-1") + assert image == "latest-image" From c3f432c7e48385dc2661234fdf1b527ac1605fa9 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Wed, 23 Oct 2024 22:39:46 -0700 Subject: [PATCH 13/79] Cleanup ModelTrainer code (#1552) --- src/sagemaker/image_uris.py | 210 +++++++++--------- src/sagemaker/modules/scripts/environment.py | 37 ++- .../modules/scripts/intelligent_params.py | 9 +- .../base_model_trainer.ipynb | 25 +-- .../scripts/requirements.txt | 4 +- .../scripts/run_clm_no_trainer.py | 33 ++- .../image_uris/test_latest_container_image.py | 179 ++++++++------- 7 files changed, 261 insertions(+), 236 deletions(-) diff --git a/src/sagemaker/image_uris.py b/src/sagemaker/image_uris.py index 710fdc8a3a..4a863765a5 100644 --- a/src/sagemaker/image_uris.py +++ b/src/sagemaker/image_uris.py @@ -52,28 +52,28 @@ @override_pipeline_parameter_var def retrieve( - framework, - region, - version=None, - py_version=None, - instance_type=None, - accelerator_type=None, - image_scope=None, - container_version=None, - distribution=None, - base_framework_version=None, - training_compiler_config=None, - model_id=None, - model_version=None, - hub_arn=None, - tolerate_vulnerable_model=False, - tolerate_deprecated_model=False, - sdk_version=None, - inference_tool=None, - serverless_inference_config=None, - sagemaker_session=DEFAULT_JUMPSTART_SAGEMAKER_SESSION, - config_name=None, - model_type: JumpStartModelType = JumpStartModelType.OPEN_WEIGHTS, + framework, + region, + version=None, + py_version=None, + instance_type=None, + accelerator_type=None, + image_scope=None, + container_version=None, + distribution=None, + base_framework_version=None, + training_compiler_config=None, + model_id=None, + model_version=None, + hub_arn=None, + tolerate_vulnerable_model=False, + tolerate_deprecated_model=False, + sdk_version=None, + inference_tool=None, + serverless_inference_config=None, + sagemaker_session=DEFAULT_JUMPSTART_SAGEMAKER_SESSION, + config_name=None, + model_type: JumpStartModelType = JumpStartModelType.OPEN_WEIGHTS, ) -> str: """Retrieves the ECR URI for the Docker image matching the given arguments. @@ -250,10 +250,10 @@ def retrieve( if config.get("version_aliases").get(original_version): _version = config.get("version_aliases")[original_version] if ( - config.get("versions", {}) - .get(_version, {}) - .get("version_aliases", {}) - .get(base_framework_version, {}) + config.get("versions", {}) + .get(_version, {}) + .get("version_aliases", {}) + .get(base_framework_version, {}) ): _base_framework_version = config.get("versions")[_version]["version_aliases"][ base_framework_version @@ -290,16 +290,16 @@ def retrieve( def _get_image_tag( - container_version, - distribution, - final_image_scope, - framework, - inference_tool, - instance_type, - processor, - py_version, - tag_prefix, - version, + container_version, + distribution, + final_image_scope, + framework, + inference_tool, + instance_type, + processor, + py_version, + tag_prefix, + version, ): """Return image tag based on framework, container, and compute configuration(s).""" instance_type_family = utils.get_instance_type_family(instance_type) @@ -311,8 +311,8 @@ def _get_image_tag( "instance type", ) if ( - instance_type_family in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY - or final_image_scope == INFERENCE_GRAVITON + instance_type_family in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + or final_image_scope == INFERENCE_GRAVITON ): version_to_arm64_tag_mapping = { "xgboost": { @@ -330,7 +330,7 @@ def _get_image_tag( tag = _format_tag(tag_prefix, processor, py_version, container_version, inference_tool) if instance_type is not None and _should_auto_select_container_version( - instance_type, distribution + instance_type, distribution ): container_versions = { "tensorflow-2.3-gpu-py37": "cu110-ubuntu18.04-v3", @@ -398,7 +398,7 @@ def _validate_instance_deprecation(framework, instance_type, version): """Check if instance type is deprecated for a certain framework with a certain version""" if utils.get_instance_type_family(instance_type) == "p2": if (framework == "pytorch" and Version(version) >= Version("1.13")) or ( - framework == "tensorflow" and Version(version) >= Version("2.12") + framework == "tensorflow" and Version(version) >= Version("2.12") ): raise ValueError( "P2 instances have been deprecated for sagemaker jobs starting PyTorch 1.13 and TensorFlow 2.12" @@ -411,17 +411,17 @@ def _validate_for_suppported_frameworks_and_instance_type(framework, instance_ty """Validate if framework is supported for the instance_type""" # Validate for Trainium allowed frameworks if ( - instance_type is not None - and "trn" in instance_type - and framework not in TRAINIUM_ALLOWED_FRAMEWORKS + instance_type is not None + and "trn" in instance_type + and framework not in TRAINIUM_ALLOWED_FRAMEWORKS ): _validate_framework(framework, TRAINIUM_ALLOWED_FRAMEWORKS, "framework", "Trainium") # Validate for Graviton allowed frameowrks if ( - instance_type is not None - and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY - and framework not in GRAVITON_ALLOWED_FRAMEWORKS + instance_type is not None + and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + and framework not in GRAVITON_ALLOWED_FRAMEWORKS ): _validate_framework(framework, GRAVITON_ALLOWED_FRAMEWORKS, "framework", "Graviton") @@ -436,8 +436,8 @@ def config_for_framework(framework): def _get_final_image_scope(framework, instance_type, image_scope): """Return final image scope based on provided framework and instance type.""" if ( - framework in GRAVITON_ALLOWED_FRAMEWORKS - and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY + framework in GRAVITON_ALLOWED_FRAMEWORKS + and utils.get_instance_type_family(instance_type) in GRAVITON_ALLOWED_TARGET_INSTANCE_FAMILY ): return INFERENCE_GRAVITON if image_scope is None and framework in (XGBOOST_FRAMEWORK, SKLEARN_FRAMEWORK): @@ -635,16 +635,16 @@ def _format_tag(tag_prefix, processor, py_version, container_version, inference_ @override_pipeline_parameter_var def get_training_image_uri( - region, - framework, - framework_version=None, - py_version=None, - image_uri=None, - distribution=None, - compiler_config=None, - tensorflow_version=None, - pytorch_version=None, - instance_type=None, + region, + framework, + framework_version=None, + py_version=None, + image_uri=None, + distribution=None, + compiler_config=None, + tensorflow_version=None, + pytorch_version=None, + instance_type=None, ) -> str: """Retrieves the image URI for training. @@ -748,26 +748,28 @@ def get_base_python_image_uri(region, py_version="310") -> str: return ECR_URI_TEMPLATE.format(registry=registry, hostname=hostname, repository=repo_and_tag) -def get_latest_container_image(framework: str, - image_scope: Optional[str] = None, - instance_type: Optional[str] = None, - py_version: Optional[str] = None, - region: str = "us-west-2", - version: Optional[str] = None, - accelerator_type=None, - container_version=None, - distribution=None, - base_framework_version=None, - training_compiler_config=None, - model_id=None, - model_version=None, - hub_arn=None, - sdk_version=None, - inference_tool=None, - serverless_inference_config=None, - config_name=None, - ) -> Tuple[str, str]: +def get_latest_container_image( + framework: str, + image_scope: Optional[str] = None, + instance_type: Optional[str] = None, + py_version: Optional[str] = None, + region: str = "us-west-2", + version: Optional[str] = None, + accelerator_type=None, + container_version=None, + distribution=None, + base_framework_version=None, + training_compiler_config=None, + model_id=None, + model_version=None, + hub_arn=None, + sdk_version=None, + inference_tool=None, + serverless_inference_config=None, + config_name=None, +) -> Tuple[str, str]: """Retrieves the latest container image URI + Args: framework (str): The name of the framework or algorithm. image_scope (str): The image type, i.e. what it is used for. @@ -818,31 +820,34 @@ def get_latest_container_image(framework: str, if not version: version = _fetch_latest_version_from_config(framework_config, image_scope) - image_uri = retrieve(framework=framework, - region=region, - version=version, - instance_type=instance_type, - py_version=py_version, - accelerator_type=accelerator_type, - image_scope=image_scope, - container_version=container_version, - distribution=distribution, - base_framework_version=base_framework_version, - training_compiler_config=training_compiler_config, - model_id=model_id, - model_version=model_version, - hub_arn=hub_arn, - sdk_version=sdk_version, - inference_tool=inference_tool, - serverless_inference_config=serverless_inference_config, - config_name=config_name - ) + image_uri = retrieve( + framework=framework, + region=region, + version=version, + instance_type=instance_type, + py_version=py_version, + accelerator_type=accelerator_type, + image_scope=image_scope, + container_version=container_version, + distribution=distribution, + base_framework_version=base_framework_version, + training_compiler_config=training_compiler_config, + model_id=model_id, + model_version=model_version, + hub_arn=hub_arn, + sdk_version=sdk_version, + inference_tool=inference_tool, + serverless_inference_config=serverless_inference_config, + config_name=config_name, + ) return image_uri, version -def _fetch_latest_version_from_config(framework_config: dict, - image_scope: Optional[str] = None) -> Optional[str]: - """ Helper function to fetch the latest version as a string from a framework's config +def _fetch_latest_version_from_config( + framework_config: dict, image_scope: Optional[str] = None +) -> Optional[str]: + """Helper function to fetch the latest version as a string from a framework's config + Args: framework_config (dict): A framework config dict. image_scope (str): Scope of the image, eg: training, inference @@ -863,8 +868,11 @@ def _fetch_latest_version_from_config(framework_config: dict, bottom_version = versions[-1] if top_version == "latest" or bottom_version == "latest": return None - elif (image_scope is not None and image_scope in framework_config - and "versions" in framework_config[image_scope]): + elif ( + image_scope is not None + and image_scope in framework_config + and "versions" in framework_config[image_scope] + ): versions = list(framework_config[image_scope]["versions"].keys()) top_version = versions[0] bottom_version = versions[-1] diff --git a/src/sagemaker/modules/scripts/environment.py b/src/sagemaker/modules/scripts/environment.py index 4b80dcae72..2ccdd92c82 100644 --- a/src/sagemaker/modules/scripts/environment.py +++ b/src/sagemaker/modules/scripts/environment.py @@ -26,7 +26,7 @@ logger = logging.getLogger(__name__) console_handler = logging.StreamHandler(sys.stdout) logger.addHandler(console_handler) -logger.setLevel(SM_LOG_LEVEL) +logger.setLevel(int(SM_LOG_LEVEL)) SM_MODEL_DIR = "/opt/ml/model" @@ -85,7 +85,7 @@ def num_neurons(): neuron_cores = 0 for item in j: neuron_cores += item.get("nc_count", 0) - logger.info(f"Found {neuron_cores} neurons on this instance") + logger.info("Found %s neurons on this instance", neuron_cores) return neuron_cores except OSError: logger.info("No Neurons detected (normal if no neurons installed)") @@ -96,9 +96,8 @@ def num_neurons(): msg = e.output.decode("utf-8").partition("error=")[2] logger.info( "No Neurons detected (normal if no neurons installed). \ - If neuron installed then {}".format( - msg - ) + If neuron installed then %s", + msg, ) except AttributeError: logger.info("No Neurons detected (normal if no neurons installed)") @@ -109,11 +108,10 @@ def num_neurons(): def set_env( - resource_config: Dict[str, Any] = {}, - input_data_config: Dict[str, Any] = {}, - hyperparameters_config: Dict[str, Any] = {}, + resource_config: Dict[str, Any], + input_data_config: Dict[str, Any], + hyperparameters_config: Dict[str, Any], output_file: str = "sm_training.env", - write_to_etc: bool = False, ): """Set environment variables for the training job container. @@ -122,7 +120,6 @@ def set_env( input_data_config (Dict[str, Any]): Input data configuration for the training job. hyperparameters_config (Dict[str, Any]): Hyperparameters configuration for the training job. output_file (str): Output file to write the environment variables. - write_to_etc (bool): Whether to write the environment variables to /etc/environment. """ # Constants env_vars = { @@ -151,10 +148,12 @@ def set_env( # Host Variables current_host = resource_config["current_host"] + current_instance_type = resource_config["current_instance_type"] hosts = resource_config["hosts"] sorted_hosts = sorted(hosts) env_vars["SM_CURRENT_HOST"] = current_host + env_vars["SM_CURRENT_INSTANCE_TYPE"] = current_instance_type env_vars["SM_HOSTS"] = sorted_hosts env_vars["SM_NETWORK_INTERFACE_NAME"] = resource_config["network_interface_name"] env_vars["SM_HOST_COUNT"] = len(sorted_hosts) @@ -174,6 +173,7 @@ def set_env( channel: env_vars[f"SM_CHANNEL_{channel.upper()}"] for channel in channels }, "current_host": env_vars["SM_CURRENT_HOST"], + "current_instance_type": env_vars["SM_CURRENT_INSTANCE_TYPE"], "hosts": env_vars["SM_HOSTS"], "master_addr": env_vars["SM_MASTER_ADDR"], "master_port": env_vars["SM_MASTER_PORT"], @@ -204,17 +204,9 @@ def set_env( else: f.write(f"export {key}='{value}'\n") - # Need to write to /etc/environment for MPI to work - if write_to_etc: - with open("/etc/environment", "a") as f: - for key, value in env_vars.items(): - if isinstance(value, (list, dict)): - f.write(f"{key}='{json.dumps(value)}'\n") - else: - f.write(f"{key}='{value}'\n") - -if __name__ == "__main__": +def main(): + """Main function to set the environment variables for the training job container.""" with open(RESOURCE_CONFIG, "r") as f: resource_config = json.load(f) with open(INPUT_DATA_CONFIG, "r") as f: @@ -227,5 +219,8 @@ def set_env( input_data_config=input_data_config, hyperparameters_config=hyperparameters_config, output_file=ENV_OUTPUT_FILE, - write_to_etc=True, ) + + +if __name__ == "__main__": + main() diff --git a/src/sagemaker/modules/scripts/intelligent_params.py b/src/sagemaker/modules/scripts/intelligent_params.py index 71624c3925..e1105def1a 100644 --- a/src/sagemaker/modules/scripts/intelligent_params.py +++ b/src/sagemaker/modules/scripts/intelligent_params.py @@ -24,15 +24,16 @@ def set_intelligent_params(path: str) -> None: """Set intelligent parameters for all python files under the given path. - For python code with comment sm_hyper_param or sm_hp_{variable_name}, the value will be found in - /opt/ml/input/config/hyperparameters.json, and this function will rewrite lines with these comments. + For python code with comment sm_hyper_param or sm_hp_{variable_name}, + the value will be found in /opt/ml/input/config/hyperparameters.json, + and this function will rewrite lines with these comments. Args: path (str): The folder path to set intellingent parameters """ with open(HYPERPARAMETERS_FILE_PATH, "r") as f: hyperparameters = json.load(f) - for root, dirs, files in os.walk(path): + for root, dirs, files in os.walk(path): # pylint: disable=W0612 for file in files: if file.endswith(".py"): file_path = os.path.join(root, file) @@ -48,7 +49,7 @@ def rewrite_file(file_path: str, hyperparameters: dict) -> None: """ with open(file_path, "r", encoding="utf-8") as f: lines = f.readlines() - for i in range(len(lines)): + for i in range(len(lines)): # pylint: disable=C0200 lines[i] = rewrite_line(lines[i], hyperparameters) with open(file_path, "w", encoding="utf-8") as f: f.writelines(lines) diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 9b3e7676fd..1e2fbc4ed6 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -7,7 +7,6 @@ "outputs": [], "source": [ "import sys, os\n", - "from sagemaker import image_uris\n", "\n", "# Get the absolute path of the root directory\n", "root_dir = os.path.abspath(os.path.join(os.getcwd(), '../../..'))\n", @@ -33,15 +32,8 @@ "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "from sagemaker.modules.configs import SourceCodeConfig\n", - "from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE\n", - "\n", - "pytorch_image = image_uris.retrieve(\n", - " framework=\"pytorch\",\n", - " region=\"us-west-2\",\n", - " version=\"2.0.0\",\n", - " image_scope=\"training\",\n", - " instance_type=DEFAULT_INSTANCE_TYPE\n", - ")\n", + "\n", + "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", "\n", "source_code_config = SourceCodeConfig(\n", " command=\"echo 'Hello World' && env\",\n", @@ -304,23 +296,14 @@ "env['FI_EFA_USE_DEVICE_RDMA'] = '1'\n", "env['RDMAV_FORK_SAFE'] = '1'\n", "\n", - "instance_type = \"ml.p4d.24xlarge\"\n", "\n", "resource_config = ResourceConfig(\n", " instance_count=2,\n", - " instance_type=instance_type,\n", + " instance_type=\"ml.p4d.24xlarge\",\n", " volume_size_in_gb=96,\n", ")\n", "\n", - "hugging_face_image = image_uris.retrieve(\n", - " framework=\"huggingface\",\n", - " base_framework_version=\"pytorch2.0.0\",\n", - " region=\"us-west-2\",\n", - " version=\"4.28.1\",\n", - " instance_type=instance_type,\n", - " image_scope=\"training\",\n", - " py_version=\"py310\",\n", - ")\n", + "hugging_face_image = \"63104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", "\n", "hyper_parameters={\n", " 'dataset_path': '/opt/ml/input/data/dataset',\n", diff --git a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/requirements.txt b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/requirements.txt index 381ad4dfe5..793d160a95 100644 --- a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/requirements.txt +++ b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/requirements.txt @@ -1,5 +1,7 @@ transformers==4.31 -datasets +datasets==2.16.1 +fsspec==2023.6.0 accelerate>=0.21 +tokenizers>=0.13.3 bitsandbytes peft diff --git a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py index 48da810353..7a06c2d8b8 100644 --- a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py +++ b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py @@ -28,10 +28,6 @@ import functools -# Initialize the distributed environment -dist.init_process_group(backend="nccl") - - def parse_arge(): """Parse the arguments.""" parser = argparse.ArgumentParser() @@ -195,7 +191,8 @@ def training_function(args): HfFolder.save_token(args.access_token) - dataset = load_from_disk(args.dataset_path) + print(f"Loading dataset from {args.dataset_path}") + dataset = load_from_disk(f"file://{args.dataset_path}") dist.barrier() @@ -360,11 +357,31 @@ def training_function(args): def main(): args, _ = parse_arge() - args.local_rank = int(os.environ["LOCAL_RANK"]) - args.rank = int(os.environ["RANK"]) - args.world_size = int(os.environ["WORLD_SIZE"]) + + if "LOCAL_RANK" in os.environ: + # Environment variables set by torch.distributed.launch or torchrun + LOCAL_RANK = int(os.environ["LOCAL_RANK"]) + WORLD_SIZE = int(os.environ["WORLD_SIZE"]) + WORLD_RANK = int(os.environ["RANK"]) + elif "OMPI_COMM_WORLD_LOCAL_RANK" in os.environ: + # Environment variables set by mpirun + LOCAL_RANK = int(os.environ["OMPI_COMM_WORLD_LOCAL_RANK"]) + WORLD_SIZE = int(os.environ["OMPI_COMM_WORLD_SIZE"]) + WORLD_RANK = int(os.environ["OMPI_COMM_WORLD_RANK"]) + else: + import sys + + sys.exit("Can't find the evironment variables for local rank") + + args.local_rank = LOCAL_RANK + args.rank = WORLD_RANK + args.world_size = WORLD_SIZE print(f"Running with args: {args}") + # Initialize the distributed environment + dist.init_process_group( + backend="nccl", init_method="env://", rank=args.rank, world_size=args.world_size + ) training_function(args) diff --git a/tests/unit/sagemaker/image_uris/test_latest_container_image.py b/tests/unit/sagemaker/image_uris/test_latest_container_image.py index 0e4c337160..6b52db5c6a 100644 --- a/tests/unit/sagemaker/image_uris/test_latest_container_image.py +++ b/tests/unit/sagemaker/image_uris/test_latest_container_image.py @@ -1,3 +1,17 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +from __future__ import absolute_import + import json import unittest from unittest.mock import patch @@ -9,18 +23,16 @@ class TestImageUtils(unittest.TestCase): - @patch('src.sagemaker.image_uris.config_for_framework') - def test_get_latest_container_image_invalid_framework(self, - mock_config_for_framework): + @patch("src.sagemaker.image_uris.config_for_framework") + def test_get_latest_container_image_invalid_framework(self, mock_config_for_framework): mock_config_for_framework.side_effect = FileNotFoundError with self.assertRaises(ValueError) as e: get_latest_container_image("xgboost", "inference") assert "No framework config for framework" in str(e.exception) - @patch('src.sagemaker.image_uris.config_for_framework') - def test_get_latest_container_image_no_framework(self, - mock_config_for_framework): + @patch("src.sagemaker.image_uris.config_for_framework") + def test_get_latest_container_image_no_framework(self, mock_config_for_framework): mock_config_for_framework.return_value = {} with self.assertRaises(ValueError) as e: @@ -28,83 +40,90 @@ def test_get_latest_container_image_no_framework(self, assert "No framework config for framework" in str(e.exception) -@pytest.mark.parametrize("framework", ['object-detection', - 'instance_gpu_info', - 'object2vec', - 'pytorch', - 'djl-lmi', - 'mxnet', - 'debugger', - 'data-wrangler', - 'spark', - 'blazingtext', - 'pytorch-neuron', - 'forecasting-deepar', - 'huggingface-neuron', - 'ntm', - 'neo-mxnet', - 'image-classification', - 'xgboost', - 'autogluon', - 'sparkml-serving', - 'clarify', - 'inferentia-pytorch', - 'neo-tensorflow', - 'huggingface-tei-cpu', - 'huggingface', - 'sagemaker-tritonserver', - 'pytorch-smp', - 'knn', - 'linear-learner', - 'model-monitor', - 'ray-tensorflow', - 'djl-neuronx', - 'huggingface-llm-neuronx', - 'image-classification-neo', - 'lda', - 'stabilityai', - 'ray-pytorch', - 'chainer', - 'coach-mxnet', - 'pca', - 'sagemaker-geospatial', - 'djl-tensorrtllm', - 'huggingface-training-compiler', - 'pytorch-training-compiler', - 'vw', - 'huggingface-neuronx', - 'ipinsights', - 'detailed-profiler', - 'inferentia-tensorflow', - 'semantic-segmentation', - 'inferentia-mxnet', - 'xgboost-neo', - 'neo-pytorch', - 'djl-deepspeed', - 'djl-fastertransformer', - 'sklearn', - 'tensorflow', - 'randomcutforest', - 'huggingface-llm', - 'factorization-machines', - 'huggingface-tei', - 'coach-tensorflow', - 'seq2seq', - 'kmeans', - 'sagemaker-base-python']) -@patch('src.sagemaker.image_uris.config_for_framework') -@patch('src.sagemaker.image_uris.retrieve') -def test_get_latest_container_image_parameterized(mock_image_retrieve, - mock_config_for_framework, - framework): +@pytest.mark.parametrize( + "framework", + [ + "object-detection", + "instance_gpu_info", + "object2vec", + "pytorch", + "djl-lmi", + "mxnet", + "debugger", + "data-wrangler", + "spark", + "blazingtext", + "pytorch-neuron", + "forecasting-deepar", + "huggingface-neuron", + "ntm", + "neo-mxnet", + "image-classification", + "xgboost", + "autogluon", + "sparkml-serving", + "clarify", + "inferentia-pytorch", + "neo-tensorflow", + "huggingface-tei-cpu", + "huggingface", + "sagemaker-tritonserver", + "pytorch-smp", + "knn", + "linear-learner", + "model-monitor", + "ray-tensorflow", + "djl-neuronx", + "huggingface-llm-neuronx", + "image-classification-neo", + "lda", + "stabilityai", + "ray-pytorch", + "chainer", + "coach-mxnet", + "pca", + "sagemaker-geospatial", + "djl-tensorrtllm", + "huggingface-training-compiler", + "pytorch-training-compiler", + "vw", + "huggingface-neuronx", + "ipinsights", + "detailed-profiler", + "inferentia-tensorflow", + "semantic-segmentation", + "inferentia-mxnet", + "xgboost-neo", + "neo-pytorch", + "djl-deepspeed", + "djl-fastertransformer", + "sklearn", + "tensorflow", + "randomcutforest", + "huggingface-llm", + "factorization-machines", + "huggingface-tei", + "coach-tensorflow", + "seq2seq", + "kmeans", + "sagemaker-base-python", + ], +) +@patch("src.sagemaker.image_uris.config_for_framework") +@patch("src.sagemaker.image_uris.retrieve") +def test_get_latest_container_image_parameterized( + mock_image_retrieve, mock_config_for_framework, framework +): file_path = f"src/sagemaker/image_uri_config/{framework}.json" - with open(file_path, 'r') as json_file: + with open(file_path, "r") as json_file: config_for_framework = json.load(json_file) mock_config_for_framework.return_value = config_for_framework mock_image_retrieve.return_value = "latest-image" - image, version = get_latest_container_image(framework=framework, - image_scope="inference", - instance_type="ml.c4.xlarge", - region="us-east-1") + image, version = get_latest_container_image( + framework=framework, + image_scope="inference", + instance_type="ml.c4.xlarge", + region="us-east-1", + ) assert image == "latest-image" From 2e17bcbd7a1a3003033e2276d44e56c8917e7961 Mon Sep 17 00:00:00 2001 From: Pravali Uppugunduri <46845440+pravali96@users.noreply.github.com> Date: Fri, 1 Nov 2024 16:15:15 -0700 Subject: [PATCH 14/79] feat: add pre-processing and post-processing logic to inference_spec (#1560) * add pre-processing and post-processing logic to inference_spec * fix format * make accept_type and content_type optional * remove accept_type and content_type from pre/post processing * correct typo --- .../model_server/multi_model_server/inference.py | 12 ++++++++++-- .../serve/model_server/torchserve/inference.py | 12 ++++++++++-- src/sagemaker/serve/spec/inference_spec.py | 6 ++++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/sagemaker/serve/model_server/multi_model_server/inference.py b/src/sagemaker/serve/model_server/multi_model_server/inference.py index 1ee7b5e4dc..595b9d9c39 100644 --- a/src/sagemaker/serve/model_server/multi_model_server/inference.py +++ b/src/sagemaker/serve/model_server/multi_model_server/inference.py @@ -44,13 +44,19 @@ def input_fn(input_data, content_type): """Deserializes the bytes that were received from the model server""" try: if hasattr(schema_builder, "custom_input_translator"): - return schema_builder.custom_input_translator.deserialize( + deserialized_data = schema_builder.custom_input_translator.deserialize( io.BytesIO(input_data), content_type ) else: - return schema_builder.input_deserializer.deserialize( + deserialized_data = schema_builder.input_deserializer.deserialize( io.BytesIO(input_data), content_type[0] ) + + # Check if preprocess method is defined and call it + if hasattr(inference_spec, "preprocess"): + return inference_spec.preprocess(deserialized_data) + + return deserialized_data except Exception as e: logger.error("Encountered error: %s in deserialize_response." % e) raise Exception("Encountered error in deserialize_request.") from e @@ -64,6 +70,8 @@ def predict_fn(input_data, predict_callable): def output_fn(predictions, accept_type): """Prediction is serialized to bytes and sent back to the customer""" try: + if hasattr(inference_spec, "postprocess"): + predictions = inference_spec.postprocess(predictions) if hasattr(schema_builder, "custom_output_translator"): return schema_builder.custom_output_translator.serialize(predictions, accept_type) else: diff --git a/src/sagemaker/serve/model_server/torchserve/inference.py b/src/sagemaker/serve/model_server/torchserve/inference.py index 2675f6ea6a..cad94cc817 100644 --- a/src/sagemaker/serve/model_server/torchserve/inference.py +++ b/src/sagemaker/serve/model_server/torchserve/inference.py @@ -66,13 +66,19 @@ def input_fn(input_data, content_type): """Placeholder docstring""" try: if hasattr(schema_builder, "custom_input_translator"): - return schema_builder.custom_input_translator.deserialize( + deserialized_data = schema_builder.custom_input_translator.deserialize( io.BytesIO(input_data), content_type ) else: - return schema_builder.input_deserializer.deserialize( + deserialized_data = schema_builder.input_deserializer.deserialize( io.BytesIO(input_data), content_type[0] ) + + # Check if preprocess method is defined and call it + if hasattr(inference_spec, "preprocess"): + return inference_spec.preprocess(deserialized_data) + + return deserialized_data except Exception as e: raise Exception("Encountered error in deserialize_request.") from e @@ -85,6 +91,8 @@ def predict_fn(input_data, predict_callable): def output_fn(predictions, accept_type): """Placeholder docstring""" try: + if hasattr(inference_spec, "postprocess"): + predictions = inference_spec.postprocess(predictions) if hasattr(schema_builder, "custom_output_translator"): return schema_builder.custom_output_translator.serialize(predictions, accept_type) else: diff --git a/src/sagemaker/serve/spec/inference_spec.py b/src/sagemaker/serve/spec/inference_spec.py index 2598a38d01..0397e84975 100644 --- a/src/sagemaker/serve/spec/inference_spec.py +++ b/src/sagemaker/serve/spec/inference_spec.py @@ -28,6 +28,12 @@ def invoke(self, input_object: object, model: object): model (object): The model object """ + def preprocess(self, input_data: object): + """Custom pre-processing function""" + + def postprocess(self, predictions: object): + """Custom post-processing function""" + def prepare(self, *args, **kwargs): """Custom prepare function""" From 21a11a92e1298afcc624bc9f7e55f593adaa7476 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:16:42 -0800 Subject: [PATCH 15/79] Add Distributed Training Support Model Trainer (#1536) --- .gitignore | 3 +- src/sagemaker/modules/configs.py | 110 ++++++- src/sagemaker/modules/constants.py | 18 +- src/sagemaker/modules/templates.py | 74 +++-- .../base_model_trainer.ipynb | 250 ++++++++++----- .../scripts/run_clm_no_trainer.py | 1 - .../train/container_drivers/__init__.py | 14 + .../train/container_drivers/mpi_driver.py | 100 ++++++ .../train/container_drivers/mpi_utils.py | 294 ++++++++++++++++++ .../train/container_drivers/pytorch_driver.py | 117 +++++++ .../container_drivers/scripts/__init__.py | 14 + .../container_drivers}/scripts/environment.py | 17 +- .../scripts/intelligent_params.py | 0 .../modules/train/container_drivers/utils.py | 124 ++++++++ src/sagemaker/modules/train/model_trainer.py | 191 ++++++++---- .../train/container_drivers/__init__.py | 0 .../scripts/test_enviornment.py | 134 ++++++++ .../scripts/test_intelligent_params.py | 4 +- .../container_drivers/test_mpi_driver.py | 136 ++++++++ .../container_drivers/test_pytorch_driver.py | 151 +++++++++ .../modules/train/test_model_trainer.py | 56 ---- 21 files changed, 1565 insertions(+), 243 deletions(-) create mode 100644 src/sagemaker/modules/train/container_drivers/__init__.py create mode 100644 src/sagemaker/modules/train/container_drivers/mpi_driver.py create mode 100644 src/sagemaker/modules/train/container_drivers/mpi_utils.py create mode 100644 src/sagemaker/modules/train/container_drivers/pytorch_driver.py create mode 100644 src/sagemaker/modules/train/container_drivers/scripts/__init__.py rename src/sagemaker/modules/{ => train/container_drivers}/scripts/environment.py (95%) rename src/sagemaker/modules/{ => train/container_drivers}/scripts/intelligent_params.py (100%) create mode 100644 src/sagemaker/modules/train/container_drivers/utils.py create mode 100644 tests/unit/sagemaker/modules/train/container_drivers/__init__.py create mode 100644 tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py rename tests/unit/sagemaker/modules/{ => train/container_drivers}/scripts/test_intelligent_params.py (97%) create mode 100644 tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py create mode 100644 tests/unit/sagemaker/modules/train/container_drivers/test_pytorch_driver.py diff --git a/.gitignore b/.gitignore index 9b8f732547..39a442bcd6 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,8 @@ env/ .python-version *.html **/_repack_script_launcher.sh -src/sagemaker/modules/scripts/train.sh +src/sagemaker/modules/train/container_drivers/sm_train.sh +src/sagemaker/modules/train/container_drivers/sourcecodeconfig.json tests/data/**/_repack_model.py tests/data/experiment/sagemaker-dev-1.0.tar.gz src/sagemaker/serve/tmp_workspace \ No newline at end of file diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py index c53449a1d3..2b186f816c 100644 --- a/src/sagemaker/modules/configs.py +++ b/src/sagemaker/modules/configs.py @@ -21,8 +21,8 @@ from __future__ import absolute_import -from typing import Optional -from pydantic import BaseModel +from typing import Optional, Dict, Any, List +from pydantic import BaseModel, model_validator from sagemaker_core.shapes import ( ResourceConfig, @@ -36,6 +36,8 @@ VpcConfig, ) +from sagemaker.modules import logger + __all__ = [ "SourceCodeConfig", "ResourceConfig", @@ -50,6 +52,97 @@ ] +class SMDistributedSettings(BaseModel): + """SMDistributedSettings. + + The SMDistributedSettings is used to configure distributed training when + using the smdistributed library. + + Attributes: + enable_dataparallel (Optional[bool]): + Whether to enable data parallelism. + enable_modelparallel (Optional[bool]): + Whether to enable model parallelism. + modelparallel_parameters (Optional[Dict[str, Any]]): + The parameters for model parallelism. + """ + + enable_dataparallel: Optional[bool] = False + enable_modelparallel: Optional[bool] = False + modelparallel_parameters: Optional[Dict[str, Any]] = None + + +class DistributionConfig(BaseModel): + """Base class for distribution configurations.""" + + _distribution_type: str + + +class TorchDistributionConfig(DistributionConfig): + """TorchDistributionConfig. + + The TorchDistributionConfig uses `torchrun` or `torch.distributed.launch` in the backend to + launch distributed training. + + SMDistributed Library Information: + - `TorchDistributionConfig` can be used for SMModelParallel V2. + - For SMDataParallel or SMModelParallel V1, it is recommended to use the + `MPIDistributionConfig.` + + + Attributes: + smdistributed_settings (Optional[SMDistributedSettings]): + The settings for smdistributed library. + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of CPUs or GPUs available in the container. + """ + + _distribution_type: str = "torch_distributed" + + smdistributed_settings: Optional[SMDistributedSettings] = None + process_count_per_node: Optional[int] = None + + @model_validator(mode="after") + def _validate_model(cls, model): # pylint: disable=E0213 + """Validate the model.""" + if ( + getattr(model, "smddistributed_settings", None) + and model.smddistributed_settings.enable_dataparallel + ): + logger.warning( + "For smdistributed data parallelism, it is recommended to use " + + "MPIDistributionConfig." + ) + return model + + +class MPIDistributionConfig(DistributionConfig): + """MPIDistributionConfig. + + The MPIDistributionConfig uses `mpirun` in the backend to launch distributed training. + + SMDistributed Library Information: + - `MPIDistributionConfig` can be used for SMDataParallel and SMModelParallel V1. + - For SMModelParallel V2, it is recommended to use the `TorchDistributionConfig`. + + Attributes: + smdistributed_settings (Optional[SMDistributedSettings]): + The settings for smdistributed library. + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of CPUs or GPUs available in the container. + mpi_additional_options (Optional[str]): + The custom MPI options to use for the training job. + """ + + _distribution_type: str = "mpi" + + smdistributed_settings: Optional[SMDistributedSettings] = None + process_count_per_node: Optional[int] = None + mpi_additional_options: Optional[List[str]] = None + + class SourceCodeConfig(BaseModel): """SourceCodeConfig. @@ -57,9 +150,6 @@ class SourceCodeConfig(BaseModel): entry script, or commands to be executed in the training job container. Attributes: - command (Optional[str]): - The command(s) to execute in the training job container. Example: "python my_script.py". - If not specified, entry_script must be provided source_dir (Optional[str]): The local directory containing the source code to be used in the training job container. requirements (Optional[str]): @@ -68,9 +158,17 @@ class SourceCodeConfig(BaseModel): entry_script (Optional[str]): The path within `source_dir` to the entry script that will be executed in the training job container. If not specified, command must be provided. + command (Optional[str]): + The command(s) to execute in the training job container. Example: "python my_script.py". + If not specified, entry_script must be provided. + distribution (Optional[Union[ + MPIDistributionConfig, + TorchDistributionConfig, + ]]): + The distribution configuration for the training job. """ - command: Optional[str] = None source_dir: Optional[str] = None requirements: Optional[str] = None entry_script: Optional[str] = None + command: Optional[str] = None diff --git a/src/sagemaker/modules/constants.py b/src/sagemaker/modules/constants.py index 7cdd10e970..a7f9a897ff 100644 --- a/src/sagemaker/modules/constants.py +++ b/src/sagemaker/modules/constants.py @@ -16,15 +16,21 @@ DEFAULT_INSTANCE_TYPE = "ml.m5.xlarge" -SOURCE_CODE_CONTAINER_PATH = "/opt/ml/input/data/code" - +SM_CODE = "sm_code" SM_CODE_CONTAINER_PATH = "/opt/ml/input/data/sm_code" -SM_CODE_LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "scripts") -TRAIN_SCRIPT = "train.sh" + +SM_DRIVERS = "sm_drivers" +SM_DRIVERS_CONTAINER_PATH = "/opt/ml/input/data/sm_drivers" +SM_DRIVERS_LOCAL_PATH = os.path.join( + os.path.dirname(os.path.abspath(__file__)), "train/container_drivers" +) + +SOURCE_CODE_CONFIG_JSON = "sourcecodeconfig.json" +TRAIN_SCRIPT = "sm_train.sh" DEFAULT_CONTAINER_ENTRYPOINT = ["/bin/bash"] DEFAULT_CONTAINER_ARGUMENTS = [ "-c", - f"chmod +x {SM_CODE_CONTAINER_PATH}/{TRAIN_SCRIPT} " - + f"&& {SM_CODE_CONTAINER_PATH}/{TRAIN_SCRIPT}", + f"chmod +x {SM_DRIVERS_CONTAINER_PATH}/{TRAIN_SCRIPT} " + + f"&& {SM_DRIVERS_CONTAINER_PATH}/{TRAIN_SCRIPT}", ] diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 3040bef5f1..55ad44d81d 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -13,10 +13,58 @@ """Templates module.""" from __future__ import absolute_import +EXECUTE_BASE_COMMANDS = """ +CMD="{base_command}" +echo "Running command: $CMD" +eval $CMD +""" + +EXECUTE_PYTORCH_DRIVER = """ +echo "Running PyTorch training driver" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/pytorch_driver.py +""" + +EXECUTE_MPI_DRIVER = """ +echo "Running MPI training driver" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/mpi_driver.py +""" + TRAIN_SCRIPT_TEMPLATE = """ #!/bin/bash +set -e echo "Starting training script" +handle_error() {{ + EXIT_STATUS=$? + echo "An error occurred with exit code $EXIT_STATUS" + if [ ! -s /opt/ml/output/failure ]; then + echo "Training Execution failed. For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. +TrainingJob - $TRAINING_JOB_NAME" >> /opt/ml/output/failure + fi + exit $EXIT_STATUS +}} + +check_python() {{ + if command -v python3 &>/dev/null; then + SM_PYTHON_CMD="python3" + SM_PIP_CMD="pip3" + echo "Found python3" + elif command -v python &>/dev/null; then + SM_PYTHON_CMD="python" + SM_PIP_CMD="pip" + echo "Found python" + else + echo "Python may not be installed" + return 1 + fi +}} + +trap 'handle_error' ERR + +check_python + +$SM_PYTHON_CMD --version + echo "/opt/ml/input/config/resourceconfig.json:" cat /opt/ml/input/config/resourceconfig.json echo @@ -29,27 +77,17 @@ cat /opt/ml/input/config/hyperparameters.json echo +echo "/opt/ml/input/data/sm_drivers/sourcecodeconfig.json" +cat /opt/ml/input/data/sm_drivers/sourcecodeconfig.json +echo + echo "Setting up environment variables" -python /opt/ml/input/data/sm_code/environment.py -source /opt/ml/input/data/sm_code/sm_training.env +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/scripts/environment.py +source /opt/ml/input/data/sm_drivers/scripts/sm_training.env -python --version {working_dir} {install_requirements} -CMD="{command}" -echo "Running command: $CMD" -eval $CMD -EXIT_STATUS=$? +{execute_driver} -if [ $EXIT_STATUS -ne 0 ]; then - echo "Command failed with exit status $EXIT_STATUS" - if [ ! -s /opt/ml/output/failure ]; then - echo "Command failed with exit code $EXIT_STATUS. -For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. -TrainingJob - $TRAINING_JOB_NAME" >> /opt/ml/output/failure - fi - exit $EXIT_STATUS -else - echo "Command succeeded" -fi +echo "Training Container Execution Completed" """ diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 1e2fbc4ed6..eda9b19bca 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -9,7 +9,7 @@ "import sys, os\n", "\n", "# Get the absolute path of the root directory\n", - "root_dir = os.path.abspath(os.path.join(os.getcwd(), '../../..'))\n", + "root_dir = os.path.abspath(os.path.join(os.getcwd(), \"../../..\"))\n", "sys.path.insert(0, root_dir)" ] }, @@ -17,11 +17,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Simple Case Minimally Setup ModelTrainer and Execute Commands\n", - "\n", - "1. No longer have an issue about API Limit\n", - "2. Maintain contract with container (no secret handshake)\n", - "3. Decouple Training Toolkit" + "## Simple Case Minimally Setup ModelTrainer and Execute Commands" ] }, { @@ -41,7 +37,7 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code_config=source_code_config,\n", - ")\n" + ")" ] }, { @@ -57,17 +53,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Simple Script Mode Case - 1\n", - "\n", - "1. No more code smell of user having to use /opt/ml/input/data/code/custom_script.py\n", - "```python\n", - "source_code_config = SourceCodeConfig(\n", - " source_dir=\"script-mode-basic\",\n", - " command=\"python /opt/ml/input/data/code/custom_script.py\",\n", - ")\n", - "```\n", - "\n", - "2. No more risk of API Limit being reached" + "Successful Run - https://tiny.amazon.com/3maxeyb/IsenLink" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Script Mode Case - 1" ] }, { @@ -76,8 +69,11 @@ "metadata": {}, "outputs": [], "source": [ + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", + "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", + "\n", "source_code_config = SourceCodeConfig(\n", " source_dir=\"basic-script-mode\",\n", " command=\"python custom_script.py\",\n", @@ -86,16 +82,16 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code_config=source_code_config,\n", - ")\n" + ")\n", + "\n", + "model_trainer.train()" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "model_trainer.train()" + "Successful Run - https://tiny.amazon.com/6uy7pmpj/IsenLink" ] }, { @@ -134,6 +130,13 @@ "model_trainer.train()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/7n4n4ogr/IsenLink" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -159,7 +162,7 @@ "access_token = os.environ.get(\"HF_TOKEN\", \"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\")\n", "model_id = \"meta-llama/Llama-2-7b-hf\"\n", "\n", - "dataset_name = \"tatsu-lab/alpaca\"\n" + "dataset_name = \"tatsu-lab/alpaca\"" ] }, { @@ -176,18 +179,18 @@ "outputs": [], "source": [ "from datasets import load_dataset\n", - "from transformers import AutoTokenizer \n", + "from transformers import AutoTokenizer\n", "\n", - "from huggingface_hub.hf_api import HfFolder;\n", + "from huggingface_hub.hf_api import HfFolder\n", "\n", - "# Load Tokenizer \n", + "# Load Tokenizer\n", "tokenizer = AutoTokenizer.from_pretrained(model_id, access_token=access_token)\n", "\n", "\n", "# Load dataset from huggingface.co\n", "dataset = load_dataset(dataset_name)\n", "\n", - "dataset = dataset.shuffle(seed=42)\n" + "dataset = dataset.shuffle(seed=42)" ] }, { @@ -197,15 +200,9 @@ "outputs": [], "source": [ "if \"validation\" not in dataset.keys():\n", - " dataset[\"validation\"] = load_dataset(\n", - " dataset_name,\n", - " split=\"train[:1%]\"\n", - " )\n", + " dataset[\"validation\"] = load_dataset(dataset_name, split=\"train[:1%]\")\n", "\n", - " dataset[\"train\"] = load_dataset(\n", - " dataset_name,\n", - " split=\"train[1%:]\"\n", - " )" + " dataset[\"train\"] = load_dataset(dataset_name, split=\"train[1%:]\")" ] }, { @@ -224,26 +221,30 @@ "from itertools import chain\n", "from functools import partial\n", "\n", - "def group_texts(examples,block_size = 2048):\n", - " # Concatenate all texts.\n", - " concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()}\n", - " total_length = len(concatenated_examples[list(examples.keys())[0]])\n", - " # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can\n", - " # customize this part to your needs.\n", - " if total_length >= block_size:\n", - " total_length = (total_length // block_size) * block_size\n", - " # Split by chunks of max_len.\n", - " result = {\n", - " k: [t[i : i + block_size] for i in range(0, total_length, block_size)]\n", - " for k, t in concatenated_examples.items()\n", - " }\n", - " result[\"labels\"] = result[\"input_ids\"].copy()\n", - " return result\n", + "\n", + "def group_texts(examples, block_size=2048):\n", + " # Concatenate all texts.\n", + " concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()}\n", + " total_length = len(concatenated_examples[list(examples.keys())[0]])\n", + " # We drop the small remainder, we could add padding if the model supported it instead of this drop, you can\n", + " # customize this part to your needs.\n", + " if total_length >= block_size:\n", + " total_length = (total_length // block_size) * block_size\n", + " # Split by chunks of max_len.\n", + " result = {\n", + " k: [t[i : i + block_size] for i in range(0, total_length, block_size)]\n", + " for k, t in concatenated_examples.items()\n", + " }\n", + " result[\"labels\"] = result[\"input_ids\"].copy()\n", + " return result\n", + "\n", "\n", "column_names = dataset[\"train\"].column_names\n", "\n", "lm_dataset = dataset.map(\n", - " lambda sample: tokenizer(sample[\"text\"],return_token_type_ids=False), batched=True, remove_columns=list(column_names)\n", + " lambda sample: tokenizer(sample[\"text\"], return_token_type_ids=False),\n", + " batched=True,\n", + " remove_columns=list(column_names),\n", ").map(\n", " partial(group_texts, block_size=2048),\n", " batched=True,\n", @@ -263,9 +264,9 @@ "metadata": {}, "outputs": [], "source": [ - "#save data locally\n", + "# save data locally\n", "\n", - "training_input_path = f'distributed-training/processed/data/'\n", + "training_input_path = f\"distributed-training/processed/data/\"\n", "lm_dataset.save_to_disk(training_input_path)\n", "\n", "print(f\"Saved data to: {training_input_path}\")" @@ -286,16 +287,16 @@ "source": [ "from sagemaker.modules.train.model_trainer import ModelTrainer\n", "from sagemaker.modules.configs import ResourceConfig, SourceCodeConfig\n", + "from sagemaker import image_uris\n", "\n", "env = {}\n", - "env['FI_PROVIDER'] = 'efa'\n", - "env['NCCL_PROTO'] = 'simple'\n", - "env['NCCL_SOCKET_IFNAME'] = \"eth0\"\n", - "env['NCCL_IB_DISABLE'] = \"1\"\n", - "env['NCCL_DEBUG'] = \"WARN\"\n", - "env['FI_EFA_USE_DEVICE_RDMA'] = '1'\n", - "env['RDMAV_FORK_SAFE'] = '1'\n", - "\n", + "env[\"FI_PROVIDER\"] = \"efa\"\n", + "env[\"NCCL_PROTO\"] = \"simple\"\n", + "env[\"NCCL_SOCKET_IFNAME\"] = \"eth0\"\n", + "env[\"NCCL_IB_DISABLE\"] = \"1\"\n", + "env[\"NCCL_DEBUG\"] = \"WARN\"\n", + "env[\"FI_EFA_USE_DEVICE_RDMA\"] = \"1\"\n", + "env[\"RDMAV_FORK_SAFE\"] = \"1\"\n", "\n", "resource_config = ResourceConfig(\n", " instance_count=2,\n", @@ -303,21 +304,28 @@ " volume_size_in_gb=96,\n", ")\n", "\n", - "hugging_face_image = \"63104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", - "\n", - "hyper_parameters={\n", - " 'dataset_path': '/opt/ml/input/data/dataset',\n", - " 'epochs': 1,\n", - " 'max_steps':100,\n", - " 'fsdp': '\"full_shard auto_wrap\"',\n", - " 'fsdp_transformer_layer_cls_to_wrap': \"LlamaDecoderLayer\",\n", - " 'gradient_checkpointing': True,\n", - " 'optimizer': \"adamw_torch\",\n", - " 'per_device_train_batch_size': 1,\n", - " 'model_id': model_id,\n", - " 'access_token': access_token\n", - "}\n", - "\n", + "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", + "\n", + "hyper_parameters = {\n", + " \"dataset_path\": \"/opt/ml/input/data/dataset\",\n", + " \"epochs\": 1,\n", + " \"max_steps\": 100,\n", + " \"fsdp\": \"full_shard auto_wrap\",\n", + " \"fsdp_transformer_layer_cls_to_wrap\": \"LlamaDecoderLayer\",\n", + " \"gradient_checkpointing\": True,\n", + " \"optimizer\": \"adamw_torch\",\n", + " \"per_device_train_batch_size\": 1,\n", + " \"model_id\": model_id,\n", + " \"access_token\": access_token,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ "source_code_config = SourceCodeConfig(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", @@ -329,14 +337,13 @@ " run_clm_no_trainer.py\",\n", ")\n", "\n", - "\n", "model_trainer = ModelTrainer(\n", " training_image=hugging_face_image,\n", " resource_config=resource_config,\n", " environment=env,\n", " hyper_parameters=hyper_parameters,\n", " source_code_config=source_code_config,\n", - ")\n" + ")" ] }, { @@ -345,11 +352,90 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train(\n", - " input_data_channels={\"dataset\": training_input_path}\n", + "model_trainer.train(input_data_channels={\"dataset\": training_input_path})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/10wljn1yu/IsenLink" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.configs import TorchDistributionConfig, ResourceConfig, SourceCodeConfig\n", + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "from sagemaker import image_uris\n", + "\n", + "env = {}\n", + "env[\"NCCL_IB_DISABLE\"] = \"1\"\n", + "env[\"NCCL_DEBUG\"] = \"WARN\"\n", + "\n", + "resource_config = ResourceConfig(\n", + " instance_count=2,\n", + " instance_type=\"ml.p4d.24xlarge\",\n", + " volume_size_in_gb=96,\n", + ")\n", + "\n", + "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", + "\n", + "hyper_parameters = {\n", + " \"dataset_path\": \"/opt/ml/input/data/dataset\",\n", + " \"epochs\": 1,\n", + " \"max_steps\": 49,\n", + " \"fsdp\": \"full_shard auto_wrap\",\n", + " \"fsdp_transformer_layer_cls_to_wrap\": \"LlamaDecoderLayer\",\n", + " \"gradient_checkpointing\": True,\n", + " \"optimizer\": \"adamw_torch\",\n", + " \"per_device_train_batch_size\": 1,\n", + " \"model_id\": model_id,\n", + " \"access_token\": access_token,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "source_code_config = SourceCodeConfig(\n", + " source_dir=\"distributed-training/scripts\",\n", + " requirements=\"requirements.txt\",\n", + " entry_script=\"run_clm_no_trainer.py\",\n", + " distribution=TorchDistributionConfig()\n", + ")\n", + "\n", + "model_trainer = ModelTrainer(\n", + " training_image=hugging_face_image,\n", + " resource_config=resource_config,\n", + " environment=env,\n", + " hyper_parameters=hyper_parameters,\n", + " source_code_config=source_code_config,\n", ")" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_trainer.train(input_data_channels={\"dataset\": training_input_path})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/1if17nhk1/IsenLink" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -393,7 +479,7 @@ "model_trainer = ModelTrainer(\n", " training_image=python_ecr_image,\n", " source_code_config=source_code_config,\n", - ")\n" + ")" ] }, { diff --git a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py index 7a06c2d8b8..945267cef6 100644 --- a/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py +++ b/src/sagemaker/modules/testing_notebooks/distributed-training/scripts/run_clm_no_trainer.py @@ -190,7 +190,6 @@ def training_function(args): from huggingface_hub.hf_api import HfFolder HfFolder.save_token(args.access_token) - print(f"Loading dataset from {args.dataset_path}") dataset = load_from_disk(f"file://{args.dataset_path}") diff --git a/src/sagemaker/modules/train/container_drivers/__init__.py b/src/sagemaker/modules/train/container_drivers/__init__.py new file mode 100644 index 0000000000..18557a2eb5 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/__init__.py @@ -0,0 +1,14 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Sagemaker modules container_drivers directory.""" +from __future__ import absolute_import diff --git a/src/sagemaker/modules/train/container_drivers/mpi_driver.py b/src/sagemaker/modules/train/container_drivers/mpi_driver.py new file mode 100644 index 0000000000..989c1cf3d3 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/mpi_driver.py @@ -0,0 +1,100 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module is the entry point for the MPI driver script.""" +from __future__ import absolute_import + +import os +import json + +from utils import ( + logger, + read_source_code_config_json, + get_process_count, + execute_commands, + write_failure_file, + USER_CODE_PATH, +) +from mpi_utils import ( + start_sshd_daemon, + bootstrap_master_node, + bootstrap_worker_node, + get_mpirun_command, + write_status_file_to_workers, + write_env_vars_to_file, +) + + +def main(): + """Main function for the MPI driver script. + + The MPI Dirver is responsible for setting up the MPI environment, + generating the correct mpi commands, and launching the MPI job. + + Execution Lifecycle: + 1. Setup General Environment Variables at /etc/environment + 2. Start SSHD Daemon + 3. Bootstrap Worker Nodes + a. Wait to establish connection with Master Node + b. Wait for Master Node to write status file + 4. Bootstrap Master Node + a. Wait to establish connection with Worker Nodes + b. Generate MPI Command + c. Execute MPI Command with user script provided in `entry_script` + d. Write status file to Worker Nodes + 5. Exit + + """ + source_code_config = read_source_code_config_json() + distribution = source_code_config.get("distribution", {}) + sm_distributed_settings = distribution.get("smdistributed_settings", {}) + + sm_current_host = os.environ["SM_CURRENT_HOST"] + sm_hosts = json.loads(os.environ["SM_HOSTS"]) + sm_master_addr = os.environ["SM_MASTER_ADDR"] + + write_env_vars_to_file() + start_sshd_daemon() + + if sm_current_host != sm_master_addr: + bootstrap_worker_node(sm_master_addr) + else: + worker_hosts = [host for host in sm_hosts if host != sm_master_addr] + bootstrap_master_node(worker_hosts) + + host_list = json.loads(os.environ["SM_HOSTS"]) + host_count = int(os.environ["SM_HOST_COUNT"]) + process_count = get_process_count(source_code_config) + + if process_count > 1: + host_list = ["{}:{}".format(host, process_count) for host in host_list] + + mpi_command = get_mpirun_command( + host_count=host_count, + host_list=host_list, + num_processes=process_count, + smdataparallel_enabled=sm_distributed_settings.get("enable_dataparallel", False), + smmodelparallel_enabled=sm_distributed_settings.get("enable_modelparallel", False), + additional_options=distribution.get("mpi_additional_options", []), + entry_script_path=os.path.join(USER_CODE_PATH, source_code_config["entry_script"]), + ) + + logger.info(f"Executing command: {mpi_command}") + exit_code, error_traceback = execute_commands(mpi_command) + if exit_code != 0: + write_failure_file(error_traceback) + + write_status_file_to_workers(worker_hosts) + + +if __name__ == "__main__": + main() diff --git a/src/sagemaker/modules/train/container_drivers/mpi_utils.py b/src/sagemaker/modules/train/container_drivers/mpi_utils.py new file mode 100644 index 0000000000..2c19986751 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/mpi_utils.py @@ -0,0 +1,294 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module provides mpi related utility functions for the container drivers.""" +from __future__ import absolute_import + +import os +import time +import subprocess +import json + +from typing import List + +from utils import logger, SM_EFA_NCCL_INSTANCES, SM_EFA_RDMA_INSTANCES, get_python_executable + +FINISHED_STATUS_FILE = "/tmp/done.algo-1" +DEFAULT_SSH_PORT = 22 + + +def _write_status_file(host: str, status_file: str) -> bool: + """Write the status file to the provided host.""" + try: + logger.info(f"Start writing mpirun finished status to {host}") + subprocess.run( + ["ssh", host, "touch", f"{status_file}"], + capture_output=True, + text=True, + check=True, + ) + logger.info("Finished writing status file") + return True + except subprocess.CalledProcessError: + logger.info(f"Cannot connect to {host}") + return False + + +def write_status_file_to_workers(worker_hosts: List[str], status_file: str = FINISHED_STATUS_FILE): + """Write the status file to all worker nodes.""" + for worker in worker_hosts: + retry = 0 + while not _write_status_file(worker, status_file): + time.sleep(5) + retry += 1 + if retry > 5: + raise TimeoutError(f"Timed out waiting for {worker} to be reachable.") + logger.info(f"Retrying to write status file to {worker}") + + +def _wait_for_status_file(status_file: str): + """Wait for the status file to be created.""" + logger.info(f"Waiting for status file {status_file}") + while not os.path.exists(status_file): + time.sleep(30) + logger.info(f"Found status file {status_file}") + + +def start_sshd_daemon(): + """Start the SSH daemon on the current node.""" + sshd_executable = "/usr/sbin/sshd" + + if not os.path.exists(sshd_executable): + raise RuntimeError("SSH daemon not found.") + + # Start the sshd in daemon mode (-D) + subprocess.Popen([sshd_executable, "-D"]) + logger.info("Started SSH daemon.") + + +def _can_connect(host: str, port: int = DEFAULT_SSH_PORT) -> bool: + """Check if the connection to the provided host and port is possible.""" + try: + import paramiko + + logger.debug("Testing connection to host %s", host) + client = paramiko.SSHClient() + client.load_system_host_keys() + client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) + client.connect(host, port=port) + client.close() + logger.info("Can connect to host %s", host) + return True + except Exception as e: # pylint: disable=W0703 + logger.info("Cannot connect to host %s", host) + logger.debug(f"Connection failed with exception: {e}") + return False + + +def _wait_for_workers(worker_hosts: List[str], port: int = DEFAULT_SSH_PORT, timeout: int = 300): + """Master node waits until it can connect to all worker nodes.""" + start_time = time.time() + if not worker_hosts: + logger.info("No worker nodes to connect to.") + return + + while True: + logger.info("Master is attempting to connect to all workers...") + all_workers_connected = all(_can_connect(worker, port) for worker in worker_hosts) + + if all_workers_connected: + logger.info("Master can connect to all worker nodes.") + break + if time.time() - start_time > timeout: + raise TimeoutError("Timed out waiting for workers to be reachable.") + + time.sleep(5) # Wait for 5 seconds before trying again + + +def _wait_for_master(master_host: str, port: int = DEFAULT_SSH_PORT, timeout: int = 300): + """Worker nodes wait until they can connect to the master node.""" + start_time = time.time() + while True: + logger.info(f"Worker is attempting to connect to the master node {master_host}...") + if _can_connect(master_host, port): + logger.info(f"Worker can connect to master node {master_host}.") + break + if time.time() - start_time > timeout: + raise TimeoutError(f"Timed out waiting for master {master_host} to be reachable.") + + time.sleep(5) # Wait for 5 seconds before trying again + + +def bootstrap_worker_node(master_host: str, status_file: str = FINISHED_STATUS_FILE): + """Bootstrap the worker nodes.""" + logger.info("Bootstrapping worker node...") + _wait_for_master(master_host) + _wait_for_status_file(status_file) + + +def bootstrap_master_node(worker_hosts: List[str]): + """Bootstrap the master node.""" + logger.info("Bootstrapping master node...") + _wait_for_workers(worker_hosts) + + +def validate_smddprun() -> bool: + """Whether smddprun is installed. + + Returns: + bool: True if installed + """ + try: + output = subprocess.run( + ["which", "smddprun"], + capture_output=True, + text=True, + check=True, + ) + return output.stdout != "" + except subprocess.CalledProcessError: + return False + + +def validate_smddpmprun() -> bool: + """Whether smddpmprun is installed. + + Returns: + bool: True if both are installed + """ + try: + output = subprocess.run( + ["which", "smddpmprun"], + capture_output=True, + text=True, + check=True, + ) + return output.stdout != "" + except subprocess.CalledProcessError: + return False + + +def write_env_vars_to_file(): + """Write environment variables to /etc/environment file.""" + with open("/etc/environment", "a") as f: + for name in os.environ: + f.write("{}={}\n".format(name, os.environ.get(name))) + + +def get_mpirun_command( + host_count: int, + host_list: List[str], + num_processes: int, + smdataparallel_enabled: bool, + smmodelparallel_enabled: bool, + additional_options: List[str], + entry_script_path: str, +): + """Fetch mpi command""" + network_interface_name = os.environ.get("SM_NETWORK_INTERFACE_NAME", "eth0") + + mpirun_command = [ + "mpirun", + "--host", + ",".join(host_list), + "-np", + str(num_processes), + "--allow-run-as-root", + "--tag-output", + "--oversubscribe", + "-mca", + "btl_tcp_if_include", + network_interface_name, + "-mca", + "oob_tcp_if_include", + network_interface_name, + "-mca", + "plm_rsh_no_tree_spawn", + "1", + "-mca", + "pml", + "ob1", + "-mca", + "btl", + "^openib", + "-mca", + "orte_abort_on_non_zero_status", + "1", + "-mca", + "btl_vader_single_copy_mechanism", + "none", + "-mca", + "plm_rsh_num_concurrent", + str(host_count), + "-x", + "NCCL_SOCKET_IFNAME=%s" % network_interface_name, + "-x", + "LD_LIBRARY_PATH", + "-x", + "PATH", + ] + + if additional_options: + mpirun_command.extend(additional_options) + + instance_type = os.environ["SM_CURRENT_INSTANCE_TYPE"] + # EFA settings + if instance_type in SM_EFA_NCCL_INSTANCES: + # Use simple protocol to handle the out-of-order data delivery from EFA + mpirun_command.extend(["-x", "NCCL_PROTO=simple"]) + + if instance_type in SM_EFA_RDMA_INSTANCES: + # Use EFA's RDMA functionality for one-sided and two-sided transfer + mpirun_command.extend(["-x", "FI_EFA_USE_DEVICE_RDMA=1"]) + + for credential in [ + "AWS_ACCESS_KEY_ID", + "AWS_SECRET_ACCESS_KEY", + "AWS_SESSION_TOKEN", + ]: + if credential in os.environ: + mpirun_command.extend(["-x", credential]) + + if smdataparallel_enabled: + if host_count == 1: + smdataparallel_flag = "SMDATAPARALLEL_USE_HOMOGENEOUS=1" + mpirun_command.extend(["-x", smdataparallel_flag]) + else: + smdataparallel_flag = "SMDATAPARALLEL_USE_SINGLENODE=1" + smdataparallel_server_port = 7592 + smdataparallel_server_addr = "algo-1" + + mpirun_command.extend(["-x", smdataparallel_flag]) + mpirun_command.extend( + [ + "-x", + f"SMDATAPARALLEL_SERVER_ADDR={smdataparallel_server_addr}", + "-x", + f"SMDATAPARALLEL_SERVER_PORT={smdataparallel_server_port}", + "-x", + f"SAGEMAKER_INSTANCE_TYPE={instance_type}", + ] + ) + + if validate_smddprun(): + mpirun_command.extend(["smddprun"]) + + if smmodelparallel_enabled: + mp_parameters = json.loads(os.environ.get("SM_HP_MP_PARAMETERS", "{}")) + ddp_dist_backend = mp_parameters.get("ddp_dist_backend", "auto") + if ddp_dist_backend == "auto": + if validate_smddpmprun(): + mpirun_command.extend(["smddpmprun", "-i", instance_type, "--allow-bypass"]) + + mpirun_command.extend([get_python_executable()]) + mpirun_command.extend(["-m", "mpi4py", entry_script_path]) + return mpirun_command diff --git a/src/sagemaker/modules/train/container_drivers/pytorch_driver.py b/src/sagemaker/modules/train/container_drivers/pytorch_driver.py new file mode 100644 index 0000000000..b5d72fbe76 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/pytorch_driver.py @@ -0,0 +1,117 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module is the entry point for the PyTorch driver script.""" +from __future__ import absolute_import + +import os + +from typing import List, Tuple + +from utils import ( + logger, + read_source_code_config_json, + get_process_count, + get_python_executable, + SM_EFA_NCCL_INSTANCES, + SM_EFA_RDMA_INSTANCES, + execute_commands, + write_failure_file, + USER_CODE_PATH, +) + + +def pytorch_version() -> Tuple[int, int]: + """Get the PyTorch version as a tuple of integers.""" + import torch + + return tuple(map(int, torch.__version__.split(".")[:2])) + + +def get_base_pytorch_command() -> List[str]: + """Get the base Torch Distributed launcher to execute""" + if pytorch_version() >= (1, 9): + return ["torchrun"] + return [f"{get_python_executable()}", "-m", "torch.distributed.launch"] + + +def setup_env(): + """Setup the environment variables for PyTorch distributed training""" + instance_type = os.environ["SM_CURRENT_INSTANCE_TYPE"] + network_interface_name = os.environ.get("SM_NETWORK_INTERFACE_NAME", "eth0") + if instance_type in SM_EFA_NCCL_INSTANCES: + # Enable EFA use + os.environ["FI_PROVIDER"] = "efa" + if instance_type in SM_EFA_RDMA_INSTANCES: + # Use EFA's RDMA functionality for one-sided and two-sided transfer + os.environ["FI_EFA_USE_DEVICE_RDMA"] = "1" + os.environ["RDMAV_FORK_SAFE"] = "1" + os.environ["NCCL_SOCKET_IFNAME"] = str(network_interface_name) + os.environ["NCCL_PROTO"] = "simple" + + +def create_commands(): + """Create the Torch Distributed command to execute""" + source_code_config = read_source_code_config_json() + + process_count = get_process_count(source_code_config) + host_count = int(os.environ["SM_HOST_COUNT"]) + + torch_cmd = [] + if os.environ.get("RUN_NEURON_PARALLEL_COMPILE") == "1": + torch_cmd.append("neuron_parallel_compile") + + torch_cmd.extend(get_base_pytorch_command()) + torch_cmd.extend( + [ + f"--nnodes={host_count}", + f"--nproc_per_node={process_count}", + ] + ) + + # If more than one node is used, add node rank information + if int(host_count) > 1: + torch_cmd.extend( + [ + f"--master_addr={os.environ['SM_MASTER_ADDR']}", + f"--master_port={os.environ['SM_MASTER_PORT']}", + f"--node_rank={os.environ['SM_CURRENT_HOST_RANK']}", + ] + ) + + torch_cmd.extend([os.path.join(USER_CODE_PATH, source_code_config["entry_script"])]) + return torch_cmd + + +def main(): + """Main function to execute the PyTorch distributed training script. + + This function sets some environment variables and executes the PyTorch + distributed training script. + + Execution Lifecycle: + 1. Setup Environment Variables for PyTorch Distributed Training + 2. Create Torch Distributed Command + 3. Execute Torch Distributed Command with user script provided in `entry_script` + 4. Exit + + """ + setup_env() + torch_cmd = create_commands() + logger.info(f"Executing command: {torch_cmd}") + exit_code, traceback = execute_commands(torch_cmd) + if exit_code != 0: + write_failure_file(traceback) + + +if __name__ == "__main__": + main() diff --git a/src/sagemaker/modules/train/container_drivers/scripts/__init__.py b/src/sagemaker/modules/train/container_drivers/scripts/__init__.py new file mode 100644 index 0000000000..1abbce4067 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/scripts/__init__.py @@ -0,0 +1,14 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Sagemaker modules scripts directory.""" +from __future__ import absolute_import diff --git a/src/sagemaker/modules/scripts/environment.py b/src/sagemaker/modules/train/container_drivers/scripts/environment.py similarity index 95% rename from src/sagemaker/modules/scripts/environment.py rename to src/sagemaker/modules/train/container_drivers/scripts/environment.py index 2ccdd92c82..bb6ff634aa 100644 --- a/src/sagemaker/modules/scripts/environment.py +++ b/src/sagemaker/modules/train/container_drivers/scripts/environment.py @@ -45,10 +45,10 @@ INPUT_DATA_CONFIG = f"{SM_INPUT_CONFIG_DIR}/inputdataconfig.json" HYPERPARAMETERS_CONFIG = f"{SM_INPUT_CONFIG_DIR}/hyperparameters.json" -ENV_OUTPUT_FILE = "sm_training.env" +ENV_OUTPUT_FILE = "/opt/ml/input/data/sm_drivers/scripts/sm_training.env" -def num_cpus(): +def num_cpus() -> int: """Return the number of CPUs available in the current container. Returns: @@ -57,7 +57,7 @@ def num_cpus(): return multiprocessing.cpu_count() -def num_gpus(): +def num_gpus() -> int: """Return the number of GPUs available in the current container. Returns: @@ -72,7 +72,7 @@ def num_gpus(): return 0 -def num_neurons(): +def num_neurons() -> int: """Return the number of neuron cores available in the current container. Returns: @@ -111,7 +111,7 @@ def set_env( resource_config: Dict[str, Any], input_data_config: Dict[str, Any], hyperparameters_config: Dict[str, Any], - output_file: str = "sm_training.env", + output_file: str = ENV_OUTPUT_FILE, ): """Set environment variables for the training job container. @@ -192,12 +192,7 @@ def set_env( "output_data_dir": env_vars["SM_OUTPUT_DATA_DIR"], "resource_config": env_vars["SM_RESOURCE_CONFIG"], } - try: - cur_dir = os.path.dirname(os.path.abspath(__file__)) - except NameError: - # Fallback to current working directory - cur_dir = os.getcwd() - with open(os.path.join(cur_dir, output_file), "w") as f: + with open(output_file, "w") as f: for key, value in env_vars.items(): if isinstance(value, (list, dict)): f.write(f"export {key}='{json.dumps(value)}'\n") diff --git a/src/sagemaker/modules/scripts/intelligent_params.py b/src/sagemaker/modules/train/container_drivers/scripts/intelligent_params.py similarity index 100% rename from src/sagemaker/modules/scripts/intelligent_params.py rename to src/sagemaker/modules/train/container_drivers/scripts/intelligent_params.py diff --git a/src/sagemaker/modules/train/container_drivers/utils.py b/src/sagemaker/modules/train/container_drivers/utils.py new file mode 100644 index 0000000000..ae05df8994 --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/utils.py @@ -0,0 +1,124 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module provides utility functions for the container drivers.""" +from __future__ import absolute_import + +import os +import logging +import sys +import subprocess +import traceback +import json + +from typing import List, Dict, Any, Tuple, IO + +# Initialize logger +SM_LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", 20) +logger = logging.getLogger(__name__) +console_handler = logging.StreamHandler(sys.stdout) +logger.addHandler(console_handler) +logger.setLevel(int(SM_LOG_LEVEL)) + +FAILURE_FILE = "/opt/ml/output/failure" +DEFAULT_FAILURE_MESSAGE = f""" +Training Execution failed. +For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. +TrainingJob - {os.environ['TRAINING_JOB_NAME']} +""" + +USER_CODE_PATH = "/opt/ml/input/data/code" +SOURCE_CODE_CONFIG_JSON = "/opt/ml/input/data/sm_code/sourcecodeconfig.json" + +SM_EFA_NCCL_INSTANCES = [ + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g5.48xlarge", + "ml.p3dn.24xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.p5.48xlarge", + "ml.trn1.32xlarge", +] + +SM_EFA_RDMA_INSTANCES = [ + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.trn1.32xlarge", +] + + +def write_failure_file(message: str = DEFAULT_FAILURE_MESSAGE): + """Write a failure file with the message.""" + if not os.path.exists(FAILURE_FILE): + with open(FAILURE_FILE, "w") as f: + f.write(message) + + +def read_source_code_config_json(source_code_config_file: Dict[str, Any] = SOURCE_CODE_CONFIG_JSON): + """Read the source code config json file.""" + with open(source_code_config_file, "r") as f: + distribution_config = json.load(f) + return distribution_config + + +def get_process_count(source_code_config: Dict[str, Any]) -> int: + """Get the number of processes to run on each node in the training job.""" + if source_code_config.get("distribution", {}).get("process_count_per_node") is not None: + return int(source_code_config["distribution"]["process_count_per_node"]) + if os.environ.get("SM_NUM_GPUS") is not None: + return int(os.environ["SM_NUM_GPUS"]) + if os.environ.get("SM_NUM_NEURONS") is not None: + return int(os.environ["SM_NUM_NEURONS"]) + return 1 # Default to 1 process per node + + +def get_python_executable() -> str: + """Get the python executable path.""" + return sys.executable + + +def log_subprocess_output(pipe: IO[bytes]): + """Log the output from the subprocess.""" + for line in iter(pipe.readline, b""): + logger.info(line.decode("utf-8").strip()) + + +def execute_commands(commands: List[str]) -> Tuple[int, str]: + """Execute the provided commands and return exit code with failure traceback if any.""" + try: + process = subprocess.Popen( + commands, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + ) + with process.stdout: + log_subprocess_output(process.stdout) + exitcode = process.wait() + if exitcode != 0: + raise subprocess.CalledProcessError(exitcode, commands) + return exitcode, "" + except subprocess.CalledProcessError as e: + # Capture the traceback in case of failure + error_traceback = traceback.format_exc() + print(f"Command failed with exit code {e.returncode}. Traceback: {error_traceback}") + return e.returncode, error_traceback + + +def is_worker_node() -> bool: + """Check if the current node is a worker node.""" + return os.environ.get("SM_CURRENT_HOST") != os.environ.get("SM_MASTER_ADDR") + + +def is_master_node() -> bool: + """Check if the current node is the master node.""" + return os.environ.get("SM_CURRENT_HOST") == os.environ.get("SM_MASTER_ADDR") diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 56dc7d96e9..12a288e770 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -14,6 +14,7 @@ from __future__ import absolute_import import os +import json from typing import Optional, List, Union, Dict, Any from pydantic import BaseModel, ConfigDict @@ -22,17 +23,21 @@ from sagemaker_core.shapes import AlgorithmSpecification from sagemaker import get_execution_role, Session +from sagemaker.fw_utils import validate_mp_config from sagemaker.modules.configs import ( ResourceConfig, StoppingCondition, OutputDataConfig, SourceCodeConfig, + MPIDistributionConfig, + TorchDistributionConfig, TrainingImageConfig, Channel, DataSource, S3DataSource, FileSystemDataSource, VpcConfig, + SMDistributedSettings, ) from sagemaker.modules.utils import ( _get_repo_name_from_image, @@ -43,13 +48,21 @@ from sagemaker.modules.types import DataSourceType from sagemaker.modules.constants import ( DEFAULT_INSTANCE_TYPE, - SOURCE_CODE_CONTAINER_PATH, - SM_CODE_LOCAL_PATH, + SM_CODE, + SM_CODE_CONTAINER_PATH, + SM_DRIVERS, + SM_DRIVERS_LOCAL_PATH, TRAIN_SCRIPT, DEFAULT_CONTAINER_ENTRYPOINT, DEFAULT_CONTAINER_ARGUMENTS, + SOURCE_CODE_CONFIG_JSON, +) +from sagemaker.modules.templates import ( + TRAIN_SCRIPT_TEMPLATE, + EXECUTE_BASE_COMMANDS, + EXECUTE_MPI_DRIVER, + EXECUTE_PYTORCH_DRIVER, ) -from sagemaker.modules.templates import TRAIN_SCRIPT_TEMPLATE from sagemaker.modules import logger @@ -87,6 +100,12 @@ class ModelTrainer(BaseModel): source_code_config (Optional[SourceCodeConfig]): The source code configuration. This is used to configure the source code for running the training job. + distribution_config (Optional[Union[ + MPIDistributionConfig, TorchDistributionConfig + ]]): + The distribution settings for the training job. This is used to configure + a distributed training job. If specifed, a `source_code_config` must also + be provided. algorithm_name (Optional[str]): The SageMaker marketplace algorithm name/arn to use for the training job. algorithm_name cannot be specified if training_image is specified. @@ -119,6 +138,7 @@ class ModelTrainer(BaseModel): output_data_config: Optional[OutputDataConfig] = None input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None source_code_config: Optional[SourceCodeConfig] = None + distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]] = None algorithm_name: Optional[str] = None training_image: Optional[str] = None training_input_mode: Optional[str] = "File" @@ -140,6 +160,36 @@ def _validate_training_image_and_algorithm_name( "Only one of 'training_image' or 'algorithm_name' must be provided.", ) + # TODO: Move to use pydantic model validators + def _validate_sm_distributed_settings( + self, sm_distributed_settings: Optional[SMDistributedSettings] + ): + """Validate the SM distributed settings.""" + if ( + sm_distributed_settings.enable_dataparallel + and sm_distributed_settings.enable_modelparallel + ): + raise ValueError( + "Both 'enable_dataparallel' and 'enable_modelparallel' cannot be True." + ) + if sm_distributed_settings.modelparallel_parameters: + validate_mp_config(sm_distributed_settings.modelparallel_parameters) + + def _validate_distribution_config( + self, + source_code_config: Optional[SourceCodeConfig], + distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]], + ): + """Validate the distribution configuration.""" + if distribution_config and not source_code_config.entry_script: + raise ValueError( + "Must provide 'entry_script' if 'distribution' " + + "is provided in 'source_code_config'.", + ) + if distribution_config and distribution_config.smdistributed_settings: + self._validate_sm_distributed_settings(distribution_config.smdistributed_settings) + + # TODO: Move to use pydantic model validators def _validate_source_code_config(self, source_code_config: Optional[SourceCodeConfig]): """Validate the source code configuration.""" if source_code_config: @@ -177,9 +227,9 @@ def _validate_source_code_config(self, source_code_config: Optional[SourceCodeCo def model_post_init(self, __context: Any): """Post init method to perform custom validation and set default values.""" - self._validate_training_image_and_algorithm_name(self.training_image, self.algorithm_name) self._validate_source_code_config(self.source_code_config) + self._validate_distribution_config(self.source_code_config, self.distribution_config) if self.session is None: self.session = Session() @@ -261,33 +311,45 @@ def train( if self.input_data_channels: input_data_config = self._get_input_data_config(self.input_data_channels) + # Unfortunately, API requires hyperparameters to be strings + string_hyper_parameters = {} + if self.hyper_parameters: + for hyper_parameter, value in self.hyper_parameters.items(): + if isinstance(value, (dict, list)): + string_hyper_parameters[hyper_parameter] = json.dumps(value) + else: + string_hyper_parameters[hyper_parameter] = str(value) + container_entrypoint = None container_arguments = None if self.source_code_config: # If source code is provided, create a channel for the source code # The source code will be mounted at /opt/ml/input/data/code in the container - # and set as the working directory - working_dir = "" if self.source_code_config.source_dir: source_code_channel = self.create_input_data_channel( - "code", self.source_code_config.source_dir + SM_CODE, self.source_code_config.source_dir ) input_data_config.append(source_code_channel) - working_dir = SOURCE_CODE_CONTAINER_PATH - # Get the commands to execute in the training job container - # and prepare the train.sh script - commands = self._get_script_mode_command(self.source_code_config) self._prepare_train_script( - command=commands, - requirements=self.source_code_config.requirements, - working_dir=working_dir, + source_code_config=self.source_code_config, ) + if self.distribution_config: + smd_modelparallel_parameters = getattr( + self.distribution_config.smdistributed_settings, + "modelparallel_parameters", + None, + ) + if smd_modelparallel_parameters: + string_hyper_parameters["mp_parameters"] = json.dumps( + smd_modelparallel_parameters + ) + self._write_source_code_config_json(self.source_code_config) - # Create an input channel for scripts packaged by the sdk - sm_scripts_channel = self.create_input_data_channel("sm_code", SM_CODE_LOCAL_PATH) - input_data_config.append(sm_scripts_channel) + # Create an input channel for drivers packaged by the sdk + sm_drivers_channel = self.create_input_data_channel(SM_DRIVERS, SM_DRIVERS_LOCAL_PATH) + input_data_config.append(sm_drivers_channel) # If source_code_config is provided, we will always use # the default container entrypoint and arguments @@ -306,12 +368,6 @@ def train( container_arguments=container_arguments, ) - # Unfortunately, API requires hyperparameters to be strings - string_hyper_parameters = {} - if self.hyper_parameters: - for hyper_parameter, value in self.hyper_parameters.items(): - string_hyper_parameters[hyper_parameter] = str(value) - training_job = TrainingJob.create( session=self.session.boto_session, role_arn=self.role, @@ -406,64 +462,79 @@ def _get_input_data_config( for channel_name, data_source in input_data_channels.items() ] - def _get_script_mode_command(self, source_code_config: SourceCodeConfig) -> str: - """Get the command to execute in the training job container for script mode. + def _write_source_code_config_json(self, source_code_config: SourceCodeConfig): + """Write the source code configuration to a JSON file.""" + file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, SOURCE_CODE_CONFIG_JSON) + with open(file_path, "w") as f: + f.write(source_code_config.model_dump_json()) + + def _prepare_train_script( + self, + source_code_config: SourceCodeConfig, + distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]] = None, + ): + """Prepare the training script to be executed in the training job container. Args: source_code_config (SourceCodeConfig): The source code configuration. """ + + base_command = "" if source_code_config.command: if source_code_config.entry_script: logger.warning( "Both 'command' and 'entry_script' are provided in the SourceCodeConfig. " + "Defaulting to 'command'." ) - commands = source_code_config.command.split() - return " ".join(commands) + base_command = source_code_config.command.split() + base_command = " ".join(base_command) - assert ( + if ( source_code_config.entry_script - ), "Either 'command' or 'entry_script' must be provided." - - if source_code_config.entry_script.endswith(".py"): - return f"python {source_code_config.entry_script}" - if source_code_config.entry_script.endswith(".sh"): - return ( - f"chmod +x {source_code_config.entry_script} && " - f"bash {source_code_config.entry_script}" - ) - - raise ValueError( - f"Unsupported entry script: {source_code_config.entry_script}." - + "Only .py and .sh scripts are supported." - ) - - def _prepare_train_script( - self, command: str, requirements: Optional[str], working_dir: Optional[str] - ): - """Prepare the training script to be executed in the training job container. + and not source_code_config.command + and not source_code_config.distribution + ): + if source_code_config.entry_script.endswith(".py"): + base_command = f"$SM_PYTHON_CMD {source_code_config.entry_script}" + elif source_code_config.entry_script.endswith(".sh"): + base_command = ( + f"chmod +x {source_code_config.entry_script} && " + f"bash {source_code_config.entry_script}" + ) + else: + raise ValueError( + f"Unsupported entry script: {source_code_config.entry_script}." + + "Only .py and .sh scripts are supported." + ) - Args: - command (str): The command to execute in the training job container. - requirements (str): The path to the requirements file within the source code directory. - working_dir (str): The working directory for the training job container - """ install_requirements = "" - if requirements: + if source_code_config.requirements: install_requirements = "echo 'Installing requirements'\n" - install_requirements = f"pip install -r {requirements}" - - if working_dir: - working_dir = f"cd {working_dir}" + install_requirements = f"$SM_PIP_CMD install -r {source_code_config.requirements}" + + working_dir = "" + if source_code_config.source_dir: + working_dir = f"cd {SM_CODE_CONTAINER_PATH}" + + if base_command: + execute_driver = EXECUTE_BASE_COMMANDS.format(base_command=base_command) + elif distribution_config: + distribution_type = distribution_config._distribution_type + if distribution_type == "mpi": + execute_driver = EXECUTE_MPI_DRIVER + elif distribution_type == "torch_distributed": + execute_driver = EXECUTE_PYTORCH_DRIVER + else: + raise ValueError(f"Unsupported distribution type: {distribution_type}.") train_script = TRAIN_SCRIPT_TEMPLATE.format( working_dir=working_dir, install_requirements=install_requirements, - command=command, + execute_driver=execute_driver, ) - os.makedirs(SM_CODE_LOCAL_PATH, exist_ok=True) - with open(os.path.join(SM_CODE_LOCAL_PATH, TRAIN_SCRIPT), "w") as f: + os.makedirs(SM_DRIVERS_LOCAL_PATH, exist_ok=True) + with open(os.path.join(SM_DRIVERS_LOCAL_PATH, TRAIN_SCRIPT), "w") as f: f.write(train_script) def get_training_image_uri(self) -> str: diff --git a/tests/unit/sagemaker/modules/train/container_drivers/__init__.py b/tests/unit/sagemaker/modules/train/container_drivers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py new file mode 100644 index 0000000000..8dc6e330df --- /dev/null +++ b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py @@ -0,0 +1,134 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Enviornment Variable Script Unit Tests.""" +from __future__ import absolute_import + +import os + +from unittest.mock import patch + +from sagemaker.modules.train.container_drivers.scripts.environment import set_env + +RESOURCE_CONFIG = dict( + current_host="algo-1", + hosts=["algo-1", "algo-2", "algo-3"], + current_group_name="train1", + current_instance_type="ml.p3.16xlarge", + instance_groups=[ + dict( + instance_group_name="train1", + instance_type="ml.p3.16xlarge", + hosts=["algo-1", "algo-2"], + ), + dict( + instance_group_name="train2", + instance_type="ml.p3.8xlarge", + hosts=["algo-3"], + ), + ], + network_interface_name="eth0", +) + +INPUT_DATA_CONFIG = { + "train": { + "ContentType": "trainingContentType", + "TrainingInputMode": "File", + "S3DistributionType": "FullyReplicated", + "RecordWrapperType": "None", + }, + "validation": { + "TrainingInputMode": "File", + "S3DistributionType": "FullyReplicated", + "RecordWrapperType": "None", + }, +} + +USER_HYPERPARAMETERS = { + "batch_size": 32, + "learning_rate": 0.001, + "hosts": ["algo-1", "algo-2"], + "mp_parameters": { + "microbatches": 2, + "partitions": 2, + "pipeline": "interleaved", + "optimize": "memory", + "horovod": True, + }, +} + +OUTPUT_FILE = os.path.join(os.path.dirname(__file__), "sm_training.env") + +# flake8: noqa +EXPECTED_ENV = """ +export SM_MODEL_DIR='/opt/ml/model' +export SM_INPUT_DIR='/opt/ml/input' +export SM_INPUT_DATA_DIR='/opt/ml/input/data' +export SM_INPUT_CONFIG_DIR='/opt/ml/input/config' +export SM_OUTPUT_DIR='/opt/ml/output' +export SM_OUTPUT_FAILURE='/opt/ml/output/failure' +export SM_OUTPUT_DATA_DIR='/opt/ml/output/data' +export SM_LOG_LEVEL='20' +export SM_MASTER_ADDR='algo-1' +export SM_MASTER_PORT='7777' +export SM_CHANNEL_TRAIN='/opt/ml/input/data/train' +export SM_CHANNEL_VALIDATION='/opt/ml/input/data/validation' +export SM_CHANNELS='["train", "validation"]' +export SM_HPS='{"batch_size": 32, "learning_rate": 0.001, "hosts": ["algo-1", "algo-2"], "mp_parameters": {"microbatches": 2, "partitions": 2, "pipeline": "interleaved", "optimize": "memory", "horovod": true}}' +export SM_HP_BATCH_SIZE='32' +export SM_HP_LEARNING_RATE='0.001' +export SM_HP_HOSTS='["algo-1", "algo-2"]' +export SM_HP_MP_PARAMETERS='{"microbatches": 2, "partitions": 2, "pipeline": "interleaved", "optimize": "memory", "horovod": true}' +export SM_CURRENT_HOST='algo-1' +export SM_CURRENT_INSTANCE_TYPE='ml.p3.16xlarge' +export SM_HOSTS='["algo-1", "algo-2", "algo-3"]' +export SM_NETWORK_INTERFACE_NAME='eth0' +export SM_HOST_COUNT='3' +export SM_CURRENT_HOST_RANK='0' +export SM_NUM_CPUS='8' +export SM_NUM_GPUS='0' +export SM_NUM_NEURONS='0' +export SM_RESOURCE_CONFIG='{"current_host": "algo-1", "hosts": ["algo-1", "algo-2", "algo-3"], "current_group_name": "train1", "current_instance_type": "ml.p3.16xlarge", "instance_groups": [{"instance_group_name": "train1", "instance_type": "ml.p3.16xlarge", "hosts": ["algo-1", "algo-2"]}, {"instance_group_name": "train2", "instance_type": "ml.p3.8xlarge", "hosts": ["algo-3"]}], "network_interface_name": "eth0"}' +export SM_INPUT_DATA_CONFIG='{"train": {"ContentType": "trainingContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "validation": {"TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}}' +export SM_TRAINING_ENV='{"channel_input_dirs": {"train": "/opt/ml/input/data/train", "validation": "/opt/ml/input/data/validation"}, "current_host": "algo-1", "current_instance_type": "ml.p3.16xlarge", "hosts": ["algo-1", "algo-2", "algo-3"], "master_addr": "algo-1", "master_port": 7777, "hyperparameters": {"batch_size": 32, "learning_rate": 0.001, "hosts": ["algo-1", "algo-2"], "mp_parameters": {"microbatches": 2, "partitions": 2, "pipeline": "interleaved", "optimize": "memory", "horovod": true}}, "input_data_config": {"train": {"ContentType": "trainingContentType", "TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}, "validation": {"TrainingInputMode": "File", "S3DistributionType": "FullyReplicated", "RecordWrapperType": "None"}}, "input_config_dir": "/opt/ml/input/config", "input_data_dir": "/opt/ml/input/data", "input_dir": "/opt/ml/input", "job_name": "test-job", "log_level": 20, "model_dir": "/opt/ml/model", "network_interface_name": "eth0", "num_cpus": 8, "num_gpus": 0, "num_neurons": 0, "output_data_dir": "/opt/ml/output/data", "resource_config": {"current_host": "algo-1", "hosts": ["algo-1", "algo-2", "algo-3"], "current_group_name": "train1", "current_instance_type": "ml.p3.16xlarge", "instance_groups": [{"instance_group_name": "train1", "instance_type": "ml.p3.16xlarge", "hosts": ["algo-1", "algo-2"]}, {"instance_group_name": "train2", "instance_type": "ml.p3.8xlarge", "hosts": ["algo-3"]}], "network_interface_name": "eth0"}}' +""" + + +@patch("sagemaker.modules.train.container_drivers.scripts.environment.num_cpus", return_value=8) +@patch("sagemaker.modules.train.container_drivers.scripts.environment.num_gpus", return_value=0) +@patch("sagemaker.modules.train.container_drivers.scripts.environment.num_neurons", return_value=0) +def test_set_env(mock_num_cpus, mock_num_gpus, mock_num_neurons): + with patch.dict(os.environ, {"TRAINING_JOB_NAME": "test-job"}): + set_env( + resource_config=RESOURCE_CONFIG, + input_data_config=INPUT_DATA_CONFIG, + hyperparameters_config=USER_HYPERPARAMETERS, + output_file=OUTPUT_FILE, + ) + + mock_num_cpus.assert_called_once() + mock_num_gpus.assert_called_once() + mock_num_neurons.assert_called_once() + + with open(OUTPUT_FILE, "r") as f: + env_file = f.read().strip() + expected_env = _remove_extra_lines(EXPECTED_ENV) + env_file = _remove_extra_lines(env_file) + + assert env_file == expected_env + os.remove(OUTPUT_FILE) + assert not os.path.exists(OUTPUT_FILE) + + +def _remove_extra_lines(string): + """Removes extra blank lines from a string.""" + return "\n".join([line for line in string.splitlines() if line.strip()]) diff --git a/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_intelligent_params.py similarity index 97% rename from tests/unit/sagemaker/modules/scripts/test_intelligent_params.py rename to tests/unit/sagemaker/modules/train/container_drivers/scripts/test_intelligent_params.py index a9d3363ee5..13cc481fa5 100644 --- a/tests/unit/sagemaker/modules/scripts/test_intelligent_params.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_intelligent_params.py @@ -10,12 +10,12 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -"""Intelligent Parameter Tests.""" +"""Intelligent Parameter Unit Tests.""" from __future__ import absolute_import import os import pytest -from sagemaker.modules.scripts.intelligent_params import ( +from sagemaker.modules.train.container_drivers.scripts.intelligent_params import ( rewrite_file, rewrite_line, ) diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py b/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py new file mode 100644 index 0000000000..46e6af3108 --- /dev/null +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py @@ -0,0 +1,136 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""MPI Driver Unit Tests.""" +from __future__ import absolute_import + +import os +import sys + +from unittest.mock import patch, MagicMock + +sys.modules["utils"] = MagicMock() +sys.modules["mpi_utils"] = MagicMock() + +from sagemaker.modules.train.container_drivers import mpi_driver # noqa: E402 + + +DUMMY_MPI_COMMAND = [ + "mpirun", + "--host", + "algo-1,algo-2", + "-np", + "2", + "python", + "-m", + "mpi4py", + "-m", + "script.py", +] + +DUMMY_SOURCE_CODE_CONFIG = { + "entry_script": "script.py", + "distribution": { + "process_count_per_node": 2, + "sm_distributed_settings": { + "enable_dataparallel": True, + }, + "mpi_additional_options": [ + "-x", + "AWS_REGION", + ], + }, +} + + +@patch.dict( + os.environ, + { + "SM_CURRENT_HOST": "algo-2", + "SM_HOSTS": '["algo-1", "algo-2"]', + "SM_MASTER_ADDR": "algo-1", + "SM_HOST_COUNT": "2", + }, +) +@patch("sagemaker.modules.train.container_drivers.mpi_driver.read_source_code_config_json") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.write_env_vars_to_file") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.start_sshd_daemon") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_master_node") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_worker_node") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.get_mpirun_command") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.execute_commands") +def test_mpi_driver_worker( + mock_execute_commands, + mock_get_mpirun_command, + mock_bootstrap_worker_node, + mock_bootstrap_master_node, + mock_start_sshd_daemon, + mock_write_env_vars_to_file, + mock_read_source_code_config_json, +): + mock_read_source_code_config_json.return_value = DUMMY_SOURCE_CODE_CONFIG + + mpi_driver.main() + + mock_write_env_vars_to_file.assert_called_once() + mock_start_sshd_daemon.assert_called_once() + mock_bootstrap_worker_node.assert_called_once() + + mock_bootstrap_master_node.assert_not_called() + mock_get_mpirun_command.assert_not_called() + mock_execute_commands.assert_not_called() + + +@patch.dict( + os.environ, + { + "SM_CURRENT_HOST": "algo-1", + "SM_HOSTS": '["algo-1", "algo-2"]', + "SM_MASTER_ADDR": "algo-1", + "SM_HOST_COUNT": "2", + }, +) +@patch("sagemaker.modules.train.container_drivers.mpi_driver.read_source_code_config_json") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.write_env_vars_to_file") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.start_sshd_daemon") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_master_node") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_worker_node") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.get_process_count") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.get_mpirun_command") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.execute_commands") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.write_status_file_to_workers") +def test_mpi_driver_master( + mock_write_status_file_to_workers, + mock_execute_commands, + mock_get_mpirun_command, + mock_get_process_count, + mock_bootstrap_worker_node, + mock_bootstrap_master_node, + mock_start_sshd_daemon, + mock_write_env_vars_to_file, + mock_read_source_code_config_json, +): + mock_read_source_code_config_json.return_value = DUMMY_SOURCE_CODE_CONFIG + mock_get_mpirun_command.return_value = DUMMY_MPI_COMMAND + mock_get_process_count.return_value = 2 + mock_execute_commands.return_value = (0, "") + + mpi_driver.main() + + mock_write_env_vars_to_file.assert_called_once() + mock_start_sshd_daemon.assert_called_once() + mock_bootstrap_master_node.assert_called_once() + mock_get_mpirun_command.assert_called_once() + mock_execute_commands.assert_called_once_with(DUMMY_MPI_COMMAND) + mock_write_status_file_to_workers.assert_called_once() + + mock_bootstrap_worker_node.assert_not_called() diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_pytorch_driver.py b/tests/unit/sagemaker/modules/train/container_drivers/test_pytorch_driver.py new file mode 100644 index 0000000000..4d6a8beeb7 --- /dev/null +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_pytorch_driver.py @@ -0,0 +1,151 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Pytorch Driver Unit Tests.""" +from __future__ import absolute_import + +import os +import sys + +from unittest.mock import patch, MagicMock + +sys.modules["utils"] = MagicMock() + +from sagemaker.modules.train.container_drivers import pytorch_driver # noqa: E402 + +DUMMY_SOURCE_CODE_CONFIG = { + "entry_script": "script.py", + "distribution": { + "process_count_per_node": 2, + "sm_distributed_settings": { + "enable_dataparallel": True, + }, + "mpi_additional_options": [ + "-x", + "AWS_REGION", + ], + }, +} + + +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.get_python_executable", + return_value="python3", +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.pytorch_version", return_value=(2, 0) +) +def test_get_base_pytorch_command_torchrun(mock_pytorch_version, mock_get_python_executable): + assert pytorch_driver.get_base_pytorch_command() == ["torchrun"] + + +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.get_python_executable", + return_value="python3", +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.pytorch_version", return_value=(1, 8) +) +def test_get_base_pytorch_command_torch_distributed_launch( + mock_pytorch_version, mock_get_python_executable +): + assert pytorch_driver.get_base_pytorch_command() == ( + ["python3", "-m", "torch.distributed.launch"] + ) + + +@patch.dict( + os.environ, + { + "SM_CURRENT_INSTANCE_TYPE": "ml.p4d.24xlarge", + "SM_NETWORK_INTERFACE_NAME": "eth0", + "SM_HOST_COUNT": "1", + }, +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.USER_CODE_PATH", + "/opt/ml/input/data/code", +) +@patch("sagemaker.modules.train.container_drivers.pytorch_driver.get_process_count", return_value=2) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.pytorch_version", return_value=(2, 0) +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.get_base_pytorch_command", + return_value=["torchrun"], +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.read_source_code_config_json", + return_value=DUMMY_SOURCE_CODE_CONFIG, +) +def test_create_commands_single_node( + mock_read_source_code_config_json, + mock_get_base_pytorch_command, + mock_pytorch_version, + mock_get_process_count, +): + expected_command = [ + "torchrun", + "--nnodes=1", + "--nproc_per_node=2", + "/opt/ml/input/data/code/script.py", + ] + + command = pytorch_driver.create_commands() + assert command == expected_command + + +@patch.dict( + os.environ, + { + "SM_CURRENT_INSTANCE_TYPE": "ml.p4d.24xlarge", + "SM_NETWORK_INTERFACE_NAME": "eth0", + "SM_HOST_COUNT": "2", + "SM_MASTER_ADDR": "algo-1", + "SM_MASTER_PORT": "7777", + "SM_CURRENT_HOST_RANK": "0", + }, +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.USER_CODE_PATH", + "/opt/ml/input/data/code", +) +@patch("sagemaker.modules.train.container_drivers.pytorch_driver.get_process_count", return_value=2) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.pytorch_version", return_value=(2, 0) +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.get_base_pytorch_command", + return_value=["torchrun"], +) +@patch( + "sagemaker.modules.train.container_drivers.pytorch_driver.read_source_code_config_json", + return_value=DUMMY_SOURCE_CODE_CONFIG, +) +def test_create_commands_multi_node( + mock_read_source_code_config_json, + mock_get_base_pytorch_command, + mock_pytorch_version, + mock_get_process_count, +): + expected_command = [ + "torchrun", + "--nnodes=2", + "--nproc_per_node=2", + "--master_addr=algo-1", + "--master_port=7777", + "--node_rank=0", + "/opt/ml/input/data/code/script.py", + ] + + command = pytorch_driver.create_commands() + assert command == expected_command diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index 9cfd27d70e..57ee78794c 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -227,59 +227,3 @@ def test_create_input_data_channel(mock_upload_data, model_trainer, test_case): assert channel.data_source.file_system_data_source == test_case["data_source"] else: assert channel.data_source.s3_data_source.s3_uri == expected_s3_uri - - -@pytest.mark.parametrize( - "test_case", - [ - { - "source_code_config": SourceCodeConfig( - source_dir="test-data", - entry_script="train.py", - ), - "expected_command": "python train.py", - "should_throw": False, - }, - { - "source_code_config": SourceCodeConfig( - command="python train.py", - ), - "expected_command": "python train.py", - "should_throw": False, - }, - { - "source_code_config": SourceCodeConfig( - source_dir="test-data", - entry_script="other.py", - command="python train.py", - ), - "expected_command": "python train.py", - "should_throw": False, - }, - { - "source_code_config": SourceCodeConfig(source_dir="test-data", entry_script="train.sh"), - "expected_command": "chmod +x train.sh && bash train.sh", - "should_throw": False, - }, - { - "source_code_config": SourceCodeConfig( - source_dir="test-data", - entry_script="train.ts", - ), - "should_throw": True, - }, - { - "source_code_config": SourceCodeConfig( - source_dir="test-data", - ), - "should_throw": True, - }, - ], -) -def test_get_script_mode_command(model_trainer, test_case): - if test_case["should_throw"]: - with pytest.raises((ValueError, AssertionError)): - model_trainer._get_script_mode_command(test_case["source_code_config"]) - else: - command = model_trainer._get_script_mode_command(test_case["source_code_config"]) - assert command == test_case["expected_command"] From a406f6422caf3e7e4b783218061ec29d906ec938 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Mon, 4 Nov 2024 17:37:05 -0800 Subject: [PATCH 16/79] Add path to set Additional Settings in ModelTrainer (#1555) --- src/sagemaker/modules/configs.py | 179 +++++++- .../base_model_trainer.ipynb | 118 ++---- src/sagemaker/modules/train/__init__.py | 2 + src/sagemaker/modules/train/model_trainer.py | 399 ++++++++++++++---- src/sagemaker/modules/utils.py | 12 +- .../modules/train/test_model_trainer.py | 197 ++++++++- 6 files changed, 699 insertions(+), 208 deletions(-) diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py index 2b186f816c..eee064c0cf 100644 --- a/src/sagemaker/modules/configs.py +++ b/src/sagemaker/modules/configs.py @@ -12,43 +12,84 @@ # language governing permissions and limitations under the License. """This module provides the configuration classes used in `sagemaker.modules`. -Some of these classes are re-exported from `sagemaker-core.shapes`. For convinence, +Some of these classes are re-exported from `sagemaker_core.shapes`. For convinence, users can import these classes directly from `sagemaker.modules.configs`. -For more documentation on `sagemaker-core.shapes`, see: +For more documentation on `sagemaker_core.shapes`, see: - https://sagemaker-core.readthedocs.io/en/stable/#sagemaker-core-shapes """ from __future__ import absolute_import -from typing import Optional, Dict, Any, List +from typing import Optional, Union, Dict, Any, List from pydantic import BaseModel, model_validator +import sagemaker_core.shapes as shapes + +# TODO: Can we add custom logic to some of these to set better defaults? from sagemaker_core.shapes import ( - ResourceConfig, StoppingCondition, + RetryStrategy, OutputDataConfig, Channel, + ShuffleConfig, DataSource, S3DataSource, FileSystemDataSource, TrainingImageConfig, - VpcConfig, + TrainingRepositoryAuthConfig, + Tag, + MetricDefinition, + DebugHookConfig, + CollectionConfiguration, + DebugRuleConfiguration, + ExperimentConfig, + InfraCheckConfig, + ProfilerConfig, + ProfilerRuleConfiguration, + RemoteDebugConfig, + SessionChainingConfig, + InstanceGroup, + TensorBoardOutputConfig, + CheckpointConfig, ) from sagemaker.modules import logger +from sagemaker.modules.utils import convert_unassigned_to_none __all__ = [ "SourceCodeConfig", - "ResourceConfig", + "TorchDistributionConfig", + "MPIDistributionConfig", + "SMDistributedSettings", + "DistributionConfig", "StoppingCondition", + "RetryStrategy", "OutputDataConfig", "Channel", + "ShuffleConfig", "DataSource", "S3DataSource", "FileSystemDataSource", "TrainingImageConfig", - "VpcConfig", + "TrainingRepositoryAuthConfig", + "Tag", + "MetricDefinition", + "DebugHookConfig", + "CollectionConfiguration", + "DebugRuleConfiguration", + "ExperimentConfig", + "InfraCheckConfig", + "ProfilerConfig", + "ProfilerRuleConfiguration", + "RemoteDebugConfig", + "SessionChainingConfig", + "InstanceGroup", + "TensorBoardOutputConfig", + "CheckpointConfig", + "ComputeConfig", + "NetworkingConfig", + "InputData", ] @@ -161,14 +202,128 @@ class SourceCodeConfig(BaseModel): command (Optional[str]): The command(s) to execute in the training job container. Example: "python my_script.py". If not specified, entry_script must be provided. - distribution (Optional[Union[ - MPIDistributionConfig, - TorchDistributionConfig, - ]]): - The distribution configuration for the training job. """ source_dir: Optional[str] = None requirements: Optional[str] = None entry_script: Optional[str] = None command: Optional[str] = None + + +class ComputeConfig(shapes.ResourceConfig): + """ComputeConfig. + + The ComputeConfig is a subclass of `sagemaker_core.shapes.ResourceConfig` + and allows the user to specify the compute resources for the training job. + + Attributes: + instance_type (Optional[str]): + The ML compute instance type. For information about available instance types, + see https://aws.amazon.com/sagemaker/pricing/. Default: ml.m5.xlarge + instance_count (Optional[int]): The number of ML compute instances to use. For distributed + training, provide a value greater than 1. Default: 1 + volume_size_in_gb (Optional[int]): + The size of the ML storage volume that you want to provision. ML storage volumes store + model artifacts and incremental states. Training algorithms might also use the ML + storage volume for scratch space. Default: 30 + volume_kms_key_id (Optional[str]): + The Amazon Web Services KMS key that SageMaker uses to encrypt data on the storage + volume attached to the ML compute instance(s) that run the training job. + keep_alive_period_in_seconds (Optional[int]): + The duration of time in seconds to retain configured resources in a warm pool for + subsequent training jobs. + instance_groups (Optional[List[InstanceGroup]]): + A list of instance groups for heterogeneous clusters to be used in the training job. + enable_managed_spot_training (Optional[bool]): + To train models using managed spot training, choose True. Managed spot training + provides a fully managed and scalable infrastructure for training machine learning + models. this option is useful when training jobs can be interrupted and when there + is flexibility when the training job is run. + """ + + volume_size_in_gb: Optional[int] = 30 + enable_managed_spot_training: Optional[bool] = None + + @model_validator(mode="after") + def _model_validator(self) -> "ComputeConfig": + """Convert Unassigned values to None.""" + return convert_unassigned_to_none(self) + + def _to_resource_config(self) -> shapes.ResourceConfig: + """Convert to a sagemaker_core.shapes.ResourceConfig object.""" + compute_config_dict = self.model_dump() + resource_config_fields = set(shapes.ResourceConfig.__annotations__.keys()) + filtered_dict = { + k: v for k, v in compute_config_dict.items() if k in resource_config_fields + } + return shapes.ResourceConfig(**filtered_dict) + + +class NetworkingConfig(shapes.VpcConfig): + """NetworkingConfig. + + The NetworkingConifg is a subclass of `sagemaker_core.shapes.VpcConfig ` and + allows the user to specify the networking configuration for the training job. + + Attributes: + security_group_ids (Optional[List[str]]): + The VPC security group IDs, in the form sg-xxxxxxxx. Specify the + security groups for the VPC that is specified in the Subnets field. + subnets (Optional[List[str]]): + The ID of the subnets in the VPC to which you want to connect your + training job or model. + enable_network_isolation (Optional[bool]): + Isolates the training container. No inbound or outbound network calls can be made, + except for calls between peers within a training cluster for distributed training. + If you enable network isolation for training jobs that are configured to use a VPC, + SageMaker downloads and uploads customer data and model artifacts through the + specified VPC, but the training container does not have network access. + enable_inter_container_traffic_encryption (Optional[bool]): + To encrypt all communications between ML compute instances in distributed training + choose True. Encryption provides greater security for distributed training, but + training might take longer. How long it takes depends on the amount of + communication between compute instances, especially if you use a deep learning + algorithm in distributed training. + """ + + enable_network_isolation: Optional[bool] = None + enable_inter_container_traffic_encryption: Optional[bool] = None + + @model_validator(mode="after") + def _model_validator(self) -> "NetworkingConfig": + """Convert Unassigned values to None.""" + return convert_unassigned_to_none(self) + + def _to_vpc_config(self) -> shapes.VpcConfig: + """Convert to a sagemaker_core.shapes.VpcConfig object.""" + compute_config_dict = self.model_dump() + resource_config_fields = set(shapes.VpcConfig.__annotations__.keys()) + filtered_dict = { + k: v for k, v in compute_config_dict.items() if k in resource_config_fields + } + return shapes.VpcConfig(**filtered_dict) + + +class InputData(BaseModel): + """InputData. + + This config allows the user to specify an input data source for the training job. + + Will be found at `/opt/ml/input/data/` within the training container. + For convience, can be referenced inside the training container like: + + ```python + import os + input_data_dir = os.environ['SM_CHANNEL_'] + ``` + + Attributes: + channel_name (str): + The name of the input data source channel. + data_source (Union[str, S3DataSource, FileSystemDataSource]): + The data source for the channel. Can be an S3 URI string, local file path string, + S3DataSource object, or FileSystemDataSource object. + """ + + channel_name: str = None + data_source: Union[str, FileSystemDataSource, S3DataSource] = None diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index eda9b19bca..213322aa75 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -26,7 +26,7 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", @@ -69,11 +69,13 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import SourceCodeConfig\n", "\n", "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", "\n", + "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", + "\n", "source_code_config = SourceCodeConfig(\n", " source_dir=\"basic-script-mode\",\n", " command=\"python custom_script.py\",\n", @@ -285,9 +287,8 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker.modules.configs import ResourceConfig, SourceCodeConfig\n", - "from sagemaker import image_uris\n", + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import ComputeConfig, SourceCodeConfig, InputData\n", "\n", "env = {}\n", "env[\"FI_PROVIDER\"] = \"efa\"\n", @@ -298,7 +299,7 @@ "env[\"FI_EFA_USE_DEVICE_RDMA\"] = \"1\"\n", "env[\"RDMAV_FORK_SAFE\"] = \"1\"\n", "\n", - "resource_config = ResourceConfig(\n", + "compute_config = ComputeConfig(\n", " instance_count=2,\n", " instance_type=\"ml.p4d.24xlarge\",\n", " volume_size_in_gb=96,\n", @@ -306,7 +307,7 @@ "\n", "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", "\n", - "hyper_parameters = {\n", + "hyperparameters = {\n", " \"dataset_path\": \"/opt/ml/input/data/dataset\",\n", " \"epochs\": 1,\n", " \"max_steps\": 100,\n", @@ -329,19 +330,19 @@ "source_code_config = SourceCodeConfig(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", - " command=\"torchrun --nnodes $SM_HOST_COUNT \\\n", - " --nproc_per_node $SM_NUM_GPUS \\\n", - " --master_addr $SM_MASTER_ADDR \\\n", - " --master_port $SM_MASTER_PORT \\\n", + " command=\"torchrun --nnodes 2 \\\n", + " --nproc_per_node 8 \\\n", + " --master_addr algo-1 \\\n", + " --master_port 7777 \\\n", " --node_rank $SM_CURRENT_HOST_RANK \\\n", " run_clm_no_trainer.py\",\n", ")\n", "\n", "model_trainer = ModelTrainer(\n", " training_image=hugging_face_image,\n", - " resource_config=resource_config,\n", + " compute_config=compute_config,\n", " environment=env,\n", - " hyper_parameters=hyper_parameters,\n", + " hyperparameters=hyperparameters,\n", " source_code_config=source_code_config,\n", ")" ] @@ -352,7 +353,11 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train(input_data_channels={\"dataset\": training_input_path})" + "test_data = InputData(\n", + " channel_name=\"dataset\",\n", + " data_source=training_input_path,\n", + ")\n", + "model_trainer.train(input_data_config=[test_data])" ] }, { @@ -368,15 +373,12 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.configs import TorchDistributionConfig, ResourceConfig, SourceCodeConfig\n", - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "from sagemaker import image_uris\n", - "\n", - "env = {}\n", - "env[\"NCCL_IB_DISABLE\"] = \"1\"\n", - "env[\"NCCL_DEBUG\"] = \"WARN\"\n", + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import (\n", + " ComputeConfig, SourceCodeConfig, TorchDistributionConfig, InputData\n", + ")\n", "\n", - "resource_config = ResourceConfig(\n", + "compute_config = ComputeConfig(\n", " instance_count=2,\n", " instance_type=\"ml.p4d.24xlarge\",\n", " volume_size_in_gb=96,\n", @@ -384,10 +386,10 @@ "\n", "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", "\n", - "hyper_parameters = {\n", + "hyperparameters = {\n", " \"dataset_path\": \"/opt/ml/input/data/dataset\",\n", " \"epochs\": 1,\n", - " \"max_steps\": 49,\n", + " \"max_steps\": 100,\n", " \"fsdp\": \"full_shard auto_wrap\",\n", " \"fsdp_transformer_layer_cls_to_wrap\": \"LlamaDecoderLayer\",\n", " \"gradient_checkpointing\": True,\n", @@ -408,15 +410,14 @@ " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", " entry_script=\"run_clm_no_trainer.py\",\n", - " distribution=TorchDistributionConfig()\n", ")\n", "\n", "model_trainer = ModelTrainer(\n", " training_image=hugging_face_image,\n", - " resource_config=resource_config,\n", - " environment=env,\n", - " hyper_parameters=hyper_parameters,\n", + " compute_config=compute_config,\n", + " hyperparameters=hyperparameters,\n", " source_code_config=source_code_config,\n", + " distribution_config=TorchDistributionConfig(),\n", ")" ] }, @@ -426,60 +427,11 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train(input_data_channels={\"dataset\": training_input_path})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/1if17nhk1/IsenLink" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Problems to Solve\n", - "\n", - "### How can we make it easier for user to build an image?\n", - "* There are challenges here because of some of the OS differences in installing some ML frameworks which depend on some lower level dependencies being installed like CUDA - https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Amazon-Linux&target_version=2023&target_type=rpm_network\n", - "\n", - "```python\n", - "custom_image = custom_image_builder(\n", - " image_name=\"my_custom_image\",\n", - " requirements=requirements.txt,\n", - " base_image=\"python:3.10.15-slim\",\n", - " docker_file=\"Dockerfile\",\n", - " enviornment={\"SOME_VAR\": 4},\n", - " upload_ecr=True,\n", - " local_snapshot=True,\n", - ")\n", - "\n", - "model_trainer = ModelTrainer(training_image=custom_image)\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sagemaker.modules.train.model_trainer import ModelTrainer\n", - "\n", - "python_ecr_image = \"public.ecr.aws/docker/library/python:3.10.15-slim\"\n", - "python_docker_image = \"python:3.10.15-slim\"\n", - "\n", - "source_code_config = SourceCodeConfig(\n", - " command=\"echo 'Hello World'\",\n", + "test_data = InputData(\n", + " channel_name=\"dataset\",\n", + " data_source=training_input_path,\n", ")\n", - "\n", - "# This does not work\n", - "model_trainer = ModelTrainer(\n", - " training_image=python_ecr_image,\n", - " source_code_config=source_code_config,\n", - ")" + "model_trainer.train(input_data_config=[test_data])" ] }, { @@ -487,9 +439,7 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "model_trainer.train(source_code_config=source_code_config)" - ] + "source": [] } ], "metadata": { diff --git a/src/sagemaker/modules/train/__init__.py b/src/sagemaker/modules/train/__init__.py index c5b5d01ed4..51fa17fe04 100644 --- a/src/sagemaker/modules/train/__init__.py +++ b/src/sagemaker/modules/train/__init__.py @@ -12,3 +12,5 @@ # language governing permissions and limitations under the License. """Sagemaker modules train directory.""" from __future__ import absolute_import + +from sagemaker.modules.train.model_trainer import ModelTrainer # noqa: F401 diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 12a288e770..e9fd5c438f 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -17,27 +17,41 @@ import json from typing import Optional, List, Union, Dict, Any -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, PrivateAttr, validate_call from sagemaker_core.resources import TrainingJob from sagemaker_core.shapes import AlgorithmSpecification -from sagemaker import get_execution_role, Session from sagemaker.fw_utils import validate_mp_config +from sagemaker import get_execution_role, Session from sagemaker.modules.configs import ( - ResourceConfig, + ComputeConfig, StoppingCondition, + RetryStrategy, OutputDataConfig, SourceCodeConfig, MPIDistributionConfig, TorchDistributionConfig, + SMDistributedSettings, TrainingImageConfig, Channel, DataSource, S3DataSource, FileSystemDataSource, - VpcConfig, - SMDistributedSettings, + NetworkingConfig, + Tag, + MetricDefinition, + DebugHookConfig, + DebugRuleConfiguration, + ExperimentConfig, + InfraCheckConfig, + ProfilerConfig, + ProfilerRuleConfiguration, + RemoteDebugConfig, + SessionChainingConfig, + TensorBoardOutputConfig, + CheckpointConfig, + InputData, ) from sagemaker.modules.utils import ( _get_repo_name_from_image, @@ -69,6 +83,22 @@ class ModelTrainer(BaseModel): """Class that trains a model using AWS SageMaker. + Example: + ```python + from sagemaker.modules.train import ModelTrainer + from sagemaker.modules.configs import SourceCodeConfig, ComputeConfig, InputDataSource + + source_code_config = SourceCodeConfig(source_dir="source", entry_script="train.py") + training_image = "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-training-image" + model_trainer = ModelTrainer( + training_image=training_image, + source_code_config=source_code_config, + ) + + train_data = InputData(channel_name="train", data_source="s3://bucket/train") + model_trainer.train(input_data_config=[train_data]) + ``` + Attributes: session (Optiona(Session)): The SageMaker session. @@ -76,27 +106,10 @@ class ModelTrainer(BaseModel): role (Optional(str)): The IAM role ARN for the training job. If not specified, the default SageMaker execution role will be used. - base_name (Optional[str]): + base_job_name (Optional[str]): The base name for the training job. If not specified, a default name will be generated using the algorithm name or training image. - resource_config (Optional[ResourceConfig]): - The resource configuration. This is used to specify the compute resources for - the training job. - If not specified, will default to 1 instance of ml.m5.xlarge. - stopping_condition (Optional[StoppingCondition]): - The stopping condition. This is used to specify the different stopping - conditions for the training job. - If not specified, will default to 1 hour max run time. - output_data_config (Optional[OutputDataConfig]): - The output data configuration. This is used to specify the output data location - for the training job. - If not specified, will default to s3:////output/. - input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): - The input data channels for the training job. - Takes a list of Channel objects or a dictionary of channel names to DataSourceType. - DataSourceType can be an S3 URI string, local file path string, - S3DataSource object, or FileSystemDataSource object. source_code_config (Optional[SourceCodeConfig]): The source code configuration. This is used to configure the source code for running the training job. @@ -106,46 +119,90 @@ class ModelTrainer(BaseModel): The distribution settings for the training job. This is used to configure a distributed training job. If specifed, a `source_code_config` must also be provided. + compute_config (Optional[ComputeConfig]): + The compute configuration. This is used to specify the compute resources for + the training job. If not specified, will default to 1 instance of ml.m5.xlarge. + networking_config (Optional[NetworkingConfig]): + The networking configuration. This is used to specify the networking settings + for the training job. + stopping_condition (Optional[StoppingCondition]): + The stopping condition. This is used to specify the different stopping + conditions for the training job. + If not specified, will default to 1 hour max run time. algorithm_name (Optional[str]): The SageMaker marketplace algorithm name/arn to use for the training job. algorithm_name cannot be specified if training_image is specified. training_image (Optional[str]): The training image URI to use for the training job container. training_image cannot be specified if algorithm_name is specified. - For documentaion on sagemaker distributed images see: - https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html + To find available sagemaker distributed images, + see: https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths + training_image_config (Optional[TrainingImageConfig]): + Training image Config. This is the configuration to use an image from a private + Docker registry for a traininob. + output_data_config (Optional[OutputDataConfig]): + The output data configuration. This is used to specify the output data location + for the training job. + If not specified, will default to `s3:////output/`. + input_data_config (Optional[List[Union[Channel, InputData]]]): + The input data config for the training job. + Takes a list of Channel or InputData objects. An InputDataSource can be an S3 URI + string, local file path string, S3DataSource object, or FileSystemDataSource object. + checkpoint_config (Optional[CheckpointConfig]): + Contains information about the output location for managed spot training checkpoint + data. training_input_mode (Optional[str]): The input mode for the training job. Valid values are "Pipe", "File", "FastFile". Defaults to "File". - training_image_config (Optional[TrainingImageConfig]: - Training image Config. This is the configuration to use an image from a private - Docker registry for a training job. environment (Optional[Dict[str, str]]): The environment variables for the training job. - hyper_parameters (Optional[Dict[str, Any]]): + hyperparameters (Optional[Dict[str, Any]]): The hyperparameters for the training job. - vpc_config: (Optional[VpcConfig]): - The VPC configuration. + tags (Optional[List[Tag]]): + An array of key-value pairs. You can use tags to categorize your AWS resources + in different ways, for example, by purpose, owner, or environment. """ model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") session: Optional[Session] = None role: Optional[str] = None - base_name: Optional[str] = None - resource_config: Optional[ResourceConfig] = None - stopping_condition: Optional[StoppingCondition] = None - output_data_config: Optional[OutputDataConfig] = None - input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None + base_job_name: Optional[str] = None source_code_config: Optional[SourceCodeConfig] = None distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]] = None - algorithm_name: Optional[str] = None + compute_config: Optional[ComputeConfig] = None + networking_config: Optional[NetworkingConfig] = None + stopping_condition: Optional[StoppingCondition] = None training_image: Optional[str] = None - training_input_mode: Optional[str] = "File" training_image_config: Optional[TrainingImageConfig] = None + algorithm_name: Optional[str] = None + output_data_config: Optional[OutputDataConfig] = None + input_data_config: Optional[List[Union[Channel, InputData]]] = None + checkpoint_config: Optional[CheckpointConfig] = None + training_input_mode: Optional[str] = "File" environment: Optional[Dict[str, str]] = None - hyper_parameters: Optional[Dict[str, Any]] = None - vpc_config: Optional[VpcConfig] = None + hyperparameters: Optional[Dict[str, Any]] = None + tags: Optional[List[Tag]] = None + + # Metrics settings + _enable_sage_maker_metrics_time_series: Optional[bool] = PrivateAttr(default=False) + _metric_definitions: Optional[List[MetricDefinition]] = PrivateAttr(default=None) + + # Debugger settings + _debug_hook_config: Optional[DebugHookConfig] = PrivateAttr(default=None) + _debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = PrivateAttr(default=None) + _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) + _profiler_config: Optional[ProfilerConfig] = PrivateAttr(default=None) + _profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = PrivateAttr( + default=None + ) + _tensor_board_output_config: Optional[TensorBoardOutputConfig] = PrivateAttr(default=None) + + # Additional settings + _retry_strategy: Optional[RetryStrategy] = PrivateAttr(default=None) + _experiment_config: Optional[ExperimentConfig] = PrivateAttr(default=None) + _infra_check_config: Optional[InfraCheckConfig] = PrivateAttr(default=None) + _session_chaining_config: Optional[SessionChainingConfig] = PrivateAttr(default=None) def _validate_training_image_and_algorithm_name( self, training_image: Optional[str], algorithm_name: Optional[str] @@ -239,23 +296,20 @@ def model_post_init(self, __context: Any): self.role = get_execution_role() logger.warning(f"Role not provided. Using default role:\n{self.role}") - if self.base_name is None: + if self.base_job_name is None: if self.algorithm_name: - self.base_name = f"{self.algorithm_name}-job" + self.base_job_name = f"{self.algorithm_name}-job" elif self.training_image: - self.base_name = f"{_get_repo_name_from_image(self.training_image)}-job" - logger.warning(f"Base name not provided. Using default name:\n{self.base_name}") + self.base_job_name = f"{_get_repo_name_from_image(self.training_image)}-job" + logger.warning(f"Base name not provided. Using default name:\n{self.base_job_name}") - if self.resource_config is None: - self.resource_config = ResourceConfig( - volume_size_in_gb=30, - instance_count=1, + if self.compute_config is None: + self.compute_config = ComputeConfig( instance_type=DEFAULT_INSTANCE_TYPE, - volume_kms_key_id=None, - keep_alive_period_in_seconds=None, - instance_groups=None, + instance_count=1, + volume_size_in_gb=30, ) - logger.warning(f"ResourceConfig not provided. Using default:\n{self.resource_config}") + logger.warning(f"ComputeConfig not provided. Using default:\n{self.compute_config}") if self.stopping_condition is None: self.stopping_condition = StoppingCondition( @@ -269,10 +323,10 @@ def model_post_init(self, __context: Any): if self.output_data_config is None: session = self.session - base_name = self.base_name + base_job_name = self.base_job_name self.output_data_config = OutputDataConfig( - s3_output_path=f"s3://{session.default_bucket()}/{base_name}/output", - compression_type="NONE", + s3_output_path=f"s3://{session.default_bucket()}/{base_job_name}", + compression_type="GZIP", kms_key_id=None, ) logger.warning( @@ -283,17 +337,18 @@ def model_post_init(self, __context: Any): if self.training_image: logger.info(f"Training image URI: {self.training_image}") + @validate_call def train( self, - input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] = None, + input_data_config: Optional[List[Union[Channel, InputData]]] = None, wait: bool = True, logs: bool = True, ): """Train a model using AWS SageMaker. Args: - input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): - The input data channels for the training job. + input_data_config (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): + The input data config for the training job. Takes a list of Channel objects or a dictionary of channel names to DataSourceType. DataSourceType can be an S3 URI string, local file path string, S3DataSource object, or FileSystemDataSource object. @@ -304,21 +359,17 @@ def train( Whether to display the training container logs while training. Defaults to True. """ - if input_data_channels: - self.input_data_channels = input_data_channels + if input_data_config: + self.input_data_config = input_data_config input_data_config = [] - if self.input_data_channels: - input_data_config = self._get_input_data_config(self.input_data_channels) + if self.input_data_config: + input_data_config = self._get_input_data_config(self.input_data_config) - # Unfortunately, API requires hyperparameters to be strings string_hyper_parameters = {} - if self.hyper_parameters: - for hyper_parameter, value in self.hyper_parameters.items(): - if isinstance(value, (dict, list)): - string_hyper_parameters[hyper_parameter] = json.dumps(value) - else: - string_hyper_parameters[hyper_parameter] = str(value) + if self.hyperparameters: + for hyper_parameter, value in self.hyperparameters.items(): + string_hyper_parameters[hyper_parameter] = str(value) container_entrypoint = None container_arguments = None @@ -366,20 +417,48 @@ def train( training_image_config=self.training_image_config, container_entrypoint=container_entrypoint, container_arguments=container_arguments, + metric_definitions=self._metric_definitions, + enable_sage_maker_metrics_time_series=self._enable_sage_maker_metrics_time_series, ) + resource_config = self.compute_config._to_resource_config() + vpc_config = self.networking_config._to_vpc_config() if self.networking_config else None + training_job = TrainingJob.create( + training_job_name=_get_unique_name(self.base_job_name), + algorithm_specification=algorithm_specification, + hyper_parameters=string_hyper_parameters, + input_data_config=input_data_config, + resource_config=resource_config, + vpc_config=vpc_config, + # Public Instance Attributes session=self.session.boto_session, role_arn=self.role, - training_job_name=_get_unique_name(self.base_name), - algorithm_specification=algorithm_specification, - resource_config=self.resource_config, + tags=self.tags, stopping_condition=self.stopping_condition, - input_data_config=input_data_config, output_data_config=self.output_data_config, + checkpoint_config=self.checkpoint_config, environment=self.environment, - hyper_parameters=string_hyper_parameters, - vpc_config=self.vpc_config, + enable_managed_spot_training=self.compute_config.enable_managed_spot_training, + enable_inter_container_traffic_encryption=( + self.networking_config.enable_inter_container_traffic_encryption + if self.networking_config + else None + ), + enable_network_isolation=( + self.networking_config.enable_network_isolation if self.networking_config else None + ), + # Private Instance Attributes + debug_hook_config=self._debug_hook_config, + debug_rule_configurations=self._debug_rule_configurations, + remote_debug_config=self._remote_debug_config, + profiler_config=self._profiler_config, + profiler_rule_configurations=self._profiler_rule_configurations, + tensor_board_output_config=self._tensor_board_output_config, + retry_strategy=self._retry_strategy, + experiment_config=self._experiment_config, + infra_check_config=self._infra_check_config, + session_chaining_config=self._session_chaining_config, ) if wait: @@ -414,7 +493,7 @@ def create_input_data_channel(self, channel_name: str, data_source: DataSourceTy s3_uri = self.session.upload_data( path=data_source, bucket=self.session.default_bucket(), - key_prefix=f"{self.base_name}/input/{channel_name}", + key_prefix=f"{self.base_job_name}/input/{channel_name}", ) channel = Channel( channel_name=channel_name, @@ -441,26 +520,34 @@ def create_input_data_channel(self, channel_name: str, data_source: DataSourceTy return channel def _get_input_data_config( - self, input_data_channels: Optional[Union[List[Channel], Dict[str, DataSourceType]]] + self, input_data_channels: Optional[List[Union[Channel, InputData]]] ) -> List[Channel]: """Get the input data configuration for the training job. Args: - input_data_channels (Optional[Union[List[Channel], Dict[str, DataSourceType]]]): - The input data channels for the training job. - Takes a list of Channel objects or a dictionary of channel names to DataSourceType. - DataSourceType can be an S3 URI string, local file path string, - S3DataSource object, or FileSystemDataSource object. + input_data_channels (Optional[List[Union[Channel, InputData]]]): + The input data config for the training job. + Takes a list of Channel or InputData objects. An InputDataSource can be an S3 URI + string, local file path string, S3DataSource object, or FileSystemDataSource object. """ if input_data_channels is None: return [] - if isinstance(input_data_channels, list): - return input_data_channels - return [ - self.create_input_data_channel(channel_name, data_source) - for channel_name, data_source in input_data_channels.items() - ] + channels = [] + for input_data in input_data_channels: + if isinstance(input_data, Channel): + channels.append(input) + elif isinstance(input_data, InputData): + channel = self.create_input_data_channel( + input_data.channel_name, input_data.data_source + ) + channels.append(channel) + else: + raise ValueError( + f"Invalid input data channel: {input_data}. " + + "Must be a Channel or InputDataSource." + ) + return channels def _write_source_code_config_json(self, source_code_config: SourceCodeConfig): """Write the source code configuration to a JSON file.""" @@ -492,7 +579,7 @@ def _prepare_train_script( if ( source_code_config.entry_script and not source_code_config.command - and not source_code_config.distribution + and not distribution_config ): if source_code_config.entry_script.endswith(".py"): base_command = f"$SM_PYTHON_CMD {source_code_config.entry_script}" @@ -537,6 +624,134 @@ def _prepare_train_script( with open(os.path.join(SM_DRIVERS_LOCAL_PATH, TRAIN_SCRIPT), "w") as f: f.write(train_script) - def get_training_image_uri(self) -> str: - """Get the training image URI for the training job.""" - return self.training_image + def with_metric_settings( + self, + enable_sage_maker_metrics_time_series: bool = True, + metric_definitions: Optional[List[MetricDefinition]] = None, + ) -> "ModelTrainer": + """Set the metrics configuration for the training job. + + Example: + ```python + model_trainer = ModelTrainer(...).with_metric_settings( + enable_sage_maker_metrics_time_series=True, + metric_definitions=[ + MetricDefinition( + name="loss", + regex="Loss: (.*?),", + ), + MetricDefinition( + name="accuracy", + regex="Accuracy: (.*?),", + ), + ] + ) + ``` + + Args: + enable_sage_maker_metrics_time_series (Optional[bool]): + Whether to enable SageMaker metrics time series. Defaults to True. + metric_definitions (Optional[List[MetricDefinition]]): + A list of metric definition objects. Each object specifies + the metric name and regular expressions used to parse algorithm logs. + SageMaker publishes each metric to Amazon CloudWatch. + """ + self._enable_sage_maker_metrics_time_series = enable_sage_maker_metrics_time_series + self._metric_definitions = metric_definitions + return self + + def with_debugger_settings( + self, + debug_hook_config: Optional[DebugHookConfig] = None, + debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = None, + remote_debug_config: Optional[RemoteDebugConfig] = None, + profiler_config: Optional[ProfilerConfig] = None, + profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = None, + tensor_board_output_config: Optional[TensorBoardOutputConfig] = None, + ) -> "ModelTrainer": + """Set the configuration for settings related to Amazon SageMaker Debugger. + + Example: + ```python + model_trainer = ModelTrainer(...).with_debugger_settings( + debug_hook_config=DebugHookConfig( + s3_output_path="s3://bucket/path", + collection_configurations=[ + CollectionConfiguration( + collection_name="some_collection", + collection_parameters={ + "include_regex": ".*", + } + ) + ] + ) + ) + ``` + + Args: + debug_hook_config (Optional[DebugHookConfig]): + Configuration information for the Amazon SageMaker Debugger hook parameters, + metric and tensor collections, and storage paths. + To learn more see: https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html + debug_rule_configurations (Optional[List[DebugRuleConfiguration]]): + Configuration information for Amazon SageMaker Debugger rules for debugging + output ensors. + remote_debug_config (Optional[RemoteDebugConfig]): + Configuration for remote debugging. To learn more see: + https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-debugging.html + profiler_config (ProfilerConfig): + Configuration information for Amazon SageMaker Debugger system monitoring, + framework profiling, and storage paths. + profiler_rule_configurations (List[ProfilerRuleConfiguration]): + Configuration information for Amazon SageMaker Debugger rules for profiling + system and framework metrics. + tensor_board_output_config (Optional[TensorBoardOutputConfig]): + Configuration of storage locations for the Amazon SageMaker Debugger TensorBoard + output data. + """ + self._debug_hook_config = debug_hook_config + self._debug_rule_configurations = debug_rule_configurations + self._remote_debug_config = remote_debug_config + self._profiler_config = profiler_config + self._profiler_rule_configurations = profiler_rule_configurations + self._tensor_board_output_config = tensor_board_output_config + return self + + def with_additional_settings( + self, + retry_strategy: Optional[RetryStrategy] = None, + experiment_config: Optional[ExperimentConfig] = None, + infra_check_config: Optional[InfraCheckConfig] = None, + session_chaining_config: Optional[SessionChainingConfig] = None, + ) -> "ModelTrainer": + """Set any additional settings for the training job. + + Example: + ```python + model_trainer = ModelTrainer(...).with_additional_settings( + experiment_config=ExperimentConfig( + experiment_name="my-experiment", + trial_name="my-trial", + ) + ) + ``` + + Args: + retry_strategy (Optional[RetryStrategy]): + The number of times to retry the job when the job fails due to an + `InternalServerError`. + experiment_config (Optional[ExperimentConfig]): + Configuration information for the Amazon SageMaker Experiment. + Associates a SageMaker job as a trial component with an experiment and trial + infra_check_config (Optional[InfraCheckConfig]): + Contains information about the infrastructure health check configuration for the + training job. + session_chaining_config (Optional[SessionChainingConfig]): + Contains information about attribute-based access control (ABAC) for the training + job. + """ + self._retry_strategy = retry_strategy + self._experiment_config = experiment_config + self._infra_check_config = infra_check_config + self._session_chaining_config = session_chaining_config + return self diff --git a/src/sagemaker/modules/utils.py b/src/sagemaker/modules/utils.py index a1e391f45c..b401d3e414 100644 --- a/src/sagemaker/modules/utils.py +++ b/src/sagemaker/modules/utils.py @@ -16,7 +16,9 @@ import re import os from datetime import datetime -from typing import Literal +from typing import Literal, Any + +from sagemaker_core.shapes import Unassigned def _is_valid_s3_uri(path: str, path_type: Literal["File", "Directory", "Any"] = "Any") -> bool: @@ -107,3 +109,11 @@ def _get_repo_name_from_image(image: str) -> str: str: The repository name """ return image.split("/")[-1].split(":")[0] + + +def convert_unassigned_to_none(instance) -> Any: + """Convert Unassigned values to None for any instance.""" + for name, value in instance.__dict__.items(): + if isinstance(value, Unassigned): + setattr(instance, name, None) + return instance diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index 57ee78794c..5a5a97b3bb 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -20,12 +20,24 @@ from sagemaker.modules.train.model_trainer import ModelTrainer from sagemaker.modules.constants import DEFAULT_INSTANCE_TYPE from sagemaker.modules.configs import ( - ResourceConfig, + ComputeConfig, StoppingCondition, + RetryStrategy, OutputDataConfig, SourceCodeConfig, S3DataSource, FileSystemDataSource, + MetricDefinition, + DebugHookConfig, + DebugRuleConfiguration, + RemoteDebugConfig, + ProfilerConfig, + ProfilerRuleConfiguration, + TensorBoardOutputConfig, + ExperimentConfig, + InfraCheckConfig, + SessionChainingConfig, + InputData, ) from tests.unit import DATA_DIR @@ -33,17 +45,10 @@ DEFAULT_IMAGE = "000000000000.dkr.ecr.us-west-2.amazonaws.com/dummy-image:latest" DEFAULT_BUCKET = "sagemaker-us-west-2-000000000000" DEFAULT_ROLE = "arn:aws:iam::000000000000:role/test-role" -DEFAULT_RESOURCE_CONFIG = ResourceConfig( - instance_count=1, - instance_type=DEFAULT_INSTANCE_TYPE, - volume_size_in_gb=30, - volume_kms_key_id=None, - keep_alive_period_in_seconds=None, - instance_groups=None, -) +DEFAULT_COMPUTE_CONFIG = ComputeConfig(instance_type=DEFAULT_INSTANCE_TYPE, instance_count=1) DEFAULT_OUTPUT_DATA_CONFIG = OutputDataConfig( - s3_output_path=f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}/output", - compression_type="NONE", + s3_output_path=f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}", + compression_type="GZIP", kms_key_id=None, ) DEFAULT_STOPPING_CONDITION = StoppingCondition( @@ -66,6 +71,7 @@ def modules_session(): session_instance = session_mock.return_value session_instance.default_bucket.return_value = DEFAULT_BUCKET session_instance.get_caller_identity_arn.return_value = DEFAULT_ROLE + session_instance.boto_session = MagicMock(spec="boto3.session.Session") yield session_instance @@ -74,9 +80,9 @@ def model_trainer(): trainer = ModelTrainer( training_image=DEFAULT_IMAGE, role=DEFAULT_ROLE, - resource_config=MagicMock(spec=ResourceConfig), - stopping_condition=MagicMock(spec=StoppingCondition), - output_data_config=MagicMock(spec=OutputDataConfig), + compute_config=DEFAULT_COMPUTE_CONFIG, + stopping_condition=DEFAULT_STOPPING_CONDITION, + output_data_config=DEFAULT_OUTPUT_DATA_CONFIG, ) return trainer @@ -132,10 +138,10 @@ def test_model_trainer_param_validation(test_case, modules_session): trainer = ModelTrainer(**test_case["init_params"], session=modules_session) assert trainer is not None assert trainer.training_image == DEFAULT_IMAGE - assert trainer.resource_config == DEFAULT_RESOURCE_CONFIG + assert trainer.compute_config == DEFAULT_COMPUTE_CONFIG assert trainer.output_data_config == DEFAULT_OUTPUT_DATA_CONFIG assert trainer.stopping_condition == DEFAULT_STOPPING_CONDITION - assert trainer.base_name == DEFAULT_BASE_NAME + assert trainer.base_job_name == DEFAULT_BASE_NAME @patch("sagemaker.modules.train.model_trainer.TrainingJob") @@ -151,11 +157,13 @@ def test_train_with_default_params(mock_training_job, model_trainer): @patch("sagemaker.modules.train.model_trainer.TrainingJob") @patch.object(ModelTrainer, "_get_input_data_config") def test_train_with_input_data_channels(mock_get_input_config, mock_training_job, model_trainer): - mock_input_data_channels = {"train": "train/dir", "test": "test/dir"} + train_data = InputData(channel_name="train", data_source="train/dir") + test_data = InputData(channel_name="test", data_source="test/dir") + mock_input_data_config = [train_data, test_data] - model_trainer.train(input_data_channels=mock_input_data_channels) + model_trainer.train(input_data_config=mock_input_data_config) - mock_get_input_config.assert_called_once_with(mock_input_data_channels) + mock_get_input_config.assert_called_once_with(mock_input_data_config) mock_training_job.create.assert_called_once() @@ -227,3 +235,154 @@ def test_create_input_data_channel(mock_upload_data, model_trainer, test_case): assert channel.data_source.file_system_data_source == test_case["data_source"] else: assert channel.data_source.s3_data_source.s3_uri == expected_s3_uri + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +def test_metric_settings(mock_training_job, modules_session): + image_uri = DEFAULT_IMAGE + role = DEFAULT_ROLE + metric_definition = MetricDefinition( + name="test-metric", + regex="test-regex", + ) + + model_trainer = ModelTrainer( + training_image=image_uri, + session=modules_session, + role=role, + ).with_metric_settings( + enable_sage_maker_metrics_time_series=True, metric_definitions=[metric_definition] + ) + + assert model_trainer._enable_sage_maker_metrics_time_series + assert model_trainer._metric_definitions == [metric_definition] + + with patch("sagemaker.modules.train.model_trainer.Session.upload_data") as mock_upload_data: + mock_upload_data.return_value = "s3://dummy-bucket/dummy-prefix" + model_trainer.train() + + mock_training_job.create.assert_called_once() + assert mock_training_job.create.call_args.kwargs[ + "algorithm_specification" + ].metric_definitions == [metric_definition] + + assert mock_training_job.create.call_args.kwargs[ + "algorithm_specification" + ].enable_sage_maker_metrics_time_series + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +def test_debugger_settings(mock_training_job, modules_session): + image_uri = DEFAULT_IMAGE + role = DEFAULT_ROLE + + debug_hook_config = DebugHookConfig(s3_output_path="s3://dummy-bucket/dummy-prefix") + debug_rule_config = DebugRuleConfiguration( + rule_configuration_name="rule-name", + rule_evaluator_image=image_uri, + rule_parameters={"parameter": "value"}, + ) + remote_debug_config = RemoteDebugConfig( + enable_remote_debug=True, + ) + profiler_config = ProfilerConfig(s3_output_path="s3://dummy-bucket/dummy-prefix") + profiler_rule_config = ProfilerRuleConfiguration( + rule_configuration_name="rule-name", + rule_evaluator_image=image_uri, + ) + tensor_board_output_config = TensorBoardOutputConfig( + s3_output_path="s3://dummy-bucket/dummy-prefix" + ) + + model_trainer = ModelTrainer( + training_image=image_uri, + session=modules_session, + role=role, + ).with_debugger_settings( + debug_hook_config=debug_hook_config, + debug_rule_configurations=debug_rule_config, + remote_debug_config=remote_debug_config, + profiler_config=profiler_config, + profiler_rule_configurations=profiler_rule_config, + tensor_board_output_config=tensor_board_output_config, + ) + + assert model_trainer._debug_hook_config == debug_hook_config + assert model_trainer._debug_rule_configurations == debug_rule_config + assert model_trainer._remote_debug_config == remote_debug_config + assert model_trainer._profiler_config == profiler_config + assert model_trainer._profiler_rule_configurations == profiler_rule_config + assert model_trainer._tensor_board_output_config == tensor_board_output_config + + with patch("sagemaker.modules.train.model_trainer.Session.upload_data") as mock_upload_data: + mock_upload_data.return_value = "s3://dummy-bucket/dummy-prefix" + model_trainer.train() + + mock_training_job.create.assert_called_once() + assert mock_training_job.create.call_args.kwargs["debug_hook_config"] == debug_hook_config + assert ( + mock_training_job.create.call_args.kwargs["debug_rule_configurations"] + == debug_rule_config + ) + assert ( + mock_training_job.create.call_args.kwargs["remote_debug_config"] == remote_debug_config + ) + assert mock_training_job.create.call_args.kwargs["profiler_config"] == profiler_config + assert ( + mock_training_job.create.call_args.kwargs["profiler_rule_configurations"] + == profiler_rule_config + ) + assert ( + mock_training_job.create.call_args.kwargs["tensor_board_output_config"] + == tensor_board_output_config + ) + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +def test_additional_settings(mock_training_job, modules_session): + image_uri = DEFAULT_IMAGE + role = DEFAULT_ROLE + + retry_strategy = RetryStrategy( + maximum_retry_attempts=3, + ) + + experiment_config = ExperimentConfig( + experiment_name="experiment-name", + trial_name="trial-name", + ) + infra_check_config = InfraCheckConfig( + enable_infra_check=True, + ) + session_chaining_config = SessionChainingConfig( + enable_session_tag_chaining=True, + ) + model_trainer = ModelTrainer( + training_image=image_uri, + session=modules_session, + role=role, + ).with_additional_settings( + retry_strategy=retry_strategy, + experiment_config=experiment_config, + infra_check_config=infra_check_config, + session_chaining_config=session_chaining_config, + ) + + assert model_trainer._retry_strategy == retry_strategy + assert model_trainer._experiment_config == experiment_config + assert model_trainer._infra_check_config == infra_check_config + assert model_trainer._session_chaining_config == session_chaining_config + + with patch("sagemaker.modules.train.model_trainer.Session.upload_data") as mock_upload_data: + mock_upload_data.return_value = "s3://dummy-bucket/dummy-prefix" + model_trainer.train() + + mock_training_job.create.assert_called_once() + + assert mock_training_job.create.call_args.kwargs["retry_strategy"] == retry_strategy + assert mock_training_job.create.call_args.kwargs["experiment_config"] == experiment_config + assert mock_training_job.create.call_args.kwargs["infra_check_config"] == infra_check_config + assert ( + mock_training_job.create.call_args.kwargs["session_chaining_config"] + == session_chaining_config + ) From 8cc19a32e1c3989c68d657ee0fd213359170570b Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:24:35 -0800 Subject: [PATCH 17/79] Mask Sensitive Env Logs in Container (#1568) --- src/sagemaker/modules/templates.py | 4 -- .../base_model_trainer.ipynb | 12 ++++- .../container_drivers/scripts/environment.py | 47 +++++++++++++++++++ .../scripts/test_enviornment.py | 43 ++++++++++++++++- 4 files changed, 99 insertions(+), 7 deletions(-) diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 55ad44d81d..400594ca51 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -73,10 +73,6 @@ cat /opt/ml/input/config/inputdataconfig.json echo -echo "/opt/ml/input/config/hyperparameters.json:" -cat /opt/ml/input/config/hyperparameters.json -echo - echo "/opt/ml/input/data/sm_drivers/sourcecodeconfig.json" cat /opt/ml/input/data/sm_drivers/sourcecodeconfig.json echo diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 213322aa75..e32b0211d2 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -74,16 +74,24 @@ "\n", "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", "\n", - "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", - "\n", "source_code_config = SourceCodeConfig(\n", " source_dir=\"basic-script-mode\",\n", " command=\"python custom_script.py\",\n", ")\n", "\n", + "hyperparameters = {\n", + " \"secret_token\": \"123456\",\n", + "}\n", + "\n", + "env_vars = {\n", + " \"PASSWORD\": \"123456\"\n", + "}\n", + "\n", "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code_config=source_code_config,\n", + " hyperparameters=hyperparameters,\n", + " environment=env_vars,\n", ")\n", "\n", "model_trainer.train()" diff --git a/src/sagemaker/modules/train/container_drivers/scripts/environment.py b/src/sagemaker/modules/train/container_drivers/scripts/environment.py index bb6ff634aa..163b0ea8b4 100644 --- a/src/sagemaker/modules/train/container_drivers/scripts/environment.py +++ b/src/sagemaker/modules/train/container_drivers/scripts/environment.py @@ -47,6 +47,9 @@ ENV_OUTPUT_FILE = "/opt/ml/input/data/sm_drivers/scripts/sm_training.env" +SENSITIVE_KEYWORDS = ["SECRET", "PASSWORD", "KEY", "TOKEN", "PRIVATE", "CREDS", "CREDENTIALS"] +HIDDEN_VALUE = "******" + def num_cpus() -> int: """Return the number of CPUs available in the current container. @@ -199,6 +202,50 @@ def set_env( else: f.write(f"export {key}='{value}'\n") + logger.info("Environment Variables:") + log_env_variables(env_vars_dict=env_vars) + + +def mask_sensitive_info(data): + """Recursively mask sensitive information in a dictionary.""" + if isinstance(data, dict): + for k, v in data.items(): + if isinstance(v, dict): + data[k] = mask_sensitive_info(v) + elif isinstance(v, str) and any( + keyword.lower() in k.lower() for keyword in SENSITIVE_KEYWORDS + ): + data[k] = HIDDEN_VALUE + return data + + +def log_key_value(key: str, value: str): + """Log a key-value pair, masking sensitive values if necessary.""" + if any(keyword.lower() in key.lower() for keyword in SENSITIVE_KEYWORDS): + logger.info("%s=%s", key, HIDDEN_VALUE) + elif isinstance(value, dict): + masked_value = mask_sensitive_info(value) + logger.info("%s=%s", key, json.dumps(masked_value)) + else: + try: + decoded_value = json.loads(value) + if isinstance(decoded_value, dict): + masked_value = mask_sensitive_info(decoded_value) + logger.info("%s=%s", key, json.dumps(masked_value)) + else: + logger.info("%s=%s", key, decoded_value) + except (json.JSONDecodeError, TypeError): + logger.info("%s=%s", key, value) + + +def log_env_variables(env_vars_dict: Dict[str, Any]): + """Log Environment Variables from the environment and an env_vars_dict.""" + for key, value in os.environ.items(): + log_key_value(key, value) + + for key, value in env_vars_dict.items(): + log_key_value(key, value) + def main(): """Main function to set the environment variables for the training job container.""" diff --git a/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py index 8dc6e330df..6d7c40f23a 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py @@ -14,10 +14,18 @@ from __future__ import absolute_import import os +import io +import logging from unittest.mock import patch -from sagemaker.modules.train.container_drivers.scripts.environment import set_env +from sagemaker.modules.train.container_drivers.scripts.environment import ( + set_env, + log_key_value, + log_env_variables, + mask_sensitive_info, + HIDDEN_VALUE, +) RESOURCE_CONFIG = dict( current_host="algo-1", @@ -129,6 +137,39 @@ def test_set_env(mock_num_cpus, mock_num_gpus, mock_num_neurons): assert not os.path.exists(OUTPUT_FILE) +@patch.dict(os.environ, {"SECRET_TOKEN": "122345678", "CLEAR_DATA": "123456789"}, clear=True) +def test_log_env_variables(): + log_stream = io.StringIO() + handler = logging.StreamHandler(log_stream) + + logger = logging.getLogger("sagemaker.modules.train.container_drivers.scripts.environment") + logger.addHandler(handler) + logger.setLevel(logging.INFO) + + env_vars = { + "SM_MODEL_DIR": "/opt/ml/model", + "SM_INPUT_DIR": "/opt/ml/input", + "SM_HPS": {"batch_size": 32, "learning_rate": 0.001, "access_token": "123456789"}, + "SM_HP_BATCH_SIZE": 32, + "SM_HP_LEARNING_RATE": 0.001, + "SM_HP_ACCESS_TOKEN": "123456789", + } + log_env_variables(env_vars_dict=env_vars) + + log_output = log_stream.getvalue() + + assert f"SECRET_TOKEN={HIDDEN_VALUE}" in log_output + assert "CLEAR_DATA=123456789" in log_output + assert "SM_MODEL_DIR=/opt/ml/model" in log_output + assert ( + f'SM_HPS={{"batch_size": 32, "learning_rate": 0.001, "access_token": "{HIDDEN_VALUE}"}}' + in log_output + ) + assert "SM_HP_BATCH_SIZE=32" in log_output + assert "SM_HP_LEARNING_RATE=0.001" in log_output + assert f"SM_HP_ACCESS_TOKEN={HIDDEN_VALUE}" in log_output + + def _remove_extra_lines(string): """Removes extra blank lines from a string.""" return "\n".join([line for line in string.splitlines() if line.strip()]) From a8ed4ec887b727fa5af4cd0841817c9164b48851 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Fri, 8 Nov 2024 10:38:38 -0800 Subject: [PATCH 18/79] Fix bug in script mode setup ModelTrainer (#1575) --- .gitignore | 1 + src/sagemaker/modules/constants.py | 1 + src/sagemaker/modules/templates.py | 4 +++ .../train/container_drivers/mpi_driver.py | 5 +-- .../train/container_drivers/pytorch_driver.py | 4 ++- .../modules/train/container_drivers/utils.py | 31 ++++++++++++------- src/sagemaker/modules/train/model_trainer.py | 12 +++++++ 7 files changed, 43 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 39a442bcd6..b87341ca4d 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ env/ **/_repack_script_launcher.sh src/sagemaker/modules/train/container_drivers/sm_train.sh src/sagemaker/modules/train/container_drivers/sourcecodeconfig.json +src/sagemaker/modules/train/container_drivers/distribution.json tests/data/**/_repack_model.py tests/data/experiment/sagemaker-dev-1.0.tar.gz src/sagemaker/serve/tmp_workspace \ No newline at end of file diff --git a/src/sagemaker/modules/constants.py b/src/sagemaker/modules/constants.py index a7f9a897ff..97367b2a61 100644 --- a/src/sagemaker/modules/constants.py +++ b/src/sagemaker/modules/constants.py @@ -26,6 +26,7 @@ ) SOURCE_CODE_CONFIG_JSON = "sourcecodeconfig.json" +DISTRIBUTION_JSON = "distribution.json" TRAIN_SCRIPT = "sm_train.sh" DEFAULT_CONTAINER_ENTRYPOINT = ["/bin/bash"] diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 400594ca51..491b0cb2b6 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -77,6 +77,10 @@ cat /opt/ml/input/data/sm_drivers/sourcecodeconfig.json echo +echo "/opt/ml/input/data/sm_drivers/distribution.json" +cat /opt/ml/input/data/sm_drivers/distribution.json +echo + echo "Setting up environment variables" $SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/scripts/environment.py source /opt/ml/input/data/sm_drivers/scripts/sm_training.env diff --git a/src/sagemaker/modules/train/container_drivers/mpi_driver.py b/src/sagemaker/modules/train/container_drivers/mpi_driver.py index 989c1cf3d3..29b047ea89 100644 --- a/src/sagemaker/modules/train/container_drivers/mpi_driver.py +++ b/src/sagemaker/modules/train/container_drivers/mpi_driver.py @@ -19,6 +19,7 @@ from utils import ( logger, read_source_code_config_json, + read_distribution_json, get_process_count, execute_commands, write_failure_file, @@ -55,7 +56,7 @@ def main(): """ source_code_config = read_source_code_config_json() - distribution = source_code_config.get("distribution", {}) + distribution = read_distribution_json() sm_distributed_settings = distribution.get("smdistributed_settings", {}) sm_current_host = os.environ["SM_CURRENT_HOST"] @@ -73,7 +74,7 @@ def main(): host_list = json.loads(os.environ["SM_HOSTS"]) host_count = int(os.environ["SM_HOST_COUNT"]) - process_count = get_process_count(source_code_config) + process_count = get_process_count(distribution) if process_count > 1: host_list = ["{}:{}".format(host, process_count) for host in host_list] diff --git a/src/sagemaker/modules/train/container_drivers/pytorch_driver.py b/src/sagemaker/modules/train/container_drivers/pytorch_driver.py index b5d72fbe76..049c9ed60a 100644 --- a/src/sagemaker/modules/train/container_drivers/pytorch_driver.py +++ b/src/sagemaker/modules/train/container_drivers/pytorch_driver.py @@ -20,6 +20,7 @@ from utils import ( logger, read_source_code_config_json, + read_distribution_json, get_process_count, get_python_executable, SM_EFA_NCCL_INSTANCES, @@ -62,8 +63,9 @@ def setup_env(): def create_commands(): """Create the Torch Distributed command to execute""" source_code_config = read_source_code_config_json() + distribution = read_distribution_json() - process_count = get_process_count(source_code_config) + process_count = get_process_count(distribution) host_count = int(os.environ["SM_HOST_COUNT"]) torch_cmd = [] diff --git a/src/sagemaker/modules/train/container_drivers/utils.py b/src/sagemaker/modules/train/container_drivers/utils.py index ae05df8994..219fcf4b62 100644 --- a/src/sagemaker/modules/train/container_drivers/utils.py +++ b/src/sagemaker/modules/train/container_drivers/utils.py @@ -36,8 +36,9 @@ TrainingJob - {os.environ['TRAINING_JOB_NAME']} """ -USER_CODE_PATH = "/opt/ml/input/data/code" -SOURCE_CODE_CONFIG_JSON = "/opt/ml/input/data/sm_code/sourcecodeconfig.json" +USER_CODE_PATH = "/opt/ml/input/data/sm_code" +SOURCE_CODE_CONFIG_JSON = "/opt/ml/input/data/sm_drivers/sourcecodeconfig.json" +DISTRIBUTION_JSON = "/opt/ml/input/data/sm_drivers/distribution.json" SM_EFA_NCCL_INSTANCES = [ "ml.g4dn.8xlarge", @@ -67,19 +68,25 @@ def write_failure_file(message: str = DEFAULT_FAILURE_MESSAGE): def read_source_code_config_json(source_code_config_file: Dict[str, Any] = SOURCE_CODE_CONFIG_JSON): """Read the source code config json file.""" with open(source_code_config_file, "r") as f: - distribution_config = json.load(f) - return distribution_config + source_code_config_json = json.load(f) + return source_code_config_json -def get_process_count(source_code_config: Dict[str, Any]) -> int: +def read_distribution_json(distribution_file: Dict[str, Any] = DISTRIBUTION_JSON): + """Read the distribution json file.""" + with open(distribution_file, "r") as f: + distribution_json = json.load(f) + return distribution_json + + +def get_process_count(distribution: Dict[str, Any]) -> int: """Get the number of processes to run on each node in the training job.""" - if source_code_config.get("distribution", {}).get("process_count_per_node") is not None: - return int(source_code_config["distribution"]["process_count_per_node"]) - if os.environ.get("SM_NUM_GPUS") is not None: - return int(os.environ["SM_NUM_GPUS"]) - if os.environ.get("SM_NUM_NEURONS") is not None: - return int(os.environ["SM_NUM_NEURONS"]) - return 1 # Default to 1 process per node + return ( + int(distribution.get("process_count_per_node", 0)) + or int(os.environ.get("SM_NUM_GPUS", 0)) + or int(os.environ.get("SM_NUM_NEURONS", 0)) + or 1 + ) def get_python_executable() -> str: diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index e9fd5c438f..8d103195aa 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -70,6 +70,7 @@ DEFAULT_CONTAINER_ENTRYPOINT, DEFAULT_CONTAINER_ARGUMENTS, SOURCE_CODE_CONFIG_JSON, + DISTRIBUTION_JSON, ) from sagemaker.modules.templates import ( TRAIN_SCRIPT_TEMPLATE, @@ -385,6 +386,7 @@ def train( self._prepare_train_script( source_code_config=self.source_code_config, + distribution_config=self.distribution_config, ) if self.distribution_config: smd_modelparallel_parameters = getattr( @@ -397,6 +399,8 @@ def train( smd_modelparallel_parameters ) self._write_source_code_config_json(self.source_code_config) + if self.distribution_config: + self._write_distribution_config_json(self.distribution_config) # Create an input channel for drivers packaged by the sdk sm_drivers_channel = self.create_input_data_channel(SM_DRIVERS, SM_DRIVERS_LOCAL_PATH) @@ -555,6 +559,14 @@ def _write_source_code_config_json(self, source_code_config: SourceCodeConfig): with open(file_path, "w") as f: f.write(source_code_config.model_dump_json()) + def _write_distribution_config_json( + self, distribution: Union[MPIDistributionConfig, TorchDistributionConfig] + ): + """Write the distribution configuration to a JSON file.""" + file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, DISTRIBUTION_JSON) + with open(file_path, "w") as f: + f.write(distribution.model_dump_json()) + def _prepare_train_script( self, source_code_config: SourceCodeConfig, From ce55d45101da5dc27b6a2dbbeca3a33df7499da1 Mon Sep 17 00:00:00 2001 From: xiongz945 <54782408+xiongz945@users.noreply.github.com> Date: Fri, 8 Nov 2024 19:23:15 -0800 Subject: [PATCH 19/79] Feature: ModelBuilder supports HuggingFace Models with benchmark data and deployment configs (#1572) --- src/sagemaker/serve/builder/model_builder.py | 124 ++++- .../serve/builder/test_model_builder.py | 486 +++++++++++++++++- 2 files changed, 592 insertions(+), 18 deletions(-) diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index 802711e427..157222b437 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -14,6 +14,7 @@ from __future__ import absolute_import import importlib.util +import json import uuid from typing import Any, Type, List, Dict, Optional, Union from dataclasses import dataclass, field @@ -24,6 +25,8 @@ from pathlib import Path from sagemaker.enums import Tag +from sagemaker.jumpstart.accessors import JumpStartS3PayloadAccessor +from sagemaker.jumpstart.utils import get_jumpstart_content_bucket from sagemaker.s3 import S3Downloader from sagemaker import Session @@ -879,7 +882,7 @@ def build( # pylint: disable=R0911 if isinstance(self.model, str): model_task = None - if self._is_jumpstart_model_id(): + if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): self.model_hub = ModelHub.JUMPSTART return self._build_for_jumpstart() self.model_hub = ModelHub.HUGGINGFACE @@ -1514,3 +1517,122 @@ def _optimize_prepare_for_hf(self): should_upload_artifacts=True, ) self.pysdk_model.env.update(env) + + def display_benchmark_metrics(self, **kwargs): + """Display Markdown Benchmark Metrics for deployment configs.""" + if not isinstance(self.model, str): + raise ValueError("Benchmarking is only supported for JumpStart or HuggingFace models") + if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): + return super().display_benchmark_metrics(**kwargs) + else: + raise ValueError("This model does not have benchmark metrics yet") + + def get_deployment_config(self) -> Optional[Dict[str, Any]]: + """Gets the deployment config to apply to the model. + + Returns: + Optional[Dict[str, Any]]: Deployment config to apply to this model. + """ + if not isinstance(self.model, str): + raise ValueError( + "Deployment config is only supported for JumpStart or HuggingFace models" + ) + if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): + return super().get_deployment_config() + else: + raise ValueError("This model does not have any deployment config yet") + + def list_deployment_configs(self) -> List[Dict[str, Any]]: + """List deployment configs for the model in the current region. + + Returns: + List[Dict[str, Any]]: A list of deployment configs. + """ + if not isinstance(self.model, str): + raise ValueError( + "Deployment config is only supported for JumpStart or HuggingFace models" + ) + if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): + return super().list_deployment_configs() + else: + raise ValueError("This model does not have any deployment config yet") + + def set_deployment_config(self, config_name: str, instance_type: str) -> None: + """Sets the deployment config to apply to the model. + + Args: + config_name (str): + The name of the deployment config to apply to the model. + Call list_deployment_configs to see the list of config names. + instance_type (str): + The instance_type that the model will use after setting + the config. + """ + if not isinstance(self.model, str): + raise ValueError( + "Deployment config is only supported for JumpStart or HuggingFace models" + ) + if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): + logger.warning( + "If there are existing deployment configurations, " + "they will be overwritten by the config %s", + config_name, + ) + return super().set_deployment_config(config_name, instance_type) + else: + raise ValueError(f"The deployment config {config_name} cannot be set on this model") + + def _use_jumpstart_equivalent(self): + """Check if the HuggingFace model has a JumpStart equivalent. + + Replace it with the equivalent if there's one + """ + if not hasattr(self, "_has_jumpstart_equivalent"): + self._jumpstart_mapping = self._retrieve_hugging_face_model_mapping() + self._has_jumpstart_equivalent = self.model in self._jumpstart_mapping + if self._has_jumpstart_equivalent: + huggingface_model_id = self.model + jumpstart_model_id = self._jumpstart_mapping[huggingface_model_id]["jumpstart-model-id"] + self.model = jumpstart_model_id + merged_date = self._jumpstart_mapping[huggingface_model_id].get("merged-at") + self._build_for_jumpstart() + compare_model_diff_message = ( + "If you want to identify the differences between the two, " + "please use model_uris.retrieve() to retrieve the model " + "artifact S3 URI and compare them." + ) + logger.warning( # pylint: disable=logging-fstring-interpolation + "Please note that for this model we are using the JumpStart's" + f'local copy "{jumpstart_model_id}" ' + f'of the HuggingFace model "{huggingface_model_id}" you chose. ' + "We strive to keep our local copy synced with the HF model hub closely. " + "This model was synced " + f"{f'on {merged_date}' if merged_date else 'before 11/04/2024'}. " + f"{compare_model_diff_message if not self._is_gated_model() else ''}" + ) + return True + return False + + def _retrieve_hugging_face_model_mapping(self): + """Retrieve the HuggingFace/JumpStart model mapping and preprocess it.""" + converted_mapping = {} + region = self.sagemaker_session.boto_region_name + try: + mapping_json_object = JumpStartS3PayloadAccessor.get_object_cached( + bucket=get_jumpstart_content_bucket(region), + key="hf_model_id_map_cache.json", + region=region, + s3_client=self.sagemaker_session.s3_client, + ) + mapping = json.loads(mapping_json_object) + except Exception: # pylint: disable=broad-except + return converted_mapping + + for k, v in mapping.items(): + converted_mapping[v["hf-model-id"]] = { + "jumpstart-model-id": k, + "jumpstart-model-version": v["jumpstart-model-version"], + "merged-at": v.get("merged-at"), + "hf-model-repo-sha": v.get("hf-model-repo-sha"), + } + return converted_mapping diff --git a/tests/unit/sagemaker/serve/builder/test_model_builder.py b/tests/unit/sagemaker/serve/builder/test_model_builder.py index 4e34c5f864..91d804433c 100644 --- a/tests/unit/sagemaker/serve/builder/test_model_builder.py +++ b/tests/unit/sagemaker/serve/builder/test_model_builder.py @@ -18,7 +18,19 @@ from pathlib import Path from copy import deepcopy +import deepdiff +import pytest +from sagemaker.enums import EndpointType + +from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig +from sagemaker.batch_inference.batch_transform_inference_config import BatchTransformInferenceConfig + +from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements + +from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig + from sagemaker.model import Model + from sagemaker.serve import SchemaBuilder from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.mode.function_pointers import Mode @@ -66,20 +78,17 @@ mock_session = MagicMock() +RESOURCE_REQUIREMENTS = ResourceRequirements( + requests={ + "num_cpus": 0.5, + "memory": 512, + "copies": 2, + }, + limits={}, +) -class TestModelBuilder(unittest.TestCase): - @patch("sagemaker.serve.builder.model_builder._ServeSettings") - def test_validation_in_progress_mode_supported(self, mock_serveSettings): - builder = ModelBuilder(model_server=ModelServer.TORCHSERVE) - self.assertRaisesRegex( - Exception, - "IN_PROCESS mode is only supported for MMS/Transformers server in beta release.", - builder.build, - Mode.IN_PROCESS, - mock_role_arn, - mock_session, - ) +class TestModelBuilder(unittest.TestCase): @patch("sagemaker.serve.builder.model_builder._ServeSettings") def test_validation_cannot_set_both_model_and_inference_spec(self, mock_serveSettings): builder = ModelBuilder(inference_spec="some value", model=Mock(spec=object)) @@ -2425,7 +2434,7 @@ def test_optimize( self.assertEqual(builder.env_vars["HUGGING_FACE_HUB_TOKEN"], "token") self.assertEqual(builder.model_server, ModelServer.DJL_SERVING) - mock_send_telemetry.assert_called_once() + assert mock_send_telemetry.call_count == 2 mock_sagemaker_session.sagemaker_client.create_optimization_job.assert_called_once_with( OptimizationJobName="my-optimization-job", DeploymentInstanceType="ml.g5.24xlarge", @@ -2881,6 +2890,366 @@ def test_optimize_for_hf_without_custom_s3_path( }, ) + def test_deploy_invalid_inputs(self): + model_builder = ModelBuilder( + model="meta-llama/Meta-Llama-3-8B-Instruct", + env_vars={"HUGGING_FACE_HUB_TOKEN": "token"}, + role_arn="role-arn", + instance_type="ml.g5.2xlarge", + ) + inputs = {"endpoint_name": "endpoint-001"} + + try: + model_builder.deploy(**inputs) + except ValueError as e: + assert "Model Needs to be built before deploying" in str(e) + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + def test_display_benchmark_metrics_non_string_model(self, mock_is_jumpstart): + """Test that ValueError is raised when model is not a string""" + builder = ModelBuilder(model=Mock()) # Non-string model + + self.assertRaisesRegex( + ValueError, + "Benchmarking is only supported for JumpStart or HuggingFace models", + builder.display_benchmark_metrics, + ) + mock_is_jumpstart.assert_not_called() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.display_benchmark_metrics") + def test_display_benchmark_metrics_jumpstart_model( + self, mock_display_benchmark_metrics, mock_is_jumpstart + ): + """Test successful execution for jumpstart model""" + mock_is_jumpstart.return_value = True + + builder = ModelBuilder(model="jumpstart-model-id") + builder.display_benchmark_metrics() + + mock_is_jumpstart.assert_called_once() + mock_display_benchmark_metrics.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.display_benchmark_metrics") + def test_display_benchmark_metrics_with_jumpstart_equivalent( + self, mock_display_benchmark_metrics, mock_has_equivalent, mock_is_jumpstart + ): + """Test successful execution for model with jumpstart equivalent""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = True + + builder = ModelBuilder(model="hf-model-id") + builder.display_benchmark_metrics() + + mock_is_jumpstart.assert_called_once() + mock_has_equivalent.assert_called_once() + mock_display_benchmark_metrics.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + def test_display_benchmark_metrics_unsupported_model( + self, mock_has_equivalent, mock_is_jumpstart + ): + """Test that ValueError is raised for unsupported models""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = False + + builder = ModelBuilder(model="huggingface-model-id") + + self.assertRaisesRegex( + ValueError, + "This model does not have benchmark metrics yet", + builder.display_benchmark_metrics, + ) + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + def test_get_deployment_config_non_string_model(self, mock_is_jumpstart): + """Test that ValueError is raised when model is not a string""" + builder = ModelBuilder(model=Mock()) # Non-string model + + self.assertRaisesRegex( + ValueError, + "Deployment config is only supported for JumpStart or HuggingFace models", + builder.get_deployment_config, + ) + mock_is_jumpstart.assert_not_called() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.get_deployment_config") + def test_get_deployment_config_jumpstart_model( + self, mock_get_deployment_config, mock_is_jumpstart + ): + """Test successful execution for jumpstart model""" + mock_is_jumpstart.return_value = True + + builder = ModelBuilder(model="jumpstart-model-id") + builder.get_deployment_config() + + mock_is_jumpstart.assert_called_once() + mock_get_deployment_config.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.get_deployment_config") + def test_get_deployment_config_with_jumpstart_equivalent( + self, mock_get_deployment_config, mock_has_equivalent, mock_is_jumpstart + ): + """Test successful execution for model with jumpstart equivalent""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = True + + builder = ModelBuilder(model="hf-model-id") + builder.get_deployment_config() + + mock_is_jumpstart.assert_called_once() + mock_has_equivalent.assert_called_once() + mock_get_deployment_config.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + def test_get_deployment_config_unsupported_model(self, mock_has_equivalent, mock_is_jumpstart): + """Test that ValueError is raised for unsupported models""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = False + + builder = ModelBuilder(model="huggingface-model-id") + + self.assertRaisesRegex( + ValueError, + "This model does not have any deployment config yet", + builder.get_deployment_config, + ) + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + def test_list_deployment_configs_non_string_model(self, mock_is_jumpstart): + """Test that ValueError is raised when model is not a string""" + builder = ModelBuilder(model=Mock()) # Non-string model + + self.assertRaisesRegex( + ValueError, + "Deployment config is only supported for JumpStart or HuggingFace models", + builder.list_deployment_configs, + ) + mock_is_jumpstart.assert_not_called() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.list_deployment_configs") + def test_list_deployment_configs_jumpstart_model( + self, mock_list_deployment_configs, mock_is_jumpstart + ): + """Test successful execution for jumpstart model""" + mock_is_jumpstart.return_value = True + + builder = ModelBuilder(model="jumpstart-model-id") + builder.list_deployment_configs() + + mock_is_jumpstart.assert_called_once() + mock_list_deployment_configs.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.list_deployment_configs") + def test_list_deployment_configs_with_jumpstart_equivalent( + self, mock_list_deployment_configs, mock_has_equivalent, mock_is_jumpstart + ): + """Test successful execution for model with jumpstart equivalent""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = True + + builder = ModelBuilder(model="hf-model-id") + builder.list_deployment_configs() + + mock_is_jumpstart.assert_called_once() + mock_has_equivalent.assert_called_once() + mock_list_deployment_configs.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + def test_list_deployment_configs_unsupported_model( + self, mock_has_equivalent, mock_is_jumpstart + ): + """Test that ValueError is raised for unsupported models""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = False + + builder = ModelBuilder(model="huggingface-model-id") + + self.assertRaisesRegex( + ValueError, + "This model does not have any deployment config yet", + builder.list_deployment_configs, + ) + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + def test_set_deployment_config_non_string_model(self, mock_is_jumpstart): + """Test that ValueError is raised when model is not a string""" + builder = ModelBuilder(model=Mock()) # Non-string model + instance_type = "ml.g5.xlarge" + config_name = "config-name" + self.assertRaisesRegex( + ValueError, + "Deployment config is only supported for JumpStart or HuggingFace models", + builder.set_deployment_config, + config_name, + instance_type, + ) + mock_is_jumpstart.assert_not_called() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.set_deployment_config") + def test_set_deployment_config_jumpstart_model( + self, mock_set_deployment_config, mock_is_jumpstart + ): + """Test successful execution for jumpstart model""" + mock_is_jumpstart.return_value = True + instance_type = "ml.g5.xlarge" + config_name = "config-name" + + builder = ModelBuilder(model="jumpstart-model-id") + builder.set_deployment_config(config_name, instance_type) + + mock_is_jumpstart.assert_called_once() + mock_set_deployment_config.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + @patch("sagemaker.serve.builder.jumpstart_builder.JumpStart.set_deployment_config") + def test_set_deployment_config_with_jumpstart_equivalent( + self, mock_set_deployment_config, mock_has_equivalent, mock_is_jumpstart + ): + """Test successful execution for model with jumpstart equivalent""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = True + instance_type = "ml.g5.xlarge" + config_name = "config-name" + + builder = ModelBuilder(model="hf-model-id") + builder.set_deployment_config(config_name, instance_type) + + mock_is_jumpstart.assert_called_once() + mock_has_equivalent.assert_called_once() + mock_set_deployment_config.assert_called_once() + + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_jumpstart_model_id") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._use_jumpstart_equivalent") + def test_set_deployment_config_unsupported_model(self, mock_has_equivalent, mock_is_jumpstart): + """Test that ValueError is raised for unsupported models""" + mock_is_jumpstart.return_value = False + mock_has_equivalent.return_value = False + instance_type = "ml.g5.xlarge" + config_name = "config-name" + + builder = ModelBuilder(model="huggingface-model-id") + + self.assertRaisesRegex( + ValueError, + f"The deployment config {config_name} cannot be set on this model", + builder.set_deployment_config, + config_name, + instance_type, + ) + + @patch( + "sagemaker.serve.builder.model_builder.ModelBuilder._retrieve_hugging_face_model_mapping" + ) + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_gated_model") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._build_for_jumpstart") + def test_use_jumpstart_equivalent_return_true( + self, mock_build_for_jumpstart, mock_is_gated_model, mock_retrieve_mapping + ): + """Test that _use_jumpstart_equivalent returns True when equivalent exists""" + mock_retrieve_mapping.return_value = { + "HuggingFaceH4/zephyr-7b-beta": { + "jumpstart-model-id": "js-model", + "jumpstart-model-version": "1.0.0", + "hf-model-repo-sha": None, + } + } + mock_is_gated_model.return_value = False + + builder = ModelBuilder(model="HuggingFaceH4/zephyr-7b-beta") + + self.assertTrue(builder._use_jumpstart_equivalent()) + + @patch( + "sagemaker.serve.builder.model_builder.ModelBuilder._retrieve_hugging_face_model_mapping" + ) + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._is_gated_model") + @patch("sagemaker.serve.builder.model_builder.ModelBuilder._build_for_jumpstart") + def test_use_jumpstart_equivalent_return_true_with_schema_builder( + self, mock_build_for_jumpstart, mock_is_gated_model, mock_retrieve_mapping + ): + """Test that _use_jumpstart_equivalent returns True when equivalent exists""" + mock_retrieve_mapping.return_value = { + "HuggingFaceH4/zephyr-7b-beta": { + "jumpstart-model-id": "js-model", + "jumpstart-model-version": "1.0.0", + "hf-model-repo-sha": None, + } + } + mock_is_gated_model.return_value = False + + builder = ModelBuilder(model="HuggingFaceH4/zephyr-7b-beta", sagemaker_session=mock_session) + + self.assertTrue(builder._use_jumpstart_equivalent()) + self.assertIsNotNone(builder.schema_builder) + inputs, outputs = task.retrieve_local_schemas("text-generation") + self.assertEqual(builder.schema_builder.sample_input["inputs"], inputs["inputs"]) + self.assertEqual(builder.schema_builder.sample_output, outputs) + + @patch( + "sagemaker.serve.builder.model_builder.ModelBuilder._retrieve_hugging_face_model_mapping" + ) + def test_use_jumpstart_equivalent_return_false(self, mock_retrieve_mapping): + """Test that _use_jumpstart_equivalent returns false when equivalent doesn't exist""" + mock_retrieve_mapping.return_value = { + "hf-model-id": { + "jumpstart-model-id": "js-model", + "jumpstart-model-version": "1.0.0", + "hf-model-repo-sha": None, + } + } + + builder = ModelBuilder(model="model-id") + + self.assertFalse(builder._use_jumpstart_equivalent()) + + def test_use_jumpstart_equivalent_return_false_with_env_vars(self): + """Test that _use_jumpstart_equivalent returns false when env_vars is provided""" + builder = ModelBuilder(model="model-id", env_vars={"mock-key": "mock-value"}) + + self.assertFalse(builder._use_jumpstart_equivalent()) + + def test_use_jumpstart_equivalent_return_false_with_image_uri(self): + """Test that _use_jumpstart_equivalent returns false when image_uri is provided""" + builder = ModelBuilder(model="model-id", image_uri="mock-uri") + + self.assertFalse(builder._use_jumpstart_equivalent()) + + @patch("sagemaker.serve.builder.model_builder.JumpStartS3PayloadAccessor") + @patch("sagemaker.serve.builder.model_builder.get_jumpstart_content_bucket") + def test_retrieve_hugging_face_model_mapping(self, mock_content_bucket, mock_payload_accessor): + """Test that _retrieve_hugging_face_model_mapping returns the correct mapping""" + mock_get_object = Mock() + mock_get_object.return_value = ( + '{"js-model-id": {"hf-model-id": "hf-model", "jumpstart-model-version": "1.0.0"}}' + ) + mock_payload_accessor.get_object_cached = mock_get_object + expected_mapping = { + "hf-model": { + "jumpstart-model-id": "js-model-id", + "jumpstart-model-version": "1.0.0", + "hf-model-repo-sha": None, + "merged-at": None, + } + } + + builder = ModelBuilder(model="hf-model", sagemaker_session=mock_session) + + self.assertEqual(builder._retrieve_hugging_face_model_mapping(), expected_mapping) + @patch.object(ModelBuilder, "_prepare_for_mode") @patch.object(ModelBuilder, "_get_serve_setting", autospec=True) def test_optimize_with_gpu_instance_and_llama_3_1_and_compilation( @@ -3076,7 +3445,7 @@ def test_optimize_sharding_with_env_vars( self.assertEqual(builder.env_vars["HUGGING_FACE_HUB_TOKEN"], "token") self.assertEqual(builder.model_server, ModelServer.DJL_SERVING) - mock_send_telemetry.assert_called_once() + assert mock_send_telemetry.call_count == 2 mock_sagemaker_session.sagemaker_client.create_optimization_job.assert_called_once_with( OptimizationJobName="my-optimization-job", DeploymentInstanceType="ml.g5.24xlarge", @@ -3184,7 +3553,7 @@ def test_optimize_sharding_with_override_and_env_var( self.assertEqual(builder.env_vars["HUGGING_FACE_HUB_TOKEN"], "token") self.assertEqual(builder.model_server, ModelServer.DJL_SERVING) - mock_send_telemetry.assert_called_once() + assert mock_send_telemetry.call_count == 2 mock_sagemaker_session.sagemaker_client.create_optimization_job.assert_called_once_with( OptimizationJobName="my-optimization-job", DeploymentInstanceType="ml.g5.24xlarge", @@ -3298,7 +3667,7 @@ def test_optimize_sharding_with_override( self.assertEqual(builder.env_vars["HUGGING_FACE_HUB_TOKEN"], "token") self.assertEqual(builder.model_server, ModelServer.DJL_SERVING) - mock_send_telemetry.assert_called_once() + assert mock_send_telemetry.call_count == 2 mock_sagemaker_session.sagemaker_client.create_optimization_job.assert_called_once_with( OptimizationJobName="my-optimization-job", DeploymentInstanceType="ml.g5.24xlarge", @@ -3426,7 +3795,7 @@ def test_optimize_sharding_with_override_for_js( self.assertEqual(builder.env_vars["HUGGING_FACE_HUB_TOKEN"], "token") - mock_send_telemetry.assert_called_once() + assert mock_send_telemetry.call_count == 2 mock_sagemaker_session.sagemaker_client.create_optimization_job.assert_called_once_with( OptimizationJobName="my-optimization-job", ModelSource={"S3": {"S3Uri": ANY}}, @@ -3663,3 +4032,86 @@ def test_neuron_configurations_rule_set(self): speculative_decoding_config=None, compilation_config={}, ) + + +@pytest.mark.parametrize( + "test_case", + [ + { + "input_args": {"endpoint_name": "test"}, + "call_params": { + "instance_type": "ml.g5.2xlarge", + "initial_instance_count": 1, + "endpoint_name": "test", + }, + }, + { + "input_args": { + "endpoint_name": "test", + "inference_config": ServerlessInferenceConfig(), + }, + "call_params": { + "serverless_inference_config": ServerlessInferenceConfig(), + "endpoint_name": "test", + }, + }, + { + "input_args": { + "endpoint_name": "test", + "inference_config": AsyncInferenceConfig(output_path="op-path"), + }, + "call_params": { + "async_inference_config": AsyncInferenceConfig(output_path="op-path"), + "instance_type": "ml.g5.2xlarge", + "initial_instance_count": 1, + "endpoint_name": "test", + }, + }, + { + "input_args": {"endpoint_name": "test", "inference_config": RESOURCE_REQUIREMENTS}, + "call_params": { + "resources": RESOURCE_REQUIREMENTS, + "role": "role-arn", + "initial_instance_count": 1, + "instance_type": "ml.g5.2xlarge", + "mode": Mode.SAGEMAKER_ENDPOINT, + "endpoint_type": EndpointType.INFERENCE_COMPONENT_BASED, + }, + }, + { + "input_args": { + "inference_config": BatchTransformInferenceConfig( + instance_count=1, instance_type="ml.m5.large", output_path="op-path" + ) + }, + "call_params": { + "instance_count": 1, + "instance_type": "ml.m5.large", + "output_path": "op-path", + }, + "id": "Batch", + }, + ], + ids=["Real Time", "Serverless", "Async", "Multi-Model", "Batch"], +) +@patch("sagemaker.serve.builder.model_builder.unique_name_from_base") +def test_deploy(mock_unique_name_from_base, test_case): + mock_unique_name_from_base.return_value = "test" + model: Model = MagicMock() + model_builder = ModelBuilder( + model="meta-llama/Meta-Llama-3-8B-Instruct", + env_vars={"HUGGING_FACE_HUB_TOKEN": "token"}, + role_arn="role-arn", + instance_type="ml.g5.2xlarge", + ) + setattr(model_builder, "built_model", model) + + model_builder.deploy(**test_case["input_args"]) + + if "id" in test_case and test_case["id"] == "Batch": + args, kwargs = model.transformer.call_args_list[0] + else: + args, kwargs = model.deploy.call_args_list[0] + + diff = deepdiff.DeepDiff(kwargs, test_case["call_params"]) + assert diff == {} \ No newline at end of file From 1ad75c9f5c10b36bc540c8b2cda5286eb8b35ecc Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Sun, 10 Nov 2024 18:23:10 -0800 Subject: [PATCH 20/79] Simplify Config Class Names and DistributedRunner structures (#1573) --- .gitignore | 4 +- src/sagemaker/modules/__init__.py | 4 + src/sagemaker/modules/configs.py | 126 ++-------- src/sagemaker/modules/constants.py | 4 +- src/sagemaker/modules/distributed.py | 126 ++++++++++ src/sagemaker/modules/templates.py | 16 +- .../base_model_trainer.ipynb | 63 +++-- .../train/container_drivers/mpi_driver.py | 19 +- .../train/container_drivers/mpi_utils.py | 36 +-- .../{pytorch_driver.py => torchrun_driver.py} | 14 +- .../modules/train/container_drivers/utils.py | 33 ++- src/sagemaker/modules/train/model_trainer.py | 229 ++++++++---------- .../data/modules/script_mode/custom_script.py | 146 +++++++++++ .../modules/script_mode/data/test/x_test.npy | Bin 0 -> 19456 bytes .../modules/script_mode/data/test/y_test.npy | Bin 0 -> 2544 bytes .../script_mode/data/train/x_train.npy | Bin 0 -> 77184 bytes .../script_mode/data/train/y_train.npy | Bin 0 -> 9760 bytes .../modules/script_mode/pytorch_model_def.py | 23 ++ .../data/modules/script_mode/requirements.txt | 3 + .../container_drivers/test_mpi_driver.py | 41 ++-- ...orch_driver.py => test_torchrun_driver.py} | 77 +++--- .../modules/train/test_model_trainer.py | 142 +++++++++-- 22 files changed, 693 insertions(+), 413 deletions(-) create mode 100644 src/sagemaker/modules/distributed.py rename src/sagemaker/modules/train/container_drivers/{pytorch_driver.py => torchrun_driver.py} (91%) create mode 100644 tests/data/modules/script_mode/custom_script.py create mode 100644 tests/data/modules/script_mode/data/test/x_test.npy create mode 100644 tests/data/modules/script_mode/data/test/y_test.npy create mode 100644 tests/data/modules/script_mode/data/train/x_train.npy create mode 100644 tests/data/modules/script_mode/data/train/y_train.npy create mode 100644 tests/data/modules/script_mode/pytorch_model_def.py create mode 100644 tests/data/modules/script_mode/requirements.txt rename tests/unit/sagemaker/modules/train/container_drivers/{test_pytorch_driver.py => test_torchrun_driver.py} (52%) diff --git a/.gitignore b/.gitignore index b87341ca4d..d966fa1ccc 100644 --- a/.gitignore +++ b/.gitignore @@ -33,8 +33,8 @@ env/ *.html **/_repack_script_launcher.sh src/sagemaker/modules/train/container_drivers/sm_train.sh -src/sagemaker/modules/train/container_drivers/sourcecodeconfig.json -src/sagemaker/modules/train/container_drivers/distribution.json +src/sagemaker/modules/train/container_drivers/sourcecode.json +src/sagemaker/modules/train/container_drivers/distributed_runner.json tests/data/**/_repack_model.py tests/data/experiment/sagemaker-dev-1.0.tar.gz src/sagemaker/serve/tmp_workspace \ No newline at end of file diff --git a/src/sagemaker/modules/__init__.py b/src/sagemaker/modules/__init__.py index 67758a7af1..9a25d10e4e 100644 --- a/src/sagemaker/modules/__init__.py +++ b/src/sagemaker/modules/__init__.py @@ -16,3 +16,7 @@ from sagemaker_core.main.utils import logger as sagemaker_core_logger logger = sagemaker_core_logger + +from sagemaker.modules.train.model_trainer import ( # noqa: F401 E402 # pylint: disable=C0413 + ModelTrainer, +) diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py index eee064c0cf..75f06797bd 100644 --- a/src/sagemaker/modules/configs.py +++ b/src/sagemaker/modules/configs.py @@ -21,7 +21,7 @@ from __future__ import absolute_import -from typing import Optional, Union, Dict, Any, List +from typing import Optional, Union from pydantic import BaseModel, model_validator import sagemaker_core.shapes as shapes @@ -54,15 +54,10 @@ CheckpointConfig, ) -from sagemaker.modules import logger from sagemaker.modules.utils import convert_unassigned_to_none __all__ = [ - "SourceCodeConfig", - "TorchDistributionConfig", - "MPIDistributionConfig", - "SMDistributedSettings", - "DistributionConfig", + "SourceCode", "StoppingCondition", "RetryStrategy", "OutputDataConfig", @@ -87,107 +82,16 @@ "InstanceGroup", "TensorBoardOutputConfig", "CheckpointConfig", - "ComputeConfig", - "NetworkingConfig", + "Compute", + "Networking", "InputData", ] -class SMDistributedSettings(BaseModel): - """SMDistributedSettings. +class SourceCode(BaseModel): + """SourceCode. - The SMDistributedSettings is used to configure distributed training when - using the smdistributed library. - - Attributes: - enable_dataparallel (Optional[bool]): - Whether to enable data parallelism. - enable_modelparallel (Optional[bool]): - Whether to enable model parallelism. - modelparallel_parameters (Optional[Dict[str, Any]]): - The parameters for model parallelism. - """ - - enable_dataparallel: Optional[bool] = False - enable_modelparallel: Optional[bool] = False - modelparallel_parameters: Optional[Dict[str, Any]] = None - - -class DistributionConfig(BaseModel): - """Base class for distribution configurations.""" - - _distribution_type: str - - -class TorchDistributionConfig(DistributionConfig): - """TorchDistributionConfig. - - The TorchDistributionConfig uses `torchrun` or `torch.distributed.launch` in the backend to - launch distributed training. - - SMDistributed Library Information: - - `TorchDistributionConfig` can be used for SMModelParallel V2. - - For SMDataParallel or SMModelParallel V1, it is recommended to use the - `MPIDistributionConfig.` - - - Attributes: - smdistributed_settings (Optional[SMDistributedSettings]): - The settings for smdistributed library. - process_count_per_node (int): - The number of processes to run on each node in the training job. - Will default to the number of CPUs or GPUs available in the container. - """ - - _distribution_type: str = "torch_distributed" - - smdistributed_settings: Optional[SMDistributedSettings] = None - process_count_per_node: Optional[int] = None - - @model_validator(mode="after") - def _validate_model(cls, model): # pylint: disable=E0213 - """Validate the model.""" - if ( - getattr(model, "smddistributed_settings", None) - and model.smddistributed_settings.enable_dataparallel - ): - logger.warning( - "For smdistributed data parallelism, it is recommended to use " - + "MPIDistributionConfig." - ) - return model - - -class MPIDistributionConfig(DistributionConfig): - """MPIDistributionConfig. - - The MPIDistributionConfig uses `mpirun` in the backend to launch distributed training. - - SMDistributed Library Information: - - `MPIDistributionConfig` can be used for SMDataParallel and SMModelParallel V1. - - For SMModelParallel V2, it is recommended to use the `TorchDistributionConfig`. - - Attributes: - smdistributed_settings (Optional[SMDistributedSettings]): - The settings for smdistributed library. - process_count_per_node (int): - The number of processes to run on each node in the training job. - Will default to the number of CPUs or GPUs available in the container. - mpi_additional_options (Optional[str]): - The custom MPI options to use for the training job. - """ - - _distribution_type: str = "mpi" - - smdistributed_settings: Optional[SMDistributedSettings] = None - process_count_per_node: Optional[int] = None - mpi_additional_options: Optional[List[str]] = None - - -class SourceCodeConfig(BaseModel): - """SourceCodeConfig. - - This config allows the user to specify the source code location, dependencies, + The SourceCode class allows the user to specify the source code location, dependencies, entry script, or commands to be executed in the training job container. Attributes: @@ -210,10 +114,10 @@ class SourceCodeConfig(BaseModel): command: Optional[str] = None -class ComputeConfig(shapes.ResourceConfig): - """ComputeConfig. +class Compute(shapes.ResourceConfig): + """Compute. - The ComputeConfig is a subclass of `sagemaker_core.shapes.ResourceConfig` + The Compute class is a subclass of `sagemaker_core.shapes.ResourceConfig` and allows the user to specify the compute resources for the training job. Attributes: @@ -245,7 +149,7 @@ class ComputeConfig(shapes.ResourceConfig): enable_managed_spot_training: Optional[bool] = None @model_validator(mode="after") - def _model_validator(self) -> "ComputeConfig": + def _model_validator(self) -> "Compute": """Convert Unassigned values to None.""" return convert_unassigned_to_none(self) @@ -259,10 +163,10 @@ def _to_resource_config(self) -> shapes.ResourceConfig: return shapes.ResourceConfig(**filtered_dict) -class NetworkingConfig(shapes.VpcConfig): - """NetworkingConfig. +class Networking(shapes.VpcConfig): + """Networking. - The NetworkingConifg is a subclass of `sagemaker_core.shapes.VpcConfig ` and + The Networking class is a subclass of `sagemaker_core.shapes.VpcConfig ` and allows the user to specify the networking configuration for the training job. Attributes: @@ -290,7 +194,7 @@ class NetworkingConfig(shapes.VpcConfig): enable_inter_container_traffic_encryption: Optional[bool] = None @model_validator(mode="after") - def _model_validator(self) -> "NetworkingConfig": + def _model_validator(self) -> "Networking": """Convert Unassigned values to None.""" return convert_unassigned_to_none(self) diff --git a/src/sagemaker/modules/constants.py b/src/sagemaker/modules/constants.py index 97367b2a61..271c74313f 100644 --- a/src/sagemaker/modules/constants.py +++ b/src/sagemaker/modules/constants.py @@ -25,8 +25,8 @@ os.path.dirname(os.path.abspath(__file__)), "train/container_drivers" ) -SOURCE_CODE_CONFIG_JSON = "sourcecodeconfig.json" -DISTRIBUTION_JSON = "distribution.json" +SOURCE_CODE_JSON = "sourcecode.json" +DISTRIBUTED_RUNNER_JSON = "distributed_runner.json" TRAIN_SCRIPT = "sm_train.sh" DEFAULT_CONTAINER_ENTRYPOINT = ["/bin/bash"] diff --git a/src/sagemaker/modules/distributed.py b/src/sagemaker/modules/distributed.py new file mode 100644 index 0000000000..b6d6967833 --- /dev/null +++ b/src/sagemaker/modules/distributed.py @@ -0,0 +1,126 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Distributed module.""" +from __future__ import absolute_import + +from typing import Optional, Dict, Any, List +from pydantic import BaseModel, PrivateAttr + + +class DistributedRunner(BaseModel): + """Base class for DistributedRunner Class""" + + _type: str = PrivateAttr() + + def model_dump(self, *args, **kwargs): + """Dump the model to a dictionary.""" + result = super().model_dump(*args, **kwargs) + result["_type"] = self._type + return result + + +class Torchrun(DistributedRunner): + """TorchDistribution. + + The TorchDistribution runner uses `torchrun` or `torch.distributed.launch` in the backend to + launch distributed training. + + Attributes: + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of GPUs available in the container. + """ + + _type: str = PrivateAttr(default="torchrun") + + process_count_per_node: Optional[int] = None + + +class TorchrunSMP(DistributedRunner): + """TorchrunSMP. + + The TorchrunSMP runner uses `torchrun` or `torch.distributed.launch` in the backend + to launch distributed training. This strategy is used for a PyTorch job using the SageMaker + Model Parallelism library v2. For more information on the model parallelism parameters, see: + https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-model-parallel-v2-reference.html#distributed-model-parallel-v2-reference-init-config + + Attributes: + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of GPUs available in the container. + hybrid_shard_degree (Optional[int]): + Specifies a sharded parallelism degree for the model. + sm_activation_offloading (Optional[bool]): + Specifies whether to enable the SMP activation offloading implementation. + activation_loading_horizon (Optional[int]): + An integer specifying the activation offloading horizon type for FSDP. This is the + maximum number of checkpointed or offloaded layers whose inputs can be in the GPU + memory simultaneously. + fsdp_cache_flush_warnings (Optional[bool]): + Detects and warns if cache flushes happen in the PyTorch memory manager, because they + can degrade computational performance. + allow_empty_shards (Optional[bool]): + Whether to allow empty shards when sharding tensors if tensor is not divisible. This is + an experimental fix for crash during checkpointing in certain scenarios. Disabling this + falls back to the original PyTorch behavior. + tensor_parallel_degree (Optional[int]): + Specifies a tensor parallelism degree. The value must be between 1 and world_size. + context_parallel_degree (Optional[int]): + Specifies the context parallelism degree. The value must be between 1 and world_size , + and must be <= hybrid_shard_degree. + expert_parallel_degree (Optional[int]): + Specifies a expert parallelism degree. The value must be between 1 and world_size. + random_seed (Optional[int]): + A seed number for the random operations in distributed modules by SMP tensor + parallelism or expert parallelism. + """ + + _type: str = PrivateAttr(default="torchrun") + + process_count_per_node: Optional[int] = None + hybrid_shard_degree: Optional[int] = None + sm_activation_offloading: Optional[bool] = None + activation_loading_horizon: Optional[int] = None + fsdp_cache_flush_warnings: Optional[bool] = None + allow_empty_shards: Optional[bool] = None + tensor_parallel_degree: Optional[int] = None + context_parallel_degree: Optional[int] = None + expert_parallel_degree: Optional[int] = None + random_seed: Optional[int] = None + + def _to_mp_parameters_dict(self) -> Dict[str, Any]: + """Convert to a dictionary of MP parameters.""" + mp_parameters = self.model_dump(exclude_none=True) + mp_parameters.pop("_type") + if mp_parameters.get("process_count_per_node") is not None: + mp_parameters.pop("process_count_per_node") + return mp_parameters + + +class MPI(DistributedRunner): + """MPI. + + The MPI runner uses `mpirun` in the backend to launch distributed training. + + Attributes: + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of GPUs available in the container. + mpi_additional_options (Optional[str]): + The custom MPI options to use for the training job. + """ + + _type: str = PrivateAttr(default="mpi") + + process_count_per_node: Optional[int] = None + mpi_additional_options: Optional[List[str]] = None diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 491b0cb2b6..1c2e65ff8c 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -19,13 +19,13 @@ eval $CMD """ -EXECUTE_PYTORCH_DRIVER = """ -echo "Running PyTorch training driver" -$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/pytorch_driver.py +EXEUCTE_TORCHRUN_DRIVER = """ +echo "Running Torchrun driver" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/torchrun_driver.py """ EXECUTE_MPI_DRIVER = """ -echo "Running MPI training driver" +echo "Running MPI driver" $SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/mpi_driver.py """ @@ -73,12 +73,12 @@ cat /opt/ml/input/config/inputdataconfig.json echo -echo "/opt/ml/input/data/sm_drivers/sourcecodeconfig.json" -cat /opt/ml/input/data/sm_drivers/sourcecodeconfig.json +echo "/opt/ml/input/data/sm_drivers/sourcecode.json" +cat /opt/ml/input/data/sm_drivers/sourcecode.json echo -echo "/opt/ml/input/data/sm_drivers/distribution.json" -cat /opt/ml/input/data/sm_drivers/distribution.json +echo "/opt/ml/input/data/sm_drivers/distributed_runner.json" +cat /opt/ml/input/data/sm_drivers/distributed_runner.json echo echo "Setting up environment variables" diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index e32b0211d2..c839566dc3 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -27,16 +27,16 @@ "outputs": [], "source": [ "from sagemaker.modules.train import ModelTrainer\n", - "from sagemaker.modules.configs import SourceCodeConfig\n", + "from sagemaker.modules.configs import SourceCode\n", "\n", "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", "\n", - "source_code_config = SourceCodeConfig(\n", + "source_code = SourceCode(\n", " command=\"echo 'Hello World' && env\",\n", ")\n", "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", - " source_code_config=source_code_config,\n", + " source_code=source_code,\n", ")" ] }, @@ -70,11 +70,11 @@ "outputs": [], "source": [ "from sagemaker.modules.train import ModelTrainer\n", - "from sagemaker.modules.configs import SourceCodeConfig\n", + "from sagemaker.modules.configs import SourceCode\n", "\n", "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", "\n", - "source_code_config = SourceCodeConfig(\n", + "source_code = SourceCode(\n", " source_dir=\"basic-script-mode\",\n", " command=\"python custom_script.py\",\n", ")\n", @@ -89,7 +89,7 @@ "\n", "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", - " source_code_config=source_code_config,\n", + " source_code=source_code,\n", " hyperparameters=hyperparameters,\n", " environment=env_vars,\n", ")\n", @@ -117,9 +117,9 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.configs import SourceCodeConfig\n", + "from sagemaker.modules.configs import SourceCode\n", "\n", - "source_code_config = SourceCodeConfig(\n", + "source_code = SourceCode(\n", " source_dir=\"basic-script-mode\",\n", " requirements=\"requirements.txt\",\n", " entry_script=\"custom_script.py\",\n", @@ -127,7 +127,7 @@ "\n", "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", - " source_code_config=source_code_config,\n", + " source_code=source_code,\n", ")" ] }, @@ -296,7 +296,7 @@ "outputs": [], "source": [ "from sagemaker.modules.train import ModelTrainer\n", - "from sagemaker.modules.configs import ComputeConfig, SourceCodeConfig, InputData\n", + "from sagemaker.modules.configs import Compute, SourceCode, InputData\n", "\n", "env = {}\n", "env[\"FI_PROVIDER\"] = \"efa\"\n", @@ -307,10 +307,11 @@ "env[\"FI_EFA_USE_DEVICE_RDMA\"] = \"1\"\n", "env[\"RDMAV_FORK_SAFE\"] = \"1\"\n", "\n", - "compute_config = ComputeConfig(\n", + "compute = Compute(\n", " instance_count=2,\n", " instance_type=\"ml.p4d.24xlarge\",\n", " volume_size_in_gb=96,\n", + " keep_alive_period_in_seconds=3600\n", ")\n", "\n", "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", @@ -335,7 +336,7 @@ "metadata": {}, "outputs": [], "source": [ - "source_code_config = SourceCodeConfig(\n", + "source_code = SourceCode(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", " command=\"torchrun --nnodes 2 \\\n", @@ -348,10 +349,10 @@ "\n", "model_trainer = ModelTrainer(\n", " training_image=hugging_face_image,\n", - " compute_config=compute_config,\n", + " compute=compute,\n", " environment=env,\n", " hyperparameters=hyperparameters,\n", - " source_code_config=source_code_config,\n", + " source_code=source_code,\n", ")" ] }, @@ -365,7 +366,7 @@ " channel_name=\"dataset\",\n", " data_source=training_input_path,\n", ")\n", - "model_trainer.train(input_data_config=[test_data])" + "model_trainer.train(input_data_config=[test_data], wait=False)" ] }, { @@ -383,13 +384,18 @@ "source": [ "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import (\n", - " ComputeConfig, SourceCodeConfig, TorchDistributionConfig, InputData\n", + " Compute, SourceCode, InputData\n", + ")\n", + "from sagemaker.modules.distributed import (\n", + " Torchrun,\n", + " MPI\n", ")\n", "\n", - "compute_config = ComputeConfig(\n", + "compute = Compute(\n", " instance_count=2,\n", " instance_type=\"ml.p4d.24xlarge\",\n", " volume_size_in_gb=96,\n", + " keep_alive_period_in_seconds=3600\n", ")\n", "\n", "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", @@ -414,18 +420,31 @@ "metadata": {}, "outputs": [], "source": [ - "source_code_config = SourceCodeConfig(\n", + "source_code = SourceCode(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", " entry_script=\"run_clm_no_trainer.py\",\n", ")\n", "\n", + "# Run using Torchrun\n", + "torchrun = Torchrun()\n", + "\n", + "# Run using MPI\n", + "mpi = MPI(\n", + " mpi_additional_options=[\n", + " \"-x\",\n", + " \"MASTER_ADDR=algo-1\",\n", + " \"-x\",\n", + " \"MASTER_PORT=7777\",\n", + " ]\n", + ")\n", + "\n", "model_trainer = ModelTrainer(\n", " training_image=hugging_face_image,\n", - " compute_config=compute_config,\n", + " compute=compute,\n", " hyperparameters=hyperparameters,\n", - " source_code_config=source_code_config,\n", - " distribution_config=TorchDistributionConfig(),\n", + " source_code=source_code,\n", + " distributed_runner=mpi,\n", ")" ] }, @@ -439,7 +458,7 @@ " channel_name=\"dataset\",\n", " data_source=training_input_path,\n", ")\n", - "model_trainer.train(input_data_config=[test_data])" + "model_trainer.train(input_data_config=[test_data], wait=False)" ] }, { diff --git a/src/sagemaker/modules/train/container_drivers/mpi_driver.py b/src/sagemaker/modules/train/container_drivers/mpi_driver.py index 29b047ea89..90c13df8d5 100644 --- a/src/sagemaker/modules/train/container_drivers/mpi_driver.py +++ b/src/sagemaker/modules/train/container_drivers/mpi_driver.py @@ -14,12 +14,13 @@ from __future__ import absolute_import import os +import sys import json from utils import ( logger, - read_source_code_config_json, - read_distribution_json, + read_source_code_json, + read_distributed_runner_json, get_process_count, execute_commands, write_failure_file, @@ -55,9 +56,8 @@ def main(): 5. Exit """ - source_code_config = read_source_code_config_json() - distribution = read_distribution_json() - sm_distributed_settings = distribution.get("smdistributed_settings", {}) + source_code = read_source_code_json() + distribution = read_distributed_runner_json() sm_current_host = os.environ["SM_CURRENT_HOST"] sm_hosts = json.loads(os.environ["SM_HOSTS"]) @@ -83,18 +83,17 @@ def main(): host_count=host_count, host_list=host_list, num_processes=process_count, - smdataparallel_enabled=sm_distributed_settings.get("enable_dataparallel", False), - smmodelparallel_enabled=sm_distributed_settings.get("enable_modelparallel", False), additional_options=distribution.get("mpi_additional_options", []), - entry_script_path=os.path.join(USER_CODE_PATH, source_code_config["entry_script"]), + entry_script_path=os.path.join(USER_CODE_PATH, source_code["entry_script"]), ) logger.info(f"Executing command: {mpi_command}") exit_code, error_traceback = execute_commands(mpi_command) + write_status_file_to_workers(worker_hosts) + if exit_code != 0: write_failure_file(error_traceback) - - write_status_file_to_workers(worker_hosts) + sys.exit(exit_code) if __name__ == "__main__": diff --git a/src/sagemaker/modules/train/container_drivers/mpi_utils.py b/src/sagemaker/modules/train/container_drivers/mpi_utils.py index 2c19986751..0fcfa265a3 100644 --- a/src/sagemaker/modules/train/container_drivers/mpi_utils.py +++ b/src/sagemaker/modules/train/container_drivers/mpi_utils.py @@ -16,7 +16,6 @@ import os import time import subprocess -import json from typing import List @@ -29,7 +28,7 @@ def _write_status_file(host: str, status_file: str) -> bool: """Write the status file to the provided host.""" try: - logger.info(f"Start writing mpirun finished status to {host}") + logger.info("Writing finished status file (%s) to %s", status_file, host) subprocess.run( ["ssh", host, "touch", f"{status_file}"], capture_output=True, @@ -188,8 +187,6 @@ def get_mpirun_command( host_count: int, host_list: List[str], num_processes: int, - smdataparallel_enabled: bool, - smmodelparallel_enabled: bool, additional_options: List[str], entry_script_path: str, ): @@ -258,37 +255,6 @@ def get_mpirun_command( if credential in os.environ: mpirun_command.extend(["-x", credential]) - if smdataparallel_enabled: - if host_count == 1: - smdataparallel_flag = "SMDATAPARALLEL_USE_HOMOGENEOUS=1" - mpirun_command.extend(["-x", smdataparallel_flag]) - else: - smdataparallel_flag = "SMDATAPARALLEL_USE_SINGLENODE=1" - smdataparallel_server_port = 7592 - smdataparallel_server_addr = "algo-1" - - mpirun_command.extend(["-x", smdataparallel_flag]) - mpirun_command.extend( - [ - "-x", - f"SMDATAPARALLEL_SERVER_ADDR={smdataparallel_server_addr}", - "-x", - f"SMDATAPARALLEL_SERVER_PORT={smdataparallel_server_port}", - "-x", - f"SAGEMAKER_INSTANCE_TYPE={instance_type}", - ] - ) - - if validate_smddprun(): - mpirun_command.extend(["smddprun"]) - - if smmodelparallel_enabled: - mp_parameters = json.loads(os.environ.get("SM_HP_MP_PARAMETERS", "{}")) - ddp_dist_backend = mp_parameters.get("ddp_dist_backend", "auto") - if ddp_dist_backend == "auto": - if validate_smddpmprun(): - mpirun_command.extend(["smddpmprun", "-i", instance_type, "--allow-bypass"]) - mpirun_command.extend([get_python_executable()]) mpirun_command.extend(["-m", "mpi4py", entry_script_path]) return mpirun_command diff --git a/src/sagemaker/modules/train/container_drivers/pytorch_driver.py b/src/sagemaker/modules/train/container_drivers/torchrun_driver.py similarity index 91% rename from src/sagemaker/modules/train/container_drivers/pytorch_driver.py rename to src/sagemaker/modules/train/container_drivers/torchrun_driver.py index 049c9ed60a..799f56ca93 100644 --- a/src/sagemaker/modules/train/container_drivers/pytorch_driver.py +++ b/src/sagemaker/modules/train/container_drivers/torchrun_driver.py @@ -10,17 +10,18 @@ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. -"""This module is the entry point for the PyTorch driver script.""" +"""This module is the entry point for the Torchrun driver script.""" from __future__ import absolute_import import os +import sys from typing import List, Tuple from utils import ( logger, - read_source_code_config_json, - read_distribution_json, + read_source_code_json, + read_distributed_runner_json, get_process_count, get_python_executable, SM_EFA_NCCL_INSTANCES, @@ -62,8 +63,8 @@ def setup_env(): def create_commands(): """Create the Torch Distributed command to execute""" - source_code_config = read_source_code_config_json() - distribution = read_distribution_json() + source_code = read_source_code_json() + distribution = read_distributed_runner_json() process_count = get_process_count(distribution) host_count = int(os.environ["SM_HOST_COUNT"]) @@ -90,7 +91,7 @@ def create_commands(): ] ) - torch_cmd.extend([os.path.join(USER_CODE_PATH, source_code_config["entry_script"])]) + torch_cmd.extend([os.path.join(USER_CODE_PATH, source_code["entry_script"])]) return torch_cmd @@ -113,6 +114,7 @@ def main(): exit_code, traceback = execute_commands(torch_cmd) if exit_code != 0: write_failure_file(traceback) + sys.exit(exit_code) if __name__ == "__main__": diff --git a/src/sagemaker/modules/train/container_drivers/utils.py b/src/sagemaker/modules/train/container_drivers/utils.py index 219fcf4b62..42745b70ff 100644 --- a/src/sagemaker/modules/train/container_drivers/utils.py +++ b/src/sagemaker/modules/train/container_drivers/utils.py @@ -37,8 +37,9 @@ """ USER_CODE_PATH = "/opt/ml/input/data/sm_code" -SOURCE_CODE_CONFIG_JSON = "/opt/ml/input/data/sm_drivers/sourcecodeconfig.json" -DISTRIBUTION_JSON = "/opt/ml/input/data/sm_drivers/distribution.json" +SOURCE_CODE_JSON = "/opt/ml/input/data/sm_drivers/sourcecode.json" +DISTRIBUTED_RUNNER_JSON = "/opt/ml/input/data/sm_drivers/distributed_runner.json" + SM_EFA_NCCL_INSTANCES = [ "ml.g4dn.8xlarge", @@ -65,24 +66,30 @@ def write_failure_file(message: str = DEFAULT_FAILURE_MESSAGE): f.write(message) -def read_source_code_config_json(source_code_config_file: Dict[str, Any] = SOURCE_CODE_CONFIG_JSON): +def read_source_code_json(source_code_json: Dict[str, Any] = SOURCE_CODE_JSON): """Read the source code config json file.""" - with open(source_code_config_file, "r") as f: - source_code_config_json = json.load(f) - return source_code_config_json + try: + with open(source_code_json, "r") as f: + source_code_dict = json.load(f) or {} + except FileNotFoundError: + source_code_dict = {} + return source_code_dict -def read_distribution_json(distribution_file: Dict[str, Any] = DISTRIBUTION_JSON): - """Read the distribution json file.""" - with open(distribution_file, "r") as f: - distribution_json = json.load(f) - return distribution_json +def read_distributed_runner_json(distributed_json: Dict[str, Any] = DISTRIBUTED_RUNNER_JSON): + """Read the distribution config json file.""" + try: + with open(distributed_json, "r") as f: + distributed_runner_dict = json.load(f) or {} + except FileNotFoundError: + distributed_runner_dict = {} + return distributed_runner_dict -def get_process_count(distribution: Dict[str, Any]) -> int: +def get_process_count(distributed_runner_dict: Dict[str, Any]) -> int: """Get the number of processes to run on each node in the training job.""" return ( - int(distribution.get("process_count_per_node", 0)) + int(distributed_runner_dict.get("process_count_per_node", 0)) or int(os.environ.get("SM_NUM_GPUS", 0)) or int(os.environ.get("SM_NUM_NEURONS", 0)) or 1 diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 8d103195aa..7b9abf23c1 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -22,23 +22,19 @@ from sagemaker_core.resources import TrainingJob from sagemaker_core.shapes import AlgorithmSpecification -from sagemaker.fw_utils import validate_mp_config from sagemaker import get_execution_role, Session from sagemaker.modules.configs import ( - ComputeConfig, + Compute, StoppingCondition, RetryStrategy, OutputDataConfig, - SourceCodeConfig, - MPIDistributionConfig, - TorchDistributionConfig, - SMDistributedSettings, + SourceCode, TrainingImageConfig, Channel, DataSource, S3DataSource, FileSystemDataSource, - NetworkingConfig, + Networking, Tag, MetricDefinition, DebugHookConfig, @@ -53,6 +49,10 @@ CheckpointConfig, InputData, ) +from sagemaker.modules.distributed import ( + DistributedRunner, + TorchrunSMP, +) from sagemaker.modules.utils import ( _get_repo_name_from_image, _get_unique_name, @@ -69,14 +69,14 @@ TRAIN_SCRIPT, DEFAULT_CONTAINER_ENTRYPOINT, DEFAULT_CONTAINER_ARGUMENTS, - SOURCE_CODE_CONFIG_JSON, - DISTRIBUTION_JSON, + SOURCE_CODE_JSON, + DISTRIBUTED_RUNNER_JSON, ) from sagemaker.modules.templates import ( TRAIN_SCRIPT_TEMPLATE, EXECUTE_BASE_COMMANDS, EXECUTE_MPI_DRIVER, - EXECUTE_PYTORCH_DRIVER, + EXEUCTE_TORCHRUN_DRIVER, ) from sagemaker.modules import logger @@ -87,13 +87,13 @@ class ModelTrainer(BaseModel): Example: ```python from sagemaker.modules.train import ModelTrainer - from sagemaker.modules.configs import SourceCodeConfig, ComputeConfig, InputDataSource + from sagemaker.modules.configs import SourceCode, Compute, InputData - source_code_config = SourceCodeConfig(source_dir="source", entry_script="train.py") + source_code = SourceCode(source_dir="source", entry_script="train.py") training_image = "123456789012.dkr.ecr.us-west-2.amazonaws.com/my-training-image" model_trainer = ModelTrainer( training_image=training_image, - source_code_config=source_code_config, + source_code=source_code, ) train_data = InputData(channel_name="train", data_source="s3://bucket/train") @@ -111,19 +111,17 @@ class ModelTrainer(BaseModel): The base name for the training job. If not specified, a default name will be generated using the algorithm name or training image. - source_code_config (Optional[SourceCodeConfig]): + source_code (Optional[SourceCode]): The source code configuration. This is used to configure the source code for running the training job. - distribution_config (Optional[Union[ - MPIDistributionConfig, TorchDistributionConfig - ]]): - The distribution settings for the training job. This is used to configure - a distributed training job. If specifed, a `source_code_config` must also + distributed_runner (Optional[DistributedRunner]): + The distributed runner for the training job. This is used to configure + a distributed training job. If specifed, `source_code` must also be provided. - compute_config (Optional[ComputeConfig]): + compute (Optional[Compute]): The compute configuration. This is used to specify the compute resources for the training job. If not specified, will default to 1 instance of ml.m5.xlarge. - networking_config (Optional[NetworkingConfig]): + networking (Optional[Networking]): The networking configuration. This is used to specify the networking settings for the training job. stopping_condition (Optional[StoppingCondition]): @@ -169,10 +167,10 @@ class ModelTrainer(BaseModel): session: Optional[Session] = None role: Optional[str] = None base_job_name: Optional[str] = None - source_code_config: Optional[SourceCodeConfig] = None - distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]] = None - compute_config: Optional[ComputeConfig] = None - networking_config: Optional[NetworkingConfig] = None + source_code: Optional[SourceCode] = None + distributed_runner: Optional[DistributedRunner] = None + compute: Optional[Compute] = None + networking: Optional[Networking] = None stopping_condition: Optional[StoppingCondition] = None training_image: Optional[str] = None training_image_config: Optional[TrainingImageConfig] = None @@ -192,7 +190,6 @@ class ModelTrainer(BaseModel): # Debugger settings _debug_hook_config: Optional[DebugHookConfig] = PrivateAttr(default=None) _debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = PrivateAttr(default=None) - _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) _profiler_config: Optional[ProfilerConfig] = PrivateAttr(default=None) _profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = PrivateAttr( default=None @@ -204,6 +201,7 @@ class ModelTrainer(BaseModel): _experiment_config: Optional[ExperimentConfig] = PrivateAttr(default=None) _infra_check_config: Optional[InfraCheckConfig] = PrivateAttr(default=None) _session_chaining_config: Optional[SessionChainingConfig] = PrivateAttr(default=None) + _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) def _validate_training_image_and_algorithm_name( self, training_image: Optional[str], algorithm_name: Optional[str] @@ -218,46 +216,28 @@ def _validate_training_image_and_algorithm_name( "Only one of 'training_image' or 'algorithm_name' must be provided.", ) - # TODO: Move to use pydantic model validators - def _validate_sm_distributed_settings( - self, sm_distributed_settings: Optional[SMDistributedSettings] - ): - """Validate the SM distributed settings.""" - if ( - sm_distributed_settings.enable_dataparallel - and sm_distributed_settings.enable_modelparallel - ): - raise ValueError( - "Both 'enable_dataparallel' and 'enable_modelparallel' cannot be True." - ) - if sm_distributed_settings.modelparallel_parameters: - validate_mp_config(sm_distributed_settings.modelparallel_parameters) - - def _validate_distribution_config( + def _validate_distributed_runner( self, - source_code_config: Optional[SourceCodeConfig], - distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]], + source_code: Optional[SourceCode], + distributed_runner: Optional[DistributedRunner], ): """Validate the distribution configuration.""" - if distribution_config and not source_code_config.entry_script: + if distributed_runner and not source_code.entry_script: raise ValueError( - "Must provide 'entry_script' if 'distribution' " - + "is provided in 'source_code_config'.", + "Must provide 'entry_script' if 'distribution' " + "is provided in 'source_code'.", ) - if distribution_config and distribution_config.smdistributed_settings: - self._validate_sm_distributed_settings(distribution_config.smdistributed_settings) # TODO: Move to use pydantic model validators - def _validate_source_code_config(self, source_code_config: Optional[SourceCodeConfig]): + def _validate_source_code(self, source_code: Optional[SourceCode]): """Validate the source code configuration.""" - if source_code_config: - if source_code_config.requirements or source_code_config.entry_script: - source_dir = source_code_config.source_dir - requirements = source_code_config.requirements - entry_script = source_code_config.entry_script + if source_code: + if source_code.requirements or source_code.entry_script: + source_dir = source_code.source_dir + requirements = source_code.requirements + entry_script = source_code.entry_script if not source_dir: raise ValueError( - "If 'requirements' or 'entry_script' is provided in 'source_code_config', " + "If 'requirements' or 'entry_script' is provided in 'source_code', " + "'source_dir' must also be provided.", ) if not _is_valid_path(source_dir, path_type="Directory"): @@ -286,8 +266,8 @@ def _validate_source_code_config(self, source_code_config: Optional[SourceCodeCo def model_post_init(self, __context: Any): """Post init method to perform custom validation and set default values.""" self._validate_training_image_and_algorithm_name(self.training_image, self.algorithm_name) - self._validate_source_code_config(self.source_code_config) - self._validate_distribution_config(self.source_code_config, self.distribution_config) + self._validate_source_code(self.source_code) + self._validate_distributed_runner(self.source_code, self.distributed_runner) if self.session is None: self.session = Session() @@ -304,13 +284,13 @@ def model_post_init(self, __context: Any): self.base_job_name = f"{_get_repo_name_from_image(self.training_image)}-job" logger.warning(f"Base name not provided. Using default name:\n{self.base_job_name}") - if self.compute_config is None: - self.compute_config = ComputeConfig( + if self.compute is None: + self.compute = Compute( instance_type=DEFAULT_INSTANCE_TYPE, instance_count=1, volume_size_in_gb=30, ) - logger.warning(f"ComputeConfig not provided. Using default:\n{self.compute_config}") + logger.warning(f"Compute not provided. Using default:\n{self.compute}") if self.stopping_condition is None: self.stopping_condition = StoppingCondition( @@ -334,7 +314,7 @@ def model_post_init(self, __context: Any): f"OutputDataConfig not provided. Using default:\n{self.output_data_config}" ) - # TODO: Autodetect which image to use if source_code_config is provided + # TODO: Autodetect which image to use if source_code is provided if self.training_image: logger.info(f"Training image URI: {self.training_image}") @@ -342,8 +322,8 @@ def model_post_init(self, __context: Any): def train( self, input_data_config: Optional[List[Union[Channel, InputData]]] = None, - wait: bool = True, - logs: bool = True, + wait: Optional[bool] = True, + logs: Optional[bool] = True, ): """Train a model using AWS SageMaker. @@ -374,43 +354,35 @@ def train( container_entrypoint = None container_arguments = None - if self.source_code_config: + if self.source_code: # If source code is provided, create a channel for the source code - # The source code will be mounted at /opt/ml/input/data/code in the container - if self.source_code_config.source_dir: + # The source code will be mounted at /opt/ml/input/data/sm_code in the container + if self.source_code.source_dir: source_code_channel = self.create_input_data_channel( - SM_CODE, self.source_code_config.source_dir + SM_CODE, self.source_code.source_dir ) input_data_config.append(source_code_channel) self._prepare_train_script( - source_code_config=self.source_code_config, - distribution_config=self.distribution_config, + source_code=self.source_code, distributed_runner=self.distributed_runner ) - if self.distribution_config: - smd_modelparallel_parameters = getattr( - self.distribution_config.smdistributed_settings, - "modelparallel_parameters", - None, - ) - if smd_modelparallel_parameters: - string_hyper_parameters["mp_parameters"] = json.dumps( - smd_modelparallel_parameters - ) - self._write_source_code_config_json(self.source_code_config) - if self.distribution_config: - self._write_distribution_config_json(self.distribution_config) + if isinstance(self.distributed_runner, TorchrunSMP): + mp_parameters = self.distributed_runner._to_mp_parameters_dict() + string_hyper_parameters["mp_parameters"] = json.dumps(mp_parameters) + + self._write_source_code_json(self.source_code) + self._write_distributed_runner_json(self.distributed_runner) # Create an input channel for drivers packaged by the sdk sm_drivers_channel = self.create_input_data_channel(SM_DRIVERS, SM_DRIVERS_LOCAL_PATH) input_data_config.append(sm_drivers_channel) - # If source_code_config is provided, we will always use + # If source_code is provided, we will always use # the default container entrypoint and arguments - # to execute the train.sh script. - # Any commands generated from the source_code_config will be - # executed from the train.sh script. + # to execute the sm_train.sh script. + # Any commands generated from the source_code will be + # executed from the sm_train.sh script. container_entrypoint = DEFAULT_CONTAINER_ENTRYPOINT container_arguments = DEFAULT_CONTAINER_ARGUMENTS @@ -425,8 +397,8 @@ def train( enable_sage_maker_metrics_time_series=self._enable_sage_maker_metrics_time_series, ) - resource_config = self.compute_config._to_resource_config() - vpc_config = self.networking_config._to_vpc_config() if self.networking_config else None + resource_config = self.compute._to_resource_config() + vpc_config = self.networking._to_vpc_config() if self.networking else None training_job = TrainingJob.create( training_job_name=_get_unique_name(self.base_job_name), @@ -443,14 +415,14 @@ def train( output_data_config=self.output_data_config, checkpoint_config=self.checkpoint_config, environment=self.environment, - enable_managed_spot_training=self.compute_config.enable_managed_spot_training, + enable_managed_spot_training=self.compute.enable_managed_spot_training, enable_inter_container_traffic_encryption=( - self.networking_config.enable_inter_container_traffic_encryption - if self.networking_config + self.networking.enable_inter_container_traffic_encryption + if self.networking else None ), enable_network_isolation=( - self.networking_config.enable_network_isolation if self.networking_config else None + self.networking.enable_network_isolation if self.networking else None ), # Private Instance Attributes debug_hook_config=self._debug_hook_config, @@ -553,76 +525,73 @@ def _get_input_data_config( ) return channels - def _write_source_code_config_json(self, source_code_config: SourceCodeConfig): + def _write_source_code_json(self, source_code: SourceCode): """Write the source code configuration to a JSON file.""" - file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, SOURCE_CODE_CONFIG_JSON) + file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, SOURCE_CODE_JSON) with open(file_path, "w") as f: - f.write(source_code_config.model_dump_json()) + dump = source_code.model_dump(exclude_none=True) if source_code else {} + f.write(json.dumps(dump)) - def _write_distribution_config_json( - self, distribution: Union[MPIDistributionConfig, TorchDistributionConfig] + def _write_distributed_runner_json( + self, distributed_runner: Optional[DistributedRunner] = None ): - """Write the distribution configuration to a JSON file.""" - file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, DISTRIBUTION_JSON) + """Write the distributed runner configuration to a JSON file.""" + file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, DISTRIBUTED_RUNNER_JSON) with open(file_path, "w") as f: - f.write(distribution.model_dump_json()) + dump = distributed_runner.model_dump(exclude_none=True) if distributed_runner else {} + f.write(json.dumps(dump)) def _prepare_train_script( self, - source_code_config: SourceCodeConfig, - distribution_config: Optional[Union[MPIDistributionConfig, TorchDistributionConfig]] = None, + source_code: SourceCode, + distributed_runner: Optional[DistributedRunner] = None, ): """Prepare the training script to be executed in the training job container. Args: - source_code_config (SourceCodeConfig): The source code configuration. + source_code (SourceCodeConfig): The source code configuration. """ base_command = "" - if source_code_config.command: - if source_code_config.entry_script: + if source_code.command: + if source_code.entry_script: logger.warning( "Both 'command' and 'entry_script' are provided in the SourceCodeConfig. " + "Defaulting to 'command'." ) - base_command = source_code_config.command.split() + base_command = source_code.command.split() base_command = " ".join(base_command) - if ( - source_code_config.entry_script - and not source_code_config.command - and not distribution_config - ): - if source_code_config.entry_script.endswith(".py"): - base_command = f"$SM_PYTHON_CMD {source_code_config.entry_script}" - elif source_code_config.entry_script.endswith(".sh"): + if source_code.entry_script and not source_code.command and not distributed_runner: + if source_code.entry_script.endswith(".py"): + base_command = f"$SM_PYTHON_CMD {source_code.entry_script}" + elif source_code.entry_script.endswith(".sh"): base_command = ( - f"chmod +x {source_code_config.entry_script} && " - f"bash {source_code_config.entry_script}" + f"chmod +x {source_code.entry_script} && " f"bash {source_code.entry_script}" ) else: raise ValueError( - f"Unsupported entry script: {source_code_config.entry_script}." + f"Unsupported entry script: {source_code.entry_script}." + "Only .py and .sh scripts are supported." ) install_requirements = "" - if source_code_config.requirements: + if source_code.requirements: install_requirements = "echo 'Installing requirements'\n" - install_requirements = f"$SM_PIP_CMD install -r {source_code_config.requirements}" + install_requirements = f"$SM_PIP_CMD install -r {source_code.requirements}" working_dir = "" - if source_code_config.source_dir: + if source_code.source_dir: working_dir = f"cd {SM_CODE_CONTAINER_PATH}" if base_command: execute_driver = EXECUTE_BASE_COMMANDS.format(base_command=base_command) - elif distribution_config: - distribution_type = distribution_config._distribution_type + elif distributed_runner: + distribution_type = distributed_runner._type if distribution_type == "mpi": execute_driver = EXECUTE_MPI_DRIVER - elif distribution_type == "torch_distributed": - execute_driver = EXECUTE_PYTORCH_DRIVER + elif distribution_type == "torchrun": + execute_driver = EXEUCTE_TORCHRUN_DRIVER else: raise ValueError(f"Unsupported distribution type: {distribution_type}.") @@ -676,7 +645,6 @@ def with_debugger_settings( self, debug_hook_config: Optional[DebugHookConfig] = None, debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = None, - remote_debug_config: Optional[RemoteDebugConfig] = None, profiler_config: Optional[ProfilerConfig] = None, profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = None, tensor_board_output_config: Optional[TensorBoardOutputConfig] = None, @@ -708,9 +676,6 @@ def with_debugger_settings( debug_rule_configurations (Optional[List[DebugRuleConfiguration]]): Configuration information for Amazon SageMaker Debugger rules for debugging output ensors. - remote_debug_config (Optional[RemoteDebugConfig]): - Configuration for remote debugging. To learn more see: - https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-debugging.html profiler_config (ProfilerConfig): Configuration information for Amazon SageMaker Debugger system monitoring, framework profiling, and storage paths. @@ -723,7 +688,6 @@ def with_debugger_settings( """ self._debug_hook_config = debug_hook_config self._debug_rule_configurations = debug_rule_configurations - self._remote_debug_config = remote_debug_config self._profiler_config = profiler_config self._profiler_rule_configurations = profiler_rule_configurations self._tensor_board_output_config = tensor_board_output_config @@ -735,6 +699,7 @@ def with_additional_settings( experiment_config: Optional[ExperimentConfig] = None, infra_check_config: Optional[InfraCheckConfig] = None, session_chaining_config: Optional[SessionChainingConfig] = None, + remote_debug_config: Optional[RemoteDebugConfig] = None, ) -> "ModelTrainer": """Set any additional settings for the training job. @@ -761,9 +726,13 @@ def with_additional_settings( session_chaining_config (Optional[SessionChainingConfig]): Contains information about attribute-based access control (ABAC) for the training job. + remote_debug_config (Optional[RemoteDebugConfig]): + Configuration for remote debugging through AWS Systems Manager. To learn more see: + https://docs.aws.amazon.com/sagemaker/latest/dg/train-remote-debugging.html """ self._retry_strategy = retry_strategy self._experiment_config = experiment_config self._infra_check_config = infra_check_config self._session_chaining_config = session_chaining_config + self._remote_debug_config = remote_debug_config return self diff --git a/tests/data/modules/script_mode/custom_script.py b/tests/data/modules/script_mode/custom_script.py new file mode 100644 index 0000000000..acacf6c19e --- /dev/null +++ b/tests/data/modules/script_mode/custom_script.py @@ -0,0 +1,146 @@ +# flake8: noqa +import argparse +import numpy as np +import os +import sys +import logging +import json +import shutil +import torch +import torch.nn as nn +from torch.utils.data import DataLoader, TensorDataset +from pytorch_model_def import get_model + +logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) +logger.addHandler(logging.StreamHandler(sys.stdout)) +current_dir = os.path.dirname(os.path.abspath(__file__)) + + +def get_train_data(train_dir): + """ + Get the training data and convert to tensors + """ + + x_train = np.load(os.path.join(train_dir, "x_train.npy")) + y_train = np.load(os.path.join(train_dir, "y_train.npy")) + logger.info(f"x train: {x_train.shape}, y train: {y_train.shape}") + + return torch.from_numpy(x_train), torch.from_numpy(y_train) + + +def get_test_data(test_dir): + """ + Get the testing data and convert to tensors + """ + + x_test = np.load(os.path.join(test_dir, "x_test.npy")) + y_test = np.load(os.path.join(test_dir, "y_test.npy")) + logger.info(f"x test: {x_test.shape}, y test: {y_test.shape}") + + return torch.from_numpy(x_test), torch.from_numpy(y_test) + + +def model_fn(model_dir): + """ + Load the model for inference + """ + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model = get_model() + model.load_state_dict(torch.load(model_dir + "/model.pth")) + model.eval() + return model.to(device) + + +def input_fn(request_body, request_content_type): + """ + Deserialize and prepare the prediction input + """ + + if request_content_type == "application/json": + request = json.loads(request_body) + train_inputs = torch.tensor(request) + return train_inputs + + +def predict_fn(input_data, model): + """ + Apply model to the incoming request + """ + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + model.to(device) + model.eval() + with torch.no_grad(): + return model(input_data.float()).numpy()[0] + + +def train(): + """ + Train the PyTorch model + """ + # Directories: train, test and model + train_dir = os.path.join(current_dir, "data/train") + test_dir = os.path.join(current_dir, "data/test") + model_dir = os.environ.get("SM_MODEL_DIR", os.path.join(current_dir, "data/model")) + + # Load the training and testing data + x_train, y_train = get_train_data(train_dir) + x_test, y_test = get_test_data(test_dir) + train_ds = TensorDataset(x_train, y_train) + + # Training parameters - used to configure the training loop + batch_size = 64 + epochs = 1 + learning_rate = 0.1 + logger.info( + "batch_size = {}, epochs = {}, learning rate = {}".format(batch_size, epochs, learning_rate) + ) + + train_dl = DataLoader(train_ds, batch_size, shuffle=True) + + # Define the model, loss function and optimizer + model = get_model() + model = model.to(device) + criterion = nn.MSELoss() + optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) + + # Train the model + for epoch in range(epochs): + for x_train_batch, y_train_batch in train_dl: + y = model(x_train_batch.float()) + loss = criterion(y.flatten(), y_train_batch.float()) + optimizer.zero_grad() + loss.backward() + optimizer.step() + epoch += 1 + logger.info(f"epoch: {epoch} -> loss: {loss}") + + # Test the model + with torch.no_grad(): + y = model(x_test.float()).flatten() + mse = ((y - y_test) ** 2).sum() / y_test.shape[0] + print("\nTest MSE:", mse.numpy()) + + # Save the model + os.makedirs(model_dir, exist_ok=True) + torch.save(model.state_dict(), model_dir + "/model.pth") + inference_code_path = model_dir + "/code/" + + if not os.path.exists(inference_code_path): + os.mkdir(inference_code_path) + logger.info("Created a folder at {}!".format(inference_code_path)) + + code_dir = os.environ.get("SM_CHANNEL_CODE", current_dir) + shutil.copy(os.path.join(code_dir, "custom_script.py"), inference_code_path) + shutil.copy(os.path.join(code_dir, "pytorch_model_def.py"), inference_code_path) + logger.info("Saving models files to {}".format(inference_code_path)) + + +if __name__ == "__main__": + print("Running the training job ...\n") + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + train() diff --git a/tests/data/modules/script_mode/data/test/x_test.npy b/tests/data/modules/script_mode/data/test/x_test.npy new file mode 100644 index 0000000000000000000000000000000000000000..a9977e39c042722d4103758e390eaffa6653b937 GIT binary patch literal 19456 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 literal 0 HcmV?d00001 diff --git a/tests/data/modules/script_mode/data/test/y_test.npy b/tests/data/modules/script_mode/data/test/y_test.npy new file mode 100644 index 0000000000000000000000000000000000000000..a7191945eea4a7781c091a3177b77db6bcdfbd91 GIT binary patch literal 2544 zcmbVN`9D?pALd%`e$HJHrBpI@#f&EIlN)18(v(OV$e=G?FO3%;M<&gXp2c|Gsvc|OmR>#=sFr;oBytWuKUmY}FW znc-4>!)3vr8Jg%D28YX{WdS=kh0C@CDfXQLc0>hH`%$3*5kb`RqQw?gCPpUuyY>I? z#Sj~BvtUa}v>WM_PYi5_i`MyHz-08k*JxzfAynB?p zRH4qE;`^Bp$S^vz!n|Gwou&s*jUUp5#M-~c#a)2N@~kJJrv!+3S-Ffmzy-A82khEO z6h+uE9vaXw+FE9u{|$jJqvz*Mw`fA+oyggIoWCe}f3*q}@aqj{VGBkR$C@;;-FP&wqa+1KF7A@KbYr@k|pJQSV?^`7e}!s7OnKe?xAkSi70L|TavpIB@n zl@svdw!YzX3vl4slMf+#2xut;Xd`EEsq*0Y!lli+k`MjB0bhq?0rtLHnq5_;1)}Fl zg^D48z}Dzkt9Ui&eHOA}>!225>n}SVyTit++liLn<&tn6oV6(_n8eg*Oy`LqU09gc z*)JU-QSv@E{a%_L=8$XVWjy7h`*RAog$QGx3)Ci6g^k-6GdM_SQprL#dM1pb*il z-~9(a3a~J{b?I4OCe#`ZSjL?v(SLf4w>`!4_WRN$HT7KFBARNhhVih2K5;5!m${bM)_Cxd`SR#GDTVWHb`RZc z7Xx`&;~uvY87O4-Zg{nXfR31xzD1dZ+{RG7wJU`VYQ4|9kJDiwY!s!PV9)sK zG=Z^-@+C%Ua!KM@>CU~^c!=Gh+8uLU8wOV8-P!wjSZnb~8NY?{&jj_OI$cD*@{UUB zR6)KE?^MZA9)67)>^l5hjFAU*>*yjTdM|$eXjeNIS)W=RkOzp69NpU-GQq^-W0Zky zxOkNi5%=JN4*XO$ELblW!(=GsqR~SUIOB2)hpRlSn0(t;XUm7}W>b5$6gCvsPX368 zB$vRdoKFa3`k3#PQM}n!KPy-iA%wEUkISVJ9=@Vo8F;mokNu{qwu=IUkc5BY6;Lj~ zg?r9!FHM#4lPvVm+gfeNM59&p&*T#K&IcXKjws>Sy&%h%~`E!Gm`^r4)w=S=bq^*A-lBEvwb*s!~De8)viWE;f`D ztB#LZTMi$pwBSMg$0Tl^9~*Oh>Qr~y@nEK_`3J3$K;fRWEMbf`isVIqmr8~I%_G9> ziLX;%`|~j}TryACs14J(b3W{_q3)5aaN{@MX~N!5)^60nK?$qdCBDh{!)fA{sfO2PLZzTuQ&91p#Ee!awGm=d7gjjvu`lq!H6rbms zZy4X?;%RI_wMQTw$N%{BNxPO1O)32&1Li{X+4k&yzFiezwt3xWt=KqzV7s(oToo*u z@jg+t7^Qw)8_l{IXm?VHXBKf0u8rR=)t&-|y`* z=%&H#+}y|m#l4c}H&YLqbPAxhv*XU1jT#6jdArG{M}Qg+1Jff{m`DnCN%=uXj2_PB z5Qd&E>~9Ts4)k*|9`Q$H>3uQW>)(-<#Z+EBvnsts^+;PIxqZlm#I!2aI1x%1{&HVC zD~?3QrE!5$y#Q$qUAHS1YNCoJU3aC1fmZK>!6r2XC^huTB{Wn~Epk_f4*jI-|2*H# zhQq}adV8V>E;YgL@7TPRFbW4$4(brtRvVqGm9C8cT~~$}MhP)F%Gv~q$FeKz785hy zPYFS(VPHBUghPB)<5fJMbfw2#_<{Ho%kGpW5UlE9v#Z&~NGbZ{)Sd3?-=2K8$JPYPMwnSLteL!u~( zT21Vmcu(uEC(!9iCBkMF3_>Vnb*Y?J9GEY}%}L3=2`>TS6hOmBIJXD(Nb`7b4(ooA z`~?q3I1i?6-C3Xw)g=FFCPGH<`PB1X+Ss;oIA=|j`po>9I(U;ddDOOp1l7KNGCv+# z7%ZQTOaZd@Fg*bmhZlG!t556OIjN=Wu9u--BRf@;zQtR zPK58fc>?4pKkn;z#=}*E6QbHP9MBhsO*c0);dqTsg;XX)CGuffh~M4zoUjW>)i0m2|OrjDTeZK zHdDjlVy6%}vwykL^Cu05D}O50n=Qnz%>|B^*AOUSI4y{o$4A+=v@`!Gsn6tLH3v*Z zK$o#$r!dG{Ar{)qdAPTk0UHHj$~?rmYV=K?AmB6EqBg=NaVvdO?`!JZ4}DA8ylhqQ zg=~V`BNjjytw=^qOy$?_N=Q{jKlM7{xE`e4v)$%UKE2lBS9(aq#$+<(yr@|SH{ZJd cL8KUdiXhm*K;z=jH~IQvj2)(mMyQ5=0d747vj6}9 literal 0 HcmV?d00001 diff --git a/tests/data/modules/script_mode/data/train/x_train.npy b/tests/data/modules/script_mode/data/train/x_train.npy new file mode 100644 index 0000000000000000000000000000000000000000..d267502e654e7274fd83cf0e9d2f9a6d73983b3b GIT binary patch literal 77184 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 F{{u$uPbvTa literal 0 HcmV?d00001 diff --git a/tests/data/modules/script_mode/data/train/y_train.npy b/tests/data/modules/script_mode/data/train/y_train.npy new file mode 100644 index 0000000000000000000000000000000000000000..b8c17c4972c671c08983b1d4c05d9e8521fb495d GIT binary patch literal 9760 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 Date: Sun, 10 Nov 2024 19:40:09 -0800 Subject: [PATCH 21/79] Remove ignored files --- .../container_drivers/distributed_runner.json | 1 - .../train/container_drivers/sm_train.sh | 64 ------------------- .../train/container_drivers/sourcecode.json | 1 - 3 files changed, 66 deletions(-) delete mode 100644 src/sagemaker/modules/train/container_drivers/distributed_runner.json delete mode 100644 src/sagemaker/modules/train/container_drivers/sm_train.sh delete mode 100644 src/sagemaker/modules/train/container_drivers/sourcecode.json diff --git a/src/sagemaker/modules/train/container_drivers/distributed_runner.json b/src/sagemaker/modules/train/container_drivers/distributed_runner.json deleted file mode 100644 index a90706c134..0000000000 --- a/src/sagemaker/modules/train/container_drivers/distributed_runner.json +++ /dev/null @@ -1 +0,0 @@ -{"mpi_additional_options": ["-x", "MASTER_ADDR=algo-1", "-x", "MASTER_PORT=7777"], "_type": "mpi"} \ No newline at end of file diff --git a/src/sagemaker/modules/train/container_drivers/sm_train.sh b/src/sagemaker/modules/train/container_drivers/sm_train.sh deleted file mode 100644 index cc3915c887..0000000000 --- a/src/sagemaker/modules/train/container_drivers/sm_train.sh +++ /dev/null @@ -1,64 +0,0 @@ - -#!/bin/bash -set -e -echo "Starting training script" - -handle_error() { - EXIT_STATUS=$? - echo "An error occurred with exit code $EXIT_STATUS" - if [ ! -s /opt/ml/output/failure ]; then - echo "Training Execution failed. For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. -TrainingJob - $TRAINING_JOB_NAME" >> /opt/ml/output/failure - fi - exit $EXIT_STATUS -} - -check_python() { - if command -v python3 &>/dev/null; then - SM_PYTHON_CMD="python3" - SM_PIP_CMD="pip3" - echo "Found python3" - elif command -v python &>/dev/null; then - SM_PYTHON_CMD="python" - SM_PIP_CMD="pip" - echo "Found python" - else - echo "Python may not be installed" - return 1 - fi -} - -trap 'handle_error' ERR - -check_python - -$SM_PYTHON_CMD --version - -echo "/opt/ml/input/config/resourceconfig.json:" -cat /opt/ml/input/config/resourceconfig.json -echo - -echo "/opt/ml/input/config/inputdataconfig.json:" -cat /opt/ml/input/config/inputdataconfig.json -echo - -echo "/opt/ml/input/data/sm_drivers/sourcecode.json" -cat /opt/ml/input/data/sm_drivers/sourcecode.json -echo - -echo "/opt/ml/input/data/sm_drivers/distributed_runner.json" -cat /opt/ml/input/data/sm_drivers/distributed_runner.json -echo - -echo "Setting up environment variables" -$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/scripts/environment.py -source /opt/ml/input/data/sm_drivers/scripts/sm_training.env - -cd /opt/ml/input/data/sm_code -$SM_PIP_CMD install -r requirements.txt - -echo "Running MPI driver" -$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/mpi_driver.py - - -echo "Training Container Execution Completed" diff --git a/src/sagemaker/modules/train/container_drivers/sourcecode.json b/src/sagemaker/modules/train/container_drivers/sourcecode.json deleted file mode 100644 index bee6559762..0000000000 --- a/src/sagemaker/modules/train/container_drivers/sourcecode.json +++ /dev/null @@ -1 +0,0 @@ -{"source_dir": "distributed-training/scripts", "requirements": "requirements.txt", "entry_script": "run_clm_no_trainer.py"} \ No newline at end of file From fa6ae28ca9e8bd3c54593431d8ea0d572cfde650 Mon Sep 17 00:00:00 2001 From: Pravali Uppugunduri <46845440+pravali96@users.noreply.github.com> Date: Mon, 11 Nov 2024 11:06:55 -0800 Subject: [PATCH 22/79] Add in_process mode support for DJL and TorchServe servers (#1570) * add in-process mode for DJL server * fix format * add inference_spec as a member of DJL * add the validations for model server * fix typo * fix test assertion * add unit-testing * have a common server for inprocess mode * fix failing tests * add support to torchserve * fix tests to include torchserve servers * use custom inference_spec code instead of HF pipelines * fix tests for app.py * fix unit test failure * fix format * use schema_builder for serialization and deserialization * remove task field * remove unused import --- src/sagemaker/serve/builder/djl_builder.py | 36 ++++++++--- src/sagemaker/serve/builder/model_builder.py | 25 ++++++-- .../serve/builder/transformers_builder.py | 4 +- src/sagemaker/serve/mode/in_process_mode.py | 19 +++--- .../in_process_model_server}/app.py | 48 ++++++++------- .../in_process_server.py | 60 +++++++++++++++++++ .../model_server/multi_model_server/server.py | 59 ------------------ src/sagemaker/serve/utils/predictors.py | 6 +- .../serve/builder/test_djl_builder.py | 57 +++++++++++++++++- .../serve/builder/test_model_builder.py | 2 +- .../serve/mode/test_in_process_mode.py | 37 ++++++++++-- .../in_process_model_server}/test_app.py | 38 ++++++------ 12 files changed, 257 insertions(+), 134 deletions(-) rename src/sagemaker/serve/{ => model_server/in_process_model_server}/app.py (63%) create mode 100644 src/sagemaker/serve/model_server/in_process_model_server/in_process_server.py rename tests/unit/sagemaker/serve/{ => model_server/in_process_model_server}/test_app.py (60%) diff --git a/src/sagemaker/serve/builder/djl_builder.py b/src/sagemaker/serve/builder/djl_builder.py index 608e1c604f..d7be1fab7b 100644 --- a/src/sagemaker/serve/builder/djl_builder.py +++ b/src/sagemaker/serve/builder/djl_builder.py @@ -47,7 +47,7 @@ from sagemaker.serve.model_server.djl_serving.prepare import ( _create_dir_structure, ) -from sagemaker.serve.utils.predictors import DjlLocalModePredictor +from sagemaker.serve.utils.predictors import InProcessModePredictor, DjlLocalModePredictor from sagemaker.serve.utils.types import ModelServer from sagemaker.serve.mode.function_pointers import Mode from sagemaker.serve.utils.telemetry_logger import _capture_telemetry @@ -55,6 +55,7 @@ from sagemaker.base_predictor import PredictorBase logger = logging.getLogger(__name__) +LOCAL_MODES = [Mode.LOCAL_CONTAINER, Mode.IN_PROCESS] # Match JumpStart DJL entrypoint format _CODE_FOLDER = "code" @@ -77,6 +78,7 @@ def __init__(self): self.mode = None self.model_server = None self.image_uri = None + self.inference_spec = None self._is_custom_image_uri = False self.image_config = None self.vpc_config = None @@ -96,11 +98,11 @@ def __init__(self): @abstractmethod def _prepare_for_mode(self): - """Placeholder docstring""" + """Abstract method""" @abstractmethod def _get_client_translators(self): - """Placeholder docstring""" + """Abstract method""" def _is_djl(self): """Placeholder docstring""" @@ -146,7 +148,7 @@ def _create_djl_model(self) -> Type[Model]: @_capture_telemetry("djl.deploy") def _djl_model_builder_deploy_wrapper(self, *args, **kwargs) -> Type[PredictorBase]: - """Placeholder docstring""" + """Returns predictor depending on local mode or endpoint mode""" timeout = kwargs.get("model_data_download_timeout") if timeout: self.env_vars.update({"MODEL_LOADING_TIMEOUT": str(timeout)}) @@ -189,6 +191,18 @@ def _djl_model_builder_deploy_wrapper(self, *args, **kwargs) -> Type[PredictorBa serializer = self.schema_builder.input_serializer deserializer = self.schema_builder._output_deserializer + + if self.mode == Mode.IN_PROCESS: + + predictor = InProcessModePredictor( + self.modes[str(Mode.IN_PROCESS)], serializer, deserializer + ) + + self.modes[str(Mode.IN_PROCESS)].create_server( + predictor, + ) + return predictor + if self.mode == Mode.LOCAL_CONTAINER: timeout = kwargs.get("model_data_download_timeout") @@ -249,9 +263,15 @@ def _build_for_hf_djl(self): _create_dir_structure(self.model_path) if not hasattr(self, "pysdk_model"): - self.env_vars.update({"HF_MODEL_ID": self.model}) + if self.inference_spec is not None: + self.env_vars.update({"HF_MODEL_ID": self.inference_spec.get_model()}) + else: + self.env_vars.update({"HF_MODEL_ID": self.model}) + + logger.info(self.env_vars) + self.hf_model_config = _get_model_config_properties_from_hf( - self.model, self.env_vars.get("HF_TOKEN") + self.env_vars.get("HF_MODEL_ID"), self.env_vars.get("HF_TOKEN") ) default_djl_configurations, _default_max_new_tokens = _get_default_djl_configurations( self.model, self.hf_model_config, self.schema_builder @@ -260,9 +280,10 @@ def _build_for_hf_djl(self): self.schema_builder.sample_input["parameters"][ "max_new_tokens" ] = _default_max_new_tokens + self.pysdk_model = self._create_djl_model() - if self.mode == Mode.LOCAL_CONTAINER: + if self.mode in LOCAL_MODES: self._prepare_for_mode() return self.pysdk_model @@ -451,7 +472,6 @@ def _build_for_djl(self): """Placeholder docstring""" self._validate_djl_serving_sample_data() self.secret_key = None - self.pysdk_model = self._build_for_hf_djl() self.pysdk_model.tune = self._tune_for_hf_djl if self.role_arn: diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index 157222b437..bdbd08ff55 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -81,7 +81,7 @@ _extract_speculative_draft_model_provider, _jumpstart_speculative_decoding, ) -from sagemaker.serve.utils.predictors import _get_local_mode_predictor +from sagemaker.serve.utils.predictors import _get_local_mode_predictor, InProcessModePredictor from sagemaker.serve.utils.hardware_detector import ( _get_gpu_info, _get_gpu_info_fallback, @@ -566,6 +566,18 @@ def _model_builder_deploy_wrapper( if mode and mode != self.mode: self._overwrite_mode_in_deploy(overwrite_mode=mode) + if self.mode == Mode.IN_PROCESS: + serializer, deserializer = self._get_client_translators() + + predictor = InProcessModePredictor( + self.modes[str(Mode.IN_PROCESS)], serializer, deserializer + ) + + self.modes[str(Mode.IN_PROCESS)].create_server( + predictor, + ) + return predictor + if self.mode == Mode.LOCAL_CONTAINER: serializer, deserializer = self._get_client_translators() predictor = _get_local_mode_predictor( @@ -919,11 +931,16 @@ def build( # pylint: disable=R0911 def _build_validations(self): """Validations needed for model server overrides, or auto-detection or fallback""" - if self.mode == Mode.IN_PROCESS and self.model_server is not ModelServer.MMS: + if ( + self.mode == Mode.IN_PROCESS + and self.model_server is not ModelServer.MMS + and self.model_server is not ModelServer.DJL_SERVING + and self.model_server is not ModelServer.TORCHSERVE + ): raise ValueError( - "IN_PROCESS mode is only supported for MMS/Transformers server in beta release." + "IN_PROCESS mode is only supported for the following servers " + "in beta release: MMS/Transformers, TORCHSERVE, DJL_SERVING server" ) - if self.inference_spec and self.model: raise ValueError("Can only set one of the following: model, inference_spec.") diff --git a/src/sagemaker/serve/builder/transformers_builder.py b/src/sagemaker/serve/builder/transformers_builder.py index b7baf6b513..0388a9a05d 100644 --- a/src/sagemaker/serve/builder/transformers_builder.py +++ b/src/sagemaker/serve/builder/transformers_builder.py @@ -38,7 +38,7 @@ from sagemaker.serve.utils.optimize_utils import _is_optimized from sagemaker.serve.utils.predictors import ( TransformersLocalModePredictor, - TransformersInProcessModePredictor, + InProcessModePredictor, ) from sagemaker.serve.utils.types import ModelServer from sagemaker.serve.mode.function_pointers import Mode @@ -237,7 +237,7 @@ def _transformers_model_builder_deploy_wrapper(self, *args, **kwargs) -> Type[Pr if self.mode == Mode.IN_PROCESS: timeout = kwargs.get("model_data_download_timeout") - predictor = TransformersInProcessModePredictor( + predictor = InProcessModePredictor( self.modes[str(Mode.IN_PROCESS)], serializer, deserializer ) diff --git a/src/sagemaker/serve/mode/in_process_mode.py b/src/sagemaker/serve/mode/in_process_mode.py index 60d4f91e34..9df15fb6cc 100644 --- a/src/sagemaker/serve/mode/in_process_mode.py +++ b/src/sagemaker/serve/mode/in_process_mode.py @@ -13,20 +13,15 @@ from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.serve.utils.types import ModelServer from sagemaker.serve.utils.exceptions import InProcessDeepPingException -from sagemaker.serve.model_server.multi_model_server.server import InProcessMultiModelServer +from sagemaker.serve.model_server.in_process_model_server.in_process_server import InProcessServing from sagemaker.session import Session logger = logging.getLogger(__name__) -_PING_HEALTH_CHECK_FAIL_MSG = ( - "Ping health check did not pass. " - + "Please increase container_timeout_seconds or review your inference code." -) +_PING_HEALTH_CHECK_FAIL_MSG = "Ping health check did not pass. Please review your inference code." -class InProcessMode( - InProcessMultiModelServer, -): +class InProcessMode(InProcessServing): """A class that holds methods to deploy model to a container in process environment""" def __init__( @@ -70,7 +65,13 @@ def create_server( logger.info("Waiting for model server %s to start up...", self.model_server) if self.model_server == ModelServer.MMS: - self._ping_local_server = self._multi_model_server_deep_ping + self._ping_local_server = self._deep_ping + self._start_serving() + elif self.model_server == ModelServer.DJL_SERVING: + self._ping_local_server = self._deep_ping + self._start_serving() + elif self.model_server == ModelServer.TORCHSERVE: + self._ping_local_server = self._deep_ping self._start_serving() # allow some time for server to be ready. diff --git a/src/sagemaker/serve/app.py b/src/sagemaker/serve/model_server/in_process_model_server/app.py similarity index 63% rename from src/sagemaker/serve/app.py rename to src/sagemaker/serve/model_server/in_process_model_server/app.py index fd9dd6a93a..31281bc39f 100644 --- a/src/sagemaker/serve/app.py +++ b/src/sagemaker/serve/model_server/in_process_model_server/app.py @@ -3,10 +3,13 @@ from __future__ import absolute_import import asyncio +import io import logging import threading from typing import Optional +from sagemaker.serve.spec.inference_spec import InferenceSpec +from sagemaker.serve.builder.schema_builder import SchemaBuilder logger = logging.getLogger(__name__) @@ -17,12 +20,6 @@ logger.error("Unable to import uvicorn, check if uvicorn is installed.") -try: - from transformers import pipeline -except ImportError: - logger.error("Unable to import transformers, check if transformers is installed.") - - try: from fastapi import FastAPI, Request, APIRouter except ImportError: @@ -30,32 +27,37 @@ class InProcessServer: - """Placeholder docstring""" + """Generic In-Process Server for Serving Models using InferenceSpec""" - def __init__(self, model_id: Optional[str] = None, task: Optional[str] = None): + def __init__( + self, + inference_spec: Optional[InferenceSpec] = None, + schema_builder: Optional[SchemaBuilder] = None, + ): self._thread = None self._loop = None self._stop_event = asyncio.Event() self._router = APIRouter() - self._model_id = model_id - self._task = task self.server = None self.port = None self.host = None - # TODO: Pick up device automatically. - self._generator = pipeline(task, model=model_id, device="cpu") - - # pylint: disable=unused-variable - @self._router.post("/generate") - async def generate_text(prompt: Request): - """Placeholder docstring""" - str_prompt = await prompt.json() - str_prompt = str_prompt["inputs"] if "inputs" in str_prompt else str_prompt - - generated_text = self._generator( - str_prompt, max_length=30, num_return_sequences=1, truncation=True + self.inference_spec = inference_spec + self.schema_builder = schema_builder + self._load_model = self.inference_spec.load(model_dir=None) + + @self._router.post("/invoke") + async def invoke(request: Request): + """Generate text based on the provided prompt""" + + request_header = request.headers + request_body = await request.body() + content_type = request_header.get("Content-Type", None) + input_data = schema_builder.input_deserializer.deserialize( + io.BytesIO(request_body), content_type[0] ) - return generated_text + logger.debug(f"Received request: {input_data}") + response = self.inference_spec.invoke(input_data, self._load_model) + return response self._create_server() diff --git a/src/sagemaker/serve/model_server/in_process_model_server/in_process_server.py b/src/sagemaker/serve/model_server/in_process_model_server/in_process_server.py new file mode 100644 index 0000000000..a5c58c6091 --- /dev/null +++ b/src/sagemaker/serve/model_server/in_process_model_server/in_process_server.py @@ -0,0 +1,60 @@ +"""Module for In_process Serving""" + +from __future__ import absolute_import + +import requests +import logging +from sagemaker.serve.utils.exceptions import LocalModelInvocationException +from sagemaker.base_predictor import PredictorBase + +logger = logging.getLogger(__name__) + + +class InProcessServing: + """In Process Mode server instance""" + + def _start_serving(self): + """Initializes the start of the server""" + from sagemaker.serve.model_server.in_process_model_server.app import InProcessServer + + self.server = InProcessServer( + inference_spec=self.inference_spec, schema_builder=self.schema_builder + ) + self.server.start_server() + + def _stop_serving(self): + """Stops the server""" + self.server.stop_server() + + def _invoke_serving(self, request: object, content_type: str, accept: str): + """Placeholder docstring""" + try: + response = requests.post( + f"http://{self.server.host}:{self.server.port}/invoke", + data=request, + headers={"Content-Type": content_type, "Accept": accept}, + timeout=600, + ) + response.raise_for_status() + + return response.content + except Exception as e: + if "Connection refused" in str(e): + raise Exception( + "Unable to send request to the local server: Connection refused." + ) from e + raise Exception("Unable to send request to the local container server %s", str(e)) + + def _deep_ping(self, predictor: PredictorBase): + """Sends a deep ping to ensure prediction""" + healthy = False + response = None + try: + response = predictor.predict(self.schema_builder.sample_input) + healthy = response is not None + # pylint: disable=broad-except + except Exception as e: + if "422 Client Error: Unprocessable Entity for url" in str(e): + raise LocalModelInvocationException(str(e)) + + return healthy, response diff --git a/src/sagemaker/serve/model_server/multi_model_server/server.py b/src/sagemaker/serve/model_server/multi_model_server/server.py index 69d5d2e5e7..2fab727c05 100644 --- a/src/sagemaker/serve/model_server/multi_model_server/server.py +++ b/src/sagemaker/serve/model_server/multi_model_server/server.py @@ -2,8 +2,6 @@ from __future__ import absolute_import -import json - import requests import logging import platform @@ -11,7 +9,6 @@ from sagemaker import Session, fw_utils from sagemaker.serve.utils.exceptions import LocalModelInvocationException -from sagemaker.serve.utils.exceptions import InProcessDeepPingException from sagemaker.base_predictor import PredictorBase from sagemaker.s3_utils import determine_bucket_and_prefix, parse_s3_url, s3_path_join from sagemaker.s3 import S3Uploader @@ -24,62 +21,6 @@ logger = logging.getLogger(__name__) -class InProcessMultiModelServer: - """In Process Mode Multi Model server instance""" - - def _start_serving(self): - """Initializes the start of the server""" - from sagemaker.serve.app import InProcessServer - - if hasattr(self, "inference_spec"): - model_id = self.inference_spec.get_model() - if not model_id: - raise ValueError("Model id was not provided in Inference Spec.") - else: - model_id = None - self.server = InProcessServer(model_id=model_id) - - self.server.start_server() - - def _stop_serving(self): - """Stops the server""" - self.server.stop_server() - - def _invoke_multi_model_server_serving(self, request: bytes, content_type: str, accept: str): - """Placeholder docstring""" - try: - response = requests.post( - f"http://{self.server.host}:{self.server.port}/generate", - data=request, - headers={"Content-Type": content_type, "Accept": accept}, - timeout=600, - ) - response.raise_for_status() - if isinstance(response.content, bytes): - return json.loads(response.content.decode("utf-8")) - return response.content - except Exception as e: - if "Connection refused" in str(e): - raise Exception( - "Unable to send request to the local server: Connection refused." - ) from e - raise Exception("Unable to send request to the local server.") from e - - def _multi_model_server_deep_ping(self, predictor: PredictorBase): - """Sends a deep ping to ensure prediction""" - healthy = False - response = None - try: - response = predictor.predict(self.schema_builder.sample_input) - healthy = response is not None - # pylint: disable=broad-except - except Exception as e: - if "422 Client Error: Unprocessable Entity for url" in str(e): - raise InProcessDeepPingException(str(e)) - - return healthy, response - - class LocalMultiModelServer: """Local Multi Model server instance""" diff --git a/src/sagemaker/serve/utils/predictors.py b/src/sagemaker/serve/utils/predictors.py index 89ec2253f1..6346bb3111 100644 --- a/src/sagemaker/serve/utils/predictors.py +++ b/src/sagemaker/serve/utils/predictors.py @@ -212,8 +212,8 @@ def delete_predictor(self): self._mode_obj.destroy_server() -class TransformersInProcessModePredictor(PredictorBase): - """Lightweight Transformers predictor for in process mode deployment""" +class InProcessModePredictor(PredictorBase): + """Lightweight predictor for in process mode deployment""" def __init__( self, @@ -227,7 +227,7 @@ def __init__( def predict(self, data): """Placeholder docstring""" - return self._mode_obj._invoke_multi_model_server_serving( + return self._mode_obj._invoke_serving( self.serializer.serialize(data), self.content_type, self.deserializer.ACCEPT[0], diff --git a/tests/unit/sagemaker/serve/builder/test_djl_builder.py b/tests/unit/sagemaker/serve/builder/test_djl_builder.py index 69f8c7a8d5..9c4488fa3e 100644 --- a/tests/unit/sagemaker/serve/builder/test_djl_builder.py +++ b/tests/unit/sagemaker/serve/builder/test_djl_builder.py @@ -24,7 +24,7 @@ LocalModelOutOfMemoryException, LocalModelInvocationException, ) -from sagemaker.serve.utils.predictors import DjlLocalModePredictor +from sagemaker.serve.utils.predictors import DjlLocalModePredictor, InProcessModePredictor from tests.unit.sagemaker.serve.constants import MOCK_IMAGE_CONFIG, MOCK_VPC_CONFIG mock_model_id = "TheBloke/Llama-2-7b-chat-fp16" @@ -46,6 +46,8 @@ "OPTION_DTYPE": "bf16", "MODEL_LOADING_TIMEOUT": "1800", } +mock_inference_spec = MagicMock() +mock_inference_spec.get_model = "TheBloke/Llama-2-7b-chat-fp16" mock_schema_builder = MagicMock() mock_schema_builder.sample_input = mock_sample_input @@ -115,6 +117,59 @@ def test_build_deploy_for_djl_local_container( with self.assertRaises(ValueError) as _: model.deploy(mode=Mode.IN_PROCESS) + @patch("sagemaker.serve.builder.djl_builder._capture_telemetry", side_effect=None) + @patch( + "sagemaker.serve.builder.jumpstart_builder.JumpStart._is_jumpstart_model_id", + return_value=False, + ) + @patch("sagemaker.serve.builder.djl_builder._get_ram_usage_mb", return_value=1024) + @patch("sagemaker.serve.builder.djl_builder._get_nb_instance", return_value="ml.g5.24xlarge") + @patch( + "sagemaker.serve.builder.djl_builder._get_default_djl_configurations", + return_value=(mock_default_configs, 128), + ) + def test_build_deploy_for_djl_in_process( + self, + mock_default_djl_config, + mock_get_nb_instance, + mock_get_ram_usage_mb, + mock_is_jumpstart_model, + mock_telemetry, + ): + builder = ModelBuilder( + model=mock_model_id, + name="mock_model_name", + schema_builder=mock_schema_builder, + mode=Mode.IN_PROCESS, + model_server=ModelServer.DJL_SERVING, + image_config=MOCK_IMAGE_CONFIG, + vpc_config=MOCK_VPC_CONFIG, + ) + + builder._prepare_for_mode = MagicMock() + builder._prepare_for_mode.side_effect = None + + model = builder.build() + assert model.name == "mock_model_name" + + builder.serve_settings.telemetry_opt_out = True + + assert isinstance(model, DJLModel) + assert builder.schema_builder.sample_input["parameters"]["max_new_tokens"] == 128 + assert builder.nb_instance_type == "ml.g5.24xlarge" + assert model.image_config == MOCK_IMAGE_CONFIG + assert model.vpc_config == MOCK_VPC_CONFIG + assert "lmi" in builder.image_uri + + builder.modes[str(Mode.IN_PROCESS)] = MagicMock() + predictor = model.deploy(model_data_download_timeout=1800) + + assert builder.env_vars["MODEL_LOADING_TIMEOUT"] == "1800" + assert isinstance(predictor, InProcessModePredictor) + + builder._original_deploy = MagicMock() + builder._prepare_for_mode.return_value = (None, {}) + @patch("sagemaker.serve.builder.djl_builder._capture_telemetry", side_effect=None) @patch( "sagemaker.serve.builder.jumpstart_builder.JumpStart._is_jumpstart_model_id", diff --git a/tests/unit/sagemaker/serve/builder/test_model_builder.py b/tests/unit/sagemaker/serve/builder/test_model_builder.py index 91d804433c..7355fe4f38 100644 --- a/tests/unit/sagemaker/serve/builder/test_model_builder.py +++ b/tests/unit/sagemaker/serve/builder/test_model_builder.py @@ -4114,4 +4114,4 @@ def test_deploy(mock_unique_name_from_base, test_case): args, kwargs = model.deploy.call_args_list[0] diff = deepdiff.DeepDiff(kwargs, test_case["call_params"]) - assert diff == {} \ No newline at end of file + assert diff == {} diff --git a/tests/unit/sagemaker/serve/mode/test_in_process_mode.py b/tests/unit/sagemaker/serve/mode/test_in_process_mode.py index 0b1747029a..f6bbfb9b00 100644 --- a/tests/unit/sagemaker/serve/mode/test_in_process_mode.py +++ b/tests/unit/sagemaker/serve/mode/test_in_process_mode.py @@ -32,7 +32,7 @@ class TestInProcessMode(unittest.TestCase): @patch("sagemaker.serve.mode.in_process_mode.Path") @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") @patch("sagemaker.session.Session") - def test_load_happy(self, mock_session, mock_inference_spec, mock_path): + def test_load_happy_transformers(self, mock_session, mock_inference_spec, mock_path): mock_path.return_value.exists.side_effect = lambda *args, **kwargs: True mock_path.return_value.is_dir.side_effect = lambda *args, **kwargs: True @@ -56,6 +56,33 @@ def test_load_happy(self, mock_session, mock_inference_spec, mock_path): self.assertEqual(in_process_mode.model_path, "model_path") self.assertEqual(in_process_mode.env_vars, {"key": "val"}) + @patch("sagemaker.serve.mode.in_process_mode.Path") + @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") + @patch("sagemaker.session.Session") + def test_load_happy_djl_serving(self, mock_session, mock_inference_spec, mock_path): + mock_path.return_value.exists.side_effect = lambda *args, **kwargs: True + mock_path.return_value.is_dir.side_effect = lambda *args, **kwargs: True + + mock_inference_spec.load.side_effect = lambda *args, **kwargs: "Dummy load" + + mock_schema_builder = SchemaBuilder(mock_sample_input, mock_sample_output) + in_process_mode = InProcessMode( + model_server=ModelServer.DJL_SERVING, + inference_spec=mock_inference_spec, + schema_builder=mock_schema_builder, + session=mock_session, + model_path="model_path", + env_vars={"key": "val"}, + ) + + res = in_process_mode.load(model_path="/tmp/model-builder/code/") + + self.assertEqual(res, "Dummy load") + self.assertEqual(in_process_mode.inference_spec, mock_inference_spec) + self.assertEqual(in_process_mode.schema_builder, mock_schema_builder) + self.assertEqual(in_process_mode.model_path, "model_path") + self.assertEqual(in_process_mode.env_vars, {"key": "val"}) + @patch("sagemaker.serve.mode.in_process_mode.Path") @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") @patch("sagemaker.session.Session") @@ -119,7 +146,7 @@ def test_create_server_happy( model_path="model_path", ) - in_process_mode._multi_model_server_deep_ping = mock_multi_model_server_deep_ping + in_process_mode._deep_ping = mock_multi_model_server_deep_ping in_process_mode._start_serving = mock_start_serving in_process_mode.create_server(predictor=mock_predictor) @@ -160,13 +187,13 @@ def test_create_server_ex( model_path="model_path", ) - in_process_mode._multi_model_server_deep_ping = mock_multi_model_server_deep_ping + in_process_mode._deep_ping = mock_multi_model_server_deep_ping in_process_mode._start_serving = mock_start_serving self.assertRaises(InProcessDeepPingException, in_process_mode.create_server, mock_predictor) @patch( - "sagemaker.serve.model_server.multi_model_server.server.InProcessMultiModelServer._stop_serving" + "sagemaker.serve.model_server.in_process_model_server.in_process_server.InProcessServing._stop_serving" ) @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") @patch("sagemaker.session.Session") @@ -177,7 +204,7 @@ def test_destroy_server( mock_stop_serving, ): in_process_mode = InProcessMode( - model_server=ModelServer.MMS, + model_server=ModelServer.DJL_SERVING, inference_spec=mock_inference_spec, schema_builder=SchemaBuilder(mock_sample_input, mock_sample_output), session=mock_session, diff --git a/tests/unit/sagemaker/serve/test_app.py b/tests/unit/sagemaker/serve/model_server/in_process_model_server/test_app.py similarity index 60% rename from tests/unit/sagemaker/serve/test_app.py rename to tests/unit/sagemaker/serve/model_server/in_process_model_server/test_app.py index 5b9a2218bb..65ba80c370 100644 --- a/tests/unit/sagemaker/serve/test_app.py +++ b/tests/unit/sagemaker/serve/model_server/in_process_model_server/test_app.py @@ -16,7 +16,7 @@ import pytest from unittest.mock import patch, Mock -from sagemaker.serve.app import InProcessServer +from sagemaker.serve.model_server.in_process_model_server.app import InProcessServer from tests.integ.sagemaker.serve.constants import ( PYTHON_VERSION_IS_NOT_310, ) @@ -29,29 +29,29 @@ class TestAppInProcessServer(unittest.TestCase): PYTHON_VERSION_IS_NOT_310, reason="The goal of these tests are to test the serving components of our feature", ) - @patch("sagemaker.serve.app.threading") - @patch("sagemaker.serve.app.pipeline") - def test_in_process_server_init(self, mock_pipeline, mock_threading): + @patch("sagemaker.serve.model_server.in_process_model_server.app.threading") + @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") + def test_in_process_server_init(self, mock_inference_spec, mock_threading): mock_generator = Mock() mock_generator.side_effect = None - in_process_server = InProcessServer(model_id=mock_model_id) + in_process_server = InProcessServer(inference_spec=mock_inference_spec) in_process_server._generator = mock_generator @pytest.mark.skipif( PYTHON_VERSION_IS_NOT_310, reason="The goal of these test are to test the serving components of our feature", ) - @patch("sagemaker.serve.app.logger") - @patch("sagemaker.serve.app.threading") - @patch("sagemaker.serve.app.pipeline") - def test_start_server(self, mock_pipeline, mock_threading, mock_logger): + @patch("sagemaker.serve.model_server.in_process_model_server.app.logger") + @patch("sagemaker.serve.model_server.in_process_model_server.app.threading") + @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") + def test_start_server(self, mock_inference_spec, mock_threading, mock_logger): mock_generator = Mock() mock_generator.side_effect = None mock_thread = Mock() mock_threading.Thread.return_value = mock_thread - in_process_server = InProcessServer(model_id=mock_model_id) + in_process_server = InProcessServer(inference_spec=mock_inference_spec) in_process_server._generator = mock_generator in_process_server.start_server() @@ -63,27 +63,27 @@ def test_start_server(self, mock_pipeline, mock_threading, mock_logger): PYTHON_VERSION_IS_NOT_310, reason="The goal of these test are to test the serving components of our feature", ) - @patch("sagemaker.serve.app.asyncio") - @patch("sagemaker.serve.app.pipeline") - def test_start_run_async_in_thread(self, mock_pipeline, mock_asyncio): - mock_pipeline.side_effect = None + @patch("sagemaker.serve.model_server.in_process_model_server.app.asyncio") + @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") + def test_start_run_async_in_thread(self, mock_inference_spec, mock_asyncio): + mock_inference_spec.load.side_effect = lambda *args, **kwargs: "Dummy load" mock_loop = Mock() mock_asyncio.new_event_loop.side_effect = lambda: mock_loop - in_process_server = InProcessServer(model_id=mock_model_id) + in_process_server = InProcessServer(inference_spec=mock_inference_spec) in_process_server._start_run_async_in_thread() mock_asyncio.set_event_loop.assert_called_once_with(mock_loop) mock_loop.run_until_complete.assert_called() - @patch("sagemaker.serve.app.pipeline") - async def test_serve(self, mock_pipeline): - mock_pipeline.side_effect = None + @patch("sagemaker.serve.spec.inference_spec.InferenceSpec") + async def test_serve(self, mock_inference_spec): + mock_inference_spec.load.side_effect = lambda *args, **kwargs: "Dummy load" mock_server = Mock() - in_process_server = InProcessServer(model_id=mock_model_id) + in_process_server = InProcessServer(inference_spec=mock_inference_spec) in_process_server.server = mock_server await in_process_server._serve() From 24b0dc0c3714660e19bfdea0adfa885de86f2bd8 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Mon, 11 Nov 2024 16:45:03 -0800 Subject: [PATCH 23/79] Pass hyperparameters as CLI args (#1577) --- src/sagemaker/modules/__init__.py | 4 - src/sagemaker/modules/configs.py | 4 +- src/sagemaker/modules/distributed.py | 4 +- src/sagemaker/modules/templates.py | 7 +- .../base_model_trainer.ipynb | 10 +- .../container_drivers/basic_script_driver.py | 79 ++++++++++++ .../train/container_drivers/mpi_driver.py | 8 +- .../train/container_drivers/mpi_utils.py | 15 ++- .../container_drivers/scripts/environment.py | 12 +- .../container_drivers/torchrun_driver.py | 13 +- .../modules/train/container_drivers/utils.py | 83 +++++++++++- src/sagemaker/modules/train/model_trainer.py | 58 +++++---- src/sagemaker/modules/utils.py | 28 +++- tests/data/modules/params-script/train.py | 104 +++++++++++++++ tests/data/modules/params-script/train.sh | 11 ++ .../modules/train/test_model_trainer.py | 104 +++++++++++++++ .../scripts/test_enviornment.py | 7 +- .../container_drivers/test_mpi_driver.py | 6 + .../container_drivers/test_torchrun_driver.py | 10 ++ .../train/container_drivers/test_utils.py | 121 ++++++++++++++++++ .../modules/train/test_model_trainer.py | 79 +++++++----- 21 files changed, 672 insertions(+), 95 deletions(-) create mode 100644 src/sagemaker/modules/train/container_drivers/basic_script_driver.py create mode 100644 tests/data/modules/params-script/train.py create mode 100644 tests/data/modules/params-script/train.sh create mode 100644 tests/integ/sagemaker/modules/train/test_model_trainer.py create mode 100644 tests/unit/sagemaker/modules/train/container_drivers/test_utils.py diff --git a/src/sagemaker/modules/__init__.py b/src/sagemaker/modules/__init__.py index 9a25d10e4e..67758a7af1 100644 --- a/src/sagemaker/modules/__init__.py +++ b/src/sagemaker/modules/__init__.py @@ -16,7 +16,3 @@ from sagemaker_core.main.utils import logger as sagemaker_core_logger logger = sagemaker_core_logger - -from sagemaker.modules.train.model_trainer import ( # noqa: F401 E402 # pylint: disable=C0413 - ModelTrainer, -) diff --git a/src/sagemaker/modules/configs.py b/src/sagemaker/modules/configs.py index 75f06797bd..bb84f2d780 100644 --- a/src/sagemaker/modules/configs.py +++ b/src/sagemaker/modules/configs.py @@ -123,9 +123,9 @@ class Compute(shapes.ResourceConfig): Attributes: instance_type (Optional[str]): The ML compute instance type. For information about available instance types, - see https://aws.amazon.com/sagemaker/pricing/. Default: ml.m5.xlarge + see https://aws.amazon.com/sagemaker/pricing/. instance_count (Optional[int]): The number of ML compute instances to use. For distributed - training, provide a value greater than 1. Default: 1 + training, provide a value greater than 1. volume_size_in_gb (Optional[int]): The size of the ML storage volume that you want to provision. ML storage volumes store model artifacts and incremental states. Training algorithms might also use the ML diff --git a/src/sagemaker/modules/distributed.py b/src/sagemaker/modules/distributed.py index b6d6967833..32ea7e81a6 100644 --- a/src/sagemaker/modules/distributed.py +++ b/src/sagemaker/modules/distributed.py @@ -30,9 +30,9 @@ def model_dump(self, *args, **kwargs): class Torchrun(DistributedRunner): - """TorchDistribution. + """TorchDistributed. - The TorchDistribution runner uses `torchrun` or `torch.distributed.launch` in the backend to + The Torchrun distributed runner uses `torchrun` or `torch.distributed.launch` in the backend to launch distributed training. Attributes: diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 1c2e65ff8c..0a8f6d1f12 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -15,10 +15,15 @@ EXECUTE_BASE_COMMANDS = """ CMD="{base_command}" -echo "Running command: $CMD" +echo "Executing command: $CMD" eval $CMD """ +EXECUTE_BASIC_SCRIPT_DRIVER = """ +echo "Running Basic Script driver" +$SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/basic_script_driver.py +""" + EXEUCTE_TORCHRUN_DRIVER = """ echo "Running Torchrun driver" $SM_PYTHON_CMD /opt/ml/input/data/sm_drivers/torchrun_driver.py diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index c839566dc3..e674a4e041 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -117,8 +117,11 @@ "metadata": {}, "outputs": [], "source": [ + "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import SourceCode\n", "\n", + "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", + "\n", "source_code = SourceCode(\n", " source_dir=\"basic-script-mode\",\n", " requirements=\"requirements.txt\",\n", @@ -460,13 +463,6 @@ ")\n", "model_trainer.train(input_data_config=[test_data], wait=False)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/src/sagemaker/modules/train/container_drivers/basic_script_driver.py b/src/sagemaker/modules/train/container_drivers/basic_script_driver.py new file mode 100644 index 0000000000..cb0278bc9f --- /dev/null +++ b/src/sagemaker/modules/train/container_drivers/basic_script_driver.py @@ -0,0 +1,79 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module is the entry point for the Basic Script Driver.""" +from __future__ import absolute_import + +import sys +import shlex + +from typing import List + +from utils import ( + logger, + get_python_executable, + read_source_code_json, + read_hyperparameters_json, + execute_commands, + write_failure_file, + hyperparameters_to_cli_args, +) + + +def create_commands() -> List[str]: + """Create the commands to execute.""" + source_code = read_source_code_json() + hyperparameters = read_hyperparameters_json() + python_executable = get_python_executable() + + entry_script = source_code["entry_script"] + args = hyperparameters_to_cli_args(hyperparameters) + if entry_script.endswith(".py"): + commands = [python_executable, entry_script] + commands += args + elif entry_script.endswith(".sh"): + args_str = " ".join(shlex.quote(arg) for arg in args) + commands = [ + "/bin/sh", + "-c", + f"chmod +x {entry_script} && ./{entry_script} {args_str}", + ] + else: + raise ValueError( + f"Unsupported entry script type: {entry_script}. Only .py and .sh are supported." + ) + return commands + + +def main(): + """Main function for the Basic Script Driver. + + This function is the entry point for the Basic Script Driver. + + Execution Lifecycle: + 1. Read the source code and hyperparameters JSON files. + 2. Set hyperparameters as command line arguments. + 3. Create the commands to execute. + 4. Execute the commands. + """ + + cmd = create_commands() + + logger.info(f"Executing command: {' '.join(cmd)}") + exit_code, traceback = execute_commands(cmd) + if exit_code != 0: + write_failure_file(traceback) + sys.exit(exit_code) + + +if __name__ == "__main__": + main() diff --git a/src/sagemaker/modules/train/container_drivers/mpi_driver.py b/src/sagemaker/modules/train/container_drivers/mpi_driver.py index 90c13df8d5..b0e501fd9e 100644 --- a/src/sagemaker/modules/train/container_drivers/mpi_driver.py +++ b/src/sagemaker/modules/train/container_drivers/mpi_driver.py @@ -21,6 +21,8 @@ logger, read_source_code_json, read_distributed_runner_json, + read_hyperparameters_json, + hyperparameters_to_cli_args, get_process_count, execute_commands, write_failure_file, @@ -58,6 +60,7 @@ def main(): """ source_code = read_source_code_json() distribution = read_distributed_runner_json() + hyperparameters = read_hyperparameters_json() sm_current_host = os.environ["SM_CURRENT_HOST"] sm_hosts = json.loads(os.environ["SM_HOSTS"]) @@ -87,7 +90,10 @@ def main(): entry_script_path=os.path.join(USER_CODE_PATH, source_code["entry_script"]), ) - logger.info(f"Executing command: {mpi_command}") + args = hyperparameters_to_cli_args(hyperparameters) + mpi_command += args + + logger.info(f"Executing command: {' '.join(mpi_command)}") exit_code, error_traceback = execute_commands(mpi_command) write_status_file_to_workers(worker_hosts) diff --git a/src/sagemaker/modules/train/container_drivers/mpi_utils.py b/src/sagemaker/modules/train/container_drivers/mpi_utils.py index 0fcfa265a3..a2d4fcfc87 100644 --- a/src/sagemaker/modules/train/container_drivers/mpi_utils.py +++ b/src/sagemaker/modules/train/container_drivers/mpi_utils.py @@ -22,13 +22,14 @@ from utils import logger, SM_EFA_NCCL_INSTANCES, SM_EFA_RDMA_INSTANCES, get_python_executable FINISHED_STATUS_FILE = "/tmp/done.algo-1" +READY_FILE = "/tmp/ready.%s" DEFAULT_SSH_PORT = 22 -def _write_status_file(host: str, status_file: str) -> bool: - """Write the status file to the provided host.""" +def _write_file_to_host(host: str, status_file: str) -> bool: + """Write the a file to the provided host.""" try: - logger.info("Writing finished status file (%s) to %s", status_file, host) + logger.info(f"Writing {status_file} to {host}") subprocess.run( ["ssh", host, "touch", f"{status_file}"], capture_output=True, @@ -46,7 +47,7 @@ def write_status_file_to_workers(worker_hosts: List[str], status_file: str = FIN """Write the status file to all worker nodes.""" for worker in worker_hosts: retry = 0 - while not _write_status_file(worker, status_file): + while not _write_file_to_host(worker, status_file): time.sleep(5) retry += 1 if retry > 5: @@ -102,7 +103,10 @@ def _wait_for_workers(worker_hosts: List[str], port: int = DEFAULT_SSH_PORT, tim while True: logger.info("Master is attempting to connect to all workers...") - all_workers_connected = all(_can_connect(worker, port) for worker in worker_hosts) + all_workers_connected = all( + _can_connect(worker, port) and os.path.exists(READY_FILE % worker) + for worker in worker_hosts + ) if all_workers_connected: logger.info("Master can connect to all worker nodes.") @@ -131,6 +135,7 @@ def bootstrap_worker_node(master_host: str, status_file: str = FINISHED_STATUS_F """Bootstrap the worker nodes.""" logger.info("Bootstrapping worker node...") _wait_for_master(master_host) + _write_file_to_host(master_host, READY_FILE % os.environ["SM_CURRENT_HOST"]) _wait_for_status_file(status_file) diff --git a/src/sagemaker/modules/train/container_drivers/scripts/environment.py b/src/sagemaker/modules/train/container_drivers/scripts/environment.py index 163b0ea8b4..b02833b5af 100644 --- a/src/sagemaker/modules/train/container_drivers/scripts/environment.py +++ b/src/sagemaker/modules/train/container_drivers/scripts/environment.py @@ -21,6 +21,11 @@ import sys import logging +parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +sys.path.insert(0, parent_dir) + +from utils import safe_serialize # noqa: E402 # pylint: disable=C0413 + # Initialize logger SM_LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", 20) logger = logging.getLogger(__name__) @@ -147,7 +152,7 @@ def set_env( # Hyperparameters env_vars["SM_HPS"] = hyperparameters_config for key, value in hyperparameters_config.items(): - env_vars[f"SM_HP_{key.upper()}"] = value + env_vars[f"SM_HP_{key.upper()}"] = safe_serialize(value) # Host Variables current_host = resource_config["current_host"] @@ -197,10 +202,7 @@ def set_env( } with open(output_file, "w") as f: for key, value in env_vars.items(): - if isinstance(value, (list, dict)): - f.write(f"export {key}='{json.dumps(value)}'\n") - else: - f.write(f"export {key}='{value}'\n") + f.write(f"export {key}='{safe_serialize(value)}'\n") logger.info("Environment Variables:") log_env_variables(env_vars_dict=env_vars) diff --git a/src/sagemaker/modules/train/container_drivers/torchrun_driver.py b/src/sagemaker/modules/train/container_drivers/torchrun_driver.py index 799f56ca93..95548d35be 100644 --- a/src/sagemaker/modules/train/container_drivers/torchrun_driver.py +++ b/src/sagemaker/modules/train/container_drivers/torchrun_driver.py @@ -22,13 +22,15 @@ logger, read_source_code_json, read_distributed_runner_json, + read_hyperparameters_json, + hyperparameters_to_cli_args, get_process_count, get_python_executable, - SM_EFA_NCCL_INSTANCES, - SM_EFA_RDMA_INSTANCES, execute_commands, write_failure_file, USER_CODE_PATH, + SM_EFA_NCCL_INSTANCES, + SM_EFA_RDMA_INSTANCES, ) @@ -65,6 +67,7 @@ def create_commands(): """Create the Torch Distributed command to execute""" source_code = read_source_code_json() distribution = read_distributed_runner_json() + hyperparameters = read_hyperparameters_json() process_count = get_process_count(distribution) host_count = int(os.environ["SM_HOST_COUNT"]) @@ -92,6 +95,10 @@ def create_commands(): ) torch_cmd.extend([os.path.join(USER_CODE_PATH, source_code["entry_script"])]) + + args = hyperparameters_to_cli_args(hyperparameters) + torch_cmd += args + return torch_cmd @@ -110,7 +117,7 @@ def main(): """ setup_env() torch_cmd = create_commands() - logger.info(f"Executing command: {torch_cmd}") + logger.info(f"Executing command: {' '.join(torch_cmd)}") exit_code, traceback = execute_commands(torch_cmd) if exit_code != 0: write_failure_file(traceback) diff --git a/src/sagemaker/modules/train/container_drivers/utils.py b/src/sagemaker/modules/train/container_drivers/utils.py index 42745b70ff..93e3e4dc03 100644 --- a/src/sagemaker/modules/train/container_drivers/utils.py +++ b/src/sagemaker/modules/train/container_drivers/utils.py @@ -20,7 +20,7 @@ import traceback import json -from typing import List, Dict, Any, Tuple, IO +from typing import List, Dict, Any, Tuple, IO, Optional # Initialize logger SM_LOG_LEVEL = os.environ.get("SM_LOG_LEVEL", 20) @@ -30,16 +30,17 @@ logger.setLevel(int(SM_LOG_LEVEL)) FAILURE_FILE = "/opt/ml/output/failure" -DEFAULT_FAILURE_MESSAGE = f""" +DEFAULT_FAILURE_MESSAGE = """ Training Execution failed. For more details, see CloudWatch logs at 'aws/sagemaker/TrainingJobs'. -TrainingJob - {os.environ['TRAINING_JOB_NAME']} +TrainingJob - {training_job_name} """ USER_CODE_PATH = "/opt/ml/input/data/sm_code" SOURCE_CODE_JSON = "/opt/ml/input/data/sm_drivers/sourcecode.json" DISTRIBUTED_RUNNER_JSON = "/opt/ml/input/data/sm_drivers/distributed_runner.json" +HYPERPARAMETERS_JSON = "/opt/ml/input/config/hyperparameters.json" SM_EFA_NCCL_INSTANCES = [ "ml.g4dn.8xlarge", @@ -59,8 +60,10 @@ ] -def write_failure_file(message: str = DEFAULT_FAILURE_MESSAGE): +def write_failure_file(message: Optional[str] = None): """Write a failure file with the message.""" + if message is None: + message = DEFAULT_FAILURE_MESSAGE.format(training_job_name=os.environ["TRAINING_JOB_NAME"]) if not os.path.exists(FAILURE_FILE): with open(FAILURE_FILE, "w") as f: f.write(message) @@ -86,6 +89,16 @@ def read_distributed_runner_json(distributed_json: Dict[str, Any] = DISTRIBUTED_ return distributed_runner_dict +def read_hyperparameters_json(hyperparameters_json: Dict[str, Any] = HYPERPARAMETERS_JSON): + """Read the hyperparameters config json file.""" + try: + with open(hyperparameters_json, "r") as f: + hyperparameters_dict = json.load(f) or {} + except FileNotFoundError: + hyperparameters_dict = {} + return hyperparameters_dict + + def get_process_count(distributed_runner_dict: Dict[str, Any]) -> int: """Get the number of processes to run on each node in the training job.""" return ( @@ -96,6 +109,68 @@ def get_process_count(distributed_runner_dict: Dict[str, Any]) -> int: ) +def hyperparameters_to_cli_args(hyperparameters: Dict[str, Any]) -> List[str]: + """Convert the hyperparameters to CLI arguments.""" + cli_args = [] + for key, value in hyperparameters.items(): + value = safe_deserialize(value) + cli_args.extend([f"--{key}", safe_serialize(value)]) + + return cli_args + + +def safe_deserialize(data: Any) -> Any: + """Safely deserialize data from a JSON string. + + This function handles the following cases: + 1. If `data` is not a string, it returns the input as-is. + 2. If `data` is a string and matches common boolean values ("true" or "false"), + it returns the corresponding boolean value (True or False). + 3. If `data` is a JSON-encoded string, it attempts to deserialize it using `json.loads()`. + 4. If `data` is a string but cannot be decoded as JSON, it returns the original string. + + Returns: + Any: The deserialized data, or the original input if it cannot be JSON-decoded. + """ + if not isinstance(data, str): + return data + + lower_data = data.lower() + if lower_data in ["true"]: + return True + if lower_data in ["false"]: + return False + + try: + return json.loads(data) + except json.JSONDecodeError: + return data + + +def safe_serialize(data): + """Serialize the data without wrapping strings in quotes. + + This function handles the following cases: + 1. If `data` is a string, it returns the string as-is without wrapping in quotes. + 2. If `data` is serializable (e.g., a dictionary, list, int, float), it returns + the JSON-encoded string using `json.dumps()`. + 3. If `data` cannot be serialized (e.g., a custom object), it returns the string + representation of the data using `str(data)`. + + Args: + data (Any): The data to serialize. + + Returns: + str: The serialized JSON-compatible string or the string representation of the input. + """ + if isinstance(data, str): + return data + try: + return json.dumps(data) + except TypeError: + return str(data) + + def get_python_executable() -> str: """Get the python executable path.""" return sys.executable diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 7b9abf23c1..efd5011055 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -15,6 +15,8 @@ import os import json +import shutil +from tempfile import TemporaryDirectory from typing import Optional, List, Union, Dict, Any from pydantic import BaseModel, ConfigDict, PrivateAttr, validate_call @@ -58,6 +60,7 @@ _get_unique_name, _is_valid_path, _is_valid_s3_uri, + safe_serialize, ) from sagemaker.modules.types import DataSourceType from sagemaker.modules.constants import ( @@ -77,6 +80,7 @@ EXECUTE_BASE_COMMANDS, EXECUTE_MPI_DRIVER, EXEUCTE_TORCHRUN_DRIVER, + EXECUTE_BASIC_SCRIPT_DRIVER, ) from sagemaker.modules import logger @@ -350,12 +354,15 @@ def train( string_hyper_parameters = {} if self.hyperparameters: for hyper_parameter, value in self.hyperparameters.items(): - string_hyper_parameters[hyper_parameter] = str(value) + string_hyper_parameters[hyper_parameter] = safe_serialize(value) container_entrypoint = None container_arguments = None if self.source_code: + drivers_dir = TemporaryDirectory() + shutil.copytree(SM_DRIVERS_LOCAL_PATH, drivers_dir.name, dirs_exist_ok=True) + # If source code is provided, create a channel for the source code # The source code will be mounted at /opt/ml/input/data/sm_code in the container if self.source_code.source_dir: @@ -365,17 +372,22 @@ def train( input_data_config.append(source_code_channel) self._prepare_train_script( - source_code=self.source_code, distributed_runner=self.distributed_runner + tmp_dir=drivers_dir, + source_code=self.source_code, + distributed_runner=self.distributed_runner, ) + if isinstance(self.distributed_runner, TorchrunSMP): mp_parameters = self.distributed_runner._to_mp_parameters_dict() - string_hyper_parameters["mp_parameters"] = json.dumps(mp_parameters) + string_hyper_parameters["mp_parameters"] = safe_serialize(mp_parameters) - self._write_source_code_json(self.source_code) - self._write_distributed_runner_json(self.distributed_runner) + self._write_source_code_json(tmp_dir=drivers_dir, source_code=self.source_code) + self._write_distributed_runner_json( + tmp_dir=drivers_dir, distributed_runner=self.distributed_runner + ) # Create an input channel for drivers packaged by the sdk - sm_drivers_channel = self.create_input_data_channel(SM_DRIVERS, SM_DRIVERS_LOCAL_PATH) + sm_drivers_channel = self.create_input_data_channel(SM_DRIVERS, drivers_dir.name) input_data_config.append(sm_drivers_channel) # If source_code is provided, we will always use @@ -525,24 +537,27 @@ def _get_input_data_config( ) return channels - def _write_source_code_json(self, source_code: SourceCode): + def _write_source_code_json(self, tmp_dir: TemporaryDirectory, source_code: SourceCode): """Write the source code configuration to a JSON file.""" - file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, SOURCE_CODE_JSON) + file_path = os.path.join(tmp_dir.name, SOURCE_CODE_JSON) with open(file_path, "w") as f: dump = source_code.model_dump(exclude_none=True) if source_code else {} f.write(json.dumps(dump)) def _write_distributed_runner_json( - self, distributed_runner: Optional[DistributedRunner] = None + self, + tmp_dir: TemporaryDirectory, + distributed_runner: Optional[DistributedRunner] = None, ): """Write the distributed runner configuration to a JSON file.""" - file_path = os.path.join(SM_DRIVERS_LOCAL_PATH, DISTRIBUTED_RUNNER_JSON) + file_path = os.path.join(tmp_dir.name, DISTRIBUTED_RUNNER_JSON) with open(file_path, "w") as f: dump = distributed_runner.model_dump(exclude_none=True) if distributed_runner else {} f.write(json.dumps(dump)) def _prepare_train_script( self, + tmp_dir: TemporaryDirectory, source_code: SourceCode, distributed_runner: Optional[DistributedRunner] = None, ): @@ -562,19 +577,6 @@ def _prepare_train_script( base_command = source_code.command.split() base_command = " ".join(base_command) - if source_code.entry_script and not source_code.command and not distributed_runner: - if source_code.entry_script.endswith(".py"): - base_command = f"$SM_PYTHON_CMD {source_code.entry_script}" - elif source_code.entry_script.endswith(".sh"): - base_command = ( - f"chmod +x {source_code.entry_script} && " f"bash {source_code.entry_script}" - ) - else: - raise ValueError( - f"Unsupported entry script: {source_code.entry_script}." - + "Only .py and .sh scripts are supported." - ) - install_requirements = "" if source_code.requirements: install_requirements = "echo 'Installing requirements'\n" @@ -594,6 +596,13 @@ def _prepare_train_script( execute_driver = EXEUCTE_TORCHRUN_DRIVER else: raise ValueError(f"Unsupported distribution type: {distribution_type}.") + elif source_code.entry_script and not source_code.command and not distributed_runner: + if not source_code.entry_script.endswith((".py", ".sh")): + raise ValueError( + f"Unsupported entry script: {source_code.entry_script}." + + "Only .py and .sh scripts are supported." + ) + execute_driver = EXECUTE_BASIC_SCRIPT_DRIVER train_script = TRAIN_SCRIPT_TEMPLATE.format( working_dir=working_dir, @@ -601,8 +610,7 @@ def _prepare_train_script( execute_driver=execute_driver, ) - os.makedirs(SM_DRIVERS_LOCAL_PATH, exist_ok=True) - with open(os.path.join(SM_DRIVERS_LOCAL_PATH, TRAIN_SCRIPT), "w") as f: + with open(os.path.join(tmp_dir.name, TRAIN_SCRIPT), "w") as f: f.write(train_script) def with_metric_settings( diff --git a/src/sagemaker/modules/utils.py b/src/sagemaker/modules/utils.py index b401d3e414..133685db63 100644 --- a/src/sagemaker/modules/utils.py +++ b/src/sagemaker/modules/utils.py @@ -13,8 +13,8 @@ """Utils module.""" from __future__ import absolute_import -import re import os +import json from datetime import datetime from typing import Literal, Any @@ -87,8 +87,8 @@ def _get_unique_name(base, max_length=63): str: The unique name """ current_time = datetime.now().strftime("%Y%m%d%H%M%S") + base = base.replace("_", "-") unique_name = f"{base}-{current_time}" - unique_name = re.sub(r"[^a-zA-Z0-9-]", "", unique_name) # Remove invalid characters unique_name = unique_name[:max_length] # Truncate to max_length return unique_name @@ -117,3 +117,27 @@ def convert_unassigned_to_none(instance) -> Any: if isinstance(value, Unassigned): setattr(instance, name, None) return instance + + +def safe_serialize(data): + """Serialize the data without wrapping strings in quotes. + + This function handles the following cases: + 1. If `data` is a string, it returns the string as-is without wrapping in quotes. + 2. If `data` is serializable (e.g., a dictionary, list, int, float), it returns + the JSON-encoded string using `json.dumps()`. + 3. If `data` cannot be serialized (e.g., a custom object), it returns the string + representation of the data using `str(data)`. + + Args: + data (Any): The data to serialize. + + Returns: + str: The serialized JSON-compatible string or the string representation of the input. + """ + if isinstance(data, str): + return data + try: + return json.dumps(data) + except TypeError: + return str(data) diff --git a/tests/data/modules/params-script/train.py b/tests/data/modules/params-script/train.py new file mode 100644 index 0000000000..742684802d --- /dev/null +++ b/tests/data/modules/params-script/train.py @@ -0,0 +1,104 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Script to test hyperparameters contract.""" +from __future__ import absolute_import + +import argparse +import json +import os + +EXPECTED_HYPERPARAMETERS = { + "integer": 1, + "boolean": True, + "float": 3.14, + "string": "Hello World", + "list": [1, 2, 3], + "dict": { + "string": "value", + "integer": 3, + "list": [1, 2, 3], + "dict": {"key": "value"}, + "boolean": True, + }, +} + + +def parse_args(): + parser = argparse.ArgumentParser(description="Test Hyperparameters") + parser.add_argument( + "--string", + type=str, + default=None, + required=True, + ) + parser.add_argument( + "--integer", + type=int, + default=None, + required=True, + ) + parser.add_argument( + "--float", + type=float, + default=None, + required=True, + ) + parser.add_argument( + "--boolean", + type=lambda x: json.loads(x), + default=None, + required=True, + ) + parser.add_argument( + "--list", + type=lambda x: json.loads(x), + default=None, + required=True, + ) + parser.add_argument( + "--dict", + type=lambda x: json.loads(x), + default=None, + required=True, + ) + return parser.parse_args() + + +def main(): + args = parse_args() + print(args) + + assert isinstance(args.string, str) + assert isinstance(args.integer, int) + assert isinstance(args.boolean, bool) + assert isinstance(args.float, float) + assert isinstance(args.list, list) + assert isinstance(args.dict, dict) + + assert args.string == EXPECTED_HYPERPARAMETERS["string"] + assert args.integer == EXPECTED_HYPERPARAMETERS["integer"] + assert args.boolean == EXPECTED_HYPERPARAMETERS["boolean"] + assert args.float == EXPECTED_HYPERPARAMETERS["float"] + assert args.list == EXPECTED_HYPERPARAMETERS["list"] + assert args.dict == EXPECTED_HYPERPARAMETERS["dict"] + + assert os.environ["SM_HP_STRING"] == EXPECTED_HYPERPARAMETERS["string"] + assert int(os.environ["SM_HP_INTEGER"]) == EXPECTED_HYPERPARAMETERS["integer"] + assert float(os.environ["SM_HP_FLOAT"]) == EXPECTED_HYPERPARAMETERS["float"] + assert json.loads(os.environ["SM_HP_BOOLEAN"]) == EXPECTED_HYPERPARAMETERS["boolean"] + assert json.loads(os.environ["SM_HP_LIST"]) == EXPECTED_HYPERPARAMETERS["list"] + assert json.loads(os.environ["SM_HP_DICT"]) == EXPECTED_HYPERPARAMETERS["dict"] + + +if __name__ == "__main__": + main() diff --git a/tests/data/modules/params-script/train.sh b/tests/data/modules/params-script/train.sh new file mode 100644 index 0000000000..20f9a3c57a --- /dev/null +++ b/tests/data/modules/params-script/train.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -e + +echo "Do some extra work here..." + +CMD="python train.py $@" +echo "Executing Command: $CMD" + +python train.py "$@" + +echo "Done!" diff --git a/tests/integ/sagemaker/modules/train/test_model_trainer.py b/tests/integ/sagemaker/modules/train/test_model_trainer.py new file mode 100644 index 0000000000..a4f02cd77c --- /dev/null +++ b/tests/integ/sagemaker/modules/train/test_model_trainer.py @@ -0,0 +1,104 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module contains code to test image builder""" +from __future__ import absolute_import + +from tests.integ import DATA_DIR + +from sagemaker.modules.train import ModelTrainer +from sagemaker.modules.configs import SourceCode, Compute +from sagemaker.modules.distributed import MPI, Torchrun + +EXPECTED_HYPERPARAMETERS = { + "integer": 1, + "boolean": True, + "float": 3.14, + "string": "Hello World", + "list": [1, 2, 3], + "dict": { + "string": "value", + "integer": 3, + "list": [1, 2, 3], + "dict": {"key": "value"}, + "boolean": True, + }, +} + +DEFAULT_CPU_IMAGE = "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310" + + +def test_hp_contract_basic_py_script(): + source_code = SourceCode( + source_dir=f"{DATA_DIR}/modules/params-script", + entry_script="train.py", + ) + + model_trainer = ModelTrainer( + training_image=DEFAULT_CPU_IMAGE, + hyperparameters=EXPECTED_HYPERPARAMETERS, + source_code=source_code, + base_job_name="hp-contract-basic-py-script", + ) + + model_trainer.train() + + +def test_hp_contract_basic_sh_script(): + source_code = SourceCode( + source_dir=f"{DATA_DIR}/modules/params-script", + entry_script="train.sh", + ) + model_trainer = ModelTrainer( + training_image=DEFAULT_CPU_IMAGE, + hyperparameters=EXPECTED_HYPERPARAMETERS, + source_code=source_code, + base_job_name="hp-contract-basic-sh-script", + ) + + model_trainer.train() + + +def test_hp_contract_mpi_script(): + source_code = SourceCode( + source_dir=f"{DATA_DIR}/modules/params-script", + entry_script="train.py", + ) + compute = Compute(instance_type="ml.m5.xlarge", instance_count=2) + model_trainer = ModelTrainer( + training_image=DEFAULT_CPU_IMAGE, + compute=compute, + hyperparameters=EXPECTED_HYPERPARAMETERS, + source_code=source_code, + distributed_runner=MPI(), + base_job_name="hp-contract-mpi-script", + ) + + model_trainer.train() + + +def test_hp_contract_torchrun_script(): + source_code = SourceCode( + source_dir=f"{DATA_DIR}/modules/params-script", + entry_script="train.py", + ) + compute = Compute(instance_type="ml.m5.xlarge", instance_count=2) + model_trainer = ModelTrainer( + training_image=DEFAULT_CPU_IMAGE, + compute=compute, + hyperparameters=EXPECTED_HYPERPARAMETERS, + source_code=source_code, + distributed_runner=Torchrun(), + base_job_name="hp-contract-torchrun-script", + ) + + model_trainer.train() diff --git a/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py index 6d7c40f23a..938a9b05a3 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/scripts/test_enviornment.py @@ -26,6 +26,7 @@ mask_sensitive_info, HIDDEN_VALUE, ) +from sagemaker.modules.train.container_drivers.utils import safe_serialize RESOURCE_CONFIG = dict( current_host="algo-1", @@ -114,7 +115,11 @@ @patch("sagemaker.modules.train.container_drivers.scripts.environment.num_cpus", return_value=8) @patch("sagemaker.modules.train.container_drivers.scripts.environment.num_gpus", return_value=0) @patch("sagemaker.modules.train.container_drivers.scripts.environment.num_neurons", return_value=0) -def test_set_env(mock_num_cpus, mock_num_gpus, mock_num_neurons): +@patch( + "sagemaker.modules.train.container_drivers.scripts.environment.safe_serialize", + side_effect=safe_serialize, +) +def test_set_env(mock_safe_serialize, mock_num_cpus, mock_num_gpus, mock_num_neurons): with patch.dict(os.environ, {"TRAINING_JOB_NAME": "test-job"}): set_env( resource_config=RESOURCE_CONFIG, diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py b/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py index 02d88c4d4e..9c9fc8feb7 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_mpi_driver.py @@ -70,11 +70,13 @@ @patch("sagemaker.modules.train.container_drivers.mpi_driver.start_sshd_daemon") @patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_master_node") @patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_worker_node") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.hyperparameters_to_cli_args") @patch("sagemaker.modules.train.container_drivers.mpi_driver.get_mpirun_command") @patch("sagemaker.modules.train.container_drivers.mpi_driver.execute_commands") def test_mpi_driver_worker( mock_execute_commands, mock_get_mpirun_command, + mock_hyperparameters_to_cli_args, mock_bootstrap_worker_node, mock_bootstrap_master_node, mock_start_sshd_daemon, @@ -82,6 +84,7 @@ def test_mpi_driver_worker( mock_read_source_code_json, mock_read_distributed_runner_json, ): + mock_hyperparameters_to_cli_args.return_value = [] mock_read_source_code_json.return_value = DUMMY_SOURCE_CODE mock_read_distributed_runner_json.return_value = DUMMY_DISTRIBUTED_RUNNER @@ -112,6 +115,7 @@ def test_mpi_driver_worker( @patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_master_node") @patch("sagemaker.modules.train.container_drivers.mpi_driver.bootstrap_worker_node") @patch("sagemaker.modules.train.container_drivers.mpi_driver.get_process_count") +@patch("sagemaker.modules.train.container_drivers.mpi_driver.hyperparameters_to_cli_args") @patch("sagemaker.modules.train.container_drivers.mpi_driver.get_mpirun_command") @patch("sagemaker.modules.train.container_drivers.mpi_driver.execute_commands") @patch("sagemaker.modules.train.container_drivers.mpi_driver.write_status_file_to_workers") @@ -119,6 +123,7 @@ def test_mpi_driver_master( mock_write_status_file_to_workers, mock_execute_commands, mock_get_mpirun_command, + mock_hyperparameters_to_cli_args, mock_get_process_count, mock_bootstrap_worker_node, mock_bootstrap_master_node, @@ -127,6 +132,7 @@ def test_mpi_driver_master( mock_read_source_code_config_json, mock_read_distributed_runner_json, ): + mock_hyperparameters_to_cli_args.return_value = [] mock_read_source_code_config_json.return_value = DUMMY_SOURCE_CODE mock_read_distributed_runner_json.return_value = DUMMY_DISTRIBUTED_RUNNER mock_get_mpirun_command.return_value = DUMMY_MPI_COMMAND diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_torchrun_driver.py b/tests/unit/sagemaker/modules/train/container_drivers/test_torchrun_driver.py index fc75546cb1..f32b440e39 100644 --- a/tests/unit/sagemaker/modules/train/container_drivers/test_torchrun_driver.py +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_torchrun_driver.py @@ -86,7 +86,12 @@ def test_get_base_pytorch_command_torch_distributed_launch( "sagemaker.modules.train.container_drivers.torchrun_driver.read_distributed_runner_json", return_value=DUMMY_DISTRIBUTED_RUNNER, ) +@patch( + "sagemaker.modules.train.container_drivers.torchrun_driver.hyperparameters_to_cli_args", + return_value=[], +) def test_create_commands_single_node( + mock_hyperparameters_to_cli_args, mock_read_distributed_runner_json, mock_read_source_code_json, mock_get_base_pytorch_command, @@ -137,7 +142,12 @@ def test_create_commands_single_node( "sagemaker.modules.train.container_drivers.torchrun_driver.read_distributed_runner_json", return_value=DUMMY_DISTRIBUTED_RUNNER, ) +@patch( + "sagemaker.modules.train.container_drivers.torchrun_driver.hyperparameters_to_cli_args", + return_value=[], +) def test_create_commands_multi_node( + mock_hyperparameters_to_cli_args, mock_read_distributed_runner_json, mock_read_source_code_json, mock_get_base_pytorch_command, diff --git a/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py new file mode 100644 index 0000000000..aba97996b0 --- /dev/null +++ b/tests/unit/sagemaker/modules/train/container_drivers/test_utils.py @@ -0,0 +1,121 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Container Utils Unit Tests.""" +from __future__ import absolute_import + +from sagemaker.modules.train.container_drivers.utils import ( + safe_deserialize, + safe_serialize, + hyperparameters_to_cli_args, +) + +SM_HPS = { + "boolean": "true", + "dict": '{"string":"value","integer":3,"list":[1,2,3],"dict":{"key":"value"},"boolean":true}', + "float": "3.14", + "integer": "1", + "list": "[1,2,3]", + "string": "Hello World", +} + + +def test_hyperparameters_to_cli_args(): + args = hyperparameters_to_cli_args(SM_HPS) + + assert args == [ + "--boolean", + "true", + "--dict", + '{"string": "value", "integer": 3, "list": [1, 2, 3], "dict": {"key": "value"}, "boolean": true}', + "--float", + "3.14", + "--integer", + "1", + "--list", + "[1, 2, 3]", + "--string", + "Hello World", + ] + + +def test_safe_deserialize_not_a_string(): + assert safe_deserialize(123) == 123 + assert safe_deserialize([1, 2, 3]) == [1, 2, 3] + assert safe_deserialize({"key": "value"}) == {"key": "value"} + + +def test_safe_deserialize_boolean_strings(): + assert safe_deserialize("true") is True + assert safe_deserialize("false") is False + assert safe_deserialize("True") is True + assert safe_deserialize("False") is False + + +def test_safe_deserialize_valid_json_string(): + json_data = '{"key": "value", "number": 123, "boolean": true}' + expected_output = {"key": "value", "number": 123, "boolean": True} + assert safe_deserialize(json_data) == expected_output + + assert safe_deserialize("Hello World") == "Hello World" + assert safe_deserialize("12345") == 12345 + + assert safe_deserialize("3.14") == 3.14 + assert safe_deserialize("[1,2,3]") == [1, 2, 3] + + +def test_safe_deserialize_invalid_json_string(): + invalid_json = '{"key": value}' # Missing quotes around value so not valid json + assert safe_deserialize(invalid_json) == invalid_json + + +def test_safe_deserialize_null_string(): + assert safe_deserialize("null") == None # noqa: E711 + assert safe_deserialize("None") == "None" + + +def test_safe_serialize_string(): + assert safe_serialize("Hello World") == "Hello World" + assert safe_serialize("12345") == "12345" + assert safe_serialize("true") == "true" + + +def test_safe_serialize_serializable_data(): + assert safe_serialize({"key": "value", "number": 123, "boolean": True}) == ( + '{"key": "value", "number": 123, "boolean": true}' + ) + assert safe_serialize([1, 2, 3]) == "[1, 2, 3]" + assert safe_serialize(123) == "123" + assert safe_serialize(3.14) == "3.14" + assert safe_serialize(True) == "true" + assert safe_serialize(False) == "false" + assert safe_serialize(None) == "null" + + +def test_safe_serialize_custom_object(): + class CustomObject: + def __str__(self): + return "CustomObject" + + obj = CustomObject() + assert safe_serialize(obj) == "CustomObject" + + +def test_safe_serialize_invalid_data(): + invalid_data = {"key": set([1, 2, 3])} # Sets are not JSON serializable + assert safe_serialize(invalid_data) == str(invalid_data) + + +def test_safe_serialize_empty_data(): + assert safe_serialize("") == "" + assert safe_serialize([]) == "[]" + assert safe_serialize({}) == "{}" diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index 2435dacb40..42bab9a4b6 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -13,6 +13,8 @@ """ModelTrainer Tests.""" from __future__ import absolute_import +import shutil +import tempfile import json import os import pytest @@ -22,7 +24,6 @@ from sagemaker.modules.train.model_trainer import ModelTrainer from sagemaker.modules.constants import ( DEFAULT_INSTANCE_TYPE, - SM_DRIVERS_LOCAL_PATH, DISTRIBUTED_RUNNER_JSON, SOURCE_CODE_JSON, TRAIN_SCRIPT, @@ -442,43 +443,55 @@ def test_additional_settings(mock_training_job, modules_session): ], ) @patch("sagemaker.modules.train.model_trainer.TrainingJob") -def test_train_with_distributed_runner(mock_training_job, test_case, modules_session): +@patch("sagemaker.modules.train.model_trainer.TemporaryDirectory") +def test_train_with_distributed_runner( + mock_tmp_dir, mock_training_job, test_case, request, modules_session +): modules_session.upload_data.return_value = ( f"s3://{DEFAULT_BUCKET}/{DEFAULT_BASE_NAME}-job/input/test" ) - expected_train_script_path = f"{SM_DRIVERS_LOCAL_PATH}/{TRAIN_SCRIPT}" - expected_runner_json_path = f"{SM_DRIVERS_LOCAL_PATH}/{DISTRIBUTED_RUNNER_JSON}" - expected_source_code_json_path = f"{SM_DRIVERS_LOCAL_PATH}/{SOURCE_CODE_JSON}" - - model_trainer = ModelTrainer( - session=modules_session, - training_image=DEFAULT_IMAGE, - source_code=test_case["source_code"], - distributed_runner=test_case["distributed_runner"], - ) + tmp_dir = tempfile.TemporaryDirectory() + tmp_dir._cleanup = False + tmp_dir.cleanup = lambda: None + mock_tmp_dir.return_value = tmp_dir + + expected_train_script_path = os.path.join(tmp_dir.name, TRAIN_SCRIPT) + expected_runner_json_path = os.path.join(tmp_dir.name, DISTRIBUTED_RUNNER_JSON) + expected_source_code_json_path = os.path.join(tmp_dir.name, SOURCE_CODE_JSON) + + try: + model_trainer = ModelTrainer( + session=modules_session, + training_image=DEFAULT_IMAGE, + source_code=test_case["source_code"], + distributed_runner=test_case["distributed_runner"], + ) - model_trainer.train() - mock_training_job.create.assert_called_once() - assert mock_training_job.create.call_args.kwargs["hyper_parameters"] == ( - test_case["expected_hyperparameters"] - ) + model_trainer.train() + mock_training_job.create.assert_called_once() + assert mock_training_job.create.call_args.kwargs["hyper_parameters"] == ( + test_case["expected_hyperparameters"] + ) - assert os.path.exists(expected_train_script_path) - with open(expected_train_script_path, "r") as f: - train_script_content = f.read() - assert test_case["expected_template"] in train_script_content + assert os.path.exists(expected_train_script_path) + with open(expected_train_script_path, "r") as f: + train_script_content = f.read() + assert test_case["expected_template"] in train_script_content - assert os.path.exists(expected_runner_json_path) - with open(expected_runner_json_path, "r") as f: - runner_json_content = f.read() - assert test_case["distributed_runner"].model_dump(exclude_none=True) == ( - json.loads(runner_json_content) - ) + assert os.path.exists(expected_runner_json_path) + with open(expected_runner_json_path, "r") as f: + runner_json_content = f.read() + assert test_case["distributed_runner"].model_dump(exclude_none=True) == ( + json.loads(runner_json_content) + ) - assert os.path.exists(expected_source_code_json_path) - with open(expected_source_code_json_path, "r") as f: - source_code_json_content = f.read() - assert test_case["source_code"].model_dump(exclude_none=True) == ( - json.loads(source_code_json_content) - ) + assert os.path.exists(expected_source_code_json_path) + with open(expected_source_code_json_path, "r") as f: + source_code_json_content = f.read() + assert test_case["source_code"].model_dump(exclude_none=True) == ( + json.loads(source_code_json_content) + ) + finally: + shutil.rmtree(tmp_dir.name) + assert not os.path.exists(tmp_dir.name) From 053808f9929e21cd4187d3da86474a6b4fbeb9e8 Mon Sep 17 00:00:00 2001 From: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Date: Tue, 12 Nov 2024 09:54:44 -0800 Subject: [PATCH 24/79] Trainer handshake (#1535) * Base model trainer (#1521) * Base model trainer * flake8 * add testing notebook * add param validation & set defaults * Implement simple train method * feature: support script mode with local train.sh (#1523) * feature: support script mode with local train.sh * Stop tracking train.sh and add it to .gitignore * update message * make dir if not exist * fix docs * fix: docstyle * Address comments * fix hyperparams * Revert pydantic custom error * pylint * Image Spec refactoring and updates (#1525) * Image Spec refactoring and updates * Unit tests and update function for Image Spec * Fix hugging face test * Fix Tests * Add unit tests for ModelTrainer (#1527) * Add unit tests for ModelTrainer * Flake8 * format * Add example notebook (#1528) * Add testing notebook * format * use smaller data * remove large dataset * update * pylint * flake8 * ignore docstyle in directories with test * format * format * Add enviornment variable bootstrapping script (#1530) * Add enviornment variables scripts * format * fix comment * add docstrings * fix comment * feature: add utility function to capture local snapshot (#1524) * local snapshot * Update pip list command * Remove function calls * Address comments * Address comments * Change to make Model Trainer return a Model Object * Fix * Cleanup * Support intelligent parameters (#1540) * Support intelligent parameters * fix codestyle * Revert Image Spec (#1541) * Cleanup ModelTrainer (#1542) * General image builder (#1546) * General image builder * General image builder * Fix codestyle * Fix codestyle * Move location * Add warnings * Add integ tests * Fix integ test * Fix integ test * Fix region error * Add region * Latest Container Image (#1545) * Latest Container Image * Test Fixes * Parameterized tests and some logic updates * Test fixes * Move to Image URI * Fixes for unit test * Fixes for unit test * Fix codestyle error checks * Cleanup ModelTrainer code (#1552) * Updates * feat: add pre-processing and post-processing logic to inference_spec (#1560) * add pre-processing and post-processing logic to inference_spec * fix format * make accept_type and content_type optional * remove accept_type and content_type from pre/post processing * correct typo * Add Distributed Training Support Model Trainer (#1536) * Add path to set Additional Settings in ModelTrainer (#1555) * Updates * Mask Sensitive Env Logs in Container (#1568) * Cleanup PR * Codestyle fixes * Update logic to use model parameter instead of model_path * Fixes * Fixes * Tests * Codestyle Fixes * Codestyle Fixes * Codestyle Fixes * Codestyle Fixes --------- Co-authored-by: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Co-authored-by: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Co-authored-by: Pravali Uppugunduri <46845440+pravali96@users.noreply.github.com> --- .../model_builder_handshake.ipynb | 150 ++++++++++++++++++ src/sagemaker/modules/train/model_trainer.py | 14 +- src/sagemaker/serve/builder/model_builder.py | 28 ++-- .../modules/train/test_model_trainer.py | 18 ++- 4 files changed, 195 insertions(+), 15 deletions(-) create mode 100644 src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb diff --git a/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb b/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb new file mode 100644 index 0000000000..f24448d7d9 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb @@ -0,0 +1,150 @@ +{ + "cells": [ + { + "cell_type": "code", + "id": "initial_id", + "metadata": { + "collapsed": true + }, + "source": [ + "from sagemaker_core.main.shapes import TrainingJob\n", + "\n", + "from sagemaker import Session, get_execution_role\n", + "\n", + "sagemaker_session = Session()\n", + "role = get_execution_role()\n", + "region = sagemaker_session.boto_region_name\n", + "bucket = sagemaker_session.default_bucket()" + ], + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "\n", + "from sagemaker.modules.configs import SourceCode\n", + "from sagemaker.modules.train.model_trainer import ModelTrainer\n", + "\n", + "xgboost_image = \"433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest\"\n", + "\n", + "source_code = SourceCode(\n", + " command=\"echo 'Hello World' && env\",\n", + ")\n", + "model_trainer = ModelTrainer(\n", + " training_image=xgboost_image,\n", + " source_code=source_code,\n", + ")\n", + "\n", + "model_trainer.train()" + ], + "id": "4b3a4f7d1713685f", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "import numpy as np\n", + "from sagemaker.serve.builder.schema_builder import SchemaBuilder\n", + "import pandas as pd\n", + "from xgboost import XGBClassifier\n", + "from sagemaker.serve.spec.inference_spec import InferenceSpec\n", + "from sagemaker.serve import ModelBuilder\n", + "\n", + "data = {\n", + " 'Name': ['Alice', 'Bob', 'Charlie']\n", + "}\n", + "df = pd.DataFrame(data)\n", + "schema_builder = SchemaBuilder(sample_input=df, sample_output=df)\n", + "\n", + "\n", + "class XGBoostSpec(InferenceSpec):\n", + " def load(self, model_dir: str):\n", + " print(model_dir)\n", + " model = XGBClassifier()\n", + " model.load_model(model_dir + \"/xgboost-model\")\n", + " return model\n", + "\n", + " def invoke(self, input_object: object, model: object):\n", + " prediction_probabilities = model.predict_proba(input_object)\n", + " predictions = np.argmax(prediction_probabilities, axis=1)\n", + " return predictions\n", + "\n", + "model_builder = ModelBuilder(\n", + " model=model_trainer, # ModelTrainer object passed onto ModelBuilder directly \n", + " role_arn=role,\n", + " image_uri=xgboost_image,\n", + " inference_spec=XGBoostSpec(),\n", + " schema_builder=schema_builder,\n", + " instance_type=\"ml.c6i.xlarge\"\n", + ")\n", + "model=model_builder.build()\n", + "predictor=model_builder.deploy()\n", + "\n", + "predictor\n", + "assert model.model_data == model_trainer._latest_training_job.model_artifacts.s3_model_artifacts\n", + "\n", + "print(model.model_data)" + ], + "id": "295a16ef277257a0", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "training_job: TrainingJob = model_trainer._latest_training_job\n", + "\n", + "model_builder = ModelBuilder(\n", + " model=training_job, # Sagemaker core's TrainingJob object passed onto ModelBuilder directly \n", + " role_arn=role,\n", + " image_uri=xgboost_image,\n", + " schema_builder=schema_builder,\n", + " inference_spec=XGBoostSpec(),\n", + " instance_type=\"ml.c6i.xlarge\"\n", + ")\n", + "model=model_builder.build()\n", + "\n", + "assert model.model_data == training_job.model_artifacts.s3_model_artifacts\n", + "\n", + "print(model.model_data)" + ], + "id": "935ea8486278d7b1", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "source": "", + "id": "757180da84407a1a", + "outputs": [], + "execution_count": null + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index efd5011055..915e716637 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -19,11 +19,12 @@ from tempfile import TemporaryDirectory from typing import Optional, List, Union, Dict, Any -from pydantic import BaseModel, ConfigDict, PrivateAttr, validate_call - +from sagemaker_core.main import resources from sagemaker_core.resources import TrainingJob from sagemaker_core.shapes import AlgorithmSpecification +from pydantic import BaseModel, ConfigDict, PrivateAttr, validate_call + from sagemaker import get_execution_role, Session from sagemaker.modules.configs import ( Compute, @@ -51,6 +52,7 @@ CheckpointConfig, InputData, ) + from sagemaker.modules.distributed import ( DistributedRunner, TorchrunSMP, @@ -187,6 +189,9 @@ class ModelTrainer(BaseModel): hyperparameters: Optional[Dict[str, Any]] = None tags: Optional[List[Tag]] = None + # Created Artifacts + _latest_training_job: Optional[resources.TrainingJob] = None + # Metrics settings _enable_sage_maker_metrics_time_series: Optional[bool] = PrivateAttr(default=False) _metric_definitions: Optional[List[MetricDefinition]] = PrivateAttr(default=None) @@ -194,6 +199,7 @@ class ModelTrainer(BaseModel): # Debugger settings _debug_hook_config: Optional[DebugHookConfig] = PrivateAttr(default=None) _debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = PrivateAttr(default=None) + _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) _profiler_config: Optional[ProfilerConfig] = PrivateAttr(default=None) _profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = PrivateAttr( default=None @@ -448,11 +454,9 @@ def train( infra_check_config=self._infra_check_config, session_chaining_config=self._session_chaining_config, ) - + self._latest_training_job = training_job if wait: training_job.wait(logs=logs) - if logs and not wait: - logger.warning("Not displaing the training container logs as 'wait' is set to False.") def create_input_data_channel(self, channel_name: str, data_source: DataSourceType) -> Channel: """Create an input data channel for the training job. diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index bdbd08ff55..ae3f2cac94 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -24,6 +24,9 @@ from pathlib import Path +from sagemaker_core.main.resources import TrainingJob + +from sagemaker.estimator import Estimator from sagemaker.enums import Tag from sagemaker.jumpstart.accessors import JumpStartS3PayloadAccessor from sagemaker.jumpstart.utils import get_jumpstart_content_bucket @@ -176,8 +179,9 @@ class ModelBuilder(Triton, DJL, JumpStart, TGI, Transformers, TensorflowServing, The schema builder can be omitted for HuggingFace models with task types TextGeneration, TextClassification, and QuestionAnswering. Omitting SchemaBuilder is in beta for FillMask, and AutomaticSpeechRecognition use-cases. - model (Optional[Union[object, str]): Model object (with ``predict`` method to perform - inference) or a HuggingFace/JumpStart Model ID. Either ``model`` or ``inference_spec`` + model (Optional[Union[object, str, ModelTrainer, TrainingJob, Estimator]]): + Define object from which training artifacts can be extracted. + Either ``model`` or ``inference_spec`` is required for the model builder to build the artifact. inference_spec (InferenceSpec): The inference spec file with your customized ``invoke`` and ``load`` functions. @@ -268,14 +272,9 @@ class ModelBuilder(Triton, DJL, JumpStart, TGI, Transformers, TensorflowServing, schema_builder: Optional[SchemaBuilder] = field( default=None, metadata={"help": "Defines the i/o schema of the model"} ) - model: Optional[Union[object, str]] = field( + model: Optional[Union[object, str, "ModelTrainer", TrainingJob, Estimator]] = field( default=None, - metadata={ - "help": ( - 'Model object with "predict" method to perform inference ' - "or HuggingFace/JumpStart Model ID" - ) - }, + metadata={"help": "Define object from which training artifacts can be extracted"} ) inference_spec: InferenceSpec = field( default=None, @@ -852,6 +851,7 @@ def build( # pylint: disable=R0911 Returns: Type[Model]: A deployable ``Model`` object. """ + from sagemaker.modules.train.model_trainer import ModelTrainer self.modes = dict() if mode: @@ -859,6 +859,16 @@ def build( # pylint: disable=R0911 if role_arn: self.role_arn = role_arn + if isinstance(self.model, TrainingJob): + self.model_path = self.model.model_artifacts.s3_model_artifacts + self.model = None + elif isinstance(self.model, ModelTrainer): + self.model_path = self.model._latest_training_job.model_artifacts.s3_model_artifacts + self.model = None + elif isinstance(self.model, Estimator): + self.model_path = self.model.output_path + self.model = None + self.sagemaker_session = sagemaker_session or self.sagemaker_session or Session() self.sagemaker_session.settings._local_download_dir = self.model_path diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index 42bab9a4b6..b9fdc181d7 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -20,6 +20,8 @@ import pytest from unittest.mock import patch, MagicMock +from sagemaker_core.main.resources import TrainingJob + from sagemaker.session import Session from sagemaker.modules.train.model_trainer import ModelTrainer from sagemaker.modules.constants import ( @@ -316,6 +318,7 @@ def test_debugger_settings(mock_training_job, modules_session): assert model_trainer._debug_hook_config == debug_hook_config assert model_trainer._debug_rule_configurations == debug_rule_config + assert model_trainer._profiler_config == profiler_config assert model_trainer._profiler_rule_configurations == profiler_rule_config assert model_trainer._tensor_board_output_config == tensor_board_output_config @@ -485,7 +488,12 @@ def test_train_with_distributed_runner( assert test_case["distributed_runner"].model_dump(exclude_none=True) == ( json.loads(runner_json_content) ) - + assert os.path.exists(expected_source_code_json_path) + with open(expected_source_code_json_path, "r") as f: + source_code_json_content = f.read() + assert test_case["source_code"].model_dump(exclude_none=True) == ( + json.loads(source_code_json_content) + ) assert os.path.exists(expected_source_code_json_path) with open(expected_source_code_json_path, "r") as f: source_code_json_content = f.read() @@ -495,3 +503,11 @@ def test_train_with_distributed_runner( finally: shutil.rmtree(tmp_dir.name) assert not os.path.exists(tmp_dir.name) + + +@patch("sagemaker.modules.train.model_trainer.TrainingJob") +def test_train_stores_created_training_job(mock_training_job, model_trainer): + mock_training_job.create.return_value = TrainingJob(training_job_name="Created-job") + model_trainer.train(wait=False) + assert model_trainer._latest_training_job is not None + assert model_trainer._latest_training_job == TrainingJob(training_job_name="Created-job") From debcdc2a9778021bd21dd0fbaf83d39b63e63ee7 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Tue, 12 Nov 2024 10:57:04 -0800 Subject: [PATCH 25/79] Add Support for Training Recipes (#1565) Co-authored-by: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> --- MANIFEST.in | 1 + pyproject.toml | 1 + src/sagemaker/modules/distributed.py | 89 +++-- .../base_model_trainer.ipynb | 81 ++++- .../container_drivers/scripts/environment.py | 3 +- src/sagemaker/modules/train/model_trainer.py | 96 +++++- .../modules/train/sm_recipes/__init__.py | 0 .../train/sm_recipes/training_recipes.json | 11 + .../modules/train/sm_recipes/utils.py | 310 ++++++++++++++++++ src/sagemaker/modules/utils.py | 51 +++ tests/integ/sagemaker/modules/conftest.py | 41 +++ .../modules/train/test_model_trainer.py | 12 +- .../modules/train/test_model_trainer.py | 14 +- 13 files changed, 645 insertions(+), 65 deletions(-) create mode 100644 src/sagemaker/modules/train/sm_recipes/__init__.py create mode 100644 src/sagemaker/modules/train/sm_recipes/training_recipes.json create mode 100644 src/sagemaker/modules/train/sm_recipes/utils.py create mode 100644 tests/integ/sagemaker/modules/conftest.py diff --git a/MANIFEST.in b/MANIFEST.in index ab053b00aa..cb77180c22 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,6 +3,7 @@ recursive-include src/sagemaker *.py include src/sagemaker/image_uri_config/*.json include src/sagemaker/serve/schema/*.json include src/sagemaker/serve/requirements.txt +include src/sagemaker/modules/train/sm_recipes/training_recipes.json recursive-include requirements * include VERSION diff --git a/pyproject.toml b/pyproject.toml index 8b9e9fa92f..1b9569afc5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,7 @@ dependencies = [ "importlib-metadata>=1.4.0,<7.0", "jsonschema", "numpy>=1.9.0,<2.0", + "omegaconf>=2.2,<2.3", "packaging>=20.0", "pandas", "pathos", diff --git a/src/sagemaker/modules/distributed.py b/src/sagemaker/modules/distributed.py index 32ea7e81a6..4e8334178e 100644 --- a/src/sagemaker/modules/distributed.py +++ b/src/sagemaker/modules/distributed.py @@ -15,49 +15,17 @@ from typing import Optional, Dict, Any, List from pydantic import BaseModel, PrivateAttr +from sagemaker.modules.utils import safe_serialize -class DistributedRunner(BaseModel): - """Base class for DistributedRunner Class""" - - _type: str = PrivateAttr() - - def model_dump(self, *args, **kwargs): - """Dump the model to a dictionary.""" - result = super().model_dump(*args, **kwargs) - result["_type"] = self._type - return result - - -class Torchrun(DistributedRunner): - """TorchDistributed. - - The Torchrun distributed runner uses `torchrun` or `torch.distributed.launch` in the backend to - launch distributed training. +class SMP(BaseModel): + """SMP. - Attributes: - process_count_per_node (int): - The number of processes to run on each node in the training job. - Will default to the number of GPUs available in the container. - """ - - _type: str = PrivateAttr(default="torchrun") - - process_count_per_node: Optional[int] = None - - -class TorchrunSMP(DistributedRunner): - """TorchrunSMP. - - The TorchrunSMP runner uses `torchrun` or `torch.distributed.launch` in the backend - to launch distributed training. This strategy is used for a PyTorch job using the SageMaker - Model Parallelism library v2. For more information on the model parallelism parameters, see: + This class is used for configuring the SageMaker Model Parallelism v2 parameters. + For more information on the model parallelism parameters, see: https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-model-parallel-v2-reference.html#distributed-model-parallel-v2-reference-init-config Attributes: - process_count_per_node (int): - The number of processes to run on each node in the training job. - Will default to the number of GPUs available in the container. hybrid_shard_degree (Optional[int]): Specifies a sharded parallelism degree for the model. sm_activation_offloading (Optional[bool]): @@ -85,9 +53,6 @@ class TorchrunSMP(DistributedRunner): parallelism or expert parallelism. """ - _type: str = PrivateAttr(default="torchrun") - - process_count_per_node: Optional[int] = None hybrid_shard_degree: Optional[int] = None sm_activation_offloading: Optional[bool] = None activation_loading_horizon: Optional[int] = None @@ -98,13 +63,45 @@ class TorchrunSMP(DistributedRunner): expert_parallel_degree: Optional[int] = None random_seed: Optional[int] = None - def _to_mp_parameters_dict(self) -> Dict[str, Any]: - """Convert to a dictionary of MP parameters.""" + def _to_mp_hyperparameters(self) -> Dict[str, Any]: + """Converts to the hyperparameters format for the SageMaker Model Parallelism v2.""" mp_parameters = self.model_dump(exclude_none=True) - mp_parameters.pop("_type") - if mp_parameters.get("process_count_per_node") is not None: - mp_parameters.pop("process_count_per_node") - return mp_parameters + hyperparameters = { + "mp_parameters": safe_serialize(mp_parameters), + } + return hyperparameters + + +class DistributedRunner(BaseModel): + """Base class for DistributedRunner Class""" + + _type: str = PrivateAttr() + + def model_dump(self, *args, **kwargs): + """Dump the model to a dictionary.""" + result = super().model_dump(*args, **kwargs) + result["_type"] = self._type + return result + + +class Torchrun(DistributedRunner): + """TorchDistributed. + + The Torchrun runner uses `torchrun` or `torch.distributed.launch` in the backend to + launch distributed training. + + Attributes: + process_count_per_node (int): + The number of processes to run on each node in the training job. + Will default to the number of GPUs available in the container. + smp (Optional[SMP]): + The SageMaker Model Parallelism v2 parameters. + """ + + _type: str = PrivateAttr(default="torchrun") + + process_count_per_node: Optional[int] = None + smp: Optional["SMP"] = None class MPI(DistributedRunner): diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index e674a4e041..b25fa20979 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -117,11 +117,8 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import SourceCode\n", "\n", - "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", - "\n", "source_code = SourceCode(\n", " source_dir=\"basic-script-mode\",\n", " requirements=\"requirements.txt\",\n", @@ -163,7 +160,7 @@ "metadata": {}, "outputs": [], "source": [ - "!pip install \"datasets[s3]\"" + "!pip install \"datasets[s3]\" \"requests<2.32.0\"" ] }, { @@ -463,6 +460,82 @@ ")\n", "model_trainer.train(input_data_config=[test_data], wait=False)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ModelTrainer Recipes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SageMaker GPU Recipe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import Compute, InputData\n", + "\n", + "recipe_overrides = {\n", + " \"run\": {\n", + " \"results_dir\": \"/opt/ml/model\",\n", + " },\n", + " \"exp_manager\": {\n", + " \"exp_dir\": \"\",\n", + " \"explicit_log_dir\": \"/opt/ml/output/tensorboard\",\n", + " \"checkpoint_dir\": \"/opt/ml/checkpoints\",\n", + " \"export_full_model\": {\n", + " \"save_last\": False\n", + " }\n", + " }, \n", + " \"model\": {\n", + " \"data\": {\n", + " \"train_dir\": \"/opt/ml/input/data/train\",\n", + " \"val_dir\": \"/opt/ml/input/data/val\",\n", + " \"use_synthetic_data\": True,\n", + " },\n", + " \"train_batch_size\": 1,\n", + " \"num_hidden_layers\": 4,\n", + " \"fp8\": False,\n", + " },\n", + " \"trainer\": {\n", + " \"num_nodes\": 1\n", + " }\n", + "}\n", + "\n", + "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", + "\n", + "model_trainer = ModelTrainer.from_recipe(\n", + " training_recipe=\"training/llama/hf_llama3_8b_seq8192_gpu\",\n", + " training_image=training_image,\n", + " recipe_overrides=recipe_overrides,\n", + " compute=Compute(instance_type=\"ml.p4d.24xlarge\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_trainer.train()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/14jxjrndx/IsenLink" + ] } ], "metadata": { diff --git a/src/sagemaker/modules/train/container_drivers/scripts/environment.py b/src/sagemaker/modules/train/container_drivers/scripts/environment.py index b02833b5af..173d47599c 100644 --- a/src/sagemaker/modules/train/container_drivers/scripts/environment.py +++ b/src/sagemaker/modules/train/container_drivers/scripts/environment.py @@ -152,7 +152,8 @@ def set_env( # Hyperparameters env_vars["SM_HPS"] = hyperparameters_config for key, value in hyperparameters_config.items(): - env_vars[f"SM_HP_{key.upper()}"] = safe_serialize(value) + key_upper = key.replace("-", "_").upper() + env_vars[f"SM_HP_{key_upper}"] = safe_serialize(value) # Host Variables current_host = resource_config["current_host"] diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 915e716637..323f2242a8 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -55,7 +55,7 @@ from sagemaker.modules.distributed import ( DistributedRunner, - TorchrunSMP, + Torchrun, ) from sagemaker.modules.utils import ( _get_repo_name_from_image, @@ -85,6 +85,7 @@ EXECUTE_BASIC_SCRIPT_DRIVER, ) from sagemaker.modules import logger +from sagemaker.modules.train.sm_recipes.utils import get_args_from_recipe, _determine_device_type class ModelTrainer(BaseModel): @@ -213,6 +214,14 @@ class ModelTrainer(BaseModel): _session_chaining_config: Optional[SessionChainingConfig] = PrivateAttr(default=None) _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) + _temp_recipe_train_dir: Optional[TemporaryDirectory] = PrivateAttr(default=None) + + def __del__(self): + """Destructor method to clean up the temporary directory.""" + # Clean up the temporary directory if it exists + if self._temp_recipe_train_dir is not None: + self._temp_recipe_train_dir.cleanup() + def _validate_training_image_and_algorithm_name( self, training_image: Optional[str], algorithm_name: Optional[str] ): @@ -383,9 +392,9 @@ def train( distributed_runner=self.distributed_runner, ) - if isinstance(self.distributed_runner, TorchrunSMP): - mp_parameters = self.distributed_runner._to_mp_parameters_dict() - string_hyper_parameters["mp_parameters"] = safe_serialize(mp_parameters) + if isinstance(self.distributed_runner, Torchrun) and self.distributed_runner.smp: + mp_parameters = self.distributed_runner.smp._to_mp_hyperparameters() + string_hyper_parameters.update(mp_parameters) self._write_source_code_json(tmp_dir=drivers_dir, source_code=self.source_code) self._write_distributed_runner_json( @@ -455,6 +464,11 @@ def train( session_chaining_config=self._session_chaining_config, ) self._latest_training_job = training_job + + # Clean up the temporary directory if it exists + if self._temp_recipe_train_dir is not None: + self._temp_recipe_train_dir.cleanup() + if wait: training_job.wait(logs=logs) @@ -748,3 +762,77 @@ def with_additional_settings( self._session_chaining_config = session_chaining_config self._remote_debug_config = remote_debug_config return self + + @classmethod + def from_recipe( + cls, + training_recipe: str, + compute: Compute, + recipe_overrides: Optional[Dict[str, Any]] = None, + training_image: Optional[str] = None, + session: Optional[Session] = None, + role: Optional[str] = None, + base_job_name: Optional[str] = None, + **kwargs, + ) -> "ModelTrainer": + """Create a ModelTrainer from a training recipe. + + Args: + training_recipe (str): + The training recipe to use for training the model. This must be the name of + a sagemaker training recipe or a path to a local training recipe .yaml file. + compute (Compute): + The compute configuration. This is used to specify the compute resources for + the training job. If not specified, will default to 1 instance of ml.m5.xlarge. + recipe_overrides (Optional[Dict[str, Any]]): + The recipe overrides. This is used to override the default recipe parameters. + training_image (Optional[str]): + The training image URI to use for the training job container. If not specified, + the training image will be determined from the recipe. + session (Optional[Session]): + The SageMaker session. + If not specified, a new session will be created. + role (Optional[str]): + The IAM role ARN for the training job. + If not specified, the default SageMaker execution role will be used. + base_job_name (Optional[str]): + The base name for the training job. + If not specified, a default name will be generated using the algorithm name + or training image. + kwargs: + Additional keyword arguments to pass to the ModelTrainer constructor. + + """ + if compute.instance_type is None: + raise ValueError( + "Must set `instance_type` in compute_config when using training recipes." + ) + device_type = _determine_device_type(compute.instance_type) + if device_type == "cpu": + raise ValueError( + "Training recipes are not supported for CPU instances. " + + "Please provide a GPU or Tranium instance type." + ) + + if session is None: + session = Session() + logger.warning("Session not provided. Using default Session.") + if role is None: + role = get_execution_role() + logger.warning(f"Role not provided. Using default role:\n{role}") + + model_trainer_args, recipe_train_dir = get_args_from_recipe( + training_recipe=training_recipe, + recipe_overrides=recipe_overrides, + compute=compute, + session=session, + ) + if training_image is not None: + model_trainer_args["training_image"] = training_image + + model_trainer = cls( + session=session, role=role, base_job_name=base_job_name, **model_trainer_args, **kwargs + ) + + model_trainer._temp_recipe_train_dir = recipe_train_dir + return model_trainer diff --git a/src/sagemaker/modules/train/sm_recipes/__init__.py b/src/sagemaker/modules/train/sm_recipes/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/sagemaker/modules/train/sm_recipes/training_recipes.json b/src/sagemaker/modules/train/sm_recipes/training_recipes.json new file mode 100644 index 0000000000..bc571548e3 --- /dev/null +++ b/src/sagemaker/modules/train/sm_recipes/training_recipes.json @@ -0,0 +1,11 @@ +{ + "adapter_repo": "git@github.com:aws/private-sagemaker-training-adapter-for-nemo-staging.git", + "launcher_repo": "git@github.com:aws/private-sagemaker-training-launcher-staging.git", + "neuron_dist_repo": "https://github.com/aws-neuron/neuronx-distributed-training.git", + "gpu_image" : { + "framework": "pytorch-smp", + "version": "2.3.1", + "additional_args": {} + }, + "neuron_image": "855988369404.dkr.ecr.us-west-2.amazonaws.com/chinmayee-dev:neuron_sept26_v1" +} \ No newline at end of file diff --git a/src/sagemaker/modules/train/sm_recipes/utils.py b/src/sagemaker/modules/train/sm_recipes/utils.py new file mode 100644 index 0000000000..c4c0c2c68d --- /dev/null +++ b/src/sagemaker/modules/train/sm_recipes/utils.py @@ -0,0 +1,310 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Utility functions for SageMaker training recipes.""" +from __future__ import absolute_import + +import math +import os +import json +import shutil +import tempfile +from urllib.request import urlretrieve +from typing import Dict, Any, Optional, Tuple + +import omegaconf +from omegaconf import OmegaConf, dictconfig + +from sagemaker.image_uris import retrieve +from sagemaker import Session + +from sagemaker.modules import logger +from sagemaker.modules.utils import _run_clone_command_silent +from sagemaker.modules.configs import Compute, SourceCode +from sagemaker.modules.distributed import Torchrun, SMP + + +def _try_resolve_recipe(recipe, key=None): + """Try to resolve recipe and return resolved recipe.""" + if key is not None: + recipe = dictconfig.DictConfig({key: recipe}) + try: + OmegaConf.resolve(recipe) + except omegaconf.errors.OmegaConfBaseException: + return None + if key is None: + return recipe + return recipe[key] + + +def _determine_device_type(instance_type: str) -> str: + """Determine device type (gpu, cpu, trainium) based on instance type.""" + instance_family = instance_type.split(".")[1] + if instance_family.startswith(("p", "g")): + return "gpu" + if instance_family.startswith("trn"): + return "trainium" + return "cpu" + + +def _load_recipes_cfg() -> str: + """Load training recipes configuration json.""" + training_recipes_cfg_filename = os.path.join(os.path.dirname(__file__), "training_recipes.json") + with open(training_recipes_cfg_filename) as training_recipes_cfg_file: + training_recipes_cfg = json.load(training_recipes_cfg_file) + return training_recipes_cfg + + +def _load_base_recipe( + training_recipe: str, + recipe_overrides: Optional[Dict[str, Any]], + training_recipes_cfg: Optional[Dict[str, Any]] = None, +) -> Dict[str, Any]: + """Load recipe and apply overrides.""" + if recipe_overrides is None: + recipe_overrides = dict() + + temp_local_recipe = tempfile.NamedTemporaryFile(prefix="recipe_original", suffix=".yaml").name + + if training_recipe.endswith(".yaml"): + if os.path.isfile(training_recipe): + shutil.copy(training_recipe, temp_local_recipe) + else: + try: + urlretrieve(training_recipe, temp_local_recipe) + except Exception as e: + raise ValueError( + f"Could not fetch the provided recipe {training_recipe}: exception {str(e)}" + ) + else: + recipe_launcher_dir = tempfile.TemporaryDirectory(prefix="launcher_") + + launcher_repo = os.environ.get("training_launcher_git", None) or training_recipes_cfg.get( + "launcher_repo" + ) + _run_clone_command_silent(launcher_repo, recipe_launcher_dir.name) + + recipe = os.path.join( + recipe_launcher_dir.name, + "recipes_collection", + "recipes", + training_recipe + ".yaml", + ) + if os.path.isfile(recipe): + shutil.copy(recipe, temp_local_recipe) + else: + raise ValueError(f"Recipe {training_recipe} not found.") + + recipe = OmegaConf.load(temp_local_recipe) + os.unlink(temp_local_recipe) + recipe = OmegaConf.merge(recipe, recipe_overrides) + return recipe + + +def _register_custom_resolvers(): + """Register custom resolvers for OmegaConf.""" + if not OmegaConf.has_resolver("multiply"): + OmegaConf.register_new_resolver("multiply", lambda x, y: x * y, replace=True) + if not OmegaConf.has_resolver("divide_ceil"): + OmegaConf.register_new_resolver( + "divide_ceil", lambda x, y: int(math.ceil(x / y)), replace=True + ) + if not OmegaConf.has_resolver("divide_floor"): + OmegaConf.register_new_resolver( + "divide_floor", lambda x, y: int(math.floor(x / y)), replace=True + ) + if not OmegaConf.has_resolver("add"): + OmegaConf.register_new_resolver("add", lambda *numbers: sum(numbers)) + + +def _configure_gpu_args( + training_recipes_cfg: Dict[str, Any], + region_name: str, + recipe: OmegaConf, + recipe_train_dir: tempfile.TemporaryDirectory, +) -> Dict[str, Any]: + """Configure arguments specific to GPU.""" + source_code = SourceCode() + args = dict() + + adapter_repo = os.environ.get("training_adapter_git", None) or training_recipes_cfg.get( + "adapter_repo" + ) + _run_clone_command_silent(adapter_repo, recipe_train_dir.name) + + model_type_to_entry = { + "llama_v3": ("llama", "llama_pretrain.py"), + "mistral": ("mistral", "mistral_pretrain.py"), + "mixtral": ("mixtral", "mixtral_pretrain.py"), + } + + if "model" not in recipe: + raise ValueError("Supplied recipe does not contain required field model.") + if "model_type" not in recipe["model"]: + raise ValueError("Supplied recipe does not contain required field model_type.") + model_type = recipe["model"]["model_type"] + if model_type not in model_type_to_entry: + raise ValueError(f"Model type {model_type} not supported") + + source_code.source_dir = os.path.join( + recipe_train_dir.name, "examples", model_type_to_entry[model_type][0] + ) + source_code.entry_script = model_type_to_entry[model_type][1] + + gpu_image_cfg = training_recipes_cfg.get("gpu_image") + if isinstance(gpu_image_cfg, str): + training_image = gpu_image_cfg + else: + training_image = retrieve( + gpu_image_cfg.get("framework"), + region=region_name, + version=gpu_image_cfg.get("version"), + image_scope="training", + **gpu_image_cfg.get("additional_args"), + ) + + # Setting dummy parameters for now + torch_distributed = Torchrun(smp=SMP(random_seed="123456")) + args.update( + { + "source_code": source_code, + "training_image": training_image, + "distributed_runner": torch_distributed, + } + ) + return args + + +def _configure_trainium_args( + training_recipes_cfg: Dict[str, Any], + region_name: str, + recipe_train_dir: tempfile.TemporaryDirectory, +) -> Dict[str, Any]: + """Configure arguments specific to Trainium.""" + source_code = SourceCode() + args = dict() + + _run_clone_command_silent(training_recipes_cfg.get("neuron_dist_repo"), recipe_train_dir.name) + + # Set SourceCodeConfig + source_code.source_dir = os.path.join(recipe_train_dir.name, "examples") + source_code.entry_script = "training_orchestrator.py" + neuron_image_cfg = training_recipes_cfg.get("neuron_image") + if isinstance(neuron_image_cfg, str): + training_image = neuron_image_cfg + else: + training_image = retrieve( + neuron_image_cfg.get("framework"), + region=region_name, + version=neuron_image_cfg.get("version"), + image_scope="training", + **neuron_image_cfg.get("additional_args"), + ) + + args.update( + { + "source_code": source_code, + "training_image": training_image, + "distributed_runner": Torchrun(), + } + ) + return args + + +def get_args_from_recipe( + training_recipe: str, + compute: Compute, + session: Session, + recipe_overrides: Optional[Dict[str, Any]], +) -> Tuple[Dict[str, Any], tempfile.TemporaryDirectory]: + """Get arguments for ModelTrainer from a training recipe. + + Returns a dictionary of arguments to be used with ModelTrainer like: + ```python + { + "source_code": SourceCode, + "training_image": str, + "distributed_runner": Dict[str, Any], + "compute": Compute, + "hyperparameters": Dict[str, Any], + } + ``` + + Args: + training_recipe (str): + Name of the training recipe or path to the recipe file. + compute (Compute): + Compute configuration for training. + session (Session): + Session object for training. + recipe_overrides (Optional[Dict[str, Any]]): + Overrides for the training recipe. + """ + if compute.instance_type is None: + raise ValueError("Must set `instance_type` in compute when using training recipes.") + + region_name = session.boto_region_name + training_recipes_cfg = _load_recipes_cfg() + recipe = _load_base_recipe(training_recipe, recipe_overrides, training_recipes_cfg) + + if "trainer" not in recipe: + raise ValueError("Supplied recipe does not contain required field trainer.") + + # Set instance_count + if compute.instance_count and "num_nodes" in recipe["trainer"]: + logger.warning( + "Using instance_count in compute to set number " + " of nodes. Ignoring trainer -> num_nodes in recipe." + ) + if compute.instance_count is None: + if "num_nodes" not in recipe["trainer"]: + raise ValueError( + "Must set either instance_count argument for estimator or" + "set trainer -> num_nodes in recipe." + ) + compute.instance_count = recipe["trainer"]["num_nodes"] + + # Get Training Image, SourceCodeConfig, and DistributionConfig args + device_type = _determine_device_type(compute.instance_type) + recipe_train_dir = tempfile.TemporaryDirectory(prefix="training_") + if device_type == "gpu": + args = _configure_gpu_args(training_recipes_cfg, region_name, recipe, recipe_train_dir) + elif device_type == "trainium": + args = _configure_trainium_args(training_recipes_cfg, region_name, recipe_train_dir) + else: + raise ValueError(f"Devices of type {device_type} are not supported with training recipes.") + + _register_custom_resolvers() + + # Resolve Final Recipe + final_recipe = _try_resolve_recipe(recipe) + if final_recipe is None: + final_recipe = _try_resolve_recipe(recipe, "recipes") + if final_recipe is None: + final_recipe = _try_resolve_recipe(recipe, "training") + if final_recipe is None: + raise RuntimeError("Could not resolve provided recipe.") + + # Save Final Recipe to source_dir + OmegaConf.save( + config=final_recipe, f=os.path.join(args["source_code"].source_dir, "recipe.yaml") + ) + + # Update args with compute_config and hyperparameters + args.update( + { + "compute": compute, + "hyperparameters": {"config-path": ".", "config-name": "recipe.yaml"}, + } + ) + + return args, recipe_train_dir diff --git a/src/sagemaker/modules/utils.py b/src/sagemaker/modules/utils.py index 133685db63..502f1bbc74 100644 --- a/src/sagemaker/modules/utils.py +++ b/src/sagemaker/modules/utils.py @@ -15,10 +15,15 @@ import os import json +import subprocess +import tempfile +from pathlib import Path + from datetime import datetime from typing import Literal, Any from sagemaker_core.shapes import Unassigned +from sagemaker.modules import logger def _is_valid_s3_uri(path: str, path_type: Literal["File", "Directory", "Any"] = "Any") -> bool: @@ -141,3 +146,49 @@ def safe_serialize(data): return json.dumps(data) except TypeError: return str(data) + + +def _run_clone_command_silent(repo_url, dest_dir): + """Run the 'git clone' command with the repo url and the directory to clone the repo into. + + Args: + repo_url (str): Git repo url to be cloned. + dest_dir: (str): Local path where the repo should be cloned into. + + Raises: + CalledProcessError: If failed to clone git repo. + """ + my_env = os.environ.copy() + if repo_url.startswith("https://"): + try: + my_env["GIT_TERMINAL_PROMPT"] = "0" + subprocess.check_call( + ["git", "clone", repo_url, dest_dir], + env=my_env, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + except subprocess.CalledProcessError as e: + logger.error(f"Failed to clone repository: {repo_url}") + logger.error(f"Error output:\n{e}") + raise + elif repo_url.startswith("git@") or repo_url.startswith("ssh://"): + try: + with tempfile.TemporaryDirectory() as tmp_dir: + custom_ssh_executable = Path(tmp_dir) / "ssh_batch" + with open(custom_ssh_executable, "w") as pipe: + print("#!/bin/sh", file=pipe) + print("ssh -oBatchMode=yes $@", file=pipe) + os.chmod(custom_ssh_executable, 0o511) + my_env["GIT_SSH"] = str(custom_ssh_executable) + subprocess.check_call( + ["git", "clone", repo_url, dest_dir], + env=my_env, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + except subprocess.CalledProcessError as e: + del my_env["GIT_SSH"] + logger.error(f"Failed to clone repository: {repo_url}") + logger.error(f"Error output:\n{e}") + raise diff --git a/tests/integ/sagemaker/modules/conftest.py b/tests/integ/sagemaker/modules/conftest.py new file mode 100644 index 0000000000..270fe743b6 --- /dev/null +++ b/tests/integ/sagemaker/modules/conftest.py @@ -0,0 +1,41 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""This module contains code to test image builder""" +from __future__ import absolute_import + +import pytest +import json + +import boto3 +from botocore.config import Config +from sagemaker import Session + +DEFAULT_REGION = "us-west-2" + +@pytest.fixture(scope="module") +def modules_boto_session(request): + config = request.config.getoption("--boto-config") + if config: + return boto3.Session(**json.loads(config)) + else: + return boto3.Session(region_name=DEFAULT_REGION) + +@pytest.fixture(scope="module") +def modules_sagemaker_session(request, modules_boto_session): + sagemaker_client = ( + modules_boto_session.client( + "sagemaker", + config=Config(retries={"max_attempts": 10, "mode": "standard"}) + ) + ) + return Session(boto_session=modules_boto_session) diff --git a/tests/integ/sagemaker/modules/train/test_model_trainer.py b/tests/integ/sagemaker/modules/train/test_model_trainer.py index a4f02cd77c..8edfcbc97d 100644 --- a/tests/integ/sagemaker/modules/train/test_model_trainer.py +++ b/tests/integ/sagemaker/modules/train/test_model_trainer.py @@ -37,13 +37,14 @@ DEFAULT_CPU_IMAGE = "763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310" -def test_hp_contract_basic_py_script(): +def test_hp_contract_basic_py_script(modules_sagemaker_session): source_code = SourceCode( source_dir=f"{DATA_DIR}/modules/params-script", entry_script="train.py", ) model_trainer = ModelTrainer( + session=modules_sagemaker_session, training_image=DEFAULT_CPU_IMAGE, hyperparameters=EXPECTED_HYPERPARAMETERS, source_code=source_code, @@ -53,12 +54,13 @@ def test_hp_contract_basic_py_script(): model_trainer.train() -def test_hp_contract_basic_sh_script(): +def test_hp_contract_basic_sh_script(modules_sagemaker_session): source_code = SourceCode( source_dir=f"{DATA_DIR}/modules/params-script", entry_script="train.sh", ) model_trainer = ModelTrainer( + session=modules_sagemaker_session, training_image=DEFAULT_CPU_IMAGE, hyperparameters=EXPECTED_HYPERPARAMETERS, source_code=source_code, @@ -68,13 +70,14 @@ def test_hp_contract_basic_sh_script(): model_trainer.train() -def test_hp_contract_mpi_script(): +def test_hp_contract_mpi_script(modules_sagemaker_session): source_code = SourceCode( source_dir=f"{DATA_DIR}/modules/params-script", entry_script="train.py", ) compute = Compute(instance_type="ml.m5.xlarge", instance_count=2) model_trainer = ModelTrainer( + session=modules_sagemaker_session, training_image=DEFAULT_CPU_IMAGE, compute=compute, hyperparameters=EXPECTED_HYPERPARAMETERS, @@ -86,13 +89,14 @@ def test_hp_contract_mpi_script(): model_trainer.train() -def test_hp_contract_torchrun_script(): +def test_hp_contract_torchrun_script(modules_sagemaker_session): source_code = SourceCode( source_dir=f"{DATA_DIR}/modules/params-script", entry_script="train.py", ) compute = Compute(instance_type="ml.m5.xlarge", instance_count=2) model_trainer = ModelTrainer( + session=modules_sagemaker_session, training_image=DEFAULT_CPU_IMAGE, compute=compute, hyperparameters=EXPECTED_HYPERPARAMETERS, diff --git a/tests/unit/sagemaker/modules/train/test_model_trainer.py b/tests/unit/sagemaker/modules/train/test_model_trainer.py index b9fdc181d7..dd46e568de 100644 --- a/tests/unit/sagemaker/modules/train/test_model_trainer.py +++ b/tests/unit/sagemaker/modules/train/test_model_trainer.py @@ -50,7 +50,7 @@ SessionChainingConfig, InputData, ) -from sagemaker.modules.distributed import Torchrun, TorchrunSMP, MPI +from sagemaker.modules.distributed import Torchrun, SMP, MPI from sagemaker.modules.templates import EXEUCTE_TORCHRUN_DRIVER, EXECUTE_MPI_DRIVER from tests.unit import DATA_DIR @@ -412,11 +412,13 @@ def test_additional_settings(mock_training_job, modules_session): }, { "source_code": DEFAULT_SOURCE_CODE, - "distributed_runner": TorchrunSMP( - hybrid_shard_degree=3, - sm_activation_offloading=True, - allow_empty_shards=True, - tensor_parallel_degree=5, + "distributed_runner": Torchrun( + smp=SMP( + hybrid_shard_degree=3, + sm_activation_offloading=True, + allow_empty_shards=True, + tensor_parallel_degree=5, + ) ), "expected_template": EXEUCTE_TORCHRUN_DRIVER, "expected_hyperparameters": { From 8cf96310716430ccf6f863d5e85c19e7d268fd2e Mon Sep 17 00:00:00 2001 From: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Date: Tue, 12 Nov 2024 13:42:46 -0800 Subject: [PATCH 26/79] Support building image from Dockerfile (#1571) * Base model trainer (#1521) * Base model trainer * flake8 * add testing notebook * add param validation & set defaults * Implement simple train method * feature: support script mode with local train.sh (#1523) * feature: support script mode with local train.sh * Stop tracking train.sh and add it to .gitignore * update message * make dir if not exist * fix docs * fix: docstyle * Address comments * fix hyperparams * Revert pydantic custom error * pylint * Image Spec refactoring and updates (#1525) * Image Spec refactoring and updates * Unit tests and update function for Image Spec * Fix hugging face test * Fix Tests * Add unit tests for ModelTrainer (#1527) * Add unit tests for ModelTrainer * Flake8 * format * Add example notebook (#1528) * Add testing notebook * format * use smaller data * remove large dataset * update * pylint * flake8 * ignore docstyle in directories with test * format * format * Add enviornment variable bootstrapping script (#1530) * Add enviornment variables scripts * format * fix comment * add docstrings * fix comment * feature: add utility function to capture local snapshot (#1524) * local snapshot * Update pip list command * Remove function calls * Address comments * Address comments * Support intelligent parameters (#1540) * Support intelligent parameters * fix codestyle * Revert Image Spec (#1541) * Cleanup ModelTrainer (#1542) * General image builder (#1546) * General image builder * General image builder * Fix codestyle * Fix codestyle * Move location * Add warnings * Add integ tests * Fix integ test * Fix integ test * Fix region error * Add region * Latest Container Image (#1545) * Latest Container Image * Test Fixes * Parameterized tests and some logic updates * Test fixes * Move to Image URI * Fixes for unit test * Fixes for unit test * Fix codestyle error checks * Cleanup ModelTrainer code (#1552) * feat: add pre-processing and post-processing logic to inference_spec (#1560) * add pre-processing and post-processing logic to inference_spec * fix format * make accept_type and content_type optional * remove accept_type and content_type from pre/post processing * correct typo * Add Distributed Training Support Model Trainer (#1536) * Add path to set Additional Settings in ModelTrainer (#1555) * Support building image from Dockerfile * Fix test * Fix test * Rename functions --------- Co-authored-by: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Co-authored-by: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Co-authored-by: Pravali Uppugunduri <46845440+pravali96@users.noreply.github.com> --- src/sagemaker/modules/image_builder.py | 67 ++++++++++++++++--- tests/integ/sagemaker/modules/Dockerfile | 5 ++ .../sagemaker/modules/test_image_builder.py | 17 +++-- 3 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 tests/integ/sagemaker/modules/Dockerfile diff --git a/src/sagemaker/modules/image_builder.py b/src/sagemaker/modules/image_builder.py index e27bc7fba0..e7ded22184 100644 --- a/src/sagemaker/modules/image_builder.py +++ b/src/sagemaker/modules/image_builder.py @@ -81,7 +81,7 @@ """ -def build_image( +def build_image_from_base( image_name: str = "sm-custom-image", env_name: str = "sm_custom_env", deploy_to_ecr: bool = False, @@ -162,7 +162,7 @@ def build_image( return None -def capture_local_environment( +def build_image_from_local( image_name: str = "sm-local-capture", env_name: str = "saved_local_env", package_manager: str = "pip", @@ -285,13 +285,13 @@ def capture_local_environment( f.write(additional_requirements) logger.info("Merged requirements file saved to %s", requirement_txt_path) - if not base_image: - version = sys.version_info - base_image = f"python:{version.major}.{version.minor}.{version.micro}" - dockerfile_contents = PIP_DOCKERFILE_TEMPLATE.format( - base_image=base_image, - env_name=env_name, - ) + if not base_image: + version = sys.version_info + base_image = f"python:{version.major}.{version.minor}.{version.micro}" + dockerfile_contents = PIP_DOCKERFILE_TEMPLATE.format( + base_image=base_image, + env_name=env_name, + ) else: raise ValueError( @@ -306,6 +306,55 @@ def capture_local_environment( return None +def build_image_from_dockerfile( + image_name: str, + dockerfile: str, + deploy_to_ecr: bool = False, + ecr_repo_name: Optional[str] = None, + boto_session: Optional[boto3.Session] = None, + region: Optional[str] = None, +) -> Optional[str]: + """Build a Docker image with Dockerfile. + + Args: + image_name (str): The name of the docker image. + dockerfile (str): The file path to the Dockerfile. + deploy_to_ecr (bool): Whether to deploy the docker image to AWS ECR, defaults to False. + If set to True, the AWS credentials must be configured in the environment. + ecr_repo_name (Optional[str]): The AWS ECR repo to push the docker image. If not specified, + it will use image_name as the ECR repo name. This parameter is only valid when + deploy_to_ecr is True. + boto_session (Optional[boto3.Session]): The boto3 session with AWS account info. If not + provided, a new boto session will be created. + region (Optional[str]): The AWS region. + + Exceptions: + docker.errors.DockerException: Error while fetching server API version: + The docker engine is not running in your environment. + docker.errors.BuildError: The docker failed to build the image. The most likely reason is: + 1) Some packages are not supported in the base image. 2) There are dependency conflicts + between your local environment and additional dependencies. + botocore.exceptions.ClientError: AWS credentials are not configured. + """ + absolute_path = os.path.abspath(dockerfile) + directory = os.path.dirname(absolute_path) + + client = docker.from_env() + _, logs = client.images.build( + path=directory, + dockerfile=absolute_path, + rm=True, + tag=image_name, + ) + for log in logs: + logger.info(log.get("stream", "").strip()) + logger.info("Docker image %s built successfully", image_name) + + if deploy_to_ecr: + return _push_image_to_ecr(image_name, ecr_repo_name, boto_session, region) + return None + + def _merge_environment_ymls(env_name: str, env_file1: str, env_file2: str, output_file: str): """Merge two environment.yml files and save to a new environment.yml file. diff --git a/tests/integ/sagemaker/modules/Dockerfile b/tests/integ/sagemaker/modules/Dockerfile new file mode 100644 index 0000000000..4c978522df --- /dev/null +++ b/tests/integ/sagemaker/modules/Dockerfile @@ -0,0 +1,5 @@ +FROM python:3.12.4 + +WORKDIR /app + +RUN pip install --no-cache-dir numpy scipy sagemaker diff --git a/tests/integ/sagemaker/modules/test_image_builder.py b/tests/integ/sagemaker/modules/test_image_builder.py index 7e4b5de8fa..ac45f99569 100644 --- a/tests/integ/sagemaker/modules/test_image_builder.py +++ b/tests/integ/sagemaker/modules/test_image_builder.py @@ -15,24 +15,33 @@ import os -from sagemaker.modules.image_builder import build_image +from sagemaker.modules.image_builder import build_image_from_base, build_image_from_dockerfile def test_build_public_image_locally(): - build_image(image_name="python_310", base_image="python:3.10") + build_image_from_base(image_name="python_310", base_image="python:3.10") def test_build_with_dependency_file(): dependency_file_path = os.getcwd() + "/tests/integ/sagemaker/modules/requirements.txt" - build_image(image_name="ubuntu_with_dependencies", dependency_file=dependency_file_path) + build_image_from_base( + image_name="ubuntu_with_dependencies", dependency_file=dependency_file_path + ) def test_build_image_and_push_to_ecr(): dependency_file_path = os.getcwd() + "/tests/integ/sagemaker/modules/environment.yml" - build_image( + build_image_from_base( image_name="ecr_test_image", dependency_file=dependency_file_path, base_image="debian", deploy_to_ecr=True, ecr_repo_name="image_builder_integ_test", ) + + +def test_build_image_from_dockerfile(): + dockerfile_path = os.getcwd() + "/tests/integ/sagemaker/modules/Dockerfile" + build_image_from_dockerfile( + image_name="image_from_dockerfile", dockerfile=dockerfile_path, deploy_to_ecr=True + ) From 51fb427016907498342d7cbb49ac7dfaf3c476f9 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Wed, 13 Nov 2024 16:22:47 -0800 Subject: [PATCH 27/79] Use exact python path in trainer template (#1584) --- src/sagemaker/modules/templates.py | 18 +++++------ .../base_model_trainer.ipynb | 6 ++-- src/sagemaker/modules/train/model_trainer.py | 2 +- src/sagemaker/serve/builder/model_builder.py | 7 +++-- tests/integ/sagemaker/modules/conftest.py | 31 +++++++++---------- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/sagemaker/modules/templates.py b/src/sagemaker/modules/templates.py index 0a8f6d1f12..7500b0fd30 100644 --- a/src/sagemaker/modules/templates.py +++ b/src/sagemaker/modules/templates.py @@ -50,18 +50,16 @@ }} check_python() {{ - if command -v python3 &>/dev/null; then - SM_PYTHON_CMD="python3" - SM_PIP_CMD="pip3" - echo "Found python3" - elif command -v python &>/dev/null; then - SM_PYTHON_CMD="python" - SM_PIP_CMD="pip" - echo "Found python" - else - echo "Python may not be installed" + SM_PYTHON_CMD=$(command -v python3 || command -v python) + SM_PIP_CMD=$(command -v pip3 || command -v pip) + + # Check if Python is found + if [[ -z "$SM_PYTHON_CMD" || -z "$SM_PIP_CMD" ]]; then + echo "Error: The Python executable was not found in the system path." return 1 fi + + return 0 }} trap 'handle_error' ERR diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index b25fa20979..03cb75b5c9 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -46,7 +46,7 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train()" + "model_trainer.train(wait=False)" ] }, { @@ -94,7 +94,7 @@ " environment=env_vars,\n", ")\n", "\n", - "model_trainer.train()" + "model_trainer.train(wait=False)" ] }, { @@ -137,7 +137,7 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train()" + "model_trainer.train(wait=False)" ] }, { diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 323f2242a8..0868b8c59b 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -293,7 +293,7 @@ def model_post_init(self, __context: Any): logger.warning("Session not provided. Using default Session.") if self.role is None: - self.role = get_execution_role() + self.role = get_execution_role(sagemaker_session=self.session) logger.warning(f"Role not provided. Using default role:\n{self.role}") if self.base_job_name is None: diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index ae3f2cac94..ce94648852 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -112,6 +112,7 @@ download_huggingface_model_metadata, ) from sagemaker.serve.validations.optimization import _validate_optimization_configuration +from sagemaker.modules.train import ModelTrainer logger = logging.getLogger(__name__) @@ -272,9 +273,9 @@ class ModelBuilder(Triton, DJL, JumpStart, TGI, Transformers, TensorflowServing, schema_builder: Optional[SchemaBuilder] = field( default=None, metadata={"help": "Defines the i/o schema of the model"} ) - model: Optional[Union[object, str, "ModelTrainer", TrainingJob, Estimator]] = field( + model: Optional[Union[object, str, ModelTrainer, TrainingJob, Estimator]] = field( default=None, - metadata={"help": "Define object from which training artifacts can be extracted"} + metadata={"help": "Define object from which training artifacts can be extracted"}, ) inference_spec: InferenceSpec = field( default=None, @@ -851,7 +852,7 @@ def build( # pylint: disable=R0911 Returns: Type[Model]: A deployable ``Model`` object. """ - from sagemaker.modules.train.model_trainer import ModelTrainer + self.modes = dict() if mode: diff --git a/tests/integ/sagemaker/modules/conftest.py b/tests/integ/sagemaker/modules/conftest.py index 270fe743b6..189d79167c 100644 --- a/tests/integ/sagemaker/modules/conftest.py +++ b/tests/integ/sagemaker/modules/conftest.py @@ -14,28 +14,27 @@ from __future__ import absolute_import import pytest -import json +import os import boto3 -from botocore.config import Config from sagemaker import Session DEFAULT_REGION = "us-west-2" + @pytest.fixture(scope="module") -def modules_boto_session(request): - config = request.config.getoption("--boto-config") - if config: - return boto3.Session(**json.loads(config)) +def modules_sagemaker_session(): + region = os.environ.get("AWS_DEFAULT_REGION") + if not region: + os.environ["AWS_DEFAULT_REGION"] = DEFAULT_REGION + region_manual_set = True else: - return boto3.Session(region_name=DEFAULT_REGION) + region_manual_set = True -@pytest.fixture(scope="module") -def modules_sagemaker_session(request, modules_boto_session): - sagemaker_client = ( - modules_boto_session.client( - "sagemaker", - config=Config(retries={"max_attempts": 10, "mode": "standard"}) - ) - ) - return Session(boto_session=modules_boto_session) + boto_session = boto3.Session(region_name=os.environ["AWS_DEFAULT_REGION"]) + sagemaker_session = Session(boto_session=boto_session) + + yield sagemaker_session + + if region_manual_set: + del os.environ["AWS_DEFAULT_REGION"] From 70ae24f6a2e393a5bea3936dded2fb28e1edbcec Mon Sep 17 00:00:00 2001 From: Gokul Anantha Narayanan <166456257+nargokul@users.noreply.github.com> Date: Thu, 14 Nov 2024 09:57:29 -0800 Subject: [PATCH 28/79] Unified Deployment interface in Model Builder (#1549) * Base model trainer (#1521) * Base model trainer * flake8 * add testing notebook * add param validation & set defaults * Implement simple train method * feature: support script mode with local train.sh (#1523) * feature: support script mode with local train.sh * Stop tracking train.sh and add it to .gitignore * update message * make dir if not exist * fix docs * fix: docstyle * Address comments * fix hyperparams * Revert pydantic custom error * pylint * Image Spec refactoring and updates (#1525) * Image Spec refactoring and updates * Unit tests and update function for Image Spec * Fix hugging face test * Fix Tests * Add unit tests for ModelTrainer (#1527) * Add unit tests for ModelTrainer * Flake8 * format * Add example notebook (#1528) * Add testing notebook * format * use smaller data * remove large dataset * update * pylint * flake8 * ignore docstyle in directories with test * format * format * Add enviornment variable bootstrapping script (#1530) * Add enviornment variables scripts * format * fix comment * add docstrings * fix comment * feature: add utility function to capture local snapshot (#1524) * local snapshot * Update pip list command * Remove function calls * Address comments * Address comments * Support intelligent parameters (#1540) * Support intelligent parameters * fix codestyle * Revert Image Spec (#1541) * Cleanup ModelTrainer (#1542) * Initial Prototype * General image builder (#1546) * General image builder * General image builder * Fix codestyle * Fix codestyle * Move location * Add warnings * Add integ tests * Fix integ test * Fix integ test * Fix region error * Add region * Unified deploying in ModelBuilder * Latest Container Image (#1545) * Latest Container Image * Test Fixes * Parameterized tests and some logic updates * Test fixes * Move to Image URI * Fixes for unit test * Fixes for unit test * Fix codestyle error checks * Address PR comments * Address Codestyle errors * Cleanup ModelTrainer code (#1552) * Black format * Codestyle changes * Codestyle changes * from __future__ import absolute_import * DocString formatting * Black formatting * Address PR comments * Noteboook changes and fixes * feat: add pre-processing and post-processing logic to inference_spec (#1560) * add pre-processing and post-processing logic to inference_spec * fix format * make accept_type and content_type optional * remove accept_type and content_type from pre/post processing * correct typo * Add Distributed Training Support Model Trainer (#1536) * Add path to set Additional Settings in ModelTrainer (#1555) * Checkstyle Fixes * Address PR comments * Fixes * Merge Fixes * Codestyle Fixes * Codestyle Fixes * Codestyle Fixes * Codestyle Fixes * Codestyle Fixes * Update Docstring --------- Co-authored-by: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Co-authored-by: pintaoz-aws <167920275+pintaoz-aws@users.noreply.github.com> Co-authored-by: Pravali Uppugunduri <46845440+pravali96@users.noreply.github.com> --- src/sagemaker/batch_inference/__init__.py | 0 .../batch_transform_inference_config.py | 27 + .../base_model_builder_deploy.ipynb | 1585 +++++++++++++++++ src/sagemaker/serve/builder/model_builder.py | 118 +- 4 files changed, 1712 insertions(+), 18 deletions(-) create mode 100644 src/sagemaker/batch_inference/__init__.py create mode 100644 src/sagemaker/batch_inference/batch_transform_inference_config.py create mode 100644 src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb diff --git a/src/sagemaker/batch_inference/__init__.py b/src/sagemaker/batch_inference/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/sagemaker/batch_inference/batch_transform_inference_config.py b/src/sagemaker/batch_inference/batch_transform_inference_config.py new file mode 100644 index 0000000000..3d3618d7fb --- /dev/null +++ b/src/sagemaker/batch_inference/batch_transform_inference_config.py @@ -0,0 +1,27 @@ +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +"""Config Classes for taking in parameters for Batch Inference""" + +from __future__ import absolute_import +from pydantic import BaseModel + + +class BatchTransformInferenceConfig(BaseModel): + """Config class for Batch Transform Inference + + * Can be used to deploy from ModelBuilder + """ + + instance_count: int + instance_type: str + output_path: str diff --git a/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb new file mode 100644 index 0000000000..7dd93b7b85 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb @@ -0,0 +1,1585 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "## This Notebook is to showcase the deploy function of ModelBuilder. \n", + "\n", + "As ModelBuilder becomes the main interface for all inference related changes, this deploy function is one step further to provide an enhanced experience over Model.deploy(). \n", + "The deploy function mainly provides 2 advantages:\n", + "1. Simplification of parameters - Reducing the total parameters required from 22 to 7. \n", + "2. Validation/Error Handling with enum to make sure the deployment mode related parameters are provided in the call" + ], + "id": "270525e009204918" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Basic Setup", + "id": "bb8a9608ba668104" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:10:08.460832Z", + "start_time": "2024-10-30T20:10:03.204079Z" + } + }, + "cell_type": "code", + "source": [ + "from sagemaker import Session, get_execution_role\n", + "\n", + "sagemaker_session = Session()\n", + "role = get_execution_role()\n", + "region = sagemaker_session.boto_region_name\n", + "bucket = sagemaker_session.default_bucket()\n" + ], + "id": "a8fdb05f0164a7b6", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sagemaker.config INFO - Not applying SDK defaults from location: /Library/Application Support/sagemaker/config.yaml\n", + "sagemaker.config INFO - Not applying SDK defaults from location: /Users/nargokul/Library/Application Support/sagemaker/config.yaml\n" + ] + } + ], + "execution_count": 1 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Create Training Job and Model Builder", + "id": "75baff9492b9c9a6" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:10:09.506486Z", + "start_time": "2024-10-30T20:10:08.468687Z" + } + }, + "cell_type": "code", + "source": [ + "from sklearn.datasets import load_iris\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "import pandas as pd\n", + "\n", + "# Get IRIS Data\n", + "\n", + "iris = load_iris()\n", + "iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)\n", + "iris_df['target'] = iris.target\n", + "\n", + "import os\n", + "\n", + "# Prepare Data\n", + "\n", + "os.makedirs('./data', exist_ok=True)\n", + "\n", + "iris_df = iris_df[['target'] + [col for col in iris_df.columns if col != 'target']]\n", + "\n", + "train_data, test_data = train_test_split(iris_df, test_size=0.2, random_state=42)\n", + "\n", + "train_data.to_csv('./data/train.csv', index=False, header=False)\n", + "test_data.to_csv('./data/test.csv', index=False, header=False)\n", + "\n", + "# Remove the target column from the testing data. We will use this to call invoke_endpoint later\n", + "test_data_no_target = test_data.drop('target', axis=1)\n", + "\n", + "prefix = \"DEMO-scikit-iris\"\n", + "TRAIN_DATA = \"train.csv\"\n", + "DATA_DIRECTORY = \"data\"\n", + "\n", + "train_input = sagemaker_session.upload_data(\n", + " DATA_DIRECTORY, bucket=bucket, key_prefix=\"{}/{}\".format(prefix, DATA_DIRECTORY)\n", + ")\n", + "\n", + "s3_input_path = \"s3://{}/{}/data/{}\".format(bucket, prefix, TRAIN_DATA)\n", + "s3_output_path = \"s3://{}/{}/output\".format(bucket, prefix)\n", + "\n", + "print(s3_input_path)\n", + "print(s3_output_path)" + ], + "id": "2d4ade0d9d11b649", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "s3://sagemaker-us-west-2-211125564141/DEMO-scikit-iris/data/train.csv\n", + "s3://sagemaker-us-west-2-211125564141/DEMO-scikit-iris/output\n" + ] + } + ], + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:12:53.241670Z", + "start_time": "2024-10-30T20:10:09.640599Z" + } + }, + "cell_type": "code", + "source": [ + "from sagemaker_core.main.shapes import AlgorithmSpecification, Channel, DataSource, S3DataSource,OutputDataConfig, ResourceConfig, StoppingCondition\n", + "import uuid\n", + "from sagemaker.serve.builder.model_builder import ModelBuilder, BatchTransformInferenceConfig\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sagemaker.serve import InferenceSpec, SchemaBuilder\n", + "from sagemaker_core.main.resources import TrainingJob\n", + "from xgboost import XGBClassifier\n", + "\n", + "image = \"433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest\"\n", + "\n", + "class XGBoostSpec(InferenceSpec):\n", + " def load(self, model_dir: str):\n", + " print(model_dir)\n", + " model = XGBClassifier()\n", + " model.load_model(model_dir + \"/xgboost-model\")\n", + " return model\n", + "\n", + " def invoke(self, input_object: object, model: object):\n", + " prediction_probabilities = model.predict_proba(input_object)\n", + " predictions = np.argmax(prediction_probabilities, axis=1)\n", + " return predictions\n", + " \n", + "data = {\n", + " 'Name': ['Alice', 'Bob', 'Charlie']\n", + "}\n", + "df = pd.DataFrame(data)\n", + "training_job_name = str(uuid.uuid4())\n", + "schema_builder = SchemaBuilder(sample_input=df, sample_output=df)\n", + "\n", + "training_job = TrainingJob.create(\n", + " training_job_name=training_job_name,\n", + " hyper_parameters={\n", + " 'objective': 'multi:softmax',\n", + " 'num_class': '3',\n", + " 'num_round': '10',\n", + " 'eval_metric': 'merror'\n", + " },\n", + " algorithm_specification=AlgorithmSpecification(\n", + " training_image=image,\n", + " training_input_mode='File'\n", + " ),\n", + " role_arn=role,\n", + " input_data_config=[\n", + " Channel(\n", + " channel_name='train',\n", + " content_type='csv',\n", + " compression_type='None',\n", + " record_wrapper_type='None',\n", + " data_source=DataSource(\n", + " s3_data_source=S3DataSource(\n", + " s3_data_type='S3Prefix',\n", + " s3_uri=s3_input_path,\n", + " s3_data_distribution_type='FullyReplicated'\n", + " )\n", + " )\n", + " )\n", + " ],\n", + " output_data_config=OutputDataConfig(\n", + " s3_output_path=s3_output_path\n", + " ),\n", + " resource_config=ResourceConfig(\n", + " instance_type='ml.m4.xlarge',\n", + " instance_count=1,\n", + " volume_size_in_gb=30\n", + " ),\n", + " stopping_condition=StoppingCondition(\n", + " max_runtime_in_seconds=600\n", + " )\n", + ")\n", + "training_job.wait()\n", + "\n", + "model_builder = ModelBuilder(\n", + " model_path=training_job.model_artifacts.s3_model_artifacts,\n", + " role_arn=role,\n", + " inference_spec=XGBoostSpec(),\n", + " image_uri=image,\n", + " schema_builder=schema_builder,\n", + " instance_type=\"ml.c6i.xlarge\"\n", + ")\n", + "model_builder.build()\n" + ], + "id": "cdda06c2b848ce94", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Library/Python/3.9/site-packages/pydantic/_internal/_fields.py:200: UserWarning: Field name \"json\" in \"MonitoringDatasetFormat\" shadows an attribute in parent \"Base\"\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:10:11]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating training_job resource. \u001B]8;id=847076;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py\u001B\\\u001B[2mresources.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=443564;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py#26309\u001B\\\u001B[2m26309\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "

[10/30/24 13:10:11] INFO     Creating training_job resource.                                     resources.py:26309\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No boto3 session provided. Creating a new session. \u001B]8;id=990982;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=537669;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#336\u001B\\\u001B[2m336\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    WARNING  No boto3 session provided. Creating a new session.                        utils.py:336\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No region provided. Using default region. \u001B]8;id=825815;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=145527;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#340\u001B\\\u001B[2m340\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    WARNING  No region provided. Using default region.                                 utils.py:340\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No config provided. Using default config. \u001B]8;id=288203;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=337502;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#344\u001B\\\u001B[2m344\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    WARNING  No config provided. Using default config.                                 utils.py:344\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Found credentials in shared credentials file: ~\u001B[38;2;225;0;225m/.aws/\u001B[0m\u001B[38;2;225;0;225mcredentials\u001B[0m \u001B]8;id=439359;file:///Library/Python/3.9/site-packages/botocore/credentials.py\u001B\\\u001B[2mcredentials.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=831253;file:///Library/Python/3.9/site-packages/botocore/credentials.py#1278\u001B\\\u001B[2m1278\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     Found credentials in shared credentials file: ~/.aws/credentials   credentials.py:1278\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "Output()" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "b0346627a92443f28c46d3ce8402f842" + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:12:53]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Final Resource Status: \u001B[1mCompleted\u001B[0m \u001B]8;id=750619;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py\u001B\\\u001B[2mresources.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=635418;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py#26595\u001B\\\u001B[2m26595\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:12:53] INFO     Final Resource Status: Completed                                    resources.py:26595\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [], + "text/html": [ + "
\n"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/plain": [
+       "\u001B[2;36m                   \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO    \u001B[0m Found credentials in shared credentials file: ~\u001B[38;2;225;0;225m/.aws/\u001B[0m\u001B[38;2;225;0;225mcredentials\u001B[0m   \u001B]8;id=493314;file:///Library/Python/3.9/site-packages/botocore/credentials.py\u001B\\\u001B[2mcredentials.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=633308;file:///Library/Python/3.9/site-packages/botocore/credentials.py#1278\u001B\\\u001B[2m1278\u001B[0m\u001B]8;;\u001B\\\n"
+      ],
+      "text/html": [
+       "
                    INFO     Found credentials in shared credentials file: ~/.aws/credentials   credentials.py:1278\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: INFO: Either inference spec or model is provided. ModelBuilder is not handling MLflow model input\n", + "ModelBuilder: INFO: Skipping auto detection as the image uri is provided 433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 3 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "#### Real Time Deployment", + "id": "b0d045e8f64e3787" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:16:00.777140Z", + "start_time": "2024-10-30T20:12:53.258703Z" + } + }, + "cell_type": "code", + "source": [ + "real_time_predictor = model_builder.deploy(\n", + " initial_instance_count=1)" + ], + "id": "96bb41b4146549dd", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" + ] + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=53030;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=517463;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:12:54]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=492611;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=991435;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:12:54] INFO     Creating endpoint-config with name                                     session.py:5817\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=428897;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=73333;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     Creating endpoint with name                                            session.py:4639\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:15:26]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=746109;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=339045;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:15:26] INFO     Arguments: serve                                                       session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=949559;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=372836;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Starting gunicorn 19.9.0        session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=396501;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=262866;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Listening at:                   session.py:8308\n",
+       "                             http://0.0.0.0:8080 (1)                                                               \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=447558;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=304870;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Using worker: gevent            session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m21\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m21\u001B[0m \u001B]8;id=573039;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=52847;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [21] [INFO] Booting worker with pid: 21    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m22\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m22\u001B[0m \u001B]8;id=16999;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=905822;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [22] [INFO] Booting worker with pid: 22    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=955762;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=426873;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:16:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m21\u001B[0m \u001B]8;id=101338;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=134270;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:15:16:INFO] Model loaded successfully for worker : 21   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m23\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m23\u001B[0m \u001B]8;id=22160;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=133976;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:16 +0000] [23] [INFO] Booting worker with pid: 23    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=833189;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=957374;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:16:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m22\u001B[0m \u001B]8;id=404040;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=396553;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:15:16:INFO] Model loaded successfully for worker : 22   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=779028;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=90292;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:17:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m23\u001B[0m \u001B]8;id=693683;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=319507;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:15:17:INFO] Model loaded successfully for worker : 23   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:17 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m24\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m24\u001B[0m \u001B]8;id=6848;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=288255;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:15:17 +0000] [24] [INFO] Booting worker with pid: 24    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=941362;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=289797;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:17:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m24\u001B[0m \u001B]8;id=70291;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=909473;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:15:17:INFO] Model loaded successfully for worker : 24   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:15:59]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=778192;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=467032;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:15:59] INFO     Created endpoint with name                                             session.py:8294\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" + ] + } + ], + "execution_count": 4 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "#### Serverless Deployment", + "id": "5104c00db40527fd" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:18:15.929714Z", + "start_time": "2024-10-30T20:16:00.806356Z" + } + }, + "cell_type": "code", + "source": [ + "from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig\n", + "\n", + "serverless_predictor = model_builder.deploy(\n", + " inference_config=ServerlessInferenceConfig())" + ], + "id": "9a5de6c58da465f9", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" + ] + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:16:00]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=245422;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=544458;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:16:00] INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:16:01]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m Using already existing model: \u001B]8;id=30512;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=969586;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4036\u001B\\\u001B[2m4036\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:16:01] WARNING  Using already existing model:                                          session.py:4036\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a99cdc                                           \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=503479;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=809762;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     Creating endpoint-config with name                                     session.py:5817\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:16:02]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=858959;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=350075;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:16:02] INFO     Creating endpoint with name                                            session.py:4639\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:02]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=292965;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=22365;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:18:02] INFO     Arguments: serve                                                       session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=58566;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=799327;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Starting gunicorn 19.9.0       session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=648010;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=18217;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Listening at:                  session.py:8308\n",
+       "                             http://0.0.0.0:8080 (15)                                                              \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:03]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=479134;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=856148;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:18:03] INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Using worker: gevent           session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m30\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m30\u001B[0m \u001B]8;id=961257;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=479478;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:17:57 +0000] [30] [INFO] Booting worker with pid: 30    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m31\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m31\u001B[0m \u001B]8;id=445721;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=120162;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:17:57 +0000] [31] [INFO] Booting worker with pid: 31    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=119512;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=771628;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B]8;id=188951;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=466698;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO       monkey.patch_all(subprocess=True)                                    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=461440;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=156860;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B]8;id=382247;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=161965;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO       monkey.patch_all(subprocess=True)                                    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:17:57:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m31\u001B[0m \u001B]8;id=415016;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=24361;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:17:57:INFO] Model loaded successfully for worker : 31   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:17:57:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m30\u001B[0m \u001B]8;id=927407;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=387335;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:17:57:INFO] Model loaded successfully for worker : 30   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:14]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=549964;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=34785;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:18:14] INFO     Created endpoint with name                                             session.py:8294\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" + ] + } + ], + "execution_count": 5 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "#### Async Deployment", + "id": "6462fe2d8f85dba7" + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2024-10-30T20:21:27.809852Z", + "start_time": "2024-10-30T20:18:15.955152Z" + } + }, + "cell_type": "code", + "source": [ + "from sagemaker.s3_utils import s3_path_join\n", + "from sagemaker.async_inference import AsyncInferenceConfig\n", + "\n", + "async_predictor = model_builder.deploy(\n", + " inference_config=AsyncInferenceConfig(\n", + " output_path=s3_path_join(\"s3://\", bucket, \"async_inference/output\")),\n", + ")" + ], + "id": "271e8dcfb015d69a", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" + ] + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:15]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=96650;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=60711;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:18:15] INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:16]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m Using already existing model: \u001B]8;id=492060;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=45096;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4036\u001B\\\u001B[2m4036\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:18:16] WARNING  Using already existing model:                                          session.py:4036\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a99cdc                                           \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:19]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=21634;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=59349;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:18:19] INFO     Creating endpoint-config with name                                     session.py:5817\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:18:20]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=747862;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=622744;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:18:20] INFO     Creating endpoint with name                                            session.py:4639\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:21:04]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=543297;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=668264;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
[10/30/24 13:21:04] INFO     Arguments: serve                                                       session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=652057;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=107097;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Starting gunicorn 19.9.0        session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=775956;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=797582;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Listening at:                   session.py:8308\n",
+       "                             http://0.0.0.0:8080 (1)                                                               \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=240430;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=74815;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Using worker: gevent            session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m21\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m21\u001B[0m \u001B]8;id=145896;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=403100;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [21] [INFO] Booting worker with pid: 21    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=823558;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=712577;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m21\u001B[0m \u001B]8;id=821756;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=618499;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 21   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m22\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m22\u001B[0m \u001B]8;id=839918;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=464935;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [22] [INFO] Booting worker with pid: 22    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=401368;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=530734;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m22\u001B[0m \u001B]8;id=539268;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=580181;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 22   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m23\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m23\u001B[0m \u001B]8;id=927105;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=974327;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [23] [INFO] Booting worker with pid: 23    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=206226;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=154863;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m23\u001B[0m \u001B]8;id=892101;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=519664;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 23   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m24\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m24\u001B[0m \u001B]8;id=564172;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=217009;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30 20:20:51 +0000] [24] [INFO] Booting worker with pid: 24    session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=669354;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=873117;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", + "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
+       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
+       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
+       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
+       "                             monkey-patch earlier. See                                                             \n",
+       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
+       "                             imports (NOT patched): ['urllib3.util                                                 \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
+       "                             'urllib3.util.ssl_                                                                    \n",
+       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
+       "                               monkey.patch_all(subprocess=True)                                                   \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m24\u001B[0m \u001B]8;id=901867;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=827841;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" + ], + "text/html": [ + "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 24   session.py:8308\n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:21:26]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=56717;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=391476;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:21:26] INFO     Created endpoint with name                                             session.py:8294\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" + ] + } + ], + "execution_count": 6 + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "#### Batch Deployment", + "id": "f8458db5bfb1a0c5" + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "from sagemaker.s3_utils import s3_path_join\n", + "\n", + "\n", + "batch_predictor = model_builder.deploy(\n", + " initial_instance_count=1,\n", + " inference_config=BatchTransformInferenceConfig(\n", + " instance_count=1,\n", + " instance_type='ml.m5.large',\n", + " output_path=s3_path_join(\"s3://\", bucket, \"async_inference/output\"),\n", + " )\n", + ")" + ], + "id": "5a80ccf640a5dca9", + "outputs": [], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "#### MultiModel Deployment\n", + "\n", + "Similar syntax applies for Multi-Container Endpoint as well" + ], + "id": "d97c14830180dd4" + }, + { + "metadata": { + "jupyter": { + "is_executing": true + }, + "ExecuteTime": { + "start_time": "2024-10-30T20:30:57.436543Z" + } + }, + "cell_type": "code", + "source": [ + "from sagemaker.compute_resource_requirements import ResourceRequirements\n", + "\n", + "multi_model_predictor = model_builder.deploy(\n", + " inference_config = ResourceRequirements(\n", + " requests={\n", + " \"num_cpus\": 0.5,\n", + " \"memory\": 512,\n", + " \"copies\": 2,\n", + " },\n", + " limits={},\n", + " ),\n", + " initial_instance_count=1)" + ], + "id": "9788d4f7fab3b7ca", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" + ] + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m[10/30/24 13:30:58]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=987242;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=233313;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-30-57-438 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
[10/30/24 13:30:58] INFO     Creating endpoint-config with name                                     session.py:5817\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-30-57-438                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=10549;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=757746;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", + "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-30-57-438 \u001B[2m \u001B[0m\n" + ], + "text/html": [ + "
                    INFO     Creating endpoint with name                                            session.py:4639\n",
+       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-30-57-438                       \n",
+       "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "execution_count": null + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "724aec7045fd80f1" + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/sagemaker/serve/builder/model_builder.py b/src/sagemaker/serve/builder/model_builder.py index ce94648852..14b140cb6d 100644 --- a/src/sagemaker/serve/builder/model_builder.py +++ b/src/sagemaker/serve/builder/model_builder.py @@ -26,13 +26,16 @@ from sagemaker_core.main.resources import TrainingJob +from sagemaker.transformer import Transformer +from sagemaker.async_inference import AsyncInferenceConfig +from sagemaker.batch_inference.batch_transform_inference_config import BatchTransformInferenceConfig +from sagemaker.compute_resource_requirements import ResourceRequirements +from sagemaker.enums import Tag, EndpointType from sagemaker.estimator import Estimator -from sagemaker.enums import Tag from sagemaker.jumpstart.accessors import JumpStartS3PayloadAccessor from sagemaker.jumpstart.utils import get_jumpstart_content_bucket from sagemaker.s3 import S3Downloader - -from sagemaker import Session +from sagemaker import Session, utils from sagemaker.model import Model from sagemaker.base_predictor import PredictorBase from sagemaker.serializers import NumpySerializer, TorchTensorSerializer @@ -105,6 +108,7 @@ from sagemaker.serve.validations.check_image_and_hardware_type import ( validate_image_uri_and_hardware, ) +from sagemaker.serverless import ServerlessInferenceConfig from sagemaker.utils import Tags from sagemaker.workflow.entities import PipelineVariable from sagemaker.huggingface.llm_utils import ( @@ -593,12 +597,8 @@ def _model_builder_deploy_wrapper( return predictor if self.mode == Mode.SAGEMAKER_ENDPOINT: # Validate parameters - if not instance_type: - raise ValueError("Missing required parameter `instance_type`") - - if not initial_instance_count: - raise ValueError("Missing required parameter `initial_instance_count`") - + # Instance type and instance count parameter validation is done based on deployment type + # and will be done inside Model.deploy() if is_1p_image_uri(image_uri=self.image_uri): validate_image_uri_and_hardware( image_uri=self.image_uri, @@ -660,8 +660,8 @@ def _build_for_torchserve(self) -> Type[Model]: ) self._prepare_for_mode() - - return self._create_model() + self.model = self._create_model() + return self.model def _user_agent_decorator(self, func): """Placeholder docstring""" @@ -901,13 +901,15 @@ def build( # pylint: disable=R0911 if ( not (isinstance(self.model, str) and self._is_jumpstart_model_id()) ) and self.model_server: - return self._build_for_model_server() + self.built_model = self._build_for_model_server() + return self.built_model if isinstance(self.model, str): model_task = None if self._is_jumpstart_model_id() or self._use_jumpstart_equivalent(): self.model_hub = ModelHub.JUMPSTART - return self._build_for_jumpstart() + self.built_model = self._build_for_jumpstart() + return self.built_model self.model_hub = ModelHub.HUGGINGFACE if self.model_metadata: @@ -925,18 +927,23 @@ def build( # pylint: disable=R0911 if self.schema_builder is None and model_task is not None: self._hf_schema_builder_init(model_task) if model_task == "text-generation": - return self._build_for_tgi() + self.built_model = self._build_for_tgi() + return self.built_model if model_task == "sentence-similarity": - return self._build_for_tei() + self.built_model = self._build_for_tei() + return self.built_model elif self._can_fit_on_single_gpu(): - return self._build_for_transformers() + self.built_model = self._build_for_transformers() + return self.built_model else: - return self._build_for_transformers() + self.built_model = self._build_for_transformers() + return self.built_model # Set TorchServe as default model server if not self.model_server: self.model_server = ModelServer.TORCHSERVE - return self._build_for_torchserve() + self.built_model = self._build_for_torchserve() + return self.built_model raise ValueError("%s model server is not supported" % self.model_server) @@ -1546,6 +1553,81 @@ def _optimize_prepare_for_hf(self): ) self.pysdk_model.env.update(env) + def deploy( + self, + endpoint_name: str = None, + initial_instance_count: Optional[int] = 1, + inference_config: Optional[ + Union[ + ServerlessInferenceConfig, + AsyncInferenceConfig, + BatchTransformInferenceConfig, + ResourceRequirements, + ] + ] = None, + ) -> Union[Predictor, Transformer]: + """Deploys the built Model. + + Depending on the type of config provided, this function will call deployment accordingly. + Args: + endpoint_name (str): Name of the endpoint to deploy. + The supplied base name is used as a prefix and + a unique ID is appended to guarantee uniqueness. + initial_instance_count (int): Number of instances to deploy. + inference_config (Optional[Union[ServerlessInferenceConfig, + AsyncInferenceConfig, BatchTransformInferenceConfig, ResourceRequirements]]) : + Additional Config for different deployment types such as + serverless, async, batch and multi-model/container + Returns: + Transformer for Batch Deployments + Predictors for all others + """ + if not hasattr(self, "built_model"): + raise ValueError("Model Needs to be built before deploying") + endpoint_name = utils.unique_name_from_base(endpoint_name) + if not inference_config: # Real-time Deployment + return self.built_model.deploy( + instance_type=self.instance_type, + initial_instance_count=initial_instance_count, + endpoint_name=endpoint_name, + ) + + if isinstance(inference_config, ServerlessInferenceConfig): + return self.built_model.deploy( + serverless_inference_config=inference_config, + endpoint_name=endpoint_name, + ) + + if isinstance(inference_config, AsyncInferenceConfig): + return self.built_model.deploy( + instance_type=self.instance_type, + initial_instance_count=initial_instance_count, + async_inference_config=inference_config, + endpoint_name=endpoint_name, + ) + + if isinstance(inference_config, BatchTransformInferenceConfig): + transformer = self.built_model.transformer( + instance_type=inference_config.instance_type, + output_path=inference_config.output_path, + instance_count=inference_config.instance_count, + ) + transformer.wait() + return transformer + + if isinstance(inference_config, ResourceRequirements): + # Multi Model and MultiContainer endpoints with Inference Component + return self.built_model.deploy( + instance_type=self.instance_type, + mode=Mode.SAGEMAKER_ENDPOINT, + endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, + resources=inference_config, + initial_instance_count=initial_instance_count, + role=self.role_arn, + ) + + raise ValueError("Deployment Options not supported") + def display_benchmark_metrics(self, **kwargs): """Display Markdown Benchmark Metrics for deployment configs.""" if not isinstance(self.model, str): From 6b90f89b689ccc696a8976b380a2137ff179bd6e Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:14:12 -0800 Subject: [PATCH 29/79] Add recipes examples (#1582) --- .../base_model_trainer.ipynb | 155 ++++++++++++++++-- .../recipes/custom-recipe.yaml | 110 +++++++++++++ src/sagemaker/modules/train/model_trainer.py | 3 +- 3 files changed, 251 insertions(+), 17 deletions(-) create mode 100644 src/sagemaker/modules/testing_notebooks/recipes/custom-recipe.yaml diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 03cb75b5c9..6c1025c152 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -79,19 +79,9 @@ " command=\"python custom_script.py\",\n", ")\n", "\n", - "hyperparameters = {\n", - " \"secret_token\": \"123456\",\n", - "}\n", - "\n", - "env_vars = {\n", - " \"PASSWORD\": \"123456\"\n", - "}\n", - "\n", "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code=source_code,\n", - " hyperparameters=hyperparameters,\n", - " environment=env_vars,\n", ")\n", "\n", "model_trainer.train(wait=False)" @@ -386,10 +376,6 @@ "from sagemaker.modules.configs import (\n", " Compute, SourceCode, InputData\n", ")\n", - "from sagemaker.modules.distributed import (\n", - " Torchrun,\n", - " MPI\n", - ")\n", "\n", "compute = Compute(\n", " instance_count=2,\n", @@ -420,6 +406,12 @@ "metadata": {}, "outputs": [], "source": [ + "from sagemaker.modules.distributed import (\n", + " Torchrun,\n", + " MPI,\n", + " SMP\n", + ")\n", + "\n", "source_code = SourceCode(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", @@ -429,6 +421,14 @@ "# Run using Torchrun\n", "torchrun = Torchrun()\n", "\n", + "# Run using Torchrun with SMP\n", + "torchrun_smp = Torchrun(\n", + " smp=SMP(\n", + " sm_activation_offloading=True,\n", + " activation_loading_horizon=2,\n", + " )\n", + ")\n", + "\n", "# Run using MPI\n", "mpi = MPI(\n", " mpi_additional_options=[\n", @@ -482,7 +482,7 @@ "outputs": [], "source": [ "from sagemaker.modules.train import ModelTrainer\n", - "from sagemaker.modules.configs import Compute, InputData\n", + "from sagemaker.modules.configs import Compute\n", "\n", "recipe_overrides = {\n", " \"run\": {\n", @@ -536,6 +536,131 @@ "source": [ "Successful Run - https://tiny.amazon.com/14jxjrndx/IsenLink" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Custom Recipe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import Compute\n", + "\n", + "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", + "\n", + "model_trainer = ModelTrainer.from_recipe(\n", + " training_recipe=\"recipes/custom-recipe.yaml\",\n", + " training_image=training_image,\n", + " compute=Compute(instance_type=\"ml.p4d.24xlarge\")\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model_trainer.train()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/dimbimx1/IsenLink" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trainium Recipe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker import session\n", + "\n", + "session = session.Session()\n", + "base_job_name = \"trn-llama\"\n", + "compiler_cache_bucket = f\"s3://{session.default_bucket()}/{base_job_name}/compiler-cache\"\n", + "print(f\"Compiler cache: {compiler_cache_bucket}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import Compute, InputData, StoppingCondition\n", + "\n", + "recipe_overrides = {\n", + " \"data\": {\n", + " \"train_dir\": \"/opt/ml/input/data/train\",\n", + " },\n", + " \"model\": {\n", + " \"model_config\": \"/opt/ml/input/data/train/config.json\",\n", + " },\n", + " \"trainer\": {\n", + " \"max_epochs\": 1,\n", + " },\n", + " \"compiler_cache_url\": compiler_cache_bucket,\n", + "}\n", + "env = {\n", + " \"FI_EFA_FORK_SAFE\": \"1\"\n", + "}\n", + "\n", + "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-neuron\"\n", + "\n", + "model_trainer = ModelTrainer.from_recipe(\n", + " training_recipe=\"https://raw.githubusercontent.com/aws-neuron/neuronx-distributed-training/refs/heads/main/examples/conf/hf_llama3_8B_config.yaml\",\n", + " recipe_overrides=recipe_overrides,\n", + " training_image=training_image,\n", + " compute=Compute(\n", + " instance_type=\"ml.trn1.32xlarge\",\n", + " instance_count=2,\n", + " ),\n", + " stopping_condition=StoppingCondition(\n", + " max_runtime_in_seconds=86400\n", + " ),\n", + " environment=env\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "train = InputData(\n", + " channel_name=\"train\",\n", + " data_source=\"s3://sagemaker-recipes-059094755717-data/data_llama3/\",\n", + ")\n", + "\n", + "model_trainer.train(input_data_config=[train], wait=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Successful Run - https://tiny.amazon.com/125zldym8/IsenLink" + ] } ], "metadata": { diff --git a/src/sagemaker/modules/testing_notebooks/recipes/custom-recipe.yaml b/src/sagemaker/modules/testing_notebooks/recipes/custom-recipe.yaml new file mode 100644 index 0000000000..bb671cb331 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/recipes/custom-recipe.yaml @@ -0,0 +1,110 @@ +run: + name: llama-8b + results_dir: /opt/ml/model + time_limit: 6-00:00:00 + model_type: hf +trainer: + devices: 8 + num_nodes: 1 + accelerator: gpu + precision: bf16 + max_steps: 50 + log_every_n_steps: 1 + val_check_interval: 1 + limit_val_batches: 0 +exp_manager: + exp_dir: '' + name: experiment + create_tensorboard_logger: true + create_checkpoint_callback: true + checkpoint_callback_params: + save_top_k: 0 + every_n_train_steps: 10 + monitor: step + mode: max + save_last: true + checkpoint_dir: /opt/ml/checkpoints + resume_from_checkpoint: null + auto_checkpoint: + enabled: false + export_full_model: + every_n_train_steps: 0 + save_last: false + explicit_log_dir: /opt/ml/output/tensorboard +use_smp_model: false +distributed_backend: nccl +model: + model_type: llama_v3 + train_batch_size: 1 + seed: 12345 + grad_clip: 1.0 + log_reduced_training_loss: true + context_parallel_degree: 1 + moe: false + activation_checkpointing: true + activation_loading_horizon: 2 + delayed_param: false + offload_activations: false + fsdp: true + sharding_strategy: hybrid_shard + forward_prefetch: true + shard_degree: 8 + backward_fetch_policy: backward_pre + auto_wrap_policy: transformer_auto_wrap_policy + limit_all_gathers: false + use_orig_param: false + fp8: false + max_context_width: 8192 + max_position_embeddings: 8192 + num_hidden_layers: 32 + hidden_size: 4096 + num_attention_heads: 32 + intermediate_size: 14336 + initializer_range: 0.02 + layernorm_epsilon: 1.0e-05 + vocab_size: 128256 + num_key_value_heads: null + use_flash_attention: true + rope_theta: 500000.0 + rope_scaling: + rope_type: llama3 + factor: 8.0 + high_freq_factor: 4.0 + low_freq_factor: 1.0 + original_max_position_embeddings: 8192 + do_finetune: true + hf_model_name_or_path: meta-llama/Llama-3.1-8B + hf_access_token: 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 + peft: + peft_type: lora + rank: 32 + alpha: 16 + dropout: 0.1 + precision: bf16 + lr_decay_iters: 50 + optim: + name: adamw + lr: 0.0001 + weight_decay: 0.01 + betas: + - 0.9 + - 0.95 + sched: + name: CosineAnnealing + warmup_steps: 0 + constant_steps: 0 + min_lr: 1.0e-06 + data: + train_dir: /opt/ml/input/data/train + val_dir: /opt/ml/input/data/val + dataset_type: hf + use_synthetic_data: true + nsys_profile: + enabled: false + start_step: 10 + end_step: 10 + ranks: + - 0 + gen_shape: false + viztracer: + enabled: false diff --git a/src/sagemaker/modules/train/model_trainer.py b/src/sagemaker/modules/train/model_trainer.py index 0868b8c59b..3b89e55420 100644 --- a/src/sagemaker/modules/train/model_trainer.py +++ b/src/sagemaker/modules/train/model_trainer.py @@ -191,7 +191,7 @@ class ModelTrainer(BaseModel): tags: Optional[List[Tag]] = None # Created Artifacts - _latest_training_job: Optional[resources.TrainingJob] = None + _latest_training_job: Optional[resources.TrainingJob] = PrivateAttr(default=None) # Metrics settings _enable_sage_maker_metrics_time_series: Optional[bool] = PrivateAttr(default=False) @@ -200,7 +200,6 @@ class ModelTrainer(BaseModel): # Debugger settings _debug_hook_config: Optional[DebugHookConfig] = PrivateAttr(default=None) _debug_rule_configurations: Optional[List[DebugRuleConfiguration]] = PrivateAttr(default=None) - _remote_debug_config: Optional[RemoteDebugConfig] = PrivateAttr(default=None) _profiler_config: Optional[ProfilerConfig] = PrivateAttr(default=None) _profiler_rule_configurations: Optional[List[ProfilerRuleConfiguration]] = PrivateAttr( default=None From 67f535d5b8a57a9d8e6fd15d69d1f27916731ced Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Thu, 14 Nov 2024 11:29:15 -0800 Subject: [PATCH 30/79] update notebooks (#1588) --- .../base_model_trainer.ipynb | 115 ++++++++---------- .../model_builder_handshake.ipynb | 62 ++++++---- 2 files changed, 90 insertions(+), 87 deletions(-) diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index 6c1025c152..c738093772 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -6,11 +6,25 @@ "metadata": {}, "outputs": [], "source": [ - "import sys, os\n", - "\n", - "# Get the absolute path of the root directory\n", - "root_dir = os.path.abspath(os.path.join(os.getcwd(), \"../../..\"))\n", - "sys.path.insert(0, root_dir)" + "alias = \"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install \"pydantic>=2.0.0\" sagemaker-core" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install sagemaker-2.232.4.dev0.tar.gz" ] }, { @@ -37,6 +51,7 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code=source_code,\n", + " base_job_name=f\"{alias}-miminal-case\",\n", ")" ] }, @@ -46,14 +61,7 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train(wait=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/3maxeyb/IsenLink" + "model_trainer.train()" ] }, { @@ -82,16 +90,10 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code=source_code,\n", + " base_job_name=f\"{alias}-simple-case-1\",\n", ")\n", "\n", - "model_trainer.train(wait=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/6uy7pmpj/IsenLink" + "model_trainer.train()" ] }, { @@ -118,6 +120,7 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code=source_code,\n", + " base_job_name=f\"{alias}-simple-case-2\",\n", ")" ] }, @@ -127,14 +130,7 @@ "metadata": {}, "outputs": [], "source": [ - "model_trainer.train(wait=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/7n4n4ogr/IsenLink" + "model_trainer.train()" ] }, { @@ -159,7 +155,11 @@ "metadata": {}, "outputs": [], "source": [ - "access_token = os.environ.get(\"HF_TOKEN\", \"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\")\n", + "import os\n", + "\n", + "access_token = \"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\"\n", + "os.environ[\"HUGGING_FACE_HUB_TOKEN\"] = access_token\n", + "\n", "model_id = \"meta-llama/Llama-2-7b-hf\"\n", "\n", "dataset_name = \"tatsu-lab/alpaca\"" @@ -276,7 +276,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Model Trainer Torchrun" + "#### Model Trainer Torchrun - Manual" ] }, { @@ -298,8 +298,8 @@ "env[\"RDMAV_FORK_SAFE\"] = \"1\"\n", "\n", "compute = Compute(\n", - " instance_count=2,\n", - " instance_type=\"ml.p4d.24xlarge\",\n", + " instance_count=1,\n", + " instance_type=\"ml.g5.48xlarge\",\n", " volume_size_in_gb=96,\n", " keep_alive_period_in_seconds=3600\n", ")\n", @@ -329,7 +329,7 @@ "source_code = SourceCode(\n", " source_dir=\"distributed-training/scripts\",\n", " requirements=\"requirements.txt\",\n", - " command=\"torchrun --nnodes 2 \\\n", + " command=\"torchrun --nnodes 1 \\\n", " --nproc_per_node 8 \\\n", " --master_addr algo-1 \\\n", " --master_port 7777 \\\n", @@ -343,6 +343,7 @@ " environment=env,\n", " hyperparameters=hyperparameters,\n", " source_code=source_code,\n", + " base_job_name=f\"{alias}-distributed-case\",\n", ")" ] }, @@ -356,14 +357,14 @@ " channel_name=\"dataset\",\n", " data_source=training_input_path,\n", ")\n", - "model_trainer.train(input_data_config=[test_data], wait=False)" + "model_trainer.train(input_data_config=[test_data])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Successful Run - https://tiny.amazon.com/10wljn1yu/IsenLink" + "#### Model Trainer Torchrun - Abstractions" ] }, { @@ -379,7 +380,7 @@ "\n", "compute = Compute(\n", " instance_count=2,\n", - " instance_type=\"ml.p4d.24xlarge\",\n", + " instance_type=\"ml.g5.48xlarge\",\n", " volume_size_in_gb=96,\n", " keep_alive_period_in_seconds=3600\n", ")\n", @@ -445,6 +446,7 @@ " hyperparameters=hyperparameters,\n", " source_code=source_code,\n", " distributed_runner=mpi,\n", + " base_job_name=f\"{alias}-distributed-abstractions\",\n", ")" ] }, @@ -458,7 +460,7 @@ " channel_name=\"dataset\",\n", " data_source=training_input_path,\n", ")\n", - "model_trainer.train(input_data_config=[test_data], wait=False)" + "model_trainer.train(input_data_config=[test_data])" ] }, { @@ -511,13 +513,14 @@ " }\n", "}\n", "\n", - "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", + "training_image = \"438465156666.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", "\n", "model_trainer = ModelTrainer.from_recipe(\n", " training_recipe=\"training/llama/hf_llama3_8b_seq8192_gpu\",\n", " training_image=training_image,\n", " recipe_overrides=recipe_overrides,\n", - " compute=Compute(instance_type=\"ml.p4d.24xlarge\")\n", + " compute=Compute(instance_type=\"ml.g5.48xlarge\"),\n", + " base_job_name=f\"{alias}-recipe-case-1\",\n", ")" ] }, @@ -530,13 +533,6 @@ "model_trainer.train()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/14jxjrndx/IsenLink" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -553,12 +549,13 @@ "from sagemaker.modules.train import ModelTrainer\n", "from sagemaker.modules.configs import Compute\n", "\n", - "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", + "training_image = \"438465156666.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-gpu\"\n", "\n", "model_trainer = ModelTrainer.from_recipe(\n", " training_recipe=\"recipes/custom-recipe.yaml\",\n", " training_image=training_image,\n", - " compute=Compute(instance_type=\"ml.p4d.24xlarge\")\n", + " compute=Compute(instance_type=\"ml.g5.48xlarge\"),\n", + " base_job_name=f\"{alias}-recipe-case-2\",\n", ")" ] }, @@ -571,13 +568,6 @@ "model_trainer.train()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/dimbimx1/IsenLink" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -624,7 +614,7 @@ " \"FI_EFA_FORK_SAFE\": \"1\"\n", "}\n", "\n", - "training_image = \"059094755717.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-neuron\"\n", + "training_image = \"438465156666.dkr.ecr.us-west-2.amazonaws.com/sagemaker-recipes-neuron\"\n", "\n", "model_trainer = ModelTrainer.from_recipe(\n", " training_recipe=\"https://raw.githubusercontent.com/aws-neuron/neuronx-distributed-training/refs/heads/main/examples/conf/hf_llama3_8B_config.yaml\",\n", @@ -635,7 +625,7 @@ " instance_count=2,\n", " ),\n", " stopping_condition=StoppingCondition(\n", - " max_runtime_in_seconds=86400\n", + " max_runtime_in_seconds=3600\n", " ),\n", " environment=env\n", ")" @@ -649,18 +639,11 @@ "source": [ "train = InputData(\n", " channel_name=\"train\",\n", - " data_source=\"s3://sagemaker-recipes-059094755717-data/data_llama3/\",\n", + " data_source=\"s3://sagemaker-recipes-438465156666-data/data_llama3/\",\n", ")\n", "\n", "model_trainer.train(input_data_config=[train], wait=False)" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Successful Run - https://tiny.amazon.com/125zldym8/IsenLink" - ] } ], "metadata": { diff --git a/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb b/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb index f24448d7d9..daeb2c7bfc 100644 --- a/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb +++ b/src/sagemaker/modules/testing_notebooks/model_builder_handshake.ipynb @@ -2,10 +2,32 @@ "cells": [ { "cell_type": "code", + "execution_count": null, + "id": "eca12282", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install \"pydantic>=2.0.0\" sagemaker-core" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "756ebbf2", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install sagemaker-2.232.4.dev0.tar.gz" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "initial_id", "metadata": { "collapsed": true }, + "outputs": [], "source": [ "from sagemaker_core.main.shapes import TrainingJob\n", "\n", @@ -15,13 +37,14 @@ "role = get_execution_role()\n", "region = sagemaker_session.boto_region_name\n", "bucket = sagemaker_session.default_bucket()" - ], - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": null, + "id": "4b3a4f7d1713685f", + "metadata": {}, + "outputs": [], "source": [ "\n", "from sagemaker.modules.configs import SourceCode\n", @@ -38,14 +61,14 @@ ")\n", "\n", "model_trainer.train()" - ], - "id": "4b3a4f7d1713685f", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": null, + "id": "295a16ef277257a0", + "metadata": {}, + "outputs": [], "source": [ "import numpy as np\n", "from sagemaker.serve.builder.schema_builder import SchemaBuilder\n", @@ -88,14 +111,14 @@ "assert model.model_data == model_trainer._latest_training_job.model_artifacts.s3_model_artifacts\n", "\n", "print(model.model_data)" - ], - "id": "295a16ef277257a0", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": null, + "id": "935ea8486278d7b1", + "metadata": {}, + "outputs": [], "source": [ "training_job: TrainingJob = model_trainer._latest_training_job\n", "\n", @@ -112,18 +135,15 @@ "assert model.model_data == training_job.model_artifacts.s3_model_artifacts\n", "\n", "print(model.model_data)" - ], - "id": "935ea8486278d7b1", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "code", - "source": "", + "execution_count": null, "id": "757180da84407a1a", + "metadata": {}, "outputs": [], - "execution_count": null + "source": [] } ], "metadata": { From e4701e8b612414c0579b7cb8143fdcfd7f154eb3 Mon Sep 17 00:00:00 2001 From: Erick Benitez-Ramos <141277478+benieric@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:03:41 -0800 Subject: [PATCH 31/79] update notebooks (#1592) --- .../base_model_builder_deploy.ipynb | 1395 ++--------------- .../base_model_trainer.ipynb | 141 +- .../testing_notebooks/install_docker.sh | 20 + .../sagemaker-2.232.4.dev0-py3-none-any.whl | Bin 0 -> 4471800 bytes .../sagemaker-2.232.4.dev0.tar.gz | Bin 0 -> 4026571 bytes 5 files changed, 215 insertions(+), 1341 deletions(-) create mode 100644 src/sagemaker/modules/testing_notebooks/install_docker.sh create mode 100644 src/sagemaker/modules/testing_notebooks/sagemaker-2.232.4.dev0-py3-none-any.whl create mode 100644 src/sagemaker/modules/testing_notebooks/sagemaker-2.232.4.dev0.tar.gz diff --git a/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb index 7dd93b7b85..adf89f5a60 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_builder_deploy.ipynb @@ -1,8 +1,9 @@ { "cells": [ { - "metadata": {}, "cell_type": "markdown", + "id": "270525e009204918", + "metadata": {}, "source": [ "## This Notebook is to showcase the deploy function of ModelBuilder. \n", "\n", @@ -10,23 +11,47 @@ "The deploy function mainly provides 2 advantages:\n", "1. Simplification of parameters - Reducing the total parameters required from 22 to 7. \n", "2. Validation/Error Handling with enum to make sure the deployment mode related parameters are provided in the call" - ], - "id": "270525e009204918" + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "### Basic Setup", - "id": "bb8a9608ba668104" + "id": "bb8a9608ba668104", + "metadata": {}, + "source": [ + "### Basic Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80089403", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install \"pydantic>=2.0.0\" sagemaker-core" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "e094f5f0", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install sagemaker-2.232.4.dev0.tar.gz" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8fdb05f0164a7b6", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:10:08.460832Z", "start_time": "2024-10-30T20:10:03.204079Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from sagemaker import Session, get_execution_role\n", "\n", @@ -34,34 +59,27 @@ "role = get_execution_role()\n", "region = sagemaker_session.boto_region_name\n", "bucket = sagemaker_session.default_bucket()\n" - ], - "id": "a8fdb05f0164a7b6", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sagemaker.config INFO - Not applying SDK defaults from location: /Library/Application Support/sagemaker/config.yaml\n", - "sagemaker.config INFO - Not applying SDK defaults from location: /Users/nargokul/Library/Application Support/sagemaker/config.yaml\n" - ] - } - ], - "execution_count": 1 + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "### Create Training Job and Model Builder", - "id": "75baff9492b9c9a6" + "id": "75baff9492b9c9a6", + "metadata": {}, + "source": [ + "### Create Training Job and Model Builder" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "2d4ade0d9d11b649", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:10:09.506486Z", "start_time": "2024-10-30T20:10:08.468687Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn.model_selection import train_test_split\n", @@ -103,28 +121,19 @@ "\n", "print(s3_input_path)\n", "print(s3_output_path)" - ], - "id": "2d4ade0d9d11b649", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "s3://sagemaker-us-west-2-211125564141/DEMO-scikit-iris/data/train.csv\n", - "s3://sagemaker-us-west-2-211125564141/DEMO-scikit-iris/output\n" - ] - } - ], - "execution_count": 2 + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "cdda06c2b848ce94", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:12:53.241670Z", "start_time": "2024-10-30T20:10:09.640599Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from sagemaker_core.main.shapes import AlgorithmSpecification, Channel, DataSource, S3DataSource,OutputDataConfig, ResourceConfig, StoppingCondition\n", "import uuid\n", @@ -207,858 +216,77 @@ " instance_type=\"ml.c6i.xlarge\"\n", ")\n", "model_builder.build()\n" - ], - "id": "cdda06c2b848ce94", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Library/Python/3.9/site-packages/pydantic/_internal/_fields.py:200: UserWarning: Field name \"json\" in \"MonitoringDatasetFormat\" shadows an attribute in parent \"Base\"\n", - " warnings.warn(\n" - ] - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:10:11]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating training_job resource. \u001B]8;id=847076;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py\u001B\\\u001B[2mresources.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=443564;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py#26309\u001B\\\u001B[2m26309\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:10:11] INFO     Creating training_job resource.                                     resources.py:26309\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No boto3 session provided. Creating a new session. \u001B]8;id=990982;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=537669;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#336\u001B\\\u001B[2m336\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    WARNING  No boto3 session provided. Creating a new session.                        utils.py:336\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No region provided. Using default region. \u001B]8;id=825815;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=145527;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#340\u001B\\\u001B[2m340\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    WARNING  No region provided. Using default region.                                 utils.py:340\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m No config provided. Using default config. \u001B]8;id=288203;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py\u001B\\\u001B[2mutils.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=337502;file:///Library/Python/3.9/site-packages/sagemaker_core/main/utils.py#344\u001B\\\u001B[2m344\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    WARNING  No config provided. Using default config.                                 utils.py:344\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Found credentials in shared credentials file: ~\u001B[38;2;225;0;225m/.aws/\u001B[0m\u001B[38;2;225;0;225mcredentials\u001B[0m \u001B]8;id=439359;file:///Library/Python/3.9/site-packages/botocore/credentials.py\u001B\\\u001B[2mcredentials.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=831253;file:///Library/Python/3.9/site-packages/botocore/credentials.py#1278\u001B\\\u001B[2m1278\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     Found credentials in shared credentials file: ~/.aws/credentials   credentials.py:1278\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "Output()" - ], - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "b0346627a92443f28c46d3ce8402f842" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:12:53]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Final Resource Status: \u001B[1mCompleted\u001B[0m \u001B]8;id=750619;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py\u001B\\\u001B[2mresources.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=635418;file:///Library/Python/3.9/site-packages/sagemaker_core/main/resources.py#26595\u001B\\\u001B[2m26595\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:12:53] INFO     Final Resource Status: Completed                                    resources.py:26595\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [], - "text/html": [ - "
\n"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/plain": [
-       "\u001B[2;36m                   \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO    \u001B[0m Found credentials in shared credentials file: ~\u001B[38;2;225;0;225m/.aws/\u001B[0m\u001B[38;2;225;0;225mcredentials\u001B[0m   \u001B]8;id=493314;file:///Library/Python/3.9/site-packages/botocore/credentials.py\u001B\\\u001B[2mcredentials.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=633308;file:///Library/Python/3.9/site-packages/botocore/credentials.py#1278\u001B\\\u001B[2m1278\u001B[0m\u001B]8;;\u001B\\\n"
-      ],
-      "text/html": [
-       "
                    INFO     Found credentials in shared credentials file: ~/.aws/credentials   credentials.py:1278\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: INFO: Either inference spec or model is provided. ModelBuilder is not handling MLflow model input\n", - "ModelBuilder: INFO: Skipping auto detection as the image uri is provided 433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest\n" - ] - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 3 + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "#### Real Time Deployment", - "id": "b0d045e8f64e3787" + "id": "b0d045e8f64e3787", + "metadata": {}, + "source": [ + "#### Real Time Deployment" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "96bb41b4146549dd", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:16:00.777140Z", "start_time": "2024-10-30T20:12:53.258703Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "real_time_predictor = model_builder.deploy(\n", " initial_instance_count=1)" - ], - "id": "96bb41b4146549dd", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" - ] - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=53030;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=517463;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:12:54]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=492611;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=991435;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:12:54] INFO     Creating endpoint-config with name                                     session.py:5817\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=428897;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=73333;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     Creating endpoint with name                                            session.py:4639\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:15:26]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=746109;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=339045;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:15:26] INFO     Arguments: serve                                                       session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=949559;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=372836;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Starting gunicorn 19.9.0        session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=396501;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=262866;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Listening at:                   session.py:8308\n",
-       "                             http://0.0.0.0:8080 (1)                                                               \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=447558;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=304870;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [1] [INFO] Using worker: gevent            session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m21\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m21\u001B[0m \u001B]8;id=573039;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=52847;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [21] [INFO] Booting worker with pid: 21    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m22\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m22\u001B[0m \u001B]8;id=16999;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=905822;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [22] [INFO] Booting worker with pid: 22    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=955762;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=426873;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:16:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m21\u001B[0m \u001B]8;id=101338;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=134270;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:15:16:INFO] Model loaded successfully for worker : 21   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:16 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m23\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m23\u001B[0m \u001B]8;id=22160;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=133976;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:16 +0000] [23] [INFO] Booting worker with pid: 23    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=833189;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=957374;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:16:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m22\u001B[0m \u001B]8;id=404040;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=396553;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:15:16:INFO] Model loaded successfully for worker : 22   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=779028;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=90292;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:17:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m23\u001B[0m \u001B]8;id=693683;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=319507;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:15:17:INFO] Model loaded successfully for worker : 23   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:15:17 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m24\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m24\u001B[0m \u001B]8;id=6848;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=288255;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:15:17 +0000] [24] [INFO] Booting worker with pid: 24    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=941362;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=289797;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:15:17:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m24\u001B[0m \u001B]8;id=70291;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=909473;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:15:17:INFO] Model loaded successfully for worker : 24   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:15:59]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=778192;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=467032;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-12-54-372 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:15:59] INFO     Created endpoint with name                                             session.py:8294\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-12-54-372                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" - ] - } - ], - "execution_count": 4 + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "#### Serverless Deployment", - "id": "5104c00db40527fd" + "id": "5104c00db40527fd", + "metadata": {}, + "source": [ + "#### Serverless Deployment" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "9a5de6c58da465f9", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:18:15.929714Z", "start_time": "2024-10-30T20:16:00.806356Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from sagemaker.serverless.serverless_inference_config import ServerlessInferenceConfig\n", "\n", "serverless_predictor = model_builder.deploy(\n", " inference_config=ServerlessInferenceConfig())" - ], - "id": "9a5de6c58da465f9", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" - ] - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:16:00]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=245422;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=544458;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:16:00] INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:16:01]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m Using already existing model: \u001B]8;id=30512;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=969586;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4036\u001B\\\u001B[2m4036\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:16:01] WARNING  Using already existing model:                                          session.py:4036\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a99cdc                                           \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=503479;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=809762;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     Creating endpoint-config with name                                     session.py:5817\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:16:02]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=858959;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=350075;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:16:02] INFO     Creating endpoint with name                                            session.py:4639\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:02]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=292965;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=22365;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:18:02] INFO     Arguments: serve                                                       session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=58566;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=799327;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Starting gunicorn 19.9.0       session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=648010;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=18217;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Listening at:                  session.py:8308\n",
-       "                             http://0.0.0.0:8080 (15)                                                              \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:03]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m15\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=479134;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=856148;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:18:03] INFO     [2024-10-30 20:17:57 +0000] [15] [INFO] Using worker: gevent           session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m30\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m30\u001B[0m \u001B]8;id=961257;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=479478;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:17:57 +0000] [30] [INFO] Booting worker with pid: 30    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:17:57 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m31\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m31\u001B[0m \u001B]8;id=445721;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=120162;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:17:57 +0000] [31] [INFO] Booting worker with pid: 31    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=119512;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=771628;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B]8;id=188951;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=466698;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO       monkey.patch_all(subprocess=True)                                    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=461440;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=156860;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B]8;id=382247;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=161965;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO       monkey.patch_all(subprocess=True)                                    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:17:57:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m31\u001B[0m \u001B]8;id=415016;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=24361;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:17:57:INFO] Model loaded successfully for worker : 31   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:17:57:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m30\u001B[0m \u001B]8;id=927407;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=387335;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:17:57:INFO] Model loaded successfully for worker : 30   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:14]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=549964;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=34785;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-16-01-492 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:18:14] INFO     Created endpoint with name                                             session.py:8294\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-16-01-492                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" - ] - } - ], - "execution_count": 5 + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "#### Async Deployment", - "id": "6462fe2d8f85dba7" + "id": "6462fe2d8f85dba7", + "metadata": {}, + "source": [ + "#### Async Deployment" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "271e8dcfb015d69a", "metadata": { "ExecuteTime": { "end_time": "2024-10-30T20:21:27.809852Z", "start_time": "2024-10-30T20:18:15.955152Z" } }, - "cell_type": "code", + "outputs": [], "source": [ "from sagemaker.s3_utils import s3_path_join\n", "from sagemaker.async_inference import AsyncInferenceConfig\n", @@ -1067,398 +295,22 @@ " inference_config=AsyncInferenceConfig(\n", " output_path=s3_path_join(\"s3://\", bucket, \"async_inference/output\")),\n", ")" - ], - "id": "271e8dcfb015d69a", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" - ] - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:15]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B]8;id=96650;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=60711;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4025\u001B\\\u001B[2m4025\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:18:15] INFO     Creating model with name: model-name-f76fb1fa96fa11efb5372ad633a99cdc  session.py:4025\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:16]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;215;175;0mWARNING \u001B[0m Using already existing model: \u001B]8;id=492060;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=45096;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4036\u001B\\\u001B[2m4036\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a99cdc \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:18:16] WARNING  Using already existing model:                                          session.py:4036\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a99cdc                                           \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:19]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=21634;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=59349;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:18:19] INFO     Creating endpoint-config with name                                     session.py:5817\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:18:20]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=747862;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=622744;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:18:20] INFO     Creating endpoint with name                                            session.py:4639\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:21:04]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Arguments: serve \u001B]8;id=543297;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=668264;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
[10/30/24 13:21:04] INFO     Arguments: serve                                                       session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Starting gunicorn \u001B[1;36m19.9\u001B[0m.\u001B[1;36m0\u001B[0m \u001B]8;id=652057;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=107097;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Starting gunicorn 19.9.0        session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Listening at: \u001B]8;id=775956;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=797582;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttp://0.0.0.0:8080\u001B[0m \u001B[1m(\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Listening at:                   session.py:8308\n",
-       "                             http://0.0.0.0:8080 (1)                                                               \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Using worker: gevent \u001B]8;id=240430;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=74815;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [1] [INFO] Using worker: gevent            session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m21\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m21\u001B[0m \u001B]8;id=145896;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=403100;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [21] [INFO] Booting worker with pid: 21    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=823558;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=712577;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m21\u001B[0m \u001B]8;id=821756;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=618499;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 21   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m22\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m22\u001B[0m \u001B]8;id=839918;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=464935;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [22] [INFO] Booting worker with pid: 22    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=401368;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=530734;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m22\u001B[0m \u001B]8;id=539268;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=580181;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 22   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m23\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m23\u001B[0m \u001B]8;id=927105;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=974327;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [23] [INFO] Booting worker with pid: 23    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=206226;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=154863;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m23\u001B[0m \u001B]8;id=892101;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=519664;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 23   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-\u001B[1;36m30\u001B[0m 20:20:51 +\u001B[1;36m0000\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m24\u001B[0m\u001B[1m]\u001B[0m \u001B[1m[\u001B[0mINFO\u001B[1m]\u001B[0m Booting worker with pid: \u001B[1;36m24\u001B[0m \u001B]8;id=564172;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=217009;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30 20:20:51 +0000] [24] [INFO] Booting worker with pid: 24    session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[38;2;225;0;225m/opt/amazon/lib/python3.7/site-packages/gunicorn/workers/\u001B[0m\u001B[38;2;225;0;225mggevent.py\u001B[0m:\u001B[1;36m65\u001B[0m \u001B]8;id=669354;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=873117;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imported may lead to errors, including RecursionError on Python \u001B[1;36m3.6\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m It may also silently lead to incorrect behaviour on Python \u001B[1;36m3.7\u001B[0m. Please \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m monkey-patch earlier. See \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[4;38;2;0;105;255mhttps://github.com/gevent/gevent/issues/1016.\u001B[0m Modules that had direct \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m imports \u001B[1m(\u001B[0mNOT patched\u001B[1m)\u001B[0m: \u001B[1m[\u001B[0m\u001B[38;2;0;135;0m'urllib3.util \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m, \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[38;2;0;135;0m'urllib3.util.ssl_ \u001B[0m \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;0;135;0m(\u001B[0m\u001B[38;2;0;135;0m/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py\u001B[0m\u001B[1;38;2;0;135;0m)\u001B[0m\u001B[38;2;0;135;0m'\u001B[0m\u001B[1m]\u001B[0m. \u001B[2m \u001B[0m\n", - "\u001B[2;36m \u001B[0m \u001B[1;38;2;225;0;225mmonkey.patch_all\u001B[0m\u001B[1m(\u001B[0m\u001B[38;2;215;175;0msubprocess\u001B[0m=\u001B[3;38;2;0;135;0mTrue\u001B[0m\u001B[1m)\u001B[0m \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     /opt/amazon/lib/python3.7/site-packages/gunicorn/workers/ggevent.py:65 session.py:8308\n",
-       "                             : MonkeyPatchWarning: Monkey-patching ssl after ssl has already been                  \n",
-       "                             imported may lead to errors, including RecursionError on Python 3.6.                  \n",
-       "                             It may also silently lead to incorrect behaviour on Python 3.7. Please                \n",
-       "                             monkey-patch earlier. See                                                             \n",
-       "                             https://github.com/gevent/gevent/issues/1016. Modules that had direct                 \n",
-       "                             imports (NOT patched): ['urllib3.util                                                 \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/__init__.py)',                  \n",
-       "                             'urllib3.util.ssl_                                                                    \n",
-       "                             (/opt/amazon/lib/python3.7/site-packages/urllib3/util/ssl_.py)'].                     \n",
-       "                               monkey.patch_all(subprocess=True)                                                   \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m \u001B[1m[\u001B[0m\u001B[1;36m2024\u001B[0m-\u001B[1;36m10\u001B[0m-30:20:20:51:INFO\u001B[1m]\u001B[0m Model loaded successfully for worker : \u001B[1;36m24\u001B[0m \u001B]8;id=901867;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=827841;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8308\u001B\\\u001B[2m8308\u001B[0m\u001B]8;;\u001B\\\n" - ], - "text/html": [ - "
                    INFO     [2024-10-30:20:20:51:INFO] Model loaded successfully for worker : 24   session.py:8308\n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:21:26]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Created endpoint with name \u001B]8;id=56717;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=391476;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#8294\u001B\\\u001B[2m8294\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-18-16-602 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:21:26] INFO     Created endpoint with name                                             session.py:8294\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-18-16-602                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: DEBUG: ModelBuilder metrics emitted.\n" - ] - } - ], - "execution_count": 6 + ] }, { - "metadata": {}, "cell_type": "markdown", - "source": "#### Batch Deployment", - "id": "f8458db5bfb1a0c5" + "id": "f8458db5bfb1a0c5", + "metadata": {}, + "source": [ + "#### Batch Deployment" + ] }, { - "metadata": {}, "cell_type": "code", + "execution_count": null, + "id": "5a80ccf640a5dca9", + "metadata": {}, + "outputs": [], "source": [ "from sagemaker.s3_utils import s3_path_join\n", "\n", @@ -1471,31 +323,31 @@ " output_path=s3_path_join(\"s3://\", bucket, \"async_inference/output\"),\n", " )\n", ")" - ], - "id": "5a80ccf640a5dca9", - "outputs": [], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "markdown", + "id": "d97c14830180dd4", + "metadata": {}, "source": [ "#### MultiModel Deployment\n", "\n", "Similar syntax applies for Multi-Container Endpoint as well" - ], - "id": "d97c14830180dd4" + ] }, { + "cell_type": "code", + "execution_count": null, + "id": "9788d4f7fab3b7ca", "metadata": { - "jupyter": { - "is_executing": true - }, "ExecuteTime": { "start_time": "2024-10-30T20:30:57.436543Z" + }, + "jupyter": { + "is_executing": true } }, - "cell_type": "code", + "outputs": [], "source": [ "from sagemaker.compute_resource_requirements import ResourceRequirements\n", "\n", @@ -1509,56 +361,15 @@ " limits={},\n", " ),\n", " initial_instance_count=1)" - ], - "id": "9788d4f7fab3b7ca", - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ModelBuilder: INFO: ModelBuilder will collect telemetry to help us better understand our user's needs, diagnose issues, and deliver additional features. To opt out of telemetry, please disable via TelemetryOptOut in intelligent defaults. See https://sagemaker.readthedocs.io/en/stable/overview.html#configuring-and-using-defaults-with-the-sagemaker-python-sdk for more info.\n" - ] - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m[10/30/24 13:30:58]\u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint-config with name \u001B]8;id=987242;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=233313;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#5817\u001B\\\u001B[2m5817\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-30-57-438 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
[10/30/24 13:30:58] INFO     Creating endpoint-config with name                                     session.py:5817\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-30-57-438                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001B[2;36m \u001B[0m\u001B[2;36m \u001B[0m\u001B[1;38;2;0;105;255mINFO \u001B[0m Creating endpoint with name \u001B]8;id=10549;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py\u001B\\\u001B[2msession.py\u001B[0m\u001B]8;;\u001B\\\u001B[2m:\u001B[0m\u001B]8;id=757746;file:///Users/nargokul/workspace/sagemaker-python-sdk-staging/sagemaker-python-sdk-staging/src/sagemaker/session.py#4639\u001B\\\u001B[2m4639\u001B[0m\u001B]8;;\u001B\\\n", - "\u001B[2;36m \u001B[0m model-name-f76fb1fa96fa11efb5372ad633a9-\u001B[1;36m2024\u001B[0m-10-30-20-30-57-438 \u001B[2m \u001B[0m\n" - ], - "text/html": [ - "
                    INFO     Creating endpoint with name                                            session.py:4639\n",
-       "                             model-name-f76fb1fa96fa11efb5372ad633a9-2024-10-30-20-30-57-438                       \n",
-       "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "execution_count": null + ] }, { - "metadata": {}, "cell_type": "code", - "outputs": [], "execution_count": null, - "source": "", - "id": "724aec7045fd80f1" + "id": "724aec7045fd80f1", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb index c738093772..944a3ce941 100644 --- a/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb +++ b/src/sagemaker/modules/testing_notebooks/base_model_trainer.ipynb @@ -31,7 +31,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Simple Case Minimally Setup ModelTrainer and Execute Commands" + "## Script Mode Case - 1" ] }, { @@ -51,7 +51,7 @@ "model_trainer = ModelTrainer(\n", " training_image=pytorch_image,\n", " source_code=source_code,\n", - " base_job_name=f\"{alias}-miminal-case\",\n", + " base_job_name=f\"{alias}-simple-case-1\",\n", ")" ] }, @@ -68,39 +68,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Simple Script Mode Case - 1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sagemaker.modules.train import ModelTrainer\n", - "from sagemaker.modules.configs import SourceCode\n", - "\n", - "pytorch_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.0.0-cpu-py310\"\n", - "\n", - "source_code = SourceCode(\n", - " source_dir=\"basic-script-mode\",\n", - " command=\"python custom_script.py\",\n", - ")\n", - "\n", - "model_trainer = ModelTrainer(\n", - " training_image=pytorch_image,\n", - " source_code=source_code,\n", - " base_job_name=f\"{alias}-simple-case-1\",\n", - ")\n", - "\n", - "model_trainer.train()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simple Script Mode Case - 2\n" + "## Script Mode Case - 2" ] }, { @@ -137,7 +105,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Distributed Training Case" + "# Distributed Training Setup" ] }, { @@ -276,7 +244,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Model Trainer Torchrun - Manual" + "## Distributed Training - Case 1" ] }, { @@ -343,7 +311,7 @@ " environment=env,\n", " hyperparameters=hyperparameters,\n", " source_code=source_code,\n", - " base_job_name=f\"{alias}-distributed-case\",\n", + " base_job_name=f\"{alias}-distributed-case-1\",\n", ")" ] }, @@ -364,7 +332,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Model Trainer Torchrun - Abstractions" + "## Distributed Training - Case 2" ] }, { @@ -407,11 +375,7 @@ "metadata": {}, "outputs": [], "source": [ - "from sagemaker.modules.distributed import (\n", - " Torchrun,\n", - " MPI,\n", - " SMP\n", - ")\n", + "from sagemaker.modules.distributed import Torchrun, SMP\n", "\n", "source_code = SourceCode(\n", " source_dir=\"distributed-training/scripts\",\n", @@ -430,6 +394,85 @@ " )\n", ")\n", "\n", + "model_trainer = ModelTrainer(\n", + " training_image=hugging_face_image,\n", + " compute=compute,\n", + " hyperparameters=hyperparameters,\n", + " source_code=source_code,\n", + " distributed_runner=torchrun,\n", + " base_job_name=f\"{alias}-distributed-case-2\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "test_data = InputData(\n", + " channel_name=\"dataset\",\n", + " data_source=training_input_path,\n", + ")\n", + "model_trainer.train(input_data_config=[test_data])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Distributed Training - Case 3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.train import ModelTrainer\n", + "from sagemaker.modules.configs import (\n", + " Compute, SourceCode, InputData\n", + ")\n", + "\n", + "compute = Compute(\n", + " instance_count=2,\n", + " instance_type=\"ml.g5.48xlarge\",\n", + " volume_size_in_gb=96,\n", + " keep_alive_period_in_seconds=3600\n", + ")\n", + "\n", + "hugging_face_image = \"763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-training:2.0.0-transformers4.28.1-gpu-py310-cu118-ubuntu20.04\"\n", + "\n", + "hyperparameters = {\n", + " \"dataset_path\": \"/opt/ml/input/data/dataset\",\n", + " \"epochs\": 1,\n", + " \"max_steps\": 100,\n", + " \"fsdp\": \"full_shard auto_wrap\",\n", + " \"fsdp_transformer_layer_cls_to_wrap\": \"LlamaDecoderLayer\",\n", + " \"gradient_checkpointing\": True,\n", + " \"optimizer\": \"adamw_torch\",\n", + " \"per_device_train_batch_size\": 1,\n", + " \"model_id\": model_id,\n", + " \"access_token\": access_token,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sagemaker.modules.distributed import MPI\n", + "\n", + "source_code = SourceCode(\n", + " source_dir=\"distributed-training/scripts\",\n", + " requirements=\"requirements.txt\",\n", + " entry_script=\"run_clm_no_trainer.py\",\n", + ")\n", + "\n", + "\n", "# Run using MPI\n", "mpi = MPI(\n", " mpi_additional_options=[\n", @@ -446,7 +489,7 @@ " hyperparameters=hyperparameters,\n", " source_code=source_code,\n", " distributed_runner=mpi,\n", - " base_job_name=f\"{alias}-distributed-abstractions\",\n", + " base_job_name=f\"{alias}-distributed-case-3\",\n", ")" ] }, @@ -467,14 +510,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## ModelTrainer Recipes" + "# ModelTrainer Recipes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### SageMaker GPU Recipe" + "## Training Recipes - Case 1" ] }, { @@ -537,7 +580,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Custom Recipe" + "## Training Recipes - Case 2" ] }, { @@ -572,7 +615,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Trainium Recipe" + "## Training Recipes - Case 3" ] }, { diff --git a/src/sagemaker/modules/testing_notebooks/install_docker.sh b/src/sagemaker/modules/testing_notebooks/install_docker.sh new file mode 100644 index 0000000000..11d4fe7758 --- /dev/null +++ b/src/sagemaker/modules/testing_notebooks/install_docker.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +sudo apt-get -y install ca-certificates curl gnupg + +sudo install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +sudo chmod a+r /etc/apt/keyrings/docker.gpg +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get -y update + +# pick the latest patch from: +# apt-cache madison docker-ce | awk '{ print $3 }' | grep -i 20.10 +VERSION_STRING=5:20.10.24~3-0~ubuntu-jammy +sudo apt-get install docker-ce-cli=$VERSION_STRING docker-compose-plugin -y + +# validate the Docker Client is able to access Docker Server at [unix:///docker/proxy.sock] +docker version \ No newline at end of file diff --git a/src/sagemaker/modules/testing_notebooks/sagemaker-2.232.4.dev0-py3-none-any.whl b/src/sagemaker/modules/testing_notebooks/sagemaker-2.232.4.dev0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..4632026fa70e81368464536583247ccc7fc113ed GIT binary patch literal 4471800 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

g^n_1$!@e40W}Q8 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 qS#y%*-=RK|2krj0}bY4+6wyJFh;aiaBaFOgZ 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

OVVYDI+H3 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%0A%Fttp^;x3vA4KhM-GhW)^4%r366{Swk)RI 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 {dbfTUR|`prU1oumO}0Uy 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

&<%PgI7Ac66{QRL+`WpX3U|1Oq(&<>%^^dc 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

TF-&LurFkOzPgt^C8jx4sZg|ZEka#wn< zLUS>X8@pv%+0wJ{Pu_LyeVxn?Z|gT_BSIJWo1KNXqZb(lcko zZ?>+DJP*LX?#Jz$!Y3%!fXVU1AN?>0a8;y+@CIoHj6l@YC4x9J{th%FBVC))z>SoJ zmF-<38qg-#E6b#hpv}KlN?@t6!dNtiS+Kx8$yS^ZU@Z0a?mbh{Sqi0rrjqJv! zqo1rzT3scV7EKn>)1%ZTmiJpr$Ly`RD?Cf|{@n$?6Q2cIAW<^XkrRu0nnZa&<-gNU znLzzn7`V70TdVZxUj>HHT7`!Nh{q>XutyZ%t4sr6X3{E(9uD4kVsm^y&LEketNlk5 z0e$de6L~bdk8b`f95CqR{^emLvG&Y#_-AXNprB{!D*?}92gLGkI0{Y@fsAdDhedHiaL_KUF+kklnY;?G) z5D_KVkYsPQTJB;#8tqw`{m*Dg($&i4Mnz|(0giCO=#g8p@WIufnZ5h1&p{+Ua77fF z)IFZicL=*{^tL^wF8$pN+(t;Woxyhp#~;;IGuQQZL`s1Ymd_UPFVLT4xW(xX*Pv>P zai>(Gyujp(%xcQ&*VsrUK;o+h?4;z)u`)V;#Wj(5a zc$T_}MZI~WS1G@x%igLs)#`8s0_FbMh!%r+ak?U%TUruHy(+C)k~uF25@PBx=w@}J z9r0`Cw5Pyz^~{=gFMZ35;(Bu=){R7Rst@vSc&=^an(+}~WnY>YE@->dv8=GH z=Lb`#Z;rUaTes_&+G*iJ({5h>1+6pU8HxP!}^zps1&zi@S+Kcu1xx%*rXbP9n6ENT*E}hBYLf z_Yp+Xj%{+1O}rHqt)(aNi@9RiNqE0bclp-cfr0M8o$w_C;5HHp zOP!#MNo}Mtv)EY8Oyxj_1PwN~8ap<_V=gx&LFqT-zi};Ab8~9I80H{rmrz;VzHzvK z91sawpkeL=R2K4eS5mO`&@r}~Q$h@_#R+QS@Zx4sESR!02R4_G-~SI`?--;zAH8d~ z?cVL(wrz9wZkxMp+qP}nwr$%_+qO0RPSvTJ`PVr!sY<>i_4|@kl3Hus*Y&sM2Kf96 zd*a>CoF*FDkSt}BfuM>FhiL8?Z3sD63d^2t>_h49I1lWvV&#tcc6mfWzP`KC1&t}e zlmCHb98bO8pPP|2+g=RvW@4P|MvMgB+LT0osyEDM^Ndc zl_R;BOuY(>!Du5fX{GnXIn$$ETl1p>B{_o%4K^pP26urQPUoy*^x;v^A6RulL(Sum z`lOGb&AEEz%8o9RsjX>F(3iWCgfy%JhSOF;In@)!xXQ|JJ$nG87CiHaSBXcgzNc=i zULEyr+IrUs2ge+B(hiymo?%A|m={COtQ+q1sFYS$aWHx+9y{n}K*k*ZA;?N#cuJac zNs`5efuT^>{$uIH#XqQMngM{;R<)X$XH}E6rc({L!QhEfyi*Z5Zx>AS$NC<-QZ=ey zhoZrxU>5QNKP#%Vn>qDz@b5-a#qjBroaCqGsc{E!?bL;-n*|&kJ9B$P(;HNShXc>$ zndt6S#!K_XjOEF|C?Rd8P+0{3G^2*2K8u*l^oBm&dEAaZy(8}q(1jV3&!a0`$IZ0Q zTkkgc>FMmuR?k&JV-wlV@9kyCA){rFCz-@x^=FP7wC13`RpyMWe}E5LJNB5Ph>X|W ze`nVGbG&cu$8J6YMg5bP$f+5Pu4SV}zXBs{Z=do9#|UZ|BEuB)=LdG37F7MkY8dM0 z&TwOHlcK-*ZjwKM+-A(JYjbwZuRA!m{;c7q(rb2A8Kisiw7kezHgZu!QRwaj<(MXY<=p zTcHmO?B4E$zigO(I_Z40(|d1Xe9wB_(zi{f@jV7DY15PXY*!uJRen0jnspr)FMVZ3 zEAKoQy0iYzIq9FzFA&Ioho9~L#IE>HIA~+<_Wx84g8q-l?^|q=4JbMg(7qoK&<}L` ze~ZBQU&|OdIQ}5Fe^&gDsHJsoeb5~LbzQRKY|C(!D{JC1!w>qe7psMwZ)`Q7*~Fg! zlfs^TL!~m=-KlQGgrS#jm~WeJOeHQ}t@C6a!(%1}m%uI}MZZoQy@x8f^m=u}@jg@3 zAc2%@KwVuU5KCZ#GDSVHDMug9(#BTCPjmyL#F5*I-rsU5yuGffn z7&_6|P<+yuf?;JV#)Tv5kIp`cSuaN<`Hxxum)Bd(1tx4{dF7nzxVNNaZaqSddOUjN zBzSD7Jp?T*SvSpKv95f-Zwq{FJPnvfc(})!lqi^Mz{M1^q^dxuAp-$w3G9x~SicZc z#P?N%zQf%B;;teed`9#)lEe>)8{becQGh5cYA;-MNTF3grT>6a;)rfPZGkKNmfk$ffeKnql&mVg&1y}_{p;!B)X+t`*3{ZY#Y96y zMnr|AD;FeFNlH&$4n5rrnUp|{VCUWh8LAuIt8iE^MXd#4q;-t~E8MFXO}=s?5SLvl zAZa&C*X6We6y?B+xZWvozqMC@ToV1yc_|d^Yh_4%^6i`{OT5;Y@wnXHd%vM`P}T7 zXr;bAw}9U&LDTu7jKE^{FW*ZLSaAE$@2S0r$~+;_RRfT5ORUi`wwa=Lm_}yx=zo!U zg4KU*4HM;zR=%5@e3DHH?I0hK!8&kLQbbTxO9=N|iO3nte`X$lPY(jUR8k66(P)54 z)`iE5LnDW_mnG7LDhvi%caP>v%acY{bxVJP$sbdkQGQ_L#X2?&p69_Ps*LVz8GUiA1iJjZWqrqtvUn8_T!TeYTe-Tq@h0wlY* z9Qe-NzW(sP*Q7Ps!V79cHJi!n>3tr-U~Jh_$@_DU!!O=FfM!vFDRTg^5y z(qO+$l=D|Ce1a{WECdw(B!{uvUGIcD!$yZCt6r)Tf;d_r*U z-?@AEwA4p?Jv`g&So>GBH7QF^M^Cp6-Y}8zYSR}|5iyam^LF{MHvnJe;q_+y^!0GO z#^dVZ&dd$FrIR(~4PE_>?wP3r7C2b4vvA7u;`XFzf-j;_jq{ZueWO8jV*y0W@Hb=e znIZ{imC7AWTUu_suB#E?EVcWowAD{SBd}&5oYZIzkzVyGWx4n8YQmIgopxV(LT4M- zn0P}rKJC&-eNQ=tkmtc--}+AitwSy=rMwC1T!o>fOr`}y3+x$6epnAE1HHLS@%&N< zwe%SaEEgDPiN+UZ)>Ior<}2R<{giC9|3Hw2I*9O@CrQUT+4oNXsV+9425+zd(15fE zOsNdfGQO(j=U!6*RZWCUuWZ)qFn89rW_T4V-0RR9D;W#nFF?6WtXW$=%muz%l1no{ z1c$yW2Ew8^lO?#UnY6#+IRASTNbB&x9I9i#;MxENs0z@tF0_ zxASEQi-+3KDQe{sNNtKXBYu8VsGyZkIRl|M#IQ#6Z~2fBuzb-8RG>~QQLC8oLQXTJ z(`&gM=KTvM>GHf`H|YDiiqQO^^Rz^JG)NVD#S&F~>m^?UTz@v} z6?2w%QwXRNa7kfw#bmOx(q%}~K|Kmvw@beGx>5w5W*$_|E~;OTSMdvN!B=U$bTv{7 zIW$_s+hq8vlwrAIW(Ckp8P&GP@^g)5gRjtoLL9TfI?Ug<)_X*uY5TVySxh!fnFeBbaFICrDQyFh%%JRBI)qPL=^i+ zQCKXOCcdCKYZzNQdUV7L7723$A96EPsuSx77o8rWI8AgZO+Z%wlx^&TxE1j#+@y#} ztHs8gc}+7?fJZGeb?P3&RfFiEvuV{Iv&5}@d2A*3QNmUIR`;OX$B6VP?rFq{CsGlq z`xO+aL`kx<^(=8;j`b&HbNg$*D?Ug)KkaP&7Oh5mR@wr~5;Io}w_%xQ$fo2b5Nv6r z5*IcS8v@h} zmOql9!OnF8@46<5I|Xf{gD8I9n8zGu_ywftCTS7+5R{F^9G~{q$O+XD5F%j{dcKzD zNz0{?O^!Di``4Nd_2{c=SgBT}zAlQ0XjxK~ie^B*0l<)))E*_kj z8!g<%KA$l%h(lqP4lLMHMU0uuMjL*YcR5C2%n(vJ=Jpt_lS5wwS3T+Ljd|~ok~ZJJ zB80L{OSfKrn~`VH$SY1KR87j5yWhQy433ve$yxK93MIXcRrEMpvADHIlq; zF*Hm(9IEJ13T#pzdX&wQo+SJ4)Y;S2AFat+uh!c_SWag|7lqMLU*-O=iX+T#cCx|5 zsQ!u`k^x5E)(pcLv(ckLNGoH70{@P`g{=lWw(Nf~uIr#(WxL4^G{6ATOysa2KHA^2 z>Ijv`GT|+?V%LBS2^J84OS!?ca*UYQ_!hS))0v;#6&mEV8tay7FW&SYI9(7 zYhF}4HO%x4=)^1tL5I7Ic{m8VBWo0OUih!Wx031Qm*n#t!(#?qG=Mvq;z&>zAVG{8 z$#Wu#oGKE+!R{_&ni*c3)9dDf6Q<7oJWZ6Ft^>NsPl0}^xxY}ci9dGUp3gS})vB6+of#x}m5L zQiPhOumHoNpNc+VE1cgObI4KQNpWDWRB-W_Ku!ro^cpSt^n6KRU$CDaTt&ERDm2!b z3anmPSz~~_r$J-$Iv~>Z~|R8tXm$!LP(cWK~7Na@Eg)dX2i?%aDniAk5@3SVM)H zX9_xK_q8V;>FMt4rIDZ6;Vck9q>>i!Cri3zPBTjo=D5C?Yc+@hQ_U!$+z-M9_Xn!;j2uzY2Z- zD5Ul1J?@Bz!f;a>f4UHuSLrcst4aHat9Q! z@F%dt4I*61_9kM5N!<**$JS{Oua79XWrZZ#F;7X|;3MF$I0n*$dgS}GaMoU`A zEGy9mLgzxIdq~D$#&3WmGzom*k{NQPQX{Ep+D*$N^64UIsxAqB>1!Js$26)+Bi1B^ zk#5 zBP7o@=qpjo0$2#ICSi&bJbxAG6(G*!`F;8o3-Uy^t#(4ADhwNK<}*xZh{(+l<@(Um zpW5BoaK7JRtBuIwzVV!q1YBr80QD1}h)i~>3z%9JUi*(vOPKZ}xF09&6_)*Bo=d7+ z?IlrTbF|vVlp|nDYDm!%0MyHaKOdS-)AcSAr37J9C>`aOC(&%YH3U>_!v_y7reItv z#KEoJpOjpJbXvG?MYE%`oZ1XT4O6W>1M#Fsc_sVw`_(xJ%j{*~QP#a)3T75kYY;*L zAd?#s1xEg39<9F|5$~imaJ7}jz1kmqbp=4{(BUtNhn9Oktlw@%IG1rs3Zf-t#MVDXMjEa2$^+5hrv7l2Po0o8_3e`rEQD*%n zrxRj`D)0)GCe%BH!5b#W!Oa4;8zK5R?j&qW$p`_%71Okt?P?pNyHgI2AZD5q#EMx-}i+EN4MRjnv_RiBi2nOj%@Qw1>P)VI|pQ-ixn;l z8v&q#JooZj2KOxm`suNIq3BF z!?WPn@<~n=Yq4aF=pF6OLXANOuvyVCpm+lJB*k(+=rM+^Y2+4io%zHYvO-hP{+X#p#8RKfGBpv}ocK10)p`}gtkHtd>Hti_0X zbw)zR-}imCgQSmHbg^iU4+f6+TH%b}4O3^&pDeyij&Y z<2eN>Ds+cts{Ph-Lf%C2`Cb7avP-BJE=Z{6s>M?)7_V~oke~E=)=G%-9r2z+QIkcX zU4+~ehrtZtgnZ9xh6NBJxl2h31K4l|tblFGMh#D?55eN~@Uvr*=}PBfEN9ni1)1U+ z@S-du7So&6940qC*56u$yfqK7Q>64bc0f)gh`mym>5$av34vmr{hfPz*J zCRNBzRMpLnrGFE@i z)kWCOHw|r3EzS-GKBw_%rJBRbHOhC`$b~_EOxDM4H;bXA9$)M}bOdHJMn=;gnO1Yt zua*cud-+@>d2_0A#p^|;!13jkdeqK$2`LA)E^Sy7$XuL`o(N;U&Do7u>jLnWFe2P% zYiF*B`|P=}xq7D(3MlIe>MUtNl(Z#li9f+xR!g}|%THyuWJ|WrI!S+B)?cs8c#9Jz zuOM2oJzN-OaBS&w5e%8((m5&0EmFzLJO0MEe6FO-vU^NEc}PaM07`tImHJwSXS?)3 zZO7(zSl8LzyGb9hSB0}d8{9VOxU+OrcK0~&)mgvQy0|rlJRnx?we$0?E>%(1E&)(T&S6pP;^8YUa+UWxjy)deE>+T0#b9LvI}Zdu7}JxrJ45v&tE1kST{y- z`B~xq;j z|BY#E>gvi5;sit=#VR7~(q!e_xL%8xb4Q@V$I?}azv$WfmvXSG`>8R7 zq`3i1cf{&A1Mo{9?o`Q3U;xnCZT)GNk`P_ovvvcNrRK^pQD}ljUOuF#6zb&7elj42F34R`Slg3m_4{MR2X%P+hJExHC(K_r zds3V{Eh1c{pyuh>BpSLQsz(&pDY_@^*IQESHAGs9($Oql!X>UFD(UBJfE22q{x*B= zo98HQ4KEIe1ONQq7T&E}#5qIx!Xu3LXu}0Bn2LpI3HLDFj(6BKT9Wq=lis9^-<7%d zWX;#_7H8YY^Ukh!7V}Lw-fK;fOAPWZfKYvpjN9mt;ldM`u9|4^i`CLTqZ8}e$J%^V zb8HgZ&MCOVh=(C5HRrt?IdIoN2)M>uGN9_pk}j{(8vj71nt> z=*8i3hm${B{l#P#|J1ZS~4g z+q@9gody@WOnB)Wd0+AGL1guNv=ZG^OaU}*3@m_R`1;Xptn z|38J~|C`$JUlEztLiS*|e)|>8OC1+He{Ib{rkn6F2`Vz*z)1Ev zB#untw|7PR#^w@zjEV0iuR?4*?sLIEEoH45?-w-ga+Me-Z;zGw0i(B^^33V-!@#WM z2FeQa?SntUddG& z$tiHQn!r?tGzR$hPcofiz`%f9_s7w4a3CTyxZYn&a5p&(jcB8L+gcmd2wR};Y$4#bLxaWr6o58pe^sLtIR=*&9vWzGVM~=OfO?2~ia&@KG=E&CgaQL`PdGmF4^6+%<@wVw7r(B$TT)aHIJ$%4rcY`v7nDo^8 z2Ed5a_OfOL#AS*%7#)aR)iHF(C&0LjE9w`jR%)NPy*R!9zd zB`r;K3U&h(OmI@)8Eq9;xw2JWm~}REbWjJkRvzKP)tgcG27Fd%R#&e#TCZ)GXQNrh zP3P{#(Kb9)r?V@bG&Ph~kV?jjt~fg-lZ3i}iwQk4YkscTJ1pb9_53Nv`^bIaoVP(#=mQ)N>N`ULo~}OVHaJN z%0X^il61~L&t?yvpN z!1k-8y`8tabJjmxt!(XoneevA@alk@H}-cK)~oE~7{sIT`z@sb!LAWrrm7plU^0&bdFIQZraBY zY{2&n9T+t9x)EVIX zj_eG|nzPQU%41>RcWRRvJ_%+9D>?mx5i8opExDczTw8lElQN+u5SP9Oh4*bpL1}|p zp#m9C^t~FJTIV66qUiu*TGK$$bu?PDb;JIC(i3Kq9nD4PT+p2ignt>^(lbmI4;41; zYhKIg?admbP8wS#4n;UafRx8g7!pV&Hnk!W9g^oY0}yQ~e>QA^F}6}Bn5uXdUU%IH z9_pid($pi*+tQK&T786KtR`8=2UGX{VakdNo6vp%SWL<0f5^Yw?|{xiorOcBO92Z_ zs!esLYJLYw3|h9?Q}ao+&&`~i!R5s2%(}pSp5k*78#fW%1p51Zl%V`|?AyG=OT=~I zsK!{TF|qwMRek)Xqcf$VJ@eAbsZOHC3$i@zRW#XC0)ukupsedK7i!Fshx>uh6U2-A zQLYd!HfhcFRJ9f_J+LnZ%G>neXT+vCY$fT}L^{wxj|uh>fasIc{E*@(?W|9olohNu zg+ZnHdAx_B@=g*b+*72Y(IQO6C#OQ z95=iKa+JhPK9A3yU{A<= z9FAv#YXNHAjBSyNV)V2zaeOJ zh_ktoHjSJWRz`;xz#snX`tVZE2Y3Gl`GqDb4z+xJu~D+G0XCqpHMp<*2r4kYgR%R|Q7vhR7>4yeHqmitE~AA>FobfW35eEtn-!Cvb81!9hl4nkY(7i+ z>%-h!;Np69!Ni<}JQQ5MK=Bfn+HlJC4Qu!vAGJhcip82YP0W1V?y;sU)**VrN6OAo z;nq|-w}IQrt#R1#$(ZU{0#HYc(fVpuKIVClJyCaU8>GRq6JfOTwKsWu5cweCOTNha z8u24yCS7C&8&=ES)5&~o%#`m=sI5sC9?z0w*i%GCdg)=hSxxwE&5jOJ4N5?%Smc{f zhWH8(oFWm?lNQZxZfVw~W|Y@BcCf7_jfU5B6wPy&YSPKeM&p@|oLyxFl1Fm|%i2<6 z5M$LSL}J5}`Uaz*@Kd~d)yod`H_=)Ux)AW!6V_$Q2TfD@WKGAx9HpY@X)X8LU$UxiQnht)I+BRvr4mGcPCf4AU{CYW_ke%>Af_(CSLJfv~w09=@giA=UwmR<;` zal*6qTum2R#Ik$1!4;=gq%*9Hofp)GX43C(pT2MVd(#=@Z4zxQ8C2n`AY#6Fw6t65&K7ECDt0nlJN@bsN=n+!5J%L}+?; znyT0le?hz2aN%(ZnE&~_29mi);`tg?E7Ss=r!kgsY2x1?bJfD{mF!Eur!$6s7L?+0 z2&NqnX_Up{zL~nuvqxA?d)3*}c7rlhN0s(!07Fr>fv{F2M`be|XH{0(Zf?c2F-q>_ zMAQy2swZ~c$3YO>y(F`|Vd}*6f_)a!pDJF$f<5E53nJKVuSfWUg7n||N3_fP7B$CU!=HD`$UIUwmYnGX??*{ zx0?!WhJ{Er|I^H-r<0ZSqs z8+;kkWLr2F{4t#DSpfcd;P*{j<+qO0c>b^aFyc~=i+=(zQp&kIq8tz$se8F!NKeaL7ym~L7 z!CN~uP6qE8=rel^FxVrxYgZ$S*JXbay~(-vLVZ(q?=zRtFs~wWMVMkI#q17rK)Az; zxbIiIv7lCGF-ZY;y99{%At4F#i7w@Y#AX<{$tOY3jAnGZ&k*qSiSBys#;5g{i4(D= z@_@MPWdyL>ICqilh?hginW=%Z#lVmPLE5K*n2d&}_^k3>F0r@5?n_j*UE^^yl@E1r zg-|g?%MpVGD1g)Mo`Mvse!W}g9?CcU%24r}@pAY@Uviqm{Y9@@A2g`eCB|_JqdCb4 z>YvDRU&%V%$*YO*^8&NzwpUeJvK>rsxx1ib4FWQVZ}3+71UKWXWcu3g|P#tEaj z+_-!KbweMrB|@@L7_{FX;;GRQ>tW?pKcg4uN$ZQAwNWuZ^c}XCd|K{`>&8kuTHY7~ zosGQsgK#4FfpZS?lsilz#?AmAw@50hbk_S=ijRs+-V?bRhQV;_PcLvaYWoK&dvhJ~ zRw3Vn$O0Dl4J=W!!(|O6hN83yH02wXR|&yg$x3swh>zBin}_`5Oeg09j9?Wt0V_Y&q^TKf$xB%7{wVY z+t{rqo|MTpX4_0Ha5t_8K-R1&OM&JFs-pmf)?Nq- zRO)~n!?VGM@Sg{<_S$(ex1tgz!;g#}#>dwZ-oTI>Ygw^}=pby5kbtwwtZmNS zvNDJ;JPwZ5#PbzwJg@+CsJXwbcCWM)?2^=0+&~WB(oEn7)4RXyTHudsn$4eZ{D*v7 z)0CemL%Imc-#KOm0th<(bvETQ20OtfW6N(_S}Zg)EJW^zx|%iEvK+&ypl?9cZ`{Mp zbXP7ZItoEQ?WpUgx$@B9Z*NEmhRW`Oqpxo`>uV}!j`nZkLc!oBNS_pl<8NFD3)6Jn z2<1+P%uKE=M>xXKDZFni_Y40%vFuQOVRvTFs5Qemw0_n~cjpcR2uy2W)nJ z^FgUUw1-IU?_?K+cC}z|4;Q@uje8hka-4ODfyv{ByW*)?fIKs8bqDZLesGduG)`GpIHsO!HzMdbe3H^ zEQQ}Q2OCC6C9<=m^BlfowpwzJCiQAl9p~nwW{ugpB!xZf4K#A(q?$=!E(zeOf^txP z(^#$(?bi|!WLmvgR>%lAz$KPj2v9*YuNc#lj;a8JH(>}^efw%vY^Y#+J%{T~Dm^0* z&OF&#$vG!$FX{u~kQ#vHH9x(#8?b~BEEy(shXh17olAm;%b-qPLv}pjbPgVs&N4ig zRfqbyfZ7vE*9|XdFKUg|8_F9mN5T+N~>4_u;UH`L7dso;{K) zMIB967}hqFAoCh`MNI;tSkBL|pQ~H-1(Z>eMDeJUj`9032rSFP$+-SV@$$#vZAnPF zY2yufPIdR_8GwEtDx|5wHf00X`}doypU@VK=nAxiJ}l=CNtd}*Xjipi18Bn0YF2m6 z!FTIS=g`bD_;YD9l=bfkfN5FveU!r?%G*i2Fe30Y7<1vkG}*V+aG#!<1_Z<3tI7hd znJ!3*6mj^1CC^}Dx^AZMJkDmbn)_cG>FXp^-R1#B6_#pHm02}C>w3}`d%?WnBucy3 z-&@^T9UH+E*u5U*rY(EWU*MoNqUEgFG08FBl@0 z^V1DS-Ivo`u^o3@5CTKUI?gRHgt5!MI9t!*N2uQ}oCF`wB^Q{Xcrf#CNXw6aGZ zj+}GSL$?o6x>vz)g6UoA(o<=EJSiHdHsN7CknkSa=tn%gm1j3p$eYCUnk|rNX2Q8s zT}XvVUi`V6e%hqFj(Muc>sdF|pmvKD;6uc3p@7n|k%+hpi0282 zmG=-`Pbmip4<6E^*wLP|@WyBB4tsI5PWt!+AMem zC-I$7w`^7XiF^q{p@|grCHQelF1@?pzj1L_Dq~v7=&l4>fC_dHe=I$C?@4>;J>n~B zv<7d1@yrU^znaI+l7D>nS~%dv2YZ`jK)XPmdEAZcE`lAH-Bo>0j?MWQYS5w$^ zwHqEjR9%(vz7CEkemvms1kziOj$3@O7IWCC?4=eZAS_DT9}v^hBx^heukK`#D&GDX za*=-UTcjv$6r`4PZmk^2n~|5FbLi0-IS=CeW&-$9s4M99ExjyFQiLtp6zh7-qXuXP zC$y>jGS)DFfp27XSuEk|FIF^D5YDfdNC3M#kDS;E5{o0xKTAdeW5A0*7O(&uHhGU$ z9&9=jpPY%-7-N6wt=*JR&s%QW^SQVg;M#QX@6k- z)UU~?%yrOTJ&&PI9pDXT#L)P;>&L{TyRCaGkT&saTkTd2T(G)D{ol9!E|um`75V(A z>fX=OJCD&Ux;NdBq;hfj^CR^)AeMBmPoe(+_TfS@9UqU1pd7kb=!B1{Onuw& z3qMs`b=|IaoS8LU-Fy#7k_MwIX>py6QLD~Dp#Z3H@Cel?lJIgcq~u?6E4$X$({Y-0 zBx~>J$*fDrrn?exM9vz|Jg_+K+8zZF0|gPfB^nD|t4D0hGR-jDD`05iWBNmfL7+IA zGT0F|!GP8^=^X#xpM?R^>`hK)18rhAu<=+qg+~(LndOo11BEQ>! z?9#O5O@8XDF!&}vr$?PuSMxZmq(<}!s*xxD6?U8emzkb_6=vxC{W}rWuPRIzPo*Ib z+%C=%(|Z$@UD&V)sfNiS$ZjU1T#hl*v+5-~`FjiKTXh+IHwQ-cAMl`tSqNu(l7sEZJ>yu>Mkj9mdb{N!_9I$1k2`}R z!cVV>}$K_oYXHY4`JEqjCg((2Z0`+1m$>l$aHC z*rkvwIInp?~w4vgF68|Nqp1dfD?IZ-nCPtKb&_0Sn#V+=m!sdER5wb896#a z`J;+;0O~p>mb{Jkkm^f}{HMY$)ByK5#O0^kNGyua!k6R@Y8HL-pjl9!hk03KB}lP1 zBE2U5)*g^^M!%*%E#6q}0rZoDhV(?v#Lp_0FxHoT>qvuou`{(622)aqmjFx=$~)xt zsS)G(&>0}h8w-wsMa&0}SKUhr&S)PYA}%Q>#V)7kacr((J`@I;iKn@WRG5e@RQ#)7 zt(Dt=vzKtM$(sz+BL$#YcB|-ZGeiLYji%E;d9{|4l`O_B>z*8!DNUY#%8Cuo3M5_l z7UuHoV~-}#eNFf#=ID)=OUC}Mjy5|3@jlsWtFq^iYM9M`!0?vo>zK={_fHl(6^j+u zai9GE@Aw(sTE*)tC=ieZ%>RFj!O79g^1rZpm5TI#n2)Y=Rk+Lu_|_lHhaYXOb*9SL zu)3N=z>vP+e*{cbBJg;LW%#>o?n1*cXZ-?!^9a#9yQ8jG0ykiM<*p_Dt~w;;4;#_} zDP_e_BXs|Hf=XcRU-`cP`Ot(^l4@Lyex%rovZ*0`qPD;}BEdhBp{PmufK37s)|rzU z%^wq0X_Op_H?&W19cW~G(Hu!2eK{dD+P1$EI(C4e5GKJ4)C=*zx__(yz&!s)6K0~v zz9nrE*g9w51+E;M*9A_%Tr?i)g8*=^ziO##&eqbtGeN!6ej$C%4BIV&Y=;uJu~c&Y zrzyeXpwtS0X~Rnmj(sW&%KL0%P>E39_e`*-)B8n=L{9udE3sz?6Jz%_@+k}xGiQ%Q zJMWs^`-#H0MPI$g(ycRll0GRCL2rvgUtR25nBE`3Zyq)5>P<(K2riCTmp=SN*Dt<^e+-J&iheDmiPBO11%Cl2k zb~b2lmA8W>ZIxH2#H1oOHXBVq(OB+VmtPkpHvHR6)U=zayl|)18PI>x>^#UNzP?Dh zG#x-9mW3+}L-mF0^n&rqI!%8lGaph|fAOR>RZ|cmOWEPp`kq-h$7J;P;r)ZIJ&RtQ zNfrg>%FIFp*h6x^H%XG-&bqRcBdoK(U1?*(q~h- zVaa<&cXquUiHSPnH&&7);j+{nj7hCRd7)fkJEu^SO!m6LIowZ4lr@XKlA`V29VoL` zwr8F*b}emN__9{y3}nUHJ6+1*Qik^Cs@Lr7B|!O$tKDy;OIO6%l;7tP*1g^8>3H`JRnC*MPp|G) z`~NyKTDKOpq56xbDN*-R=J4!md)QyOprfPkkKTXiwHI~1)^E5Ne~Rp<|MVPr(?b&D z_iQOeJ7T@OS1B{pazdwNGd?dS#&@fbX0y1!ak4zG$8deFV|;WES0|KF(KM(nT}bCK z$TPS@a}2&%vA-AJsSd1kp>Jo|ZNI5V&UWeaw#ltGsb53B?bqdItns4&1_A)mpS-0V zWXcb0DDf%Wo~sh>BC+BrTu!FNar%4hZM>m7WT#OvTIc1%Ld&zt>TTA`0>28g9Lb?L zZ&E7l@tS(c1DnPB(8~DX`?J!Qn+zHwP@F!>WHywy%A87E1;=A7Zg3Ame4H}6#~vPh z&2Roka`nHI%>PQu5dR;#lcrAk|DQ>jd=HRrU?8BbpLPCE4bK0TF!&MS{n+On|9kr= z$IIGe2p|nzdxn#Hno+~5@~WKaS#-cuSx5@#9|kTn>?rHGH2K80=5&KPCnUpSPu(0n zZ`Jm$uSO_-atcJ=walp-43pY#8ZsbIxsFyV2E_k_lo{bDip^sDdD_U$8w}%UY8Bzl zWNGuQ#|Sf_`^STITBcDD4?3B!bLwMU+2IRYRNnXo3c@Ox#$g+wL$lR{+-{6Px>yWB z6CoPZ#pd95)r0OkkI4Eh0nHex(LrBkzD5uW3_h?}#;d2CA-eoEDtBupcS|o4)00xI z>5wI04>ZXL?90^gmSn%m=p~+Q3bD#nO%Gq+RbF=%DP=m=+7`t{!#bsIl@s0C1{rIv z5T4PZ^C@I4F63pZWx+tjFW!T zO$~5Z;S-zu!yto&I^DwhGr(h2V6^5KAhh8ci>e)7-%+oaTg z_y1@AueGhA`SacR&pAcFLO~$SD^Uk}5m2Ymo6uUdA;nb7OB>!NkY}{6M=a@2L24K9 z@yr`iNLNV0y>Ke*XN4C(%EiNz5_2rpLv;MZVR*f2CRpJ8B$oc5*o+zD3G<9U3dHcA z{Q&}JqD#FPVviX5E&9`>>b~-BycDPws2;@sp+UA39yc7YR{$_EO__rEJY+Dw1|9mB zK)J1Yfx4K4@`zMZLCQvor3ICb4~>J=28>&= zpvJ;$n?S}}`^le!1GCv-`+eXD!BWzE0nkO+IJpZD`%9YkOq9mqP_q9DH3|@=an>a( zhlvpX3L=BdzQF$LRbL)-1hQ#}g@$w}5Tt;(Yj`f2M|RIM8odSNkdTPzs6?UjwXDAUP7t z+(z*bBCamf#tqCfQ9--}|~OfvWs?43aynY>icjh}bp)B^7hf=E4) z6IOVU2%M-L-3)FSW~qT_!}lDf+XPMik!OC!u6@IgD!i5BN0sjFl$A%uf|me`hh{J< z+v#p~uNjHGc-wj(+d~Gs7qo#0`ahOz;EI-Zsl4U%pO_lnf)MQwO*CQhC61Zw3 z($)F38?vU)a~JI9E1K4X=joPB1}+(n*2&Y3jik`qRHsus{9kbj*}7jO<`GGR zs;wMsn^YFtn7MR82V}a9p#*5Lg?Jr!AgPr7uY7jH-lN5v{%5a4?NBGAgn)2mIZ=N6 zUT;dBcA2W8eM)GdFqqiCfyhTKVQ_&t3}oIQP~)L5ugnbZ59+i)zQT@2(7yxa)X{yw zB3ky}pamn;f|P)0&SEr=^%O>Q0N}4WMbH-F7M#Mks~WJ5mdqG#2U9+W`-MlqD%sQ& zqcGr^bzs%kanx;X!0cOqmx6Tn^lOoZ<|=SIK@l4e=uG6-Olu>Mfkx%RH@WxW`RJG4 z0feRQWl#=T&3NUw3^jf#{m8j@9Owk&Fdi+Ic(XB^3Y*rEnn!5!B`N>ROS#2d>h2gf z2Bm8c^k6M7&^^4C&|CDyxDdEJjgVO~rBhNubZ5eTelTljPi>*k*Asif0mDKN(b{pz zqos?kYGkkjbX}xjF3-GSg($A@XZbeT7x$`$S|d?MixCeDED0$PXE<>>%tWsXyc;OV zhd8;~cs=oDA+!2Jxl+rpNrwE(F(Q6P`SkNuHR^e%9Wh9yUyD@$e9YDxF3*Mf(eZq% zk|*n&%)^Z$runwS)z`=`huwXPwi{4dYup6tlf?noc|i}02@DeHmXMN_-8AM>iiGs0 z8cUm4O@Ws9ihblN(EH9spK`w@h`Wj7|k)5p;m;BD;|u0z;T zaQ~Mvf1Y$T-#(7|-2=oIqM3>WM7^tTKe8M06u1RUd1@(-Zx!briuo8wJ-1tH5jYVm zsNtS&(NSk?Ic(Rm7ZWL#D$XeR-9-~=`M0X%VzS@#U~RMwqK0bLYhE*aQW;vETVZ+B zNI;Xb4f**@O?M8hvFdSyT?gFh-<|adS~IUIt$p$&+F%&PB=AGOTJr^X40S0)dTJT0 zDd2vf{1BGyP{jlAP28e5Q!^NAPaB})f8~LX)GBa~wvt&x$zo2bgtBuH>8cfCI8?EY z<-ZY?F=%zxrm@TaV7~%nR8Eq~_7S8duX7)L5cMYN1mE){&0kq-v!}r2Vw8*(9yM+Z z(fJaHp9XdPog$tsnM6y$UMws#e${C$*>WAQXf5l8UZ2)n>MKFStouL5BA}koJ(a)Z zTa=cU8;|s+90vT|R-vc;qw@nS`OWxuWrhagD~qi-f?sl4MIa@LUaS$$!wIY)J=FBP z+dE47MMj+a>2WZaFixQP3ym4ANJMK9CyhxjMpUiPh352GOS<)t6KbrkOHoC;#0*Yk zbq}+8maz_SP3efSXNVEQkJ!Qy+1%XAvxzce8zqe$drjHems>Urt<3%uzcr{$3|N1` zHB}3LBcPIGyV_|kCpH@vpD-_ChA?nFf{5DV;N_gYgE3VVKYIw6Mrj1jKClp=4JVvc z+D}Oip+!pHy6BZ%Lc?~phasi*Z`VXQ>jp6oHMaNdwJcO+|7Ao(4lOcnz;IaZ7Cx4J zx$rSdQ#qI!i&)RoR|h3~Re^_Kj#EnZ_`77^GPA!?$!x72VtT=$0RzmxxvL#|GTU^` z1P1eA!SAk|1P@4S!DU&yN{|;*imR*ld_^{ErtnOe!Gb*c%Q>H{CN_*%L(O=4%gbq{ zHudyuyk~^coxf$=Z?k1arN;hD;Omq2Ze=y^a}iEtooJEFj_>>jJ{#G636G`qCGBfp z{?AYN0Bt~zVG6NOD%Z6pKDHAvK4CBQQjny%?*HQJ9fL#(qIBD~ZTqxs+qP}%^l96+ zZQHhO+qQXo?!RmrwzO%LEMqXP@B<6;j)!zN*RA1pL-WLbZw=PD$R00HLV8FMdFgJHNl8P6 zbk&{vGd`!{3%Qt6M>HSRSzG+#I+qtsyAsv&PXc(2+cb+tsnObX4O%6;b9PypgO81g?t5OVF8>0P+;3!FSAVL ziTT3Xd~3m8(UaFB-qP#+`r)sOTMw=@ISxX9$wI^Q`I0G}_^H06x<1CYa{P4)LIzmq z;41TD=*_?B!?MC{w*{VMy_}XOHfPNvw~~|7Vn=#pDor+pEVr8=5(F<9KaEiQtiw_p zV`4iUG7TY)j_*22NJTDHIohR%I6s`V2a?K@jDV;{Gjg6S>%c86gUugK;>KYcnU2-D z2EoHJz!W%1wC@1G!wv9Xd!QLo^CW8HH-0LMM9n&_l}CB^9$z%=#`1ZGx)0*vH(gF%M-&g`ft8;eKuJ6!q;-Cvvhvtun6&g8`G6>>{m?Gdlc+y>$;9zj2=Sl6x;z_>*dx(5 z@8PuXea3JyW(OrIRq=`>Z>iW?j$!pmW+vB*q1KYfux71)<0@M}Z=fGdifjJnk!+AL zRP2XZ1Hk6~Y6;$-191v7I;h(_DM!CKKbd4mBb<0h7mOJQEkyH)$o4EzhZNLjJq4c+ zQZtF1WMwU68?f6mFS*y;1a-xr(+`~_#*HPI6txxVdmzzo`4kvQZ!CV@4}#w5pW?v~ z^avsWbAg{!G=Afpox~EFv5Y1BMB|W)(vV-Rxf%Y#kbv8)y^{60hpd#<>MZ^cw_rmV zT=CVuv5Ne@(wVfrKYt*hhpD}*!wnlgKHXe1sSWJJ=DbfV~*!5fWe&0BDrJ)+A#;P3+eQ!|kf9Xj)_^*JC zVwXZvLqptD);r1g>#Lxdhz0nu0ieJ6!uWk>fqzqYJ{{ zT_Drp<}#p+^pX7${a=T+(r^VL48I3kUte^9?qkNrz@89>amc{amdO_m;bSSp(nv>z zX~&fFr_nST{d^W+p9&naAQ$)G(n-uu31pzsQOxAolY6er#^y$dpwV+TE$SuR1XQqd zEAuCS=|`9WmCep9QndqmMc1%319MYj2bj^0Mb9=OX$1@{Sb;AXq4fY?)<`G&S!m2n zQSgAK)GT03l5ftpGcrpMy6bpIV-v~lL!J*FK4f<}l-tYkXhOiqTX0}Q* zGc&}HS+;<3iP!`}c7Fz@#W~smuz(S}$_(0qrEpV#F&vzMJ+JV8&|thg-fm9rPM-F{ z&!Yg90Db6Az2noeFC`-j2fy#4fhM|I2abxbFVH?6lHFX2`N0D6(^nVQ#q!EQB2@b$ zs-L??sa-lra|Y$kv(QUla%U-={WZzC$dQ2czLL3s_9#d3Xm3v+3V@5|g&8{83D;^D zulp&04oXZHhrsB&BQPkJQ=u2vR;y18tjY!H&n+9l4ROAHi(KVY3Sxc~j_W{;3(g09 z8mXYDn6Rpn3fvVL#wj{a3~rkS%4PubsVgWppGUJxc1Uk>kbM{)UlT&BhyzZcMJ(~IlPud!HVRiQ6KvW zZ#_w9SNMBQVQDsq>cD>S_+Zlr9o2f+lOI%-3+Z%F1P!E#*sn(R#xD;QW?%QGPKglL z3x-fKzr*@vT7%LM8j_@$rG*B$pJX z9+Vx<-!pp7H%z|eXO$y4QaY*wx5yqdEefv4o0F~N^z)}cLnZ; zpkTItw?|uKJ*S%O%Rezp3?lE?1Jb7~LAlaKeo3)!W(P^}!MV6YI$VjDC9J8mIYi zUI4XOmboI<9{sI~{j&X;(O~GX%v83xvgmXA%`Sp-4FLkprThinBvLq%@3L zAI}*u0i9HWcX$jY3X=U3Vjt@h@L)T0Ur!!9a^jIlre=u!@){r@JfZ`@EU%B0x*E(V z|2w;%nM+dp5Bn<&UQtc!BNg>=owV?2XF-|un%v>yrS{1U_9a8r`Rvo)Z%(jwseAQf zDI`eBfWTH`>ZBXhr4{|XqAGPA*A;T`q93Q`UzhsT9#DZZ6u7iX$ zqEf&wHv&y^JN(U60$)U+U^&B3BhU#ah5bU7QFJx>9vEBKaw$-aAcaT^Sc15VKku;` zUnIau!9+_>Zw8bd5B|b$q;NOtn+HLNNbln-2F_j5c3uCN=ca#ME7ks1?k*XoQZ*#I z%i;4{5F`2wn{6KUE=u zUx~SG(K;TC#X%C_K(8=cliFm54lK@<|HuK%U}Q;lWGvg&EFaeCI36in42B_Q@g6mH z!z2FYLpIpuPTr#vzrjsZh@Xj{Vh*^3FzOnfs z)87CrGbqzc>Z|tx^|dqhh;y@Bpalhyw8I?Jlh=}^`b>w=79?%S+4PzpnTB3oVUGQb zWh4v~tk{rJmaqPCZqn|tvo|I7!O|S2c-#J~fUC8u-QrQcY(vnrbII~diQBS_G@<`A zuVn8|Qh%_+vRqzwkkC+|CnxLO(NZ2gH0Y{j)7E%^IxEd&Y5?Le?I9hDZ=#XDmQ(|F zl9S2##ywKWQM@5ESt}-`Bm@jzwWgvuEG3Q24+BKlOZ(=8hw8*5urun(;VooVjhx}b zIvVBtIV}M;X9IU01=Eb}*)m~P@g2r-9y~V)G48T9U&=*Y8a9nFZ^syGrym3UAOkb) z+Pc%5&-Pdr=Gu>kxyhvvWLl1ZY7BFpS2QhUb&$p+6!ll0fzx0R!yvYt#wskaW*Inf zarJVjQoP|d{$6BNOe#_)K}1{d^|qFx?o%W-d8nA$b^N04UMo1h+pML#Od_@#ev4$i z7`p+T3`Tv7gF{gmzG*z~IPf|S>OAYjLVT9_&+ndF6N%y_2$VU9XqFSE-y1cJLT;1e zcGK*U;Ldx?XpmzLpviU1>&=;~?y5j^^qL;ls;yVj0X?wx3?y=Lwafr}2{ zST#nUTXegPGlDYT+5}+?W2|~U-!uKa7mAzj6$qMZ&1602 z0p$ukg{5aBMYjC)OZ970$G*{T6u8sF4dEOc0+Pf_ zSUvyIn-C~0Pbb*|_+O-9*-()DyIk>_vjQ;K;zK<{q5S-;o-^-38kW4Z@Ke7h45ONT zN(I2;S24|cy&LBw&}E*P(|{(Pb=((>@#)mEWx}yJB99ai9{2gVK8mnq*WrrE{4g@6 zh>{h_&53{y{c@U_&kNEi;?$VUy%wTQYw;C+Q0dUP9wYl_9dJ&|g2D)D07aqK8DPyT3rIO_aBrlH<`#+x*ByCc5}dV=Th}XeC0A#O9KE%Hv=^ zT%RT`uM-8jT4SX*-Uo$Z?-+#To_ny~2L*_!p?m0i`{nq)U5mK#I0omzG z|K1X*hIyxQXZ#p3zu#sm#YYXSUz`y36ZZL}7W&RSNZeZM0!Dhj-g-U?JuNBlVqN$9 z$U`e>0Lc729EQx%v6z_bg=Zyeg5e+~b%5i-|Jvj8Q{kv!qe(An)wL;TBJlILdl|;0 zX&V|hVZfW*!OyQ<ztF2i;WDA;s21gMGGJqNsqmHfxwFJ9uO#l7LZ(O+c^(>g4vebG5jx2tt(%}}Kj z1a)hAAK?@%q6HYP*|P6W2(~>D6tN)022se#digQR_zP|^5c^kanNaa){01;;A3#?64qh7mU<1NjlED1A)6^DM5Zh9(=E z(cpPw&w%%F3Pq`>zJ_3GrgmG!3QPG4QJrt^2vaI&77qXmao1m!*7v*RkCU z1PE>hc2l%lo17Ac=|@4_9!oa1d5+3a8zVaC8YJL0RwADHo`Uz`W zU|e>7C(%@%vjifP3kP*ks&|HN8V^Zly;x zDHnrihYNY_U!CKDZV?{fcU-BnsY;w)iU-3U$bTA+nl`1ZXg5xk!kcBhYS`Ix#y-r; z=Hg@eyL~MPl)$}ti9X9o!697+7aO75+Y`mOx)1(bME(W+D*lMQ1o?;jh)`ZO8j~kf zj(phFP+9nXN0jMYLB4!es3|RGv%8STw2TtvT{amog{)Glpj9*}kX<)AJzK!(axHqn zpJju+c&YJB>z4{>chmO+`%m&dyhsDpG^$e7HofnnG3#2Oyq)Nvv_X(r&d@~?id<5N z^;oregYcEG#FGFLU)3qAyjQM~5#HM+FE6gQ0e=$l1H@KZyRntHigcl2QdeIvJPYhX zyM;riTkZ>-rAk)1^)LB`{jI8^V%8xlB0i`cnWQc12?}54FkR3 zV#7M(>v-nz#L=2G^(-ZaxC*I`->mGhDfY>Z!_=bGDF7RTkcg7Xo)K8IST}boeBA z7st4dwbSHE1=qVxVT%_#_}rh`e0C2aJNlqrwE<;CG2##E65`%_+;!vKV(c?z8$PxD zNlS|K$oPE1RIeF()6`Q-2$QY13fr z!mxv>&|Noj{|q|h@eb=Rsq6GC|1WodVASzZ5o?KhX^?APcn&ZfwR$TI=c3@t?D zN=C0Ni6oigG{$*G8e!WD8waf!_=}EBY8hQIY4_2ONVkR0x!=e&Z5nX$)E&;9?;p*F z`q3qetTi7iVN)BwM=z(4M#-O&_4 zc#WTn8=mqk9-j#?a$-qUS!7L9+hpuI)*p;Jy0J5`+NZ8rer@}Vuxz1ydmG*mdzf4z z)oC{fh{)8hsws554imS#`ZR+^;(tKVz1@v+ES9;zbR2^7bjSh>&;=NfHG2WK&%;yA z;dYp4hCroRIafxlI_Yd!H#d(_o~f<;2K2l(-*KZbseac*)Y-+&&Ig9Xy9sD?i>QZ=GbsaP!(px{J zHrk;+C}^0^%z0d%FSVLc35$X~(;%q|WxIj8*eZ#_3E*NopVPl+ZrI*bwm?JYb8~@T zAkHJRay)*p9*2*cH_BJtuF_Jik=YN)wmm30NyO%}-Ez)yIVkyeZDZx1m&UYk+)m@^ zk!-p05Qx*)>5YqqkdA?zUM`@?n%HDYdv`F}fa_4NRH!+{KRrmwG6GDQ%$W{pT?EG) z_V+s6Dyt_5Uyfs*IV~*8iB|7qOTMKF51vEB+bfxI=d@6W&(Z9wuI3&H`73`P?xvmI zm1wssCHYj0^O17uL(x-ZubC2V!<#Lr35Ywe1j=?<2;E@RIcZIC{Bb| z9^WOSgU)|16KSlBv;>#LBDogJbABzW7QBqtYN;HJ=5d)VtZEJ$%J#ja29(H$OcA+K zt9_l{a_X9crXO{}3pArtoLMXA1g4V8^2z`c{D~t7ygn*?U%rv$q_!stqRk3ffq8aB z+_JH1@-PA; zRxAhi#8344R;y}A<5X5UZ+{KY7yQJi>js`yx8ZN zBPwsb-YB7tp+<)5$w~))`)k+kU+!Dn^!NA3q1els-bZ8Xvm!cIli=h4S|M=imroIR>&FhNbw-{qM+_s-b$7Jl4~9P%?%2@dAN*l&tP&y? z-zk~*SM1s|cs{tFo7_Dt&QJU+LLsga);|?>D8?@|8ski+*;-tdHk&87OfNc_stN}l zdhl^<6;p{jH7l;ubJmX7gtq*Rr|5`hCu8y5mH|RP3 z5bw9ZKDbZ9fqyiHf62|YA~EWnIomjB74AOt)l6L8WtSCy)VO#Zqxby%xZw%>*WivI7 zQt6}!5b|G=bk1pylxF$M9$;fb->MaeILg|VToIv+{o3%y!^~X6VW0gXe@UQzFpceo z2TmfVFR6?zO1l~dhU%_m&ce1FM3hsmkC`9~R3TYWVsEyXUKxrM$Hu@PEd!i-ewUg( zV8=Lm-4L*fwid8O5M!CBM2s!I7k^dVg4r|08yXQja7!MeV0izREKV?w2IB?*ddpn%xFKh-BorqvL0nORh=!`?R|+SZPD) zzK7obmoyliHx_pmk6Iabh2~Ej6KWotB3({uG5v*vl+;^LV|APh%?jy}pb&dzzd2Ta z%)ps>dheC_^Y`%pjBQB5m_0Z47jsYsr1n;1jab9nRO+@jY3kl9@h2yi9@#HTdO0-G zE?~vO=NxDXSR6WIoMOra+dQnD%t(gw=dm7DDzM0{SCr`mD??H<8$I1z$2UI7ssHVz zq-@ho8skY+;tEXv#>8t{GJqbY>v9~02686KSW!Vkp6h;p>P{+~^N#_&80Yy_7TibkrjUPnkxPyZ{1_E8g_RV4*cw&w$K5P{zzN!_ZG!eR(d-dq2P$XEd9oLauj@rR*aeB-{5faoj2ir}IK3jG=CyH{hDy0K>AP zY8S+_r~@y%=*82(nxOWX(GTgxrgh_-%DK3iW4*Mt59Zq}rWYRJ77-v`MnY)mtgVA# zxOeaLzaCSNK6M0;54D1nNgMWvt_#_~Pv0{1b{5#4{7rXG=1Xtq{7Vcj-ms1`x~xFS zD5ZJU|E5{i40NL=3ofd%(S>>FmL9^vyJfMA}NMaAInsZZol&<~tR#}E_f2d}4IXj^fBi3u` zp%R2h`4A5Ye-nJ76tW#zz??=GBbNH{0ij}@HNpqyp$vVHTQS-pzw>V)b3*XM*`In$ zkfE?}uzjX5L^l2LxnPK=S=0%#(zU=n*TLf9r60 z)NpT9{={8k3<$hoCeS2U9voJntw0O|BZrET&ODvbN~k;ak}D`rIV$_U9cw^bQ(RCL=6em4f=m7E}+ z0)lX8k0<nDq~h8{ki0n6y~8czHggv8_=<4Ht8*@%A*&OAKT>K z;?x6!$89g4^riW%srQgEz}zUMu6@V?2%Q;W0NMp5WIb^v9OJwx0xxIF5M{0y+8gDa z35;uS=QmmRgkmVCUO;Ms85XW*C~r=&h12~{qC{k;SV8O+gyC+61cW!(jJ!j-RnCsp z&45q0?AV4+i|!PQ0Yr@yazJ2ws>E+RFQzyuE%rc@8l*ro>71u%9G$|x6qL(FuPl-f zx|=@#z(XYW9J$aS7I+Mmb7DeS9GH(Mc$$DIynt{~rhcF_^S0A5Qc-YZPxvd3{g))I z^)eH4SHC0wrs=1JM5>4;Ena{fVH?&XCJAtv=B3f|CAJ9N=-0|HB9KVlBGNCS34@J!t2fBh* z@t6>%Mi6INa^_u~lNnq2j6?kKiz1oDNM>Tz>=0imIe%V#b%_g^atpemc1u8O0l{f7}6V<~Arb>N%4gVOpP zO)1zSogEWt*Iu0xx+`l+*TznP?$*U;lw4l|Aajqaq<9QVePBKk({Qw;yk^A4+ zbA(ZI)}BX|gg92<1DsGD7^ItZeC@#zluGZmZqzw;6esq6tD zh8svPVZWNEdjrLq!`Wb9u*O+OQBxiX4PDYCnf^h3F+Nx7KfqDgz|dOW%&6TSUt7M- zRd2otSF35EhxKo4`F7cFj!j+d56t&yTPHiGPi>n6)s%=F520xJE*J9Uyqw78BwOuz zHGHnd6U^v=K4rF6E}8nRlsH?E9>^gM*pi`+A;TM-GPD$WgmpR)izRbcVk(jWof#RO z2_dK92f59-*=`F@_A=M~vE4@N7h&Pq{rNM{Op{)+PD&=#%`@L9-oklHpwXmwlMRfo z9C#QWD;T#T-RV3)b8b_o@2a%dl?@zMsx#_;Xmxl`1eswDc#`XhjBNTQ;;6FSFW*qD zkDkT0P#!WeQS#tbmTIco+`&5GMlg6N|72{haUt&J&?d953U9sG&ZjR@M!0Af2RL?v zAgjk>@^FEC44kEhE_2AVMM7qpecZK>17|T|tvUP@OtEQIOP**>3Qg{oJ8#X=NQyN% zHIKF%RBEiKLmR%ZwK=(A0N=G~PHp|%z}{)A@7mS3_itOoE)eUr8lkTOTUn3OiP-$H zi=!mtoQb%(<=fq@OPkJ)E`@KM!#VH1Dt4@4%Ca?FCYk0s1JYzO^k@Pfn`sl|33@L| zidCe3`$AHYA_^S}m5uDpWML0Xe#hrj3^{;cJ7`PYzE3^Kg^zZ31mkQ-2zPhP8uY0x z$q-K7^vkp>)ukDYmJ?Jo%Z-$1s#R)bU`kd8K9#`O_4Z<4vsP1IN9r^y7P$kc%m|FR z2>$JRGDtI|?0_Fuo#-RO6g#hfDxpSz!d&Sw8^6Gw1lA? zi239#RXm7*8o`^ibpn83yZu_F)8&E^9(>=$bD}0pDaWfYj2*#4P8A(ywdA)7*zC3l(lm) zPSv9Eowp9T5!yr_!9C{P0>TB%UqcCrt>MWSy_Liyn1SF*5X;m$cb@tX(ukZ^@%;kX zu{KXLkW$pC={<@F{Y_y2ndkI=C&LgJ%&>x-8LV6YNNkO@lke4Z*?lcIEgByG`KUI?`(7I6n5BPN!3TxFWG`I~h1IB4Seh~0n608;oJgnh zfL(!Oa-^WT<8N)NuL9?4YqDi_9Z>ERnR9p>PWbbEFj^m@wP7y?KURds$EeXE3~vss z#0^_J>5;$%?6NB+g|5VvZeGJdtE4~~qRR18e)T80IyKGics)rk4ED!>9p8X39}&Hk zJO*A^TZCPD`Ztngvv%_=oepUXmSx7_AcWjAjjr)&H052h*sPEhQFQuV-+d-Am#Q&rOpc`o72i991r<>Z=`uV6MfaxyugroiK(q?u1kv(nnnf zQAFU-B6)67v?-qoYFZIa5WUZzmpEiTRRgLlHnMi8T|Psf1$%r2Utgu1z_1;&EVD?1 z&gxFF}7qR%;YG zCA;zDn-c|dbwI17*!c9QZLrydo@=9wK|ll=43w2(*rPRYY`Tdsg1pmW7vXh(r|Ay3T5_aS^=n+PC z9@H}D(PP`4G} z+Sm;`pAgurHmE|bOrbCiAx{1vZ*w>K2$m^~|Z~p?XU24urvnim7>~_hwy}N)EWouM3#PNkTv`Vglx{H^T)2 z8CpS#I0TCAIp__RL>!HB5-?mVq@D+@<4GW^3B#40bi-j%VK+w49d=h5){y~;XQ zg|MumwUvUFaK@L}j5I@Neff&IJ)_AGSMEU5XsQs15aayqhy`Xg?Yx>*FEA*@2_HTWyL(1^hkNt`3UZ2sIXjeduFx! zBQ&R!bMK;$!QohF@rpV-CV!I`j(4^C zZQgH9S5EprkJtaR&vb=lWw+7()ZqiV=UoRbwq|?7+UpzA7Pj%;>;Sc4p@tGPKH4~d zt$`#=8HRq?bA!|UXF_(xW|g)Upo-@Hwo{M$9@;S(y(8YvmITx8Z0CVm^8U(Kx`Bkq zO`;VguzH32NSP5a&LKUXLlBzL%sQkbHq;*$$b6m~@LMfVa)|nSOI!m+PVTHLv=sR>k@7b{O9?a-YZRs4 z*3xx}dJaS*Z!Ovkd&WXIIog7D_cI(?~O*9?fKqP zf;Z~q;m(>Pi+c1ZGgD`Jx@6+)2qs$>IQ{OD$&D>53myWvOrYyBk30<_oNp0A-H#fh zBCKn=2~)TasrwjmSHhyX>@+w|#(QKO#*I$B?Fi@!D0o_xN*3$(LGdBc#tC9k1WpZ=MiOP)5M$GhFfYzwKO49}R+cQsdPf)=3`XrzBRNW`ME?x#Vlxb?>n1@) zSfo8Ia=hlRVmP4?(~K`G_hn6$6Ht-H#{*Be#G(S^Z&L0MNv@zc=;L^BA@P^(3m5?H z9)hXUX%u!pXV&GnsMQ#XqfU%jW5%2`xbnI&y=?%vU20{O66+#Pw*lm>hqIdKqIU5; z;)W)BG{8S3g!EmindDZf03Vy+%89mA0^a?_C7L4|Ih}_cx%DK(kGKle#l`3CEHYS}~dN|;D&pP-DRjPZ;9rzoU9Rn22rpJryQK2uFUr<(`Q(lH zu4%%SQ+u0nO=++O_#cUZqD42JgSWWF|S>V*V8n2EPp~d{3@25_NwQQ z>BypOXjfHb#m7i9b9e%*;SP|xr8Si;Bh%UF!kmh&fL-n1+k@5xl`Gmu4#le5!s@tdO6^<*G)xF7KbYvgqTR1V`pY9%+`os@HuHObeZ6wcLvj*iV z;jYnFzjud$2gX8=dO_r*8DAt=Kn*5hF*B9piVBcRe=di^9xj(l3+q?OM`Twd+lr@w zIJwfX)zj89R5~V($}U2<8GEO`3vEWp`i#eLes@bEOpF$#HiDi zMtg~1RNtyl+2#%ZOynH|%aWKANknVbU`>-ChyramGsM5HP{(4Tc^8D6D=VaLeuV|IR@* zbhGu~#>6uDe1*z58;b?|eYkBNmBB%wD1$CCC4;{ybcfrpKtY$(f`nD>v$0-pMZ>G* zNYfJvYo>pyNlqL?;G75M`$a(Dz|rZ#NF{L;7OTRXA0dR=+^7^JL})CD;YVpU{747h z68GA5E7Gms$14z{V0c?#T*Yqf^e=Qv8wir$ID;u$#?wOmu2OmI2|WMR>9XBco%j}Q9SWM@(`8_le?+eO+J$&Tmu3u1_Wv->KrpKxaF{ifT`70VNfv+ zRVswF?`1;z?WXJk+;RxN9F2PNT$yxbrw`QB%x*}fmXv(e=mOk|dPq{EA9t^|h440e zEfg+-I|M&d_LnTPwgqfUR?1Xs@eF`dqCP@c-xrlRDgSJsA^5d*`dzC6q@*26xUSR% z2=%ef5|76(F*)Ec>q%O^AfcV&cks!JGi4h z0$`??z(I;K=xqVj1lJ}jXE6>>^7L=Zf%ILcbTxpV{Mj7464m7M%K zTtWj`gfQbUaVx(FZccM$dNDiC^^ofYah|mvGeQKBuDepToGZUTT9(-_WIm} zcO@pnuo`oquZb~w$xYmv#eQRp3<-V_(gq9v!__v#_wR{gTuOT^;v_1j&ge@?NmGA{a_gRju2npcfu z+@fhbKoPA3;I^;kE-le<1EfHShAqv$h27uuF;8UR5lVfkGzXyZPgts zrrl9D_VciSYG=H3s{=p!L==ueL&3JjrVH3M%V$mk7)JXfd)l8u?P$snEuvmHg|-0S z?wgXClZLQb4L>}hPMDmj=&Dp7I68O`@nuw5z!%xHuKw~3dr_?nU(F_D|K-~G0T2F% zXNTY~!uX7!ttQPXe)jARszbILq1;0`o8T_y{bvrp@h{AUt<&mFVA~;tmWRe0OJlLA z;;bVK8CXc12*tN{KKpp*Q3dK-smg*3T8e#Bd7JO?+kb0WbV}j%{)Y|$=l8<@FXfoE zg{_H!nF-x*m%`Z2=&zHTwTYuq1Z}DGm>ex_*`!3&(fH(qIL$b*-n8S~%(H{XRk^PQY%F9wF%FgDSfoJyunB(a0_j6j8xM z0jboTd71=s?6=0V==geyTqpw7qrQmR@w79I!S2Zfj!_cixIn*2yn6slVuIrJRSLud zYpz5V37XerZsW|)6W@z-Z`!zdZZ#63Rg77BLWw06Y%?cb5#iWH4;tOxll1Bj(U#XP z+%M=4(EANEHe=7J6-9!Mj-3W^XKf^@4XCB@--p=?TWD-*ONGc7oxt=)DDVLZjd~J& z^*C+pJ7y|s)W(l_r=a{o`z&QMCFHgZas#quqPh%vLY2sf%->4edX+7o?GpH#_`@@T z^7@kQA?0`_pGZ^Q+*+>R585dFGlchffweCf49>c5)P$|ZgCzPR-e>Y0)IZ5^BZ7A2 zuAa?t*4VY9_U1C&kx%ZeZexDWYSqQYk&B%K(ZTm$iyXHDHPt9k001}a|Jx|gGqAVN z`#&}Ll*WHrnLgBDI?+80$VEJ$V*}Ei6bj0eR<~)K(i!E{fq^lW?T4y4$(!JuEf(NVQ(^dC*_TXtvf zP}@I3P6bBP+-`U}umFcE5O+TQRw|0id;t)qfU1ej{oCP;u#_bX8}%4hg@HFv^#!%a zFUpPw9146>krw$^tr8|tcjnx9dQjDn14p+p9HCQu%%Y5`Q>x}~E{-9T zE0Ib#Amlvjl5qkkHqbiaSR%uEgeNe2oPCGu2Eq(Jcvf(^<`_jA7j&oeLC zC3EI*rQh$Y*gzBZB#FXUj4Vb1@z>c%CnGyXx_K_4*@?dXA+P$rK$7D@L6v}#BmlD5 z&OKVA=+-T4&Q?m83K|!*nF!_)IF5_O#!wXg*gQBc(W_)PXuLm2Gb$dx zQV~*>uPrui+;CTk7B~ZeVhj&9@OXoKS(2uA9qn8`ayi&S;t=op^jkpObM2^llzb&R z9Pqu?&2KZOQAnf}VaUQB;7Pm^eaZ;jz-5-ei=K%`P**6f1o5|#ENhso?m-(zMXzCa z_qe;+`%iA(pR?R~lYVt#%Uvv_r)b?`uxgR2Saa&6Zn@7awhb@PQoAuiHN(Y3oL6}# zF^9A?fn9T86>r&hy=UMuQU;R!PXC|r&Z&A8OLP%<6^Iz|;PO7KSZa3ZboBSQp4M(R3-j(iTyQ(x@ z)q*!1oXQ!|#O%??sd|_IDN_3S{5U)**s2ElZm77f5f&}Ftqt6Jf2MH=4E1D#S|=wV z*=iZv)LQMHswEeXATgel2M4Po%%84KiUdZ`h(xFlO;r=fE2{^$ENDrxp97) z1-GXBR(Vb1IZ<;5^WYyFawSnt-Vj}-m$1TcSu@qg9tC)Z6A_z$4Ud4X{4M7a*vN)m zz+7IKb(5DjW8&prgr!Q~81p1kv0175=u?I8HyQV{C6+LkS-~c(O2^`EIj6%NCQPlP zd7&XvV%iRz*AROGtd;6NL(1_vfG; zx*g7-dO3D_e z`?F<52IweRBF27p-8RcLDlUc_)5eo1V09lov%0n2IMwj*{jy*?BNK zHo1|nw$&V8pD#BDp>tur&FJU(*{oF95wE$7v^U^xcJ8UpJk|!;fQrOWOgD>-Id!*B zq-DOn3SuxsGxwd2fVXJ3lk1%&$9Bo?!+4oukV^9nv8 zF3weW-EmEh@}wN?kxC%E{R}T$-6y!zAG=i%!W{K>tb}6ECfy3}J4g1#9=#XYaX8dy z>NhIgn$D;ALuZ365^hzrAMpP=lb3Yct}gs8xPf2*0Kb#@|4Vc9f7bK=hlom2*0IZ= zNAWsQ)1FHq5SivIql z;e7_(EOo9BX{tkD`>ctlR+~aWN@J483S{Y>P+auaVusmo4=$QutrZS<2Zct{20_0S zIwXfhn;ipUS%nqcywBwA7)9|eU=@^jo#gEs{1ezAkHO$7kDJHr39YDc3WF3#&re0X zs})@ZO6b?xBrI|aQPXex$;gGUFS_RpT~3lK002>}`pZK3YRN70U|VgxSr6;M9)t{= zZT_-QOgX10v3S&#F4`WF+%Eqi)ziRDV^qf%hZcGY`jzUPOjpTd{e?8>^fyNBPjOAE zEVj?7?4j|l+T+!wJ#fm}tkSOw%n)(Us7w%%ET{oNE`h)0k+3WAU1S-Hu&WX^;^r%X zxB{v~kXxr!>47aC(oQ5I%S@jrKR^{M(v_DQ=@Qw3ICu_X)kKqz5dD?vy|yNKME$Z) zY9O}>KY8LbB%F=Y@qCwPSdG{!7@`saWh%fLs?N;|sV33I^JuRP3M^xBPY1kH2;v6_ zYj_ShHj(2&X2>7{et(P$PrcE|ME`M)L|VCJQA(gu&8ic6_31zR=3qWny}y~`vEw7G z{b4N(v2&^=g7)-8M~P?Mgk&A{U4fNkkGGe#YH~*eMN^vf$~(6%8iwL|$J`?X+E{ql z5%_1?Uc9H7>vw_Nf4AF1dLrXlr)bP+h%QcV6^Y?XJ_hhOo1-@Vb|kW%cWEl zI~_cv=w9~1x^yk13vc6-E}VEhQr^VKJ<5Vr^&>BOF64i)^-bG>K--qFQL$~?wr$(C zZQC|0wr$&H#dgv;jfcMDe8k>ku1On3nHb|MbF)_{8&R=tG6IjF3@%1E8^N3TK{q?q zhb>Q}n}`16AU;FqhoMR2EgRyhoJJ#^jJJSrr`_O#d2GWx?_0hceGc*BY>sUwv&rlZ zl@G$OaTpyrSHzh?3T=@%HMx%n3>j_FxHP%`|AA_%34G9eeqDlHzjmDe{uT_3oGt8Z zf8pnUSlg|(yN_=u!-sxN{<6nA8$c8l>#|n!2HEbcQt-ieiwLX6c_S*t*w(O*n;Zg) zh$W*d?wW2O4g7lH85pxMk0`n^i*`Qc&uiU8^0FV=D0~X1yy{3|d=rsh+VKZZRuSG|LcFp7@|%j5`<|ifpA7sYc*VK< zqiAri-ZiXU_({8X1x(udPdM5}mLQOZo=B zcngrgDi9!}TH607S-v8Dc(*(G<9IUdF$uz)>Q$=J9Sly7l7A~e5FyJfRBakjCLTo- z+udQ+0W;oak{QiE&yj%2SL<*CpMz$Mdn10?R906cYk7nWPjwTIZpUss?ChRV(@yOa z%h5qXmTtwY>gt~%tX*w@bkldlr%N;M10-;Tf!F$BkD(y>x4qaN@>nQ?*riTIoWP~V zfEza;CkD;6rRV6F&Rbt4kjHK#n!wWUc|yo^2+0sl#>(SxFJh*6m|F>Gni*5+wq8f3bELrffVCd zZ85%ALi0SeB(uW6sJ~t!L;dgwUh@&?P(ikM|4Kj~L@G=q2m$c*y?@;s$u24WSLv;s zvlcGtgo0G#Zp;ZZkPkayZpDBs;}y{)zlE<~77#yGrppBax2ER2c8^QD_9Lxgx(_h1 zLl_H!*=R1;FnMT+lY{!|3EYP$N`x2Z!`7@)j8K@hYy*um_-)1#8YNLBgg}ufC?hEv z9bzb%a=hCQN4Pu#xUA6HparP%MAy;^oPNdnn$qSSuh2jxr+iz1TyJgKiC+RcK^;vG zuUs{MGGWn(_=Y^wgH3to1i?1axxq30Fez!xX9kj5!C`$4!-)hp{JpmQWit=ujq(plFd@t>VkVDaWcMNMwObj~8j6;&9xUJ4^C+C6ggS92w7R$W+; zQ0BHD0QTco`tPSfn&Rs$-9!~yi(D~r`qnzU@m~+}P+?n?(;HA;6*MyU@Gy5eKo!LB zOk|qoCv_qYwz}e?zh4Nlk{50HS0yqGiHCRcKWb1DKv~F_lKTMvW-4d2xAhKIf{tq@ z1J{+xmzA8#L4r7>M8KUik$wwo_ETls8c(^dG!T_j?%LH;9flppEK@Z-sL7QJ_sfgu zCTUI1g34v^?0L9%9T2}3oggT}Ut2(So)jHs@bimd=eDB%;pA!UX-F*c*6n<3GTeIR z#mci43E5wDOvrrnZaDbEu2^=2}f>(?zV3m<42|beCr6N9mc0zPSm9u=Y1>2Y%j?jXgb? zy4-<9+X3Tq(xsivC6^t`=myQyOp68nhQAoc5}@}*1!4lf9n+0=xBRpGVJPd;Z1bo@ zV)2UvrlP{`iG(nCc<7ff@}j59Wptbevh1Vsc~yD;uIeUkHcaU&J^6BMI+Vs^(=E%2 zE$he`XHnk8TOP`QCbfAqRAzLtxBd3!)VcPpsjS@BDASql=*;gB_c(>vqtCB<|JnRA zC_G)Pv}Y*P9FQ~l)QQc&suB){0mCJXrq>6umU#qfql#G>(R2{5%P})N zPqnHJ+s;>2ttZqP8G1b{#YkTH9$;y$HNPsGb%>Q8;=&pg0IT8+|7Uk4t5Id6}POK6ul()BDEHt zdTpK~A;Lxxh0|L_Rnkb@Ue@)>sb|h=I)DbH%|;BFiAW6#u1vPjOvJJZ-~GKr5Vq3j z_o+Qdq}qJ;VKrTeVv}CE88aF}_V*&zSBxT?aE9UrVq;|}B)125S63zY3x=yP*ss@r zWS&**XAJHrz?3B@F;nf}+})@R6*t^zh>uX*9rQ~g#7%m$!yPGHf)7o$Pl0CS%(g8>ag zIeABWL_-1aoJ#-MQXerFxK)tsX!2qy6HQtMCsH(;I{;Gr=7uV=-(&?xIA0; zwuy-jZjeZV=1HLtD|r)`Z@H%CH_T&AKboiKQe#3T2o7Q z4m!pd-CNTrvtXyP+wVmG8fwDq@;^LPc^f?MEfygw4~EHrpe8&YN~TDfv)|zn!S8W= z2CxP%XYk2X)&b(Vm5kT%`?pfjWP#hC+zu$ukJ8PWO83~N`K@N&&ob70d!LKO(p zuiGO8n8ug;FxrIRr$W#iJ(UYRblS>?l|A!kn4)i?n|A`u;aTv^>3Brt6x1N?JRraX zv`{F`a!q1Ul?Ov)WSoN%dKCMA10XPdz2=3?-ea;tT!@fVis97!P=@~?!F-wa7>zAh z@AwOFEa}G|ILSm}aDrt&lyLwAfF5u9W3+Of;XM`y(GL)y8lJd@t2Dm6>V7iy^O7}6 z`EDZhC;sN2J2J7U;Z337-C)&2l6zc;jNMpys;7?IjfJ%QM+4c)FBJw^`$X zbA*+q$;3h^R0AodI5Npfttia z$TY#p(*HHteLYskw(UdlmC0`B)qP>68fHeJK5<;ZJo?1=$E!5O9k!IBhP(Zv6mN}r zw+s(+sgY!_1w#`EJag>y#L2O(MdQ)5$(l)Bz_OF3dkjHYEhLZ*j8*(Y+x5>yu14pn zAp`yj&CmOE@Od0`Pb6`fB1!`)mRot3HDTUugtYXd%1jZ2WR}Q&G!T@`MhrI zzmI{!l(W^x&@!}(t2e$}`%rt?8(P(io1I&#u6@7%K^vzK;bamc0RSlemj3;B+StI+ z+2Xgu%K1OIo!iQ3lRa_wi%MQnC!<3p{jbcjk9TIoc7i!GW{hva{2a8S!u7L?>(5;LIqP>`14NP|7vZW1 zVqycKhEkGy zpa%1YL!RC^NPBKVA`*$1g!Wm(p_T%6ToEB>d5&-TU+KiPCN`ESE}AjDPW;8Ne^&-= z4chNUoabBFW~6^U$uMTNvvKLht~BquJx6IfVJWJn(d1pFHI0Q8Zp6erI1;D~1*|Bvd@uDKlAx6PrmipjZytKpWO3 zTx1mC?KPeR-n_*17H$eH0+ya*l_~V%9|f388OvyN9=&nL%RQX*R@hzo6WM#=RAJ8J436d^PWDLcBF7*(u+(N!)`1AGM>6V~;!Rf;f-8An68W zR`zObzj>H}JMU!)+m;GRdNXO!ljWZ>3K?*#^g;fv9e7W!l{+F>&hYtYpgvLqxG@u9 zxMxE2Se!yP6;)=y8xQ}LO|fde(Iqj4L!pZ`uOWo)MKSLFra(v6sf1fdWwA65uw)=YK5DK ze7sMIbrBAi@&l3CZ1ZRLzu(?k34ZhL-Ls-6@sFAm(0CKw>twGwzrx3omtYNGi_1Jr z$9H`a4ZSCdY-9$NQUipGoxpAom=ZDJNaUv|e)BEm8mY3b(b%%H>mfIQ{u{?3QPHyJ zvjc;NTs2p0EgxplV7AFjX|oEKP!iaSb-0^7&cP(I(LjbbKz}U=z5$Z7)u2tsrz9-n z)4^(*rUN4k?y90h_f^YE|)U^N1@9SO-XxJz%80pc1&LUI5kz$fLywqA6D4y-7r222Jm zp)eJyVWUnUPQ*h-#asbk(_jp@u*&Ty!1dT3ve}{U(idP`_tCnOF}(+1ePEi-?R3^v zVP)09*E0YC>Emp!>u&-xu-PWpU+P>-@^yJA*X&J&?R;L};buhA@)eG>=!)qJ^JhU> zdG=S;*ET&L+|10>$iaiui}N1~smP*KvpNPBv`VQ>?P+L_mYxZHifoG9F% z{6YCz&tb`S_l{ePr3)&F#$hr8Ma2yJ?8j1q!O5!O;pIz5PAys()n=|$b_UvQY$icp zUJ37B6yA8^`N8xE+sWPh z0&@PdatNHMEr6^{n@k!UrLHz%C@0jUCxc_X#7IxmVE#A?JEhEp6d=(^EnE*FM0vJ# z840WyNW6xsfS+q~5stZoqIefGD%F0tz9|_mn}pJkON2pYbOEy6gmj{u6bD1qaY8_-l_DkDI`a_xJONRX{k)|^o^P;*48?Vp$W>sK16NoBU0B-VG<6pR z-aqAm)$VbIvq)!2f|(xc?Yyk(vq+HCUrGAB76*4fA)?xOTQL|O2e`D#;+%3BOm#Cv z#}iWoVhI(C4#n}V&dB17=n#@O4?82cIV5$?E+AFkDNqY7Yh1sV&VFJy% zbif%W#5n0~^idWEmDJZeOA_Kq-g3|yVdU0F?yf0DyJ|9Arm+6!?i{jswQ!ly)6X`E zSu_BcLYSHWw%=?LyT1!1Dcx#UZ!8v*%(EY2x^<%2_jr^a*jkofwg30YL-dd2bl?{^QO0r*@-B*Kc%%U zW`%6NFwAJ7n=(WAh1wI$HDb9wOt)0*Wy2qC!N4PpMDkoRS*{aoFp`Dto1kp2^CV#CI?Xa)><`C@g4LWO z+Y^2ZKotw)JBc`g+^tkv?YTB(&j44f55JdV0X7@X2mhQQ=w(Q8sodij@TGWhX5Jze zT+6W`mT$}&vLHT21_NT#r$cLPUQ7c-}!h{2x0D!_8e85ZTOcd z@=JN31d3ii7clkFaM_WbZYlTATzd=8c$g>l7+kXBjh|91cw8qA5buwOpaTe7MnP5~MbJ=$jBMRUZB>FBDOUk%u?jU^E+k z+R=VVX?rT3aPVnX4*F&Vappv*vSrnclY~ijnVh1RaUoL6SH{30A zJP^a+U*ZB|&CnK^Bp$_p@Xl^-vf3H)y$fU%WT?yOyr-LFg#YlwNUxH;UzE!Qk&V14 z#Hq?YuF}Pct@Zq{Fe=xUR|k7e55iUV3h{*(_{rg^-RvQV?W zkvHOw5_n>`fOhN(4Hn$3s78zuS{f;EXr*cr43O(mHAtVbx z^Y$d|Ai3L)J?|7FqiPWaEa(6$6ouekrURMU&MUw0z+*F|B!h#+kXJ|#(4(V!Enq%$ zh31>0=Sx|yKo>1}d!T*s@CxTgRm8K2fk!$mEX+e|+d$Q;$0 zUVtUNZm#3?Hm))*x}hc`NzLX2z*%7jd(@YC*^Jab^3QWEL<~5rZ9Q(1jnR;6>K<+r z9_9*p%A?EIO(EFSz2Qqwldk7_gW<-qosuFeuUC1ZTz8R+)OAwE-r(x2w|IDk@2}S< zW0P|Cd)Ku#?eOf6+HcP`CpXv3!QC)0}7Q)Xjkp7exi6UpV+6J$(i>y)MU+);%Qb1cb_q}$9$_~=%E zR_XB`J*Dv>=?D`fjw5&Lfb7Sk$_RDMz`y*NL`MNDH3Pqp_sT#)AG*e>dPi10CB3qT z<0rSpC?Y5?4joxEwV%rOf8>2=|Ehv+m>!q=3!YSVWTSm)Z_veliNRsx(xS@6x9G5i zE+7rP9AqrUZ0~Ac>QX&D_(~+)?!=OSY}gMLmNG3yZ~1`Khx4aP&u5><(@nOYLd~P_ zV>C;JR>Jt47+JVa_4k*}yTBpJ>2=~s~{h<^^N{>%qxTt^mviQ~xcALW$T zJDm`Xv8Gz#;xrIV1xk63=v#KA-DZmn!k^|NS=%JFQh(?ooGz7Td(p4~k(glexAX>u+(2v31HlNx;N zz+#*&?54rImH^?p|8aH_tI510;hG?XuZo2^F3oMD&&{ngJoHiRn9v3FVi81#`6AD2 z)3Tl^_|`yF7j*Fp;X1IxsNR*P{=u5muZWst6^eK+om$4)ysjsZ1>O zRqOc?twV>F4)8_mUTJGs)8?$Eb?(I@67x3A&IRC6L0q>rgh3f}D7CzKgln5*F@d5*SK+RYSY!kFxa*=T z=rcXA4e|Z8yPsdzB9l8sYiFe0H48DxmljmwIAdV@7{nMdE^*+*XjEX?qP7gZCm$tfOZkS9k9GK0n-v6 zc;(-Q6SvwY*XILJpIV4*tnWb09ECx&)H!#4bpwNaXB*|h426(L9JDN1B_K7gl6JxG zY$}~Q6`L8+$qIjZjR9|r0l9I1prO{z9o)TpBa%Wq4_G-!7Z4+q}fOg-Jb z%~^8N_E%uv9KCF@zBx;0I|g_P8EO;VqJ#|OOh@8re7z(5xgDe*;@zZa1u6$~P(m}ipXKsu?cHv&RsZdygP zMeSRdC>8-3l^P<=)tHsoa;sg&G&&!+Z7+hhtmGr(%H>)X&P2|WR@2bS_a#)7>XBxQ zEW|Wz`XhCzh#GQ;iLr&p63K}et-87^CK6TK@vUVrq7B8I%g#lCed_)*(OODlq35fv zHi@Nysb^yre?T+@82Gw^NOL8O`x!Nk7d7-L0fiDE)V_4v%Ar+3Zf-nW?Iz5ltkm`R zc^XzG`X)S|#2N51EQz!52v|9CYwN&vr%mg&&%G!Dzk1$sp6Rcm&l*!Ymo|mc-0g;# za+ozZ&Ka`u5?xa2lT`_A|FY1{htr!$IvIp$SW;VR7J~s5>mNWQmBqMtc|Rjg4)^z` zaA(0~`#)J~G|}ffO{D@6m@xkSxtprmXAwyBJjdjTje!MR*b0R?vbuAeqkSL<)|^86 zLi~E#>1SH<^&tK&PTfR8yheX#&3EOT;JCey)Z_jY2P;8kCo;fjPzk{szwTIDmEW13 zwqxMaksgDVire=M?evg{t0_)4Nvt#(tCM+1Aun*h7@>Q@$gqdO*fx(Y(wj6dG+4XS zU{BrVPB1h2yrN?#YSrAHj9g`P=MBtE)k%HY>lbWxz-GT$*=Llg*FP(w=eXIjWo9i+ zK7(OA>l@j{_|z2qNp!r!-(>)e_7If^FfEn`4w&MaN-=sFjz5K>sEmba z=q~-99V#m5f|*J%rX|W2oPU%xf^@>S5G(_?Wx}RiYrR_M74Bfa{kY)r{}GnQ2G3dh z=z^d~+w$gDnXN42*)f2K0o~$3lz4hlFPnipXpJmf*pr_0RzzLIwZvFVxZ|De+vK8D z4(0=XyJCgSwQk}7^}^5O-nNJc99qv}yL~9Re*?R|;BLhh6uDJxlCFEexYco8KVM&K z8xjVbKgQh1Ja};`eHZ zXL&FQ?8`$eNLvtDj6WexO+^nT1NE!hRyy>wAk}6qpzo-rE0!8(F^>jlvM`Zy&85^> z=$KQXk=3*8E~zAGuJg#6|EDM~YD;fCr8OP8xnE?O6u1lX;FL#2>b? zSjWIC@xTJ>XqGz1kT7h*AFy2&`*ww#^Lt;A&_-S$DqTXVuy8)dFLsiW{f6Dc zi{S!iyo3g;6@cfZ3>os=fO753ykAAN^B4d-@03o>o4s4u+Nd6aiBDf6bI%qAL zfnb<*5&`A&I#x2$O@*fpn{DfxHt_yz zZDEwHd_W!8m=(9r8luNenFI>jn=x(rJwB<5p;@*?)9m+vj}n>b0NA2VxA zf;a@kEc==1Rvz-9q;q$ky~oF>sHeK|eD`1KCiR=1w({Byc?Vs;aWy={E~mBJk{Og( zu{%!iZi~|W9`|!@oK#ctU`Xx19#47fmmN4HRsi%Dy)aXav8e4`;4IXjgKGxPQ0n>@ zY@C3oHm}dhnfw0{-@s(+=*oiw0DzYKKM@Y6-^7NEft86P-T$+D{_dGNo4EgPtql8D zD`UOy^aTxl)3+2gu)Quab#|)0dUTFC&MszMyfa5n4>o2+t~ea5uUY)@?R1X^fLw?? zY_ZUsStE@YHgv0}qvr3$KV9EXAMNZ+eD!+orG6T)<|BAueiTnlYNLkOwml>+C86Rz zAcNE(bQVah{@t{U>Y9(5hrTC;)6lF7SGE{(RNP@Wz%z&NGoB3o?7JtNQM`A%u^SQr z5M$*qiu+7g@i&o+Bc7I2M1heX0u4yOFn}lEN+yGIbMP1qOAz;GHRr{a zXaN=01O{Z5Kn40jC?Fw2t?g{!me%_v+@RxDqI(OoP4jP2z=a`;u``myH9;kqg%!;` zqZf6AD#TV;<{bdPirUB@URwt01DrAuNA(ikCJ1(4tKKXHccxc=I=+2ncHSmSdevv? z)Q&tQW@^#U9-clu0p)4|V|rf`yxH`$r6GW81iCJNwa~)7#{yw})Uim0peq~F(gOB6 z`kfJiJqh!Usg&dGAksl< z8Vi_w1JwRA3`i%iz?1Z6=HUX>+lxqF0O6b6JYaS&^4;DSfLZe_GcQDt&B|&=RFE-= z)U@CoR1F|R=%EMkJ`w+x=oe{$3bT1lT==nQ>#Q{DGLuxfu_r)|f^iUba^y-N@(m&p zT%I8n46=}a=vxbcp#IS)Hgm+X7!5=O+X(;U0U$tLg}I%q4{}jOP)D>AljhsNb5`}` z(@UaNmwn|PjP!bcRH^wghq@4Ce)>}*zE51T{rRKSs;Vc1Tr*U?4xdakM~>?sGK;#x zolptc3ft3&GSlu-LrVx}(q_AFu`OVy^WOE3cLA&;NdYzWQyZFaB@;VGR-BgCMogsH z*T!;F1ti>t&6%N)(wSKRYf52u5<@g_W6HEC^E-VhyGu%U3eMOF@NN!n;ksu4jRCL2 z#pJ&K(2V<}gWuSI-j_>HqwN_w%hrax8Z{ znDxmaR1Nl+`YZW#7nA0L16|`VG;QmbcsRyp3ckNW@#f2MDhm=}5s!Tj^QnRn)ZC_k zo$7y1c!CLB8kmmhUy3A4>oEUqS2qhQ&qHu))wn-IHrE%yPk*aFVcQI`h=SwEfzGmr zJFe0LaogQ#R51=uQ>+xN`K5upg`2`(yr9Ay;NLh+uMWX7z^@b#IZ5m4$!|9apv~Ck z(dUV&uohO%>rm`WLI5-3 z$5j>|FW6trdIy(D9~ZBE*@5lv0uCOIY(SA z)xU1&5fia(F9*gCB%9y1;O^qI6Sa}k^?=azcnxY~SoH*jDFQ$Ylmh4^1YM$`a?9ki zKw>IaY2a=p**`#>I8--Zs0|E6cR+WJZ>H^$C5*#@F+E?OTMvysXBBMa4yhb~i1JX` zU7U(Sr$dg|WBx$M2JJ?V<{Qw5eSK^BFCOhXw~XpAzpvxpUpO~0MXq12nd>> z1Gh`@YYRmN@uvf92YZv^&QWA&p~MfS*ACd(=3s#-m1i0lqL~2m@2L zTdzeF#d-0HGlZmxIN3BrV;wd=U@oPZ8M<`aC;GSHNGUD6wpS}^kr%lhh${X3>$|vuBm5J#A0*RG?m9q{6whW`sagbL+{KwymMa! z1~liMxOzRkT`~=~gU*t0V)|4#E>qs_BGls-uA6u&8vu9wCZUPuaz`{eWWi~)!|UtI z3eOxDocK7HjnV7tCYU&Vn=gQq8MXKBuA%4TU+U64vs_s42{$YlgE2xy;UY6&PDF3- zXE0C4?E#=XsulzH0?4h>>-K-~}>hn?3@t~H06E6Vx(W1N1~Kf%R9<(9F6_5Nv`UigMEMXda1> zgGSQ%xh)1t;=u4^(|GSEoQ2E@gHi?>YDD~y2>H9xROyRGmfSK0Sxcp)R$W|YTPPz! zfk{q5QBvMntHJ~2RBO#I-W&Mgqr3XCW&7fsX64dK*0Hhg;tbk&m0J}_=U#pX8M{ip z%{~3(=#ux8qNGhzYhg>)K``C)QJ(__SIQ^-UTs{uE$4Y@u(Bn~xxqWAmxrPQw%{P0 zcPStYk6;-EaWRl3X4p?u*I+K*s?UO1R|)t0(q02=hsog^o_z!hSpA2QE{!xvl3J<$|e--Otm-gKvk+| z|F8t+hYmlaAlwLC(_YR13mX~dvPO!2uYV)_&CK@&BX{FF>Zq4(J?PvpGEyIP+BdnJ zm1k2{2`d7{J1!*mu{S{FEPrYP_8jFak=uDZacFClaKmPU7w;b)tp#U3=~{3p%&D8hcIs{Lfu;Twq&u$DqrFLdU7jn>x)0A_`mBm6Iw zPJxHZ$Usa%4tVZTG;=OG5!^KjJM#MnC!pmBrr=@$O>OP$aT-j4ZRVM>yXXM-SO@q%Mm zoz3<~{i%4rVa$H^{DT9a{un3){#`hVJ@J0FxLex44@4INbc-Ukq+dc|F0o)avqjR+VxGe^F z;zEqcunu8v@0eH*B|Iwy6a|+qk#8K{#R20oIqoe*ySJj8%f@gLkw&@+SpMDMhpdkp zk+FzlEPH)uE>*-#Vnm8PKH_zRq|zdKFp=AF%gyMRjw&8Vszuhp%s`3$i~Gs}Z3x3l zsM>s>%FEyMnEVDVf%|sbT@y}A!B@<4V$II|VM1TKU@C2!^Gjd-;+?;{Lyt#t6}-k) zIxQw(G+TKCO-BB8%ka|qAOpeCIirwS1(j&z1xuEa$_i3rkV~qZ$De~4& z_x}Ck*y4S>XqKBpJ7=%9_G{ErrAB@PJ<05~k7a&jL!3I4fioSMEDn_QC~Z_bFO55f z#q((}gUDG^I}25b^VpVN{HlX)^0-25o(c(CO8Q)R3t8dkgGItT{!=i01tl-6wA0>V zXGc$)H$cJn!G&$~TVRLCU$Vd+FUK(_^#@ZZ+V6AJ%;HL&_s z2Cw3Z#mInQLhfyHWXW`-T%iss zZ&eU!iD_ii5OVNdWEd|Yz0YcCEAB7Lp{=KSvW}H~l@r+`ub>LIO0JU{-&fU8t=KR@ z@2ILF-;N6QsP-P^;Y9q|%!H4GP2bs4THP6X#(Pg68_2j$L{>3?GaI!Qycfq?en`Iy z^WELQI~VNcA{QlmdQ)h-U_U+IC$kokIMaAg@v2OgI4R7%rifwGrvI9*;Rw}ylo7Ik zbYVjswn;rO;R!&rUHh%<28hALYrk*vLkhF(GVnC^IqEZF;sT;ei9}J(wA^j63w&lo zx8FSeS#zc|!1au%;oMUTr-~ffomEup75i8+&dJxdH`1|@)!l1LsgjdfBqup3mBAeS z9lu07eBPn0{kVZT-hY#kEO&lDMcPm)hlF5c85IeyVrDK((duV%6|Y0 z$B0-wQkBLt1OBk>9L(q4-Plrivs`YX1AJeC8EEA>JYA$xQ@<~fL!#+cLD%9n&8zo# zbNP%9%Yod%Po+AhfKO&=ctzK@*H37SARU~riJ2Z}F3P!O8(V%Hke&SeZlb-#;@nA< zVmMg-E0x@%vkK@1Va%pQ>{^0?N%-=|JLJfcJ(lo(p@k>9%~@(?{scJm$ue8sZ#sl9 z>^#JOPrz~g%ua&j5!K35c9)%ONU&vSIBfv@N)o&J)uz?YIqgVtr9!|~7Z2xu0RR6S zqFjk4X7FQLo$wJX*fTF=e080L z+!FPC=BPMtev#bLk%!6C55&eH#)4EMZd?hFH3A{j6O1jy*2Ag!{JtT~*goh!`f`K; z+5!`m+@Rx+fa=QkAU{rIO3zf{B$3%)9G^&7NP>H@ff8fBRFuVzM`WpJnJQ56!SXO1 zz(K7blGDO7@-2uW<4F3u!My0Ku@DoXqsI{_T*OB>^u$RhkP~@~H8FLMZgU-7-R=9k z%41l=c5Mk5BwY;Q#sOP@pc%=kP$I~Pp=RX>cUu!ft+yd)kay%l78I?i4q`GNvO(t~ zr_}&Iw3;$&OD`wAzg|vft)59VX^VzEzv~QVrCeXS+VW~oXQ4kmg&F4$*q#@?9r#TA zHH$p<|0d@rC&W<)>grSZ$8K~EbO@xxhv$gL%Z@zw48Qa}539vX7)Lqtc868@DRFCJq-3(rKRaHLZw1cbFA$MKM@R(+kF{nQgbdwP;M z^3SuPaCZ%Rrg9v6y08jY7UR;u*1*1@)R71`TBwT8y!%VZ*raFOD@Fu98~KHMjJNLf zuAInteF^#Z8V`>02(XnygbOb%X( zwTcG$T7Yj~F8(l|09pDE(>QzRT)x~$uFC)kafmcotEi^4N^+;-{JZN!wy`u4PEuLu zT(S>W_z^#cdf{ApcC;6P!UYp!Q_;6g$4JJ4F#1FM=EEF*ZD)Bnd4CAriAPBkk*LE! z5_(5^juw5B6=Q{inCn0ntta!mvxuNbJzZl%%J{hDm{Cih zux>l+l8Q>IFu@BPd6KJP+)Ch9Lz(-@<%^-!vJW-+1qUhDR^~=YoqLH$;Bu8#KPKL; zv2w$cOh<2oZ^o#bXj$`+v&g~^e+RhFRQ7&zmEr_v#&`6qLy>B>6Y~oCVT~4I}hHg@KVYt@EY#MYUh;5!sE+i zOtj721hb)zc8f`{Ip8Ty4_ZGV;124m1b^m{bf=ci!EX?|4neXAZ#8-NmZ$J{ zHxY|d#xF}^{hTERS8f>owo+|AOmXp!$$y<`;@^M)T#q$TF`#HdD4mF&yeJW(_b&s^ zXtWm6_XygWu%JO>laYvHuIW-uFsN2_8y6xayH2}>un7E+CF06Sa39^l-42>QigKJd z^;*Y#4uD<_xY6}(p3_&d#F+!n60{sGYk_d%luQIythSxYAnfR&Q|!Bn)y(q^)N7sZ^mEhMbV18 z6;cde|5OECaghRULzw`6p_=g>AR_|L8UKbR*U8r1cc1^IeIGk>Kg3l9>=WOEMv}$> zOQZwIzUzRDaJ>m|U=t9&V#omHK)#?ANh}P7-E?}{*O`XGeYGnoK(f|Uvr{$U?4K8; z+ny!}cKU+-c)9au@NlK$u4KGKpL{K-Wft6*`NJNolP5e%2Tyaf2Hr~NTF5K*Iqv-$ zhjfMW3u@hFP9Cdo*x^lJDxppi@c`AHOL`s9p%f8txtC|{@&TmqAc^YLt!_O6ZjP@T}j za2Hfs=&aTsCJp8zxX`~f5l;*v`@X?$YkvIc*4q)tr>*45-)LXoa{V`oE%agS# z*~d75$rBy1Yoe*Z3awl+^L{1~_?pA!MhnyJ$(k1(dI@Ux&UnB2WOTY@8j=Wyh*g+B z_PZL9=UUug<~_vWeS0q*7O-sf(7+YUf=)V9kG9F{QA`FdwGd=u)5txjm~k3e>rGvt zg^43n()Iov$@~L5oJ)+g&so`y`XzZ6sV*&SN2)Qu7+jqI#ekb< z3^SC>@LLZX%yqt0=obH&nf@%wRa5&#BlI?R@JK-};Um>7bC;L8wm8&_lmhGf3F+%6q21CX!@Lxq_rG}imxCo5&~vZ;huKIP>u8ZD z9$(gly$gkyCFT)rkH+JX3)C(dn<~}B)5|x


HXmX({&X03VmnkD|W?KMXjo|Ek}XMgDjss!*VQAdmX56U`z^hf$_T zC8yQmvvh?l%~UtkUnL(#j2nANk6&hy64S$iX0eXj*9KmWnyq{d#>vu9o&6wPjFPR) z&c49Q{Ulka{Jbk@Jn8-aVCOVX%{vYq0HDGG008s9f*l7J6GxB# zRorshqbb(M-xD21RE#8ClbcC$irLeWRE#2r#G`*VrX7tfbUe5G+HN}O+ONU*f$+yL zC}ys0mS=*95MxA(I_J-9nbT!jl8#$NyggLv&k0|pQr`_)(CfdLA2n3#+9);X^F}4G zmAf9-nI+a31k*0l)4JMD5_*3Dy$R-Bpo&_y%maS#&sZvg*Ju>ujN6ct#K0D<2v0sVjXp$R;nqARw}mq5J^x1#~~ZREEQ@QjQM0hGV{@;lD5t~J>q{- zFK;xHC;sAA`u?Qjg86)g0wO~PHvhFvzwD_>TA_#=3+SD8!%y ziHOCm4xa1s{~8xF&)R~&6|_}Fyz7VR4Ne3my3Qdt`R>*x&&R*V!@s)x-Us*P$}UgO z?|yq;oc(Tsac~=R27|W07QY68-916gOTl~V_-^nnW6{GjfW6*ibZ;Ao-{Xn!L0t#h z8Lm7?hvZMVqfZ?m+!OJ;wZYP|bxc>g#1o#g(W2Uf+x_zw!%6N4YXT#4u@oqA?c8(4 zl(dcK5lJyjEl`F4FijDnbL)3gyV^|1=tnm9h@52)k_Us}zgSO1TJ#&&y)|f{d9w(P zH5BUi3a1eF=A^mpAle{~RED8z@|POTkIx+oG@tkE?pivg9VG9+n7eW6{})~7*qvFl zt=rhPoi|3swr$(C?TXEcor-PSwr$%vweP2UcDwgK%r)B>Yd%l!19+t_@4o8g$zMfPfOx9tigtUEEMMNEX2C>RRL1aD2d8zbS5c3m;3JxmtUGf^UAUd{m zqy9>8M4`!4(NS~D+Fj;LHrPlPV`EYo5TqO2IY)-7{d0^H&R+kp19%k!11i42ZW?+} zZ6L;D@-c!HBuaZCQxGXlU^+^ub3d<6e%}GWBsbkY(cS5m3uFp{zMSx3rjNHz`wz^Y zQ(wiQ2ck+5*weGKZGXi91PhR!gd6A=o0HqCxxK#aK1<$lgvtzBaB5!fNQ%KQ))FWt zJ$pZH{>!V+w^IjwxE|-BfjCc$(!~C)v$IE&xIb>e)Es;FU)z0lTjmTgjRYU|r8O_N zPv0P?NH^OA*Vo91J3;Rh>mAtpHMkC7g^o9;Q+o{dp0>HD-85;5wu0|HVg1>@S8VC{f zVW9h@!k!+C-H4C;TwHu!}HCCuNHAOyDhv!Ak4PF9WR%=)b*xs!< z9P?S^fu;en_MbEuvA`kG>t{5H!>mJVP6Iu#)1fl7sVFPvX^nlR0(L&Kf7#)8K*J8bYnHIpE&6?3%j!EmXUlN z^k-!-<^uoS1t32SdwONgg>q+Bv|qGpdYy;3tz2{8tL?=Lw`q1UtlyKV-4lCA8&?0$ zJUkCKJ(c9hnDEzz7<=Dj^;{#qiomK_GI|t+EGiBxFBL|P;iC&x!S8sSH-Mwf;`0?| zM^N+bo4Wy_kzJj|TZ&#Q^X>vc#Z)m49-pDZ=Ce9}uz-_i=`C!oB-A{70o}M<%7fqS zfcH&o7RiUK>(8AcxlJ}>4ptov@xPb48~4ubuHku3NwReM2pEOTBDDo=E5YpX-?6ZV zMp=v2>D!1E>yxXfdsa6mFAXp_5+f;D>PQLC&Tqm^R{;rm>xZW;TMih4Mb$u#<4)tv z-|6Tpd*kznI$Ois^bQAma4Zs#<_85_V=k-px1VpF(sw!`3cIxt`9_o9h>w zy6H==bm7TG8aSPbz{ZHuX5&e|>b zeH1t&5DCR@1;ik}Lm)DeUT^z)WsXN=#21BM<&Is8oP`4Qj+_rINK5V^?uV#Z0vV&I ztwrT4-YMTyIAS!*j`QP3)7P_125vpJP3g6vDfCM`e8RudHqjCiI)lENx${{S*nBLA zYR@cW>}hBYD+Z&ZkYxMlwm&2>M6P16{FS^!P6vs+7oYI}VfJ(V?2WHNMOb8?v2$UF zs9EFdZR8ZR^zf*oN6gkWAHNY~EeCS~Lla@Ap`I|K6|MHuJWNpR zpTXO}UZ3H*#9{a*YzebJeB%sj&M9xGzVR3(Q`-_yWmgc~M4>Zxkk_1FXM3%huTy4h zG-$yE9Tg~ULdaIAPvKk~5+9DKcp?U3V17T7DcN=Z77!lR592W%>xNQFq2OrmikQ z8@vCOg?TC-stK}c?K1qfPPbu2lwB?AiGGOZou(Q9nN^$5xp!N-sBI3+*o+^2%KyP) z+X<5MzN-fuU%+6^)iMyLrcMGYen%g4dtjPCw{ZIF4hq?BIydyeT)wk|m2v0@nhCO_ z3npWn_HMNeN3=KXo|^SOjuC)*Y|=&f}L-E(O9sL;HHO&1n{Yck&tpK_;&A+DiVYa|m? z;EX~)L9J~7qk^p`#n!mOfu%0z3OMqxhBfe~`;x9@o`B__zI}5XuaMWgbEFyXcar9{ zDbIJ9K4KCV2Zi^YOe(`WZ*KnfR(>Oe5Tu372H#Lxc8DEZ55#g^v_m%QacR8#$Je~E zVedTbLviah1@U&?ZbbZrEzO-n1UP37*Fhfc=g?$nq7+?wsH|1-^&)}W_T)Xu# z{ROMt6fjA%i*e90Kuk6w(5Hv3qxHbiA>#?^u@vN1nF;0vXuD}s+)y8bW26om#y?h@ z*fQ!UY-wHVl4-u)9a85UoIP6Iz60T_Z)YClq@1S^wY7A%kH^ETAyb}TID*T~SUyux z7NC5P@w6VBipO;*sqbr+G}I%%pB$*mmF0jG{DTdI%?u@aO}I3m8Lqo1qd{z>!q9`YUYn7+a_JPmzrB$VT_j&uxF7-D5bu z#|A5yn*Z>BF9K_rK@*AabwpUYH-vRAT#hwz=i}5824CdCMRC*+P~3?x5Q2Y%H<^mU z#b#(YJsY8>_UhR=-*8c;H-DC4{Tt}uZ(Im=34MGget zN-0$x=_wnRG64#LG>uV?Ul}2f*s_h2X|_bnc|K0PiB7=3Nn6=0WeI5!zh166L)a8u zS%~x`Bn8VHKYp9=IyG>Dx?qdwOIJQO_b9sJimM$Hj_z+yaQHX><W`GbYbq;6Fb^YaEpPcxxP0o&k z<6}4|mx?3JZ?;M~UlL>9E$@ih6K{$=TmqFrJs)KQR(f_HJ5T={e)oGfIzb=8jeBuR zV1FjN8U;k;Qcnq}-AFfZMCbD)wNoLNQY`zPF)$5u!I7@V)t5++Q_j-nn?)@$hMtQy zsHH+pIOQS3(XvwdaqEHlkr&YBA|TScA_krafkX)qPEQ0CgOm&YRuownfiWT?5u8Kt z&IF5Q0a02Qq80T$EORw1HH_b%^wvT>jDsY+2%TgRsHqxZmQ@@4($&M}MrT52!{DYJ z`s!On(<*r8zt@KHl5vx2_9-SI_nxRn068CFGY1Z(SX^z`FdH>0?G^EESuASoV{dyt zK*OofWQ071!x_Y3Ia@Ef1|u*57v4G#)RUgz^E{Og!Im=Jr>l5tQMwW^l~tRQjgki+ zH46Z>yeQc9Fc##bfFAKWSE7xLFgIHd**5l{dDcH&4vuFj#y7c_MP; zgD7L1zr9N4hU3gilH~vh;cYF0<@!=PW@_k+-KKoOJ@{>Z9E9nTxStOnC}ouVLarDU(b+m2QPCc6!JI2vwxe)4h7xdKl~pxEfL0Y}TPZ4Jy3`ibx%ly_{#A^U?Py!uwVK?-YW}9vZ0uZ}YNH2-5%PKUy%~5s zn|!{Gd2ZAqje{D9u``*ZgbfSLms`v=nMIe2%e#${d@KB(OAsdLuvWXOza8 zjGQL)Pnj?aH!3Sh6xkM+<$A7-eW5Ko{Lic>^Pb7&UT&CRa6X09m{twtm%hZ=RX_n?=l=s6?y7tzmu2b=<^B7dMMD{USBX1f4V?Xjh&_0Nr`KKh>b-@}GLz7?a;z)ED$=Dd z{hGpWSBCZ78LlJ_!i?`nQt}G#Nn1Lc8^tl(-WtUz*;~Y#Q@!6bQcnRitoV~JUuI)Z zE1{X*l`m_Lp`(&sxnAEjnpp^);<+~l7`ZoMIZ{c!hr9Ip!U4j|GQ3M;h^ofd1K0JG zkOPLeAG*v1IVUi8w0{e(DhJ1fkawR{(3Z8!!@t3NhYjO8Nvq$v;8p;|u9WShGwOc8 zAdY+Ucx4>GSO@{6dyW>Rj2;3+T-GJyhJC)9GX@OB9?CsBQd3o#1^ZQ9sbN)#EK?-s zJSwo}bZpDRcLZ63d~$N*6LxZX!wH8w;R!Sb^$8Y=HkB;~8wbM>`ok7svUVRS{Wte$ z0Td8JnvrCKS&~tNE*)1aGg@v|w+Tc8?ZT$rDuLvo^%t#uJ^qwjB32hr#LWn!(H{OK zc(T6}JBOF@|4^ZQN4nUx?klKLh1WuFS#jFX$rb*#g=1k?Q4Bp9VUi$>G8C8Lnlui4 ztZuS0SqYS5-S|6IHo% zjRaH_TB{+bQOv3{ESymrfV>>Fz&lIUm-G*?*K3MT?MrAbSWIf8K&yOwNoN;kIx7(AL)4n<#ht?Ai+++_AMQ@;JC)2a}E z+aM!p3RU{)Qp>+8kwFOq-aZYj6Gh%nm4Hl_o5x{oeJN}6^@zDDpI54owx7DhVXa53 ziRfa;Uud7K$drS2_Gjw(V*7mWFxL-}d6F#h6GC77lJvcwV)nb6N+W7&vGT~K-uqAi zuTccwEPvN+xKziLjj|5$9L%RcWRS;^Ac9=>UqV%%b7NCP-HTTKiN2s*}&ApWX{!3S8?s zs|Fkb1^)X;Q7zeD!x2%jilS}ykbLlLt~({0nSl_c76)Q00#K{K>Ti{Tg)w>QalEIA zMPMm^O55RkSO;}4h(b$W5U>@!7SnnGh|Nsag0mC5s&EvJq+OdD%`3iul1|XU4cGg# zWV_5D^cnfYwE(@FxgV^aQG(x{|pUjdlv@frb$@E>`Dg z`E|S8r_wnI74K#e6#~Lnq@s0BN=xc?>$s{gE_*&XyJX6moJdTH;b?@-bzN~g0nhmnOc-H zM4vvhBFCJV^FYL=VT>a41KTk=X69C6JRy2IxF?UYO$w7@T;cHqsPOY^=z)*R5!*Ee zzTMe=s_0I&9^y8hHJc+)6|a`7Sc!g&)A3bA@S8Iv*B6UQ6m5t^vCwjay;O#^$IjSv z`1)u(NQY>IDyu`Tkj8^0`7C;t(6XF}HWpE%rpZboJVdQfpej`TnjVSnBAc@v^JK;Y zW-t6QUp+dBXq!p1H8%A*dUzLzby1icg=Bo14+e&&=CsOJ!aIQg)l+72y_(m?GZb3U z&>WMz(Wi;0Gs?oIQz?uw-bo$ah>Ij^U*>_U#LinbS4O3R*4)#b>?g5dEP<~6)?$Zd z+0;z;E;$w^0M!b=^HP5^T}HmXiccuxDQ>TNANgr)V|a_3iEppd zeqzH1p4QdadgEq56U6dHD{qZziZ0Eu%hl@W;!IW?Yu6l3Bd0`#zAcj>Xk{p11w${N zR7h3Pbc^9AR|3hR^N6*!nl)?!##*fPiFhLwh2{K0g!wO|ttK(59<%5c%pynhk%USo zPITkM?wR&JMv?=83uBR#QG`tNhZY-UERhrH1`L?9ONQm-hBd**0xTzwbed;piK{Cv8-#pOd%pAr$qN3OM5%XUs(rq7P+==q)oY}xYp?RN=cmKxSazsjiH z>6&2c@%>`xjyj7xb+iF!Z&>#1LR?D5QaJz8b?~aEb9S|UEf6Ouupzhjki)`t8%yLd z!NkA#8wI~`5Uiv_^oB+OP0*wSg&XcowwU{EPVjoxkqW5zK@KMqu`eeN1a)`t9;_Ug zDM`{JwIE?L>4%_11)br0EPD6rvIs@lP(+KGK+~)`09ffJ1J;Cc=)7Wn_y;2kC4Rd= z|NcnUP4XVOuZTlZDON{i3YCmbD+KEtw72_xPE?Y`f@5^u-joMuQV{W*0^7ix&l@!{ z3Lg$Zg;V(sInp=gi-4)o)>;Ms{12k=_kRD$#^Wqb@TH(1=-mIt z2~;LxkJdD@hjoSPG;wT~HSSHC^HE>GC+*k|ROP(atGCK^;=$xNp z8%ZL9DhmG~`71cuItnfe?4o`0%dS9^Iwzb`;hrgYVRAl;cqjx0r~i7anfjS5vbm{@ z219hzUlCe}y>nDRKEW$T=JBI)^(tT{Vx1yK%0#QCiw1p+Q}amPpdmXBbDAQb z2!q13;Q4~x>x=I8(OC3F#`vW7G{?_GwX6++RI3CT$@D4*{X{fN3VdtvgSRRt?0Ftx zzQL0z;~zsTz>55pZp-8{EqNucZ%31rj_t>&E}f3Tq9U(_9bFiaOvTD6N{4-29Wbh; zO1c*Ymp+Q|yxIGa8_!*EJDwC@hT0su07OO-S(0VC;YlGin9&F~6?%M#Vo>b(#)(Kl zcU!)GXGinRQ3eger5&_WYnQ+h#R`E&*5u_cN&S5D$FWa1DdXARgx97{uQi#=@y+*+ zqls;LgW^{0kLc-!=(H2^QQnEEwT1QVF}Hvpc+@e0E7V+1Io7kYeGR%5JJ4+ulS}mFn7d$O& z=~v=eY)zjX&N|Z~e^X8fP_{z`w0n&|1Dq3(;ohQjZs2?@dSIowk!ViagSESae2P#l zllA9}V1v-wHbi4SI`oonWY@UP7k&iuJAp62=I*@JE!=DUW&+4k8?JEI{hkZrw{Qx7)Tb1P(FHxa~dDmJ4mPr_@XVO#1~Yx?Ze{6P;RXg(oG7;I&eXP zrk8-;c>A=X51-+2aFk4E5~x$%-@JHgv*4RH(ca zcqJ98h>$H=5@t_jKb& zE;|aLbr-k%3w*@}a@{b6wg*Hxk^vPKch4&XN6@@_hn;eyt35&0v(7JZnd7|PLy0m3 zaQx?^43X`37)V^-G20L^kWS3V)0| zF>@~zf!M$EeSveEhdYHOHtBa3uOlrA`ivY>jzZ3LOz$w9Hw1@s=2P`vV~(FOW;Upv z5Pyfxr4h{I+rb2}x3o{{Y)Y%G-I=`1MLC@}Sb#-$748xVg{is-@P^bKhx(Ww~!y2R^3~5KTt+w4IU^>O-HX7WrcLB*$74 zC^7jNp9^>AIO;}hij6z6)2kj87v#E}X@c?au5@ve->a#$Dno3XHdy!-Lt7%_>B5FQ zzo5#X*T*bt`GX#YqfwplS{-$YahF%}Z7tlS+7dyf$^V|rir4^l^Eb^;ic1h85Y>6? z9E;`FnF0JR#~UE$f0WHC%~?y(KSspi^Q?QkLavzgFGw?X zytF%mnIGKpie%K2xVM~eX=C@^!I#;r5gNi^-?kw&3apy~XMBtPVt!qqq%~gG3C-C* zr#2m!_k~HPM*G6rTsrCtN3;a8WE+?3?N7m}6??D#Qpa}RmhXI6t~l{>p~%#!YQFo& zqnErMiOz9%u>A9zFOG$aHyiokE$x{j?Lx5%Tq$>t^RKIkVl=GzEZ(>FFoe<6w_>p zLu1U|7&&*sA*pGyyB-!;{83F-d8bOUM(p}3RWD!YCuOyA7z=LU{0aER1J(X=$$1x% z5bntL)uAYY{kcku;$EQP&)qXYs$|K59px|Vg%2@%zZm!k6gM{xez4%;R(Ld>0Gm8vS-%9m*`&yX6Q)O=k((?%f%BOK`m2C`AAx~GY!kV!BrrhqfjnHG9dC-;_ci_-C`5-^7 z$01av4W?Ey&X+ZyugdCwe|>90dd>T;e1g;UylLY4=j;{lOEDJ1i^QLEf={?3*&W8b z!IV-NMD1kFcxP(1l73zst*v3ahsv&LB09=ATR>nmLi{Vma`}H)flMdhJv$zYGni^njL!IPg%cIbR)_f!{_iZ*rq^B3=s#=R_dkive@Q#+jSX!W{x4^o zZK9xk)_ug0?USLyjIOut|~85{0p#hRDcz%)j0pXp^)jtX9orN4gW%>8hnzWeVZ`xaG7PU68JhJ! z&110}VAQGPYQ#whiJ=)Hj6c>CaXvH5jz4^j&lv26wqJ5wH$q4 zT#pd6h^nG*_`VenSNEH>bWy(?*-eyMr&2Y$zpB~QFd=muKg};3j(&tP*o7zy$Uf#? zO%oX3qDn4Njd5wE`(g0rw;&$MnB2 zS4Bg}&g>*juOZ7WOc}Z@vLsBl13BJQ9mBJXI6GZV7?ZW%HBS0n^Ma~cFpT`8pKFvSY*3zHd7^V@xG3Q3-lle%jjtgWL8Ho!IEpX1z`n?qII?k$z%tX72t5r>B;gjaK0be**qdM}5#p zUBXDSfJF^mpw?S2a~QOwGvttS;viaxuH!g#gs(qbXkKW3D^}F0;sd?mG)BH?jc|gS zx}SEH(a)|!t(bDl!xt6~5pBETfimE}gz*>62GUe@K+Tbi7>≺gk3%6GsG^asxt? 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%0DpKd|cJ;$Hka(OqymQdkIBm}f_To1b@LZ{?!! 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%0D0D|RIiA`ri2?Necvob6noDhiaHY| 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∋8!b?GDobSPCGL$%TN8&PGK#xru) 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 qS#y%*-=RK|2krj0}bY4+6 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

;VP1}hJo42eA&|iQC=j2# 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

aZN~*l6>c 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�jypK3Q?wG@BfdpB)*HXj8K~wu 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
    yM|j)iR&mJC@d@LgRl-pt2&yf_Q;PL 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 z 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

{P1m*d()pn%JLV}K94W3{K)c; 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

Mw3%I<~>A>2$G5ju0+(X79mUj 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%0AkQYE^YD$y!yTTbyl3|*CA?Ml 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