Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Начало работы с развертыванием моделей реального времени в Amazon SageMaker

Создатель мудреца Амазонки — это полностью управляемый сервис, который предоставляет каждому разработчику и специалисту по данным возможность быстро создавать, обучать и развертывать модели машинного обучения (ML) в любом масштабе. ML реализуется в выводе. SageMaker предлагает четыре варианта вывода:

  1. Вывод в реальном времени
  2. Бессерверный вывод
  3. Асинхронный вывод
  4. Пакетное преобразование

Эти четыре варианта можно в общих чертах разделить на варианты онлайн-вывода и пакетного вывода. В онлайн-выводе ожидается, что запросы будут обрабатываться по мере их поступления, а приложение-потребитель ожидает ответа после обработки каждого запроса. Это может происходить либо синхронно (вывод в реальном времени, без сервера), либо асинхронно (асинхронный вывод). В синхронном шаблоне приложение-потребитель блокируется и не может продолжить работу, пока не получит ответ. Эти рабочие нагрузки, как правило, представляют собой приложения реального времени, такие как онлайн-обнаружение мошенничества с кредитными картами, где ответы ожидаются в пределах от миллисекунд до секунд, а полезная нагрузка запроса невелика (несколько МБ). В асинхронном шаблоне работа приложения не блокируется (например, подача страхового возмещения через мобильное приложение) и обычно требует большего размера полезных данных и/или более длительного времени обработки. В автономном режиме вывода агрегация (пакет) запросов вывода обрабатывается вместе, а ответы предоставляются только после обработки всего пакета. Обычно эти рабочие нагрузки не чувствительны к задержке, включают в себя большие объемы данных (несколько ГБ) и планируются с регулярной периодичностью (например, запуск обнаружения объектов на кадрах с камер наблюдения в конце дня или обработка данных о заработной плате в конце дня). конец месяца).

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

Выбор варианта развертывания модели

Выбор правильного типа вывода может быть трудным, и вам может помочь следующее простое руководство. Это не строгая блок-схема, поэтому, если вы обнаружите, что другой вариант работает лучше для вас, смело используйте его. В частности, вывод в реальном времени — отличный вариант для размещения ваших моделей, когда у вас низкая и постоянная задержка (порядка миллисекунд или секунд) и рабочие нагрузки, чувствительные к пропускной способности. Вы можете управлять типом экземпляра и учитывать его конечную точку, а также настраивать Автомасштабирование политика обработки трафика. Есть еще два варианта вывода SageMaker, которые вы также можете использовать для создания конечной точки. Асинхронный вывод — это когда у вас большие размеры полезной нагрузки и полоса пропускания с задержкой, близкой к реальному времени. Это хороший вариант, особенно для моделей НЛП и компьютерного зрения, у которых более длительное время предварительной обработки. Бессерверный вывод — отличный вариант, если у вас прерывистый трафик и вы не хотите управлять масштабированием инфраструктуры. Рецепт создания конечной точки остается тем же, независимо от выбранного вами типа вывода. В этом посте мы сосредоточимся на создании конечной точки на основе экземпляра в реальном времени, но вы можете легко адаптировать ее к любому из других вариантов вывода в зависимости от вашего варианта использования. Наконец, пакетный вывод происходит в автономном режиме, поэтому вы можете предоставить набор данных, из которых хотите получить вывод, и мы его запустим. Это аналогично основано на экземплярах, поэтому вы можете выбрать оптимальный экземпляр для своей рабочей нагрузки. Поскольку конечная точка не работает, вы платите только за продолжительность работы. Он хорош для обработки гигабайтов данных, а продолжительность работы может составлять несколько дней. Имеются встроенные функции, упрощающие работу со структурированными данными, а также оптимизации для автоматического распространения структурированных данных. Некоторыми примерами использования являются моделирование склонностей, прогнозное обслуживание и прогнозирование оттока клиентов. Все это может происходить массово в автономном режиме, поскольку не обязательно реагировать на конкретное событие.

Размещение модели на конечных точках SageMaker

