Изучение новейшего варианта логического вывода SageMaker

Я был очень взволнован, чтобы написать эту статью. ML Inference сам по себе очень интересен. Добавьте к этому безсерверность, и станет намного интереснее! Когда мы говорили о sServerless Inference, прежде чем нам пришлось рассмотреть потенциальное использование таких сервисов, как AWS Lambda. Проблема с такими сервисами, как Lambda, заключается в том, что они не имеют готовых инструментов управляемой инфраструктуры машинного обучения. Вы должны самостоятельно создавать, управлять и поддерживать все свои контейнеры и инфраструктуру машинного обучения.

SageMaker Serverless Inference абстрагирует все это. Это позволяет вам сосредоточиться на процессе построения модели, вам не нужно выполнять тяжелую работу по обслуживанию вашего собственного контейнера, как в случае с Lambda. Serverless Inference использует те же основные принципы, что и другие варианты SageMaker Inference. Он по-прежнему поддерживает AWS Deep Learning Images/Frameworks и гибкость подхода Bring Your Own Container (BYOC). Если у вас уже есть рабочие нагрузки логического вывода в реальном времени в SageMaker, вы можете сохранить большую часть того же кода и добавить фрагмент, включающий бессерверную конфигурацию. В этой статье мы рассмотрим пример развертывания модели Sklearn на бессерверной конечной точке SageMaker.

ПРИМЕЧАНИЕ. Для тех из вас, кто не знаком с AWS, убедитесь, что вы создали учетную запись по следующей ссылке, если хотите следовать дальше. Процесс развертывания потребует затрат, особенно если вы оставите свою конечную точку включенной и работающей. В этой статье также предполагается наличие промежуточных знаний о SageMaker и AWS.

Оглавление

  1. Когда использовать бессерверный вывод
  2. Что поддерживает бессерверный вывод?
  3. Пример бессерверного вывода
  4. Дополнительные ресурсы и заключение

Когда использовать бессерверный вывод

На данный момент SageMaker Inference имеет четыре основных варианта: Вывод в реальном времени, Пакетный вывод, Асинхронный вывод и теперь бессерверный вывод. В этой прошлой статье я объяснил вариант использования первых трех вариантов. Итак, когда вы используете Serverless Inference?

Бессерверный инференс — отличный вариант, когда у вас есть периодические и непредсказуемые рабочие нагрузки. В идеале ваша рабочая нагрузка должна быть терпимой к холодному запуску, как и в случае любого бессерверного решения. Еще одна важная причина использования Serverless Inference — отсутствие управления инфраструктурой. Если вы не хотите иметь дело с AutoScaling или управлением/настройкой экземпляра, то Serverless Inference — отличный вариант. Другим важным преимуществом Serverless Inference является экономия затрат. Вы платите за вызов для бессерверного вывода, в отличие от почасовой оплаты за вывод в реальном времени. Это отличный вариант, если ваша команда создает POC на SageMaker и не хочет нести большие расходы в процессе.

Что поддерживает бессерверный вывод?

После запуска Serverless Inference Preview в Reinvent 2021 было добавлено несколько ключевых функций. Включена поддержка SageMaker Python SDK, что упрощает обучение и развертывание поддерживаемых контейнеров/фреймворков с помощью Amazon SageMaker for Serverless Inference. Вы также можете работать с Model Registry для бессерверного вывода, это даст гибкость для добавления бессерверных конечных точек в ваши рабочие процессы MLOps. Наконец, максимальное количество одновременных вызовов увеличилось до 200 на конечную точку (50 на момент предварительной версии).

Пример бессерверного вывода

В нашем примере Serverless Inference мы будем работать с обучением и развертыванием модели Sklearn с набором данных California Housing. Этот набор данных общедоступен в репозитории примеров наборов данных SageMaker, мы покажем, что вы можете получить его в своей записной книжке.

Для установки мы будем работать с SageMaker Studio с ядром Python3 Data Science. Вы также можете использовать классические экземпляры Notebook и работать с ml.m5.xlarge экземпляром Notebook и ядром conda_python3. Как только вы окажетесь в своей записной книжке, мы настроим наш S3 Bucket и учебный экземпляр.

Далее мы извлечем набор данных California Housing из общедоступных образцов SageMaker. Это проблема регрессии, которую мы будем решать с помощью структуры Sklearn.

Затем мы можем прочитать набор данных с помощью Pandas, чтобы убедиться, что мы правильно создали наш DataFrame.

Затем мы загружаем этот набор данных в S3, где SageMaker получит доступ к обучающим данным и артефактам модели дампа.

Sklearn — это один из поддерживаемых контейнеров глубокого обучения, предоставляемых SageMaker, поэтому мы можем напрямую получить образ с помощью SageMaker Python SDK, не прибегая к какой-либо работе, связанной с Docker.

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

Если мы быстро взглянем на сценарий обучения, мы увидим, что мы работаем с моделью случайного леса.

Обратите внимание на функцию, которая также обрабатывает ввод. input_fn определяет тип формата данных, который вы можете передать для вывода модели. Чтобы узнать больше об обработчиках вывода, ознакомьтесь с этой статьей.

Теперь мы можем выполнить обучение модели с помощью нашего оценщика Sklearn.

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

Два параметра здесь — MemorySize и MaxConcurrency. MemorySize обычно должен быть минимальным и такой же размер, как у вашей модели. Вы можете установить для памяти следующие значения: 1024 МБ, 2048 МБ, 3072 МБ, 4096 МБ, 5120 МБ или 6144 МБ. MaxConcurrency – это максимальное количество одновременных вызовов для одной конечной точки, которое теперь увеличено до 200 для GA. Это единственные два параметра, которые вы должны указать для бессерверной конечной точки, вся работа с инфраструктурой и управление ею выполняются «под капотом».

Теперь мы можем развернуть нашу конечную точку, как обычно, и прикрепить этот объект.

Теперь мы можем увидеть пример вывода для этой конечной точки.

Дополнительные ресурсы и заключение



Весь код примера доступен по ссылке выше. Для примера использования Model Registry с Serverless Inference ознакомьтесь с этим примером. Пример HuggingFace с Serverless Inference можно найти в этом блоге и примере. Чтобы узнать о выпуске Serverless Inference в официальном блоге AWS, ознакомьтесь со следующей статьей.

Как всегда, я надеюсь, что это была хорошая статья для вас с SageMaker Inference, не стесняйтесь оставлять любые отзывы или вопросы в комментариях. Если вас интересует дополнительный контент, связанный с AWS/SageMaker, ознакомьтесь с этим списком, который я составил для вас.

Если вам понравилась эта статья, не стесняйтесь связаться со мной в LinkedIn и подписаться на мою Информационную рассылку. Если вы новичок в Medium, зарегистрируйтесь с помощью моего Реферала для участников.