Упаковка и развертывание классических моделей машинного обучения и моделей линейного логистического менеджмента с помощью Amazon SageMaker, часть 1 улучшения PySDK

Распаковка и развертывание классических моделей машинного обучения и моделей линейного логистического менеджмента на платформе Amazon SageMaker улучшение с помощью PySDK, Часть 1

Amazon SageMaker – это полностью управляемый сервис, который позволяет разработчикам и специалистам по обработке данных быстро и легко создавать, обучать и развертывать модели машинного обучения (ML) любого масштаба. SageMaker упрощает развертывание моделей в рабочее окружение через вызовы API сервиса. Модели упаковываются в контейнеры для надежного и масштабируемого развертывания. Несмотря на то, что она предоставляет различные точки входа, такие как набор инструментов SageMaker Python SDK, SDK AWS, консоль SageMaker и Amazon SageMaker Studio для упрощения процесса обучения и развертывания моделей ML в масштабе, клиенты все еще ищут лучшие способы развертывания своих моделей для тестирования и оптимизации производственного использования.

Мы запускаем два новых способа упрощения процесса упаковки и развертывания моделей с использованием SageMaker.

В этой статье мы представляем новый опыт создания моделей SageMaker Python SDK ModelBuilder, который призван минимизировать кривую обучения для новых пользователей SageMaker, таких как специалисты по обработке данных, а также помогает опытным инженерам MLOps максимально использовать возможности сервиса SageMaker. Он упрощает сложность начальной настройки и развертывания, а также предоставляет руководство по передовым методам использования всех возможностей SageMaker. Мы предоставляем подробные сведения и примеры на GitHub для этого нового функционала SageMaker.

Другой новинкой является новый интерактивный опыт развертывания в SageMaker Studio. Об этом мы расскажем во второй части.

Для развертывания моделей на конечную точку SageMaker требуется выполнить ряд действий для подготовки модели к размещению на конечной точке SageMaker. Это включает получение модельных артефактов в правильном формате и структуру, создание кода вывода и указание необходимых деталей, таких как URL-адрес модельного изображения, Amazon Simple Storage Service (Amazon S3), расположение модельных артефактов, этапы сериализации и десериализации, а также необходимые роли управления доступом и идентификации AWS (IAM) для обеспечения соответствующих разрешений доступа. Затем конфигурация конечной точки требует определения типа вывода и настройки соответствующих параметров, таких как типы экземпляров, количество и распределение трафика между вариантами модели.

Чтобы еще больше помочь нашим клиентам при использовании размещения SageMaker, мы представили новый класс ModelBuilder в SageMaker Python SDK, который обладает следующими ключевыми преимуществами при развертывании моделей на конечные точки SageMaker:

  • Объединение опыта развертывания между фреймворками – Новый опыт предоставляет единый рабочий процесс для развертывания моделей, созданных с использованием различных фреймворков, таких как PyTorch, TensorFlow и XGBoost. Это упрощает процесс развертывания.
  • Автоматизация развертывания моделей – Задачи, такие как выбор подходящих контейнеров, фиксация зависимостей и обработка сериализации/десериализации, автоматизируются, что сокращает ручные усилия, необходимые для развертывания.
  • Обеспечение плавного перехода от локального тестирования к размещению на конечной точке SageMaker – Модели могут быть легко переведены с локального тестирования на конечную точку SageMaker с минимальными изменениями кода. Живые журналы обеспечивают безопасную отладку.

В целом, SageMaker ModelBuilder упрощает и автоматизирует процесс упаковки моделей для вывода SageMaker, обрабатывая низкоуровневые детали и предоставляя инструменты для тестирования, проверки и оптимизации конечных точек. Это повышает продуктивность разработчика и снижает количество ошибок.

В следующих разделах мы подробно рассмотрим эту новую функцию. Мы также обсудим, как развертывать модели на размещение SageMaker с использованием ModelBuilder, что упрощает процесс. Затем мы покажем вам несколько примеров для различных фреймворков, чтобы развернуть как традиционные модели машинного обучения, так и базовые модели, которые обеспечивают использование генеративного искусственного интеллекта.

Знакомство с SageMaker ModelBuilder