По сути, конечные точки реального времени SageMaker состоят из модели и инфраструктуры, с помощью которой вы выбираете поддержку конечной точки. SageMaker использует контейнеры для размещения моделей, а это означает, что вам нужен контейнер, который правильно настраивает среду для платформы, которую вы используете для каждой предоставляемой вами модели. Например, если вы работаете с моделью Sklearn, вы должны передать сценарии/данные вашей модели в контейнер, который правильно настраивает Sklearn. К счастью, SageMaker предоставляет управляемые изображения для популярных фреймворков, таких как TensorFlow, PyTorch, Sklearn и HuggingFace. Вы можете получить и использовать эти изображения, используя высокоуровневый SDK для SageMaker Python и внедрите сценарии и данные вашей модели в эти контейнеры. Если у SageMaker нет поддерживаемого контейнера, вы также можете Создайте свой собственный контейнер и загрузите свой собственный образ, установив зависимости, необходимые для вашей модели.

SageMaker поддерживает как обученные, так и предварительно обученные модели. В предыдущем абзаце, когда мы говорили о сценариях/данных модели, мы ссылались на этот вопрос. Вы можете либо смонтировать скрипт в своем контейнере, либо, если у вас есть предварительно обученный артефакт модели (например, `модель.joblib` для SKLearn), то вы можете предоставить его вместе со своим изображением в SageMaker. Чтобы понять принцип вывода SageMaker, существует три основных объекта, которые вы создадите в процессе создания конечной точки:

  1. Объект модели SageMaker. Здесь вы можете передать данные обученной модели/скрипт модели и изображение, с которым вы работаете, независимо от того, принадлежит ли оно AWS или создано вами.
  2. Создание конфигурации конечной точки. Здесь вы определяете свою инфраструктуру, то есть выбираете тип экземпляра, количество и т. д.
  3. Создание конечной точки. Это конечная точка REST, на которой размещается ваша модель, которую вы вызываете для получения ответа. Давайте посмотрим, как вы можете использовать управляемый образ SageMaker и собственный созданный образ для развертывания конечной точки.

Требования к конечным точкам в режиме реального времени

  1. Прежде чем создавать конечную точку, вы должны понять, какой тип модели вы хотите разместить. Если это модель Framework, например TensorFlow, PyTorch или MXNet, вы можете использовать один из готовые образы Framework.
    Если это пользовательская модель или вам нужна полная гибкость при создании контейнера, который SageMaker будет запускать для вывода, вы можете создать свой собственный контейнер.

Конечные точки SageMaker состоят из Модель SageMaker и Конфигурация конечной точки.
Если вы используете Boto3, вам следует создать оба объекта. В противном случае, если вы используете SageMaker Python SDK, конфигурация конечной точки создается от вашего имени, когда вы используете .deploy(..) функции.

Объекты SageMaker:

  • Модель SageMaker:
    • Содержит подробную информацию об изображении вывода, расположении артефактов модели в Amazon Simple Storage Service (Amazon S3), конфигурация сети и Управление идентификацией и доступом AWS (IAM) роль, которая будет использоваться конечной точкой.
      • SageMaker требует, чтобы артефакты вашей модели были сжаты в .tar.gz файл. SageMaker автоматически извлекает это .tar.gz файл в /opt/ml/model/ каталог в вашем контейнере. Если вы используете один из контейнеров платформы, например TensorFlow, PyTorch или MXNet, тогда контейнер ожидает, что ваша структура TAR будет следующей:
        • TensorFlow
          model.tar.gz/
          |--[model_version_number]/
          |--variables
          |--saved_model.pb
          code/
          |--inference.py
          |--requirements.txt

        • PyTorch
          model.tar.gz/
          |- model.pth
          |- code/
          |- inference.py
          |- requirements.txt # only for versions 1.3.1 and higher

        • MXNet
          model.tar.gz/
          |- model-symbol.json
          |- model-shapes.json
          |- model-0000.params
          |- code/
              |- inference.py
              |- requirements.txt # only for versions 1.6.0 and higher

        • Склеарн
          model.tar.gz/
          |- model.joblib
          | code/ 
          |- inference.py

      • При использовании образа Framework мы можем предоставить собственный сценарий точки входа, в котором мы можем реализовать собственную предварительную и постобработку. В нашем случае сценарий вывода упакован в файл model.tar.gz в каталоге /code.
    • Конфигурация конечной точки
      • Содержит информацию об инфраструктуре, необходимую для развертывания модели SageMaker на конечной точке.
      • Например, здесь указывается созданная нами модель SageMaker, а также тип экземпляра и количество начальных экземпляров.

Фреймворки и BYOC

    • Получение изображений SageMaker
      • Эта часть не всегда необходима и абстрагируется SageMaker Python SDK с помощью оценщиков. Однако если вы хотите получить управляемый образ SageMaker и расширить его, вы можете получить изображения, доступные через SDK. Ниже приведен пример получения изображения TF 2.2 для вывода.
        import sagemaker
        tf_image = sagemaker.image_uris.retreive(framework="tensorflow", region="us-east-1",
        image_scope = "inference", version = "2.2", instance_type = "ml.c5.xlarge)
        print(tf_image)

    • Рамки
      • Если вы хотите развернуть модель платформы, например TensorFlow, PyTorch или MXNet, все, что вам нужно, — это артефакты модели.
      • См. документацию по развертыванию моделей непосредственно из артефактов модели. TensorFlow, PyTorchили MXNet.
    • Выбор между 1P и BYOC
      • SageMaker SDK также абстрагирует обработку изображения, как вы видели в предыдущем разделе «Среды». Он имеет готовые оценщики для Sklearn, TensorFlow и PyTorch, которые автоматически выбирают для вас изображение на основе выбранной вами версии. Затем вы можете передать сценарий обучения/вывода через Режим сценария в эти оценки.
        from sagemaker.pytorch import PyTorch #PyTorch Estimator within SageMaker SDK
        estimator_parameters = {"entry_point": "train_deploy_pytorch_without_dependencies.py",
        "source_dir": "pytorch_script","instance_type": train_instance_type,
        "instance_count": 1,"hyperparameters": hyperparameters,
        "role": role,"base_job_name": "pytorch-model","framework_version": "1.5",
        "py_version": "py3",}
        
        ## Model Training
        estimator = PyTorch(**estimator_parameters)estimator.fit(inputs)
        
        ## Deploy Trained model
        pytorch_predictor = estimator.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge", endpoint_name=pytorch_endpoint_name)

      • Не все пакеты и образы поддерживаются SageMaker, и в этом случае вам необходимо принесите свой собственный контейнер (BYOC)). Это означает создание файла Dockerfile, который настроит подходящую среду для обслуживания вашей модели. Примером этого является модуль Spacy NLP, и для этой платформы нет управляемых контейнеров SageMaker. Поэтому вы должны предоставить Dockerfile, который устанавливает Spacy. Внутри контейнера вы также монтируете сценарии вывода модели. Давайте быстро обсудим компоненты, которые вы предоставляете в формате «Принеси свой собственный контейнер», поскольку в большинстве примеров они остаются одинаковыми.
        • «nginx.conf» — это файл конфигурации для интерфейса nginx. Вам не придется редактировать этот файл, если только вы не захотите настроить эти части.
        • «предиктор.py» — это программа, которая фактически реализует веб-сервер Flask и код модели для вашего приложения. В вашем контейнере могут быть дополнительные файлы или функции Python, которые вы можете вызывать в этом файле.
        • "служить" запускается ли программа при запуске контейнера на хостинге. Он просто запускает сервер Gunicorn, на котором выполняются несколько экземпляров приложения Flask, определенного в Predictor.py. Как и в случае с nginx.conf, вам не нужно редактировать этот файл, если вы не хотите выполнить дополнительную настройку.
        • "тренироваться" — это программа, которая вызывается, когда контейнер запускается для обучения. Вы измените эту программу, чтобы реализовать свой алгоритм обучения. Если вы используете предварительно обученную модель или платформу, например Spacy, этот файл вам не нужен.
        • «wsgi.py» — это небольшая оболочка, используемая для вызова приложения Flask. Вы сможете использовать этот файл как есть, если только вы не изменили имя файла Predictor.py. В этом случае убедитесь, что карты здесь отображаются правильно.
    • Пользовательский сценарий вывода
      • Контейнеры SageMaker Framework предоставляют вам гибкость в обработке запроса до и после него и загрузке модели с помощью пользовательской точки входа script/inference.py.
      • См. документацию по созданию собственного сценария inference.py для TensorFlow, PyTorch и MXNet.
    • Пользовательский контейнер

Различные способы взаимодействия с конечными точками SageMaker

Существует множество вариантов программного использования SageMaker, позволяющего вызывать развернутые модели для получения логических выводов. Интерфейс командной строки AWS (AWS CLI), REST API, AWS CloudFormation, Комплект разработки облачных сервисов AWS (AWS CDK), а AWS SDK — это распространенные инструменты, предлагаемые AWS и широко поддерживаемые другими сервисами AWS. Для SageMaker у нас также есть SageMaker Python SDK. Теперь давайте сравним различные варианты создания, вызова и управления конечными точками SageMaker.