Новый ModelBuilder – это класс Python, ориентированный на использование моделей машинного обучения, созданных с использованием фреймворков, таких как XGBoost или PyTorch, и преобразование их в модели, готовые для развертывания на SageMaker. ModelBuilder предоставляет функцию build(), которая генерирует артефакты в соответствии с модельным сервером, и функцию развертывания deploy(), чтобы развернуть локально или на конечную точку SageMaker. Внедрение этой функции упрощает интеграцию моделей с средой SageMaker, оптимизируя их для производительности и масштабируемости. Ниже приведена диаграмма, демонстрирующая, как работает ModelBuilder на высоком уровне.

Класс ModelBuilder

Класс ModelBuilder предоставляет различные варианты настройки. Однако, для развертывания модели рамок, модельный конструктор просто ожидает модель, ввод, вывод и роль:

class ModelBuilder(    model, # идентификатор модели или объект модели    role_arn, # IAM-роль    schema_builder, # определяет ввод и вывод    mode, # выбор между локальным развертыванием и развертыванием в конечные точки SageMaker    ...)

Класс SchemaBuilder

Класс SchemaBuilder позволяет определить ввод и вывод для вашей конечной точки. Он позволяет генерировать соответствующие функции маршалинга для сериализации и десериализации ввода и вывода. Следующий классовый файл предоставляет все варианты для настройки:

class SchemaBuilder(    sample_input: Any,    sample_output: Any,    input_translator: CustomPayloadTranslator = None,    output_translator: CustomPayloadTranslator = None)

Однако в большинстве случаев достаточно просто примера ввода и вывода. Например:

input = "Как идет демонстрация?"output = "Comment la démo va-t-elle?"schema = SchemaBuilder(input, output)

Предоставляя пример ввода и вывода, SchemaBuilder может автоматически определить необходимые преобразования, что упрощает процесс интеграции. Для более сложных случаев использования есть гибкость предоставления пользовательских функций перевода как для ввода, так и для вывода, что позволяет эффективно обрабатывать более сложные структуры данных. Мы демонстрируем это в следующих разделах, развертывая различные модели с использованием различных рамок с помощью ModelBuilder.

Локальный режим работы

В этом примере мы используем ModelBuilder для развертывания модели XGBoost локально. Вы можете использовать режим для переключения между локальным тестированием и развертыванием в конечную точку SageMaker. Сначала мы обучаем модель XGBoost (локально или в SageMaker) и сохраняем артефакты модели в рабочем каталоге:

# Обучить модельmodel = XGBClassifier()model.fit(X_train, y_train)model.save_model(model_dir + "/my_model.xgb")

Затем мы создаем объект ModelBuilder, передавая фактический объект модели, SchemaBuilder, которая использует объекты примеров тестового ввода и вывода (тот же ввод и вывод, которые мы использовали при обучении и тестировании модели) для определения необходимой сериализации. Обратите внимание, что мы используем Mode.LOCAL_CONTAINER, чтобы указать локальное развертывание. Затем мы вызываем функцию build, чтобы автоматически определить поддерживаемый образ контейнера рамки, а также выполнить сканирование зависимостей. Смотрите следующий код:

model_builder_local = ModelBuilder(    model=model,      schema_builder=SchemaBuilder(X_test, y_pred),     role_arn=execution_role,     mode=Mode.LOCAL_CONTAINER)xgb_local_builder = model_builder_local.build()

Наконец, мы можем вызвать функцию deploy в объекте модели, который также предоставляет живой журнал для более простого отладки. Не нужно указывать тип или количество экземпляров, потому что модель будет развернута локально. Если вы указали эти параметры, они будут проигнорированы. Эта функция вернет объект предиктора, который мы можем использовать для предсказания с тестовыми данными:

# Примечание. Всю сериализацию и десериализацию обрабатывает конструктор моделей.predictor_local = xgb_local_builder.deploy("# instance_type='ml.c5.xlarge',# initial_instance_count=1)# Сделать предсказание с тестовыми данными. predictor_local.predict(X_test)

По желанию вы также можете контролировать загрузку модели, предварительную и послепроцессинг с использованием InferenceSpec. Мы предоставим более подробные сведения позже в этой статье. Использование LOCAL_CONTAINER – отличный способ протестировать свой сценарий локально перед развертыванием в конечную точку SageMaker.

Воспользуйтесь примером model-builder-xgboost.ipynb, чтобы протестировать развертывание как локально, так и в конечную точку SageMaker с использованием ModelBuilder.

Развертывание традиционных моделей на конечные точки SageMaker

В следующих примерах мы покажем, как использовать ModelBuilder для развертывания традиционных моделей машинного обучения.

Модели XGBoost

Аналогично предыдущему разделу, вы можете развернуть модель XGBoost на конечную точку SageMaker, изменив параметр mode при создании объекта ModelBuilder:

model_builder = ModelBuilder(    model=model,      schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output),     role_arn=execution_role,     mode=Mode.SAGEMAKER_ENDPOINT)xgb_builder = model_builder.build()predictor = xgb_builder.deploy(    instance_type='ml.c5.xlarge',    initial_instance_count=1)