В дополнение к Интерфейс командной строки SageMaker, существует два способа программного взаимодействия с конечными точками в SageMaker через SDK. Давайте посмотрим на некоторые различия между SDK для SageMaker Python и Бото3 Python SDK:

  1. Высокоуровневый пакет SageMaker «Python» SDK. Этот SDK представляет собой библиотеку с открытым исходным кодом, которая обеспечивает абстракцию более высокого уровня, специально предназначенную для программного вызова API-интерфейсов SageMaker с использованием Python. Хорошая часть этого SDK заключается в том, что очень легко вызывать API-интерфейсы sagemaker, уже выполняется много тяжелой работы, например вызов API-интерфейсов в синхронном/асинхронном режиме (помогает избежать опроса), более простая схема запросов/ответов, гораздо меньше кода и многое другое. более простой код. SageMaker Python SDK предоставляет несколько абстракций высокого уровня для работы с SageMaker. Пакет предназначен для упрощения различных процессов машинного обучения в SageMaker.
  2. Низкоуровневый AWS SDK (Boto3 SDK). Этот SDK работает на нижнем уровне, позволяя пользователю выбирать из поддерживаемых языков программирования и программно вызывать любые сервисы AWS. Это относится не только к SageMaker, но и может использоваться в целом для всех сервисов AWS. Низкоуровневые SDK AWS доступны на различных языках программирования, таких как .NET, Python, Java, Node.js и т. д. Одним из популярных используемых SDK является boto3 Python SDK, популярный в сообществе специалистов по обработке данных для машинного обучения. Хорошая часть этого SDK заключается в том, что он очень легкий и доступен по умолчанию, установленный на AWS Lambda Время выполнения. Кроме того, вы можете использовать этот SDK для взаимодействия с любым сервисом AWS за пределами SageMaker.

Оба этих SDK можно использовать для одних и тех же задач, но в некоторых случаях более интуитивно понятно использовать один больше, чем другой. SageMaker Python SDK рекомендуется для упрощения тестирования, а AWS SDK/Boto3 рекомендуется для производственных сценариев использования для лучшего контроля производительности. Например, SageMaker как услуга предоставляет предварительно созданные и поддерживаемые образы для популярных платформ, таких как Sklearn, PyTorch и TensorFlow. Особенно полезно использовать SageMaker SDK для получения изображений глубокого обучения, обучения моделей с помощью Оценщикии легко развернуть модель с помощью простого вызова API. Пример, демонстрирующий это в действии, можно найти здесь.

С другой стороны, иногда у вас есть предварительно обученные модели или разные платформы, которые вы можете использовать. Это требует большей настройки, а SageMaker SDK не всегда это предлагает. У нас есть три важных шага и соответствующие вызовы API boto3, которые нам необходимо выполнить для развертывания конечной точки: Создание модели, Создание конфигурации конечной точкии Создание конечной точки. Первые два объекта были абстрагированы с помощью SageMaker SDK с нашими поддерживаемыми платформами, но мы видим эти детали с помощью Boto3 SDK. Подробный пример, демонстрирующий этапы использования Boto3 SDK для создания конечной точки и управления ею, можно найти здесь. здесь.

Рекомендации по хостингу SageMaker

Вывод в реальном времени в SageMaker имеет две основные оптимизации, которые вы можете рассмотреть: 1/Оптимизация производительности и 2/Оптимизация затрат. Давайте сначала посмотрим на оптимизация производительности, например, когда мы имеем дело с рабочими нагрузками, чувствительными к задержке, каждая миллисекунда имеет решающее значение. Существуют различные ручки, которые вы можете настроить для оптимизации задержки и пропускной способности. На уровне экземпляра вы можете использовать Рекомендатор выводов, наш встроенный инструмент нагрузочного тестирования, который поможет вам выбрать правильный тип инстанса и рассчитать его для вашей рабочей нагрузки. Использование правильного сочетания вычислительных ресурсов поможет вам повысить производительность и снизить затраты. Вы также можете выполнить настройку на уровне контейнера и платформы.
Вопросы, которые следует задать себе, включают:

  1. Какую структуру вы используете?
  2. Есть ли какие-либо переменные среды, которые вы можете настроить в своем контейнере?

Примером этого является максимизация Производительность TensorFlow с контейнерами SageMaker. Другой пример оптимизации на уровне контейнера: использование gRPC а не REST за вашей конечной точкой. Наконец, вы также можете оптимизировать на уровне сценария. Ваш код вывода требует дополнительного времени в определенных блоках? Тайминг каждой строки вашего сценария поможет вам обнаружить любые узкие места в вашем коде.

Есть три способа посмотреть улучшение использования вашей конечной точки реального времени:

  1. Многомодельные конечные точки (MME)
    • Вы можете разместить тысячи моделей в одной конечной точке. Это идеально подходит для случаев, когда вам не нужна выделенная конечная точка для каждой из ваших моделей. MME работает лучше всего, когда модели имеют одинаковый размер и задержку и принадлежат одной и той же платформе машинного обучения. Обычно их можно использовать, когда вам не нужно постоянно вызывать одну и ту же модель. Вы можете динамически загружать соответствующую модель в конечную точку SageMaker для выполнения вашего запроса.. Пример, демонстрирующий MME в действии, можно найти. здесь. Если вы хотите узнать больше о различных предостережениях и передовых методах размещения моделей на MME, прочтите этот пост. здесь.
  2. Многоконтейнерные конечные точки (MCE)
    • Вместо использования нескольких конечных точек для размещения нескольких контейнеров вы можете разместить до 15 контейнеров на одной конечной точке. Каждый из этих контейнеров можно вызвать напрямую. Таким образом, вы можете рассмотреть возможность размещения разрозненных моделей разных платформ на одной конечной точке. Этот вариант лучше всего подходит, когда контейнеры имеют схожие характеристики использования и производительности. Пример, демонстрирующий MCE, можно найти здесь. Если вы хотите узнать больше о различных предостережениях и передовых методах размещения моделей на MCE, прочтите этот пост. здесь.
  3. Последовательный конвейер вывода (SIP)
    • Если у вас есть конвейер шагов в вашей логике вывода, вы можете использовать последовательный конвейер вывода (SIP). SIP позволяет объединить от 2 до 15 контейнеров за одной конечной точкой. SIP хорошо работает, когда у вас есть этапы предварительной и постобработки. Если вы хотите узнать больше о шаблонах проектирования для конвейеров последовательного вывода, обратитесь к статье здесь.

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

SageMaker также предлагает Сберегательные планы. Планы экономии могут сократить ваши расходы до 64%. Это обязательство сроком на 1 или 3 года с постоянным объемом использования (долларов США в час). Видеть это ссылке Чтобы получить больше информации. И увидеть это ссылке для лучшей оптимизации затрат на Inference на Amazon SageMaker.

Заключение

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

См. соответствующий Репозиторий GitHub и попробуйте примеры.


Об авторах

Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Рагху Рамеша является архитектором решений машинного обучения в команде Amazon SageMaker Service. Он фокусируется на помощи клиентам в создании, развертывании и переносе производственных рабочих нагрузок машинного обучения в SageMaker в любом масштабе. Он специализируется на машинном обучении, искусственном интеллекте и компьютерном зрении, а также имеет степень магистра компьютерных наук UT Dallas. В свободное время любит путешествовать и фотографировать.

Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Рам Вегираджу является архитектором машинного обучения в команде SageMaker Service. Он помогает клиентам создавать и оптимизировать свои решения AI/ML на Amazon SageMaker. В свободное время любит путешествовать и писать.

Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Марк Карп является архитектором машинного обучения в команде SageMaker Service. Он фокусируется на помощи клиентам в проектировании, развертывании и управлении рабочими нагрузками машинного обучения в масштабе. В свободное время он любит путешествовать и исследовать новые места.

Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Дхавал Патель является главным архитектором машинного обучения в AWS. Он работал с организациями, начиная от крупных предприятий и заканчивая стартапами среднего размера, над проблемами, связанными с распределенными вычислениями и искусственным интеллектом. Он фокусируется на глубоком обучении, включая НЛП и области компьютерного зрения. Он помогает клиентам добиться высокопроизводительного логического вывода моделей в Amazon SageMaker.

Начало работы с развертыванием моделей реального времени в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Саураб Триканде является старшим менеджером по продуктам Amazon SageMaker Inference. Он увлечен работой с клиентами и мотивирован целью демократизации машинного обучения. Он фокусируется на основных проблемах, связанных с развертыванием сложных приложений машинного обучения, мультитенантных моделей машинного обучения, оптимизацией затрат и обеспечением более доступного развертывания моделей глубокого обучения. В свободное время Саураб любит ходить в походы, узнавать об инновационных технологиях, следить за TechCrunch и проводить время со своей семьей.

Отметка времени:

Больше от Машинное обучение AWS