Обратите внимание, что при развертывании на конечные точки SageMaker необходимо указать тип экземпляра и количество экземпляров при вызове функции deploy.

Посмотрите пример model-builder-xgboost.ipynb для развертывания модели XGBoost.

Модели Triton

Вы можете использовать ModelBuilder для обслуживания моделей PyTorch на Triton Inference Server. Для этого необходимо указать параметр model_server как ModelServer.TRITON, передать модель и иметь объект SchemaBuilder, который требует образцы входных и выходных данных из модели. ModelBuilder позаботится об остальном.

model_builder = ModelBuilder(    model=model,      schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output),     role_arn=execution_role,    model_server=ModelServer.TRITON,     mode=Mode.SAGEMAKER_ENDPOINT)triton_builder = model_builder.build()predictor = triton_builder.deploy(    instance_type='ml.g4dn.xlarge',    initial_instance_count=1)

Смотрите model-builder-triton.ipynb для развертывания модели с Triton.

Модели Hugging Face

В этом примере мы покажем, как развернуть предварительно обученную модель-трансформер от Hugging Face на SageMaker. Мы хотим использовать pipeline от Hugging Face для загрузки модели, поэтому создаем пользовательскую спецификацию вывода для ModelBuilder:

# пользовательская спецификация вывода с использованием pipeline от hugging faceclass MyInferenceSpec(InferenceSpec):    def load(self, model_dir: str):        return pipeline("translation_en_to_fr", model="t5-small")            def invoke(self, input, model):        return model(input)    inf_spec = MyInferenceSpec()

Мы также определяем вход и выход рабочей нагрузки вывода, определив объект SchemaBuilder на основе входных и выходных данных модели:

schema = SchemaBuilder(value,output)

Затем мы создаем объект ModelBuilder и развертываем модель на конечную точку SageMaker, следуя той же логике, что и в другом примере:

builder = ModelBuilder(    inference_spec=inf_spec,    mode=Mode.SAGEMAKER_ENDPOINT,  # вы можете изменить его на Mode.LOCAL_CONTAINER для локального тестирования    schema_builder=schema,    image_uri=image,)model = builder.build(    role_arn=execution_role,    sagemaker_session=sagemaker_session,)predictor = model.deploy(    initial_instance_count=1,    instance_type='ml.g5.2xlarge')

Смотрите model-builder-huggingface.ipynb для развертывания модели Hugging Face pipeline.

Развертывание моделей фундамента на конечные точки SageMaker

В следующих примерах мы покажем, как использовать ModelBuilder для развертывания базовых моделей. Как и в предыдущих моделях, все, что требуется, это идентификатор модели.

Hugging Face Hub

Если вы хотите развернуть базовую модель из Hugging Face Hub, все, что вам нужно сделать, это передать предварительно обученный идентификатор модели. Например, следующий фрагмент кода развертывает модель meta-llama/Llama-2-7b-hf локально. Вы можете изменить режим на Mode.SAGEMAKER_ENDPOINT для развертывания на конечные точки SageMaker.

model_builder = ModelBuilder(    model="meta-llama/Llama-2-7b-hf",    schema_builder=SchemaBuilder(sample_input, sample_output),    model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved    mode=Mode.LOCAL_CONTAINER,    env_vars={        # Llama 2 is a gated model and requires a Hugging Face Hub token.        "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>"     })model = model_builder.build()local_predictor = model.deploy()

Для моделей с ограниченным доступом в Hugging Face Hub необходимо запросить доступ через Hugging Face Hub и использовать соответствующий ключ, передав его как переменную среды HUGGING_FACE_HUB_TOKEN. Некоторые модели Hugging Face могут требовать доверия удаленному коду. Это также можно настроить как переменную среды, используя HF_TRUST_REMOTE_CODE. По умолчанию ModelBuilder будет использовать контейнер Hugging Face Text Generation Inference (TGI) в качестве основного контейнера для моделей Hugging Face. Если вы хотите использовать AWS Large Model Inference (LMI) контейнеры, вы можете настроить параметр model_server на ModelServer.DJL_SERVING, когда настраиваете объект ModelBuilder.

Удобной особенностью ModelBuilder является возможность локальной настройки параметров контейнера при использовании режима LOCAL_CONTAINER. Для этого достаточно выполнить tuned_model = model.tune().

Ссылка на демонстрационный ноутбук deploying a Hugging Face Hub model: demo-model-builder-huggingface-llama2.ipynb.

SageMaker JumpStart

Amazon SageMaker JumpStart также предлагает несколько предварительно обученных базовых моделей. Как и при развертывании модели из Hugging Face Hub, требуется идентификатор модели. Развертывание модели SageMaker JumpStart на конечную точку SageMaker так же просто, как выполнение следующего кода:

model_builder = ModelBuilder(    model="huggingface-llm-falcon-7b-bf16",    schema_builder=SchemaBuilder(sample_input, sample_output),    role_arn=execution_role)sm_ep_model = model_builder.build()predictor = sm_ep_model.deploy()

Для всех доступных идентификаторов моделей SageMaker JumpStart см. Built-in Algorithms with pre-trained Model Table. Ссылка на демонстрационный ноутбук deploying a SageMaker JumpStart model: model-builder-jumpstart-falcon.ipynb.

Компонент вывода

ModelBulder позволяет использовать новую возможность компонента вывода в SageMaker для развертывания моделей. Дополнительную информацию о компонентах вывода см. в Уменьшение затрат на развертывание моделей в среднем на 50% с помощью последних функций SageMaker. Вы можете использовать компоненты вывода для развертывания с ModelBuilder, указав endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED в методе deploy(). Вы также можете использовать метод tune(), который получает оптимальное количество ускорителей и, при необходимости, изменить его.

resource_requirements = ResourceRequirements(    requests={        "num_accelerators": 4,        "memory": 1024,        "copies": 1,    },    limits={},)goldfinch_predictor_2 = model_2.deploy(    mode=Mode.SAGEMAKER_ENDPOINT,    endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED,    ...   )

См. model-builder-inference-component.ipynb для развертывания модели в виде компонента вывода.

Настроить класс ModelBuilder

Класс ModelBuilder позволяет настроить загрузку модели с использованием InferenceSpec.

Кроме того, вы можете контролировать сериализацию и десериализацию данных и настраивать предварительную и последующую обработку с помощью CustomPayloadTranslator. Кроме того, при необходимости расширения наших готовых контейнеров для развертывания модели на SageMaker вы можете использовать ModelBuilder для обработки процесса упаковки модели. В следующем разделе мы предоставляем более подробную информацию об этих возможностях.

InferenceSpec

InferenceSpec предлагает дополнительный уровень настройки. Он позволяет определить, как модель будет загружаться и обрабатывать входящие запросы на вывод. Через InferenceSpec вы можете определить пользовательские процедуры загрузки для своих моделей, обойдя механизмы загрузки по умолчанию. Эта гибкость особенно полезна при работе с нестандартными моделями или пользовательскими конвейерами вывода. Метод invoke может быть настроен, что дает вам возможность настраивать процесс обработки входящих запросов моделью (предварительная обработка и последующая обработка). Эта настройка может быть существенной, чтобы убедиться, что процесс вывода соответствует конкретным потребностям модели. См. следующий код:

class InferenceSpec(abc.ABC):    @abc.abstractmethod    def load(self, model_dir: str):        pass    @abc.abstractmethod    def invoke(self, input_object: object, model: object):        pass

В следующем коде приведен пример использования этого класса:

class MyInferenceSpec(InferenceSpec):    def load(self, model_dir: str):        return // объект модели    def invoke(self, input, model):        return model(input)

CustomPayloadTranslator

При вызове точек входа SageMaker данные отправляются через HTTP-заголовки с различными типами MIME. Например, изображение, отправляемое на точку входа для вывода, должно быть преобразовано в байты на стороне клиента и отправлено через HTTP-заголовок на точку входа. Когда точка входа получает заголовок, ей необходимо десериализовать строку байтов обратно в тип данных, ожидаемый моделью (также известно как десериализация на стороне сервера). После завершения предсказания модели результаты нужно сериализовать в байты, которые могут быть отправлены обратно через HTTP-заголовок пользователю или клиенту. Когда клиент получает ответные данные в виде байтов, ему необходимо выполнить десериализацию на стороне клиента для преобразования данных байтов обратно в ожидаемый формат данных, например JSON. Как минимум, необходимо преобразовать данные для следующих пунктов (как указано на следующей диаграмме):

  1. Сериализация запроса вывода (обрабатывается клиентом)
  2. Десериализация запроса вывода (обрабатывается сервером или алгоритмом)
  3. Вызов модели по данным заголовка
  4. Отправка ответного заголовка обратно
  5. Сериализация ответа вывода (обрабатывается сервером или алгоритмом)
  6. Десериализация ответного вывода (обрабатывается клиентом)

На следующей диаграмме показан процесс сериализации и десериализации во время вызова.

В следующем фрагменте кода мы показываем пример CustomPayloadTranslator, когда требуется дополнительная настройка для обработки сериализации и десериализации на клиентской и серверной стороне:

from sagemaker.serve import CustomPayloadTranslator# request translatorclass MyRequestTranslator(CustomPayloadTranslator):    # Эта функция преобразует полезную нагрузку в байты - выполняется на стороне клиента    def serialize_payload_to_bytes(self, payload: object) -> bytes:        # преобразование входной полезной нагрузки в байты        ... ...        return  //возврат объекта в виде байтов            # Эта функция преобразует байты в полезную нагрузку - выполняется на стороне сервера    def deserialize_payload_from_stream(self, stream) -> object:        # преобразование байтов в объемный объект        ... ...        return //возврат объемного объекта        # response translator class MyResponseTranslator(CustomPayloadTranslator):    # Эта функция преобразует полезную нагрузку в байты - выполняется на стороне сервера    def serialize_payload_to_bytes(self, payload: object) -> bytes:        # преобразование ответной полезной нагрузки в байты        ... ...        return //возврат объекта в виде байтов        # Эта функция преобразует байты в полезную нагрузку - выполняется на стороне клиента    def deserialize_payload_from_stream(self, stream) -> object:        # преобразование байтов в объемный объект        ... ...        return //возврат объемного объекта

В блокноте demo-model-builder-pytorch.ipynb мы показываем, как легко развернуть модель PyTorch на конечную точку SageMaker с использованием ModelBuilder с классом CustomPayloadTranslator и классом InferenceSpec.

Подготовка модели для развертывания

Если вы хотите подготовить модель для вывода результатов или поместить ее в реестр моделей, вы можете использовать model.create() или model.register(). Включенная модель создается на службе, и потом вы можете ее развернуть. См. следующий код:

model_builder = ModelBuilder(    model=model,      schema_builder=SchemaBuilder(X_test, y_pred),     role_arn=execution_role, )deployable_model = model_builder.build()deployable_model.create() # deployable_model.register() для реестра моделей

Использование собственных контейнеров

SageMaker предоставляет предварительно созданные образы Docker для встроенных алгоритмов и поддерживаемых фреймворков глубокого обучения, используемых для обучения и вывода результатов. Если предварительно созданный контейнер SageMaker не удовлетворяет всем вашим требованиям, вы можете расширить существующий образ для поддержки ваших потребностей. Расширяя предварительно созданный образ, вы можете использовать включенные библиотеки глубокого обучения и настройки без необходимости создавать образ с нуля. Дополнительные сведения о том, как расширить предварительно созданные контейнеры, см. документацию SageMaker. ModelBuilder поддерживает случаи использования с собственными контейнерами, которые расширены из наших предварительно созданных Docker-контейнеров.

Чтобы использовать собственный контейнер в этом случае, вам необходимо установить поля image_uri и model_server при определении ModelBuilder:

model_builder = ModelBuilder(    model=model,  # Передайте фактический объект модели. Его метод "predict" будет вызываться на конечной точке.    schema_builder=SchemaBuilder(X_test, y_pred), # Передайте "SchemaBuilder", который будет использовать объекты тестового ввода и вывода для выявления необходимой сериализации.    role_arn=execution_role,     image_uri=image_uri, # ОБЯЗАТЕЛЬНО ДЛЯ BYOC: Передача образа, размещенного в вашем личном репозитории Amazon Elastic Container Registry (Amazon ECR)     model_server=ModelServer.TORCHSERVE, # ОБЯЗАТЕЛЬНО ДЛЯ BYOC: передача выбранного сервера моделей    mode=Mode.SAGEMAKER_ENDPOINT,    dependencies={"auto": True, "custom": ["protobuf==3.20.2"]})

Здесь image_uri будет ARN контейнерного образа, который хранится в вашем репозитории Amazon Elastic Container Registry (Amazon ECR). Один из примеров показан ниже:

# Извлечение модели xgboost:1.7-1 и загрузка в личный репозиторий ECR
image_uri = "<идентификатор_вашей_учетной_записи>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

Когда значение image_uri установлено, в процессе создания модели с помощью ModelBuilder происходит пропуск автоматического обнаружения образа, поскольку URI образа уже указан. Если значение model_server не установлено в ModelBuilder, вы получите сообщение об ошибке валидации, например:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

На текущий момент, ModelBuilder поддерживает использование собственных контейнеров, основанных на наших предварительно созданных образах контейнеров DLC или контейнерах, созданных с использованием модельных серверов, таких как Deep Java Library (DJL), Text Generation Inference (TGI), TorchServe и Triton inference server.

Пользовательские зависимости

При выполнении ModelBuilder.build() по умолчанию он автоматически записывает информацию о вашей среде Python в файл requirements.txt и устанавливает зависимости в контейнере. Однако иногда ваша локальная среда Python может конфликтовать с средой в контейнере. ModelBuilder предоставляет простой способ изменить записанные зависимости, чтобы исправить такие конфликты, позволяя вам предоставить свои настройки в ModelBuilder. Обратите внимание, что это относится только к TorchServe и Triton с InferenceSpec. Например, вы можете указать параметр ввода для зависимостей с помощью словаря Python в ModelBuilder, как показано ниже:

dependency_config = {   "auto" = True,   "requirements" = "/путь/к/вашему/requirements.txt"   "custom" = ["модуль>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]}  ModelBuilder(    # Другие параметры    dependencies=dependency_config,).build()

Мы определяем следующие поля:

  • auto – Указывает, следует ли автоматически записывать зависимости из вашей среды.
  • requirements – Строка, содержащая путь к вашему собственному файлу requirements.txt. (Это необязательно.)
  • custom – Список других пользовательских зависимостей, которые вы хотите добавить или изменить. (Это необязательно.)

Если один модуль указан в нескольких местах, приоритет будет иметь custom, затем requirements, а auto будет иметь наименьший приоритет. Например, предположим, что во время автоматического обнаружения ModelBuilder обнаруживает numpy==1.25, и предоставлен файл requirements.txt, указывающий numpy>=1.24,<1.26. Кроме того, есть пользовательская зависимость: custom = ["numpy==1.26.1"]. В этом случае, при установке зависимостей в контейнер будет выбрано значение numpy==1.26.1.

Очистка

Когда вы закончите тестирование моделей, в качестве хорошей практики удалите конечную точку, чтобы сэкономить средства, если конечная точка больше не требуется. Вы можете следовать разделу Очистка в каждой из демонстрационных записных книжек или использовать следующий код для удаления созданной модели и конечной точки:

predictor.delete_model()predictor.delete_endpoint()

Заключение

Новая возможность ModelBuilder в SageMaker упрощает процесс развертывания моделей машинного обучения в продакшн. Обрабатывая множество сложных деталей за кулисами, ModelBuilder снижает порог входа для новых пользователей и максимизирует использование для опытных. С помощью всего нескольких строк кода, вы можете развернуть модели с встроенными фреймворками, такими как XGBoost, PyTorch, Triton и Hugging Face, а также модели, предоставленные SageMaker JumpStart, в надежные и масштабируемые точки окончания на SageMaker.

Мы призываем всех пользователей SageMaker опробовать эту новую возможность, обратившись к странице документации по ModelBuilder. ModelBuilder уже доступен всем пользователям SageMaker без дополнительной платы. Воспользуйтесь этим упрощенным рабочим процессом, чтобы развернуть свои модели быстрее. Мы с нетерпением ждем отзывов о том, как ModelBuilder ускоряет процесс разработки моделей!

Особая благодарность Sirisha Upadhyayala, Raymond Liu, Gary Wang, Dhawal Patel, Deepak Garg и Ram Vegiraju.