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

Партнер по компетенции AWS Machine Learning, компания Peak не просто создает и развертывает ИИ вручную - они создают сценарии инфраструктуры, чтобы она была воспроизводимой, автономной и легко вписывалась в корпоративную систему ИИ (AIS). AIS демонстрирует удобный способ развертывания и размещения конечных точек API SageMaker, при этом за кулисами автоматизирует аутентификацию, упаковывает модель и настраивает конечную точку с помощью ключевых служб, таких как API Gateway, Lambda, DynamoDB, сборка кода, облачное формирование, а также SDK для Amazons.

Что такое SageMaker?

Amazon SageMaker - это управляемый сервис машинного обучения (ML), который позволяет создавать, обучать и развертывать модели машинного обучения в облаке AWS. Вы можете использовать готовые алгоритмы или создать свои собственные. Это действительно упрощает и ускоряет процесс предоставления инфраструктуры, необходимой для машинного обучения. В этом помогает несколько вещей, в том числе использование предварительно запеченных изображений, готовые алгоритмы (или простой процесс выбора собственного) и, конечно, тот факт, что вам не нужно предоставлять, управлять или поддерживать инфраструктуру. так, как вы поступили бы с традиционными экземплярами EC2.

SageMaker действительно стремительно развивается. Когда мы в Peak начали работу с SageMaker вскоре после релиза на Re: Invent 2017, в нем было всего 5 функций, а теперь, почти два года спустя, их 15 и их количество растет! Нам всегда удавалось честно общаться с AWS, предоставляя отзывы и советы в качестве партнера по компетенциям в области машинного обучения. Наряду с нашими и другими отзывами клиентов, мы видели выполнение широкого спектра улучшений и запросов на добавление новых функций.

Мы рассмотрели все возможные темы для обсуждения, и мы не будем здесь подробно рассказывать о SageMaker. Мы сосредоточимся на развертывании ML.

Чтобы понять концепцию развертывания модели машинного обучения в облаке, попробуйте представить созданную вами конечную точку SageMaker как API - вы вызываете конечную точку, возможно, с набором переменных параметров, модель может производить некоторые вычисления и т. Д., А затем вернуть ответ в виде полезной нагрузки json. Затем ответ от конечной точки можно интегрировать с другими внешними системами, чтобы помочь вам делать большие вещи с данными.

Развертывание с помощью SageMaker

Развитие

В зависимости от того, на каком этапе своего пути к машинному обучению вы находитесь или действительно от вашего варианта использования, вы можете выбрать разработку собственной модели машинного обучения, а не готовой модели. Следующим (также необязательным) шагом является обучение модели. Вы можете сохранить любые полученные файлы модели в S3 для дальнейшего использования. Затем вам нужно написать код вывода для создания конечной точки API, которая будет обслуживать запросы, сделанные к модели. В этой статье не будут подробно рассказываться о создании и API, но чтобы сделать его масштабируемым и готовым к производству, я лично рекомендовал бы работать над надежным шаблоном, который вы можете повторно использовать для быстрого создания новых API позже и быть готовым к его контейнеризации. (вам нужно будет создать образ Docker и позже отправить его в ECR).

Чтобы ускорить будущую разработку, а также сделать ее последовательной и повторяемой, вы можете создать «базовый» образ докера со всем (но только тем), что вам нужно для каждого проекта, и использовать его в качестве основы для каждого нового файла Docker. Docker compose также пригодится, особенно для сборки и локального запуска для тестирования перед развертыванием.

Ссылка: AWS предоставляет полезную документацию, в которой подробно описано, как SageMaker взаимодействует с докером, чтобы вы могли запускать собственный код вывода - https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-inference -code.html

Настройка конечной точки

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

Создать модель

Когда мы настраиваем модель в SageMaker, мы указываем расположение артефактов модели (где это применимо, помните выходные данные обучения модели, которые мы поместили в S3 ранее?), А затем местоположение кода вывода (помните, как мы поместили это в контейнер в Образ Docker и поместил его в ECR).

Это может показаться трудоемким, немного трудоемким и подверженным ошибкам, поэтому давайте в истинном стиле DevOps автоматизируем это!

Здесь мы видим, как разработчик записывает свой код вывода (API) локально и отправляет его в систему управления версиями, в данном случае Github. Они также могут создавать файлы моделей и отправлять их в S3 для хранения и извлечения позже.

Git commit запускает проект CodeBuild для запуска задания по упаковке кода как части образа докера, вы можете включить Dockerfile как часть репозитория кода разработчиков или получить стандартизованный файл откуда-то еще.

После успешного создания мы помещаем его в реестр эластичных контейнеров (ECR).

Тот же проект CodeBuild можно даже использовать для вызовов SageMaker SDK для настройки модели в SageMaker, создания конфигурации конечной точки и создания конечной точки. Вы также можете указать, где находятся артефакты модели в S3, как часть шагов настройки SageMaker, вместо того, чтобы упаковывать их в образ докера.

Создайте конфигурацию конечной точки

Здесь мы начинаем делать немного более динамичную конфигурацию - производственные варианты. Это означает, что сначала выбирая модель, которую мы только что настроили, вы даже можете выбрать несколько моделей в качестве вариантов и применить весовые коэффициенты для A / B-тестирования. Продолжите, выбрав тип экземпляра для использования, решив, сколько экземпляров развернуть, выбрать, следует ли включать эластичный вывод, и несколько других мелких деталей.

Давайте разберем их немного.

Типы экземпляров

Это используемый тип вычислительного экземпляра, аналогичный запуску обычного экземпляра EC2. Типы экземпляров сгруппированы в семейства на основе основных возможностей аппаратного обеспечения главного компьютера, таких как вычислительные ресурсы, память, хранилище и т. Д. Допустимые параметры можно найти в интерактивной документации или в раскрывающемся списке на консоли. На текущий момент доступные типы включают классы экземпляров t2, m4, c4, c5, p2 и p3 разной емкости каждый.

Экземпляры p2 и p3 относятся к семейству ускоренных вычислений, по умолчанию запускаются с подключенным графическим процессором, что полезно для таких случаев использования, как глубокое обучение.

Первоначальное количество экземпляров

Сколько экземпляров запускать на начальном этапе, к сожалению, по умолчанию и минимальное значение равно 1, поэтому вы не можете завершить работу всех экземпляров в группе, чтобы сэкономить на затратах. Запуск большего количества экземпляров был бы полезен, если у вас большой объем трафика или если экземпляры обычно используются хорошо, увеличьте количество экземпляров, чтобы распределить нагрузку.

Эластичный вывод

У вас могут быть некоторые рабочие нагрузки, которые могут извлечь выгоду из возможностей графического процессора, но не требуют их использования 24/7. В любом случае их предоставление неэффективно с финансовой точки зрения, к счастью, AWS представила так называемый Elastic Inference (EI). EI обеспечивает ускорение только тогда, когда это необходимо, и автоматически запускается при использовании поддерживаемых платформ.

Последние поддерживаемые фреймворки можно найти в обычной документации, но на сегодняшний день некоторые из них включают версии TensorFlow и MXNet с поддержкой EI. Несмотря на то, что вы используете другую структуру глубокого обучения, просто экспортируйте свою модель с помощью ONNX, а затем импортируйте свою модель в MXNet - используйте свою модель с EI в качестве модели MXNet!

Настройка конечной точки

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

Масштабировать

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

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

Тип экземпляра

обычный / средний / большой / очень большой

Количество экземпляров

ожидаемый трафик (низкий / средний / высокий)

Эластичный вывод

тип модели (регрессия / дерево решений / KNN / глубокое обучение)

Автомасштабирование

Устанавливается условно на основе типов экземпляров (экземпляры семейства T несовместимы с автоматическим масштабированием SageMaker).

Но как этого добиться?

Комплект разработчика программного обеспечения Amazons (SDK) идеально подходит для этого! AWS предоставляет SDK для нескольких языков, таких как javascript, go, python и других. Мы можем использовать SDK, чтобы помочь нам автоматизировать процесс, как мы видели ранее в статье, и встроить его в удобный интерфейс.

Ниже приведен ранний пример Peaks AI System (AIS), демонстрирующий, насколько легко можно развернуть модель машинного обучения с помощью SageMaker. Как видите, технические детали инфраструктуры и т. Д. Абстрагируются, так что пользователь может сосредоточиться на своих знаниях в предметной области и быстро развернуть модель. Все, что им нужно ввести, - это расположение кода вывода (API), файлов модели (артефакты), количество экземпляров и тип (размер).

Хостинг конечной точки

Когда вы настраиваете модель в SageMaker, создайте конфигурацию конечной точки, а затем примените ее к конечной точке, и мы успешно начали размещать нашу модель машинного обучения в облаке!

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

Плюсы

  • Обеспечивает масштабируемость, высокую пропускную способность, высокую надежность
  • Включает A / B-тестирование

Минусы

  • Длинная запутанная конечная точка для вызова с помощью прокси-сервера AWS или SDK (см. Следующий раздел об автоматизации этого уровня абстракции)
  • Много движущихся частей
  • Это дорого!

Архитектура

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

Итак, наш любимый, самый стильный технический директор и вице-президент AWS Вернер Фогельс ищет рекомендации по футболкам перед следующей большой конференцией, поэтому он обращается к нашей конечной точке.

Благодаря услуге Route53 мы можем предоставить красивое (короткое) удобное для пользователя доменное имя, мы можем управлять кэшированием и распределенной доставкой контента для высокой скорости передачи и низкой задержки на границу с помощью CloudFront CDN. CloudFront также помогает нам защитить нашу конечную точку от атак на уровне 7 и легко интегрируется с AWS Shield для предотвращения DDoS-атак.

Вызов поступает на шлюз API и запускает лямбда-выражение.

Lambda связывается с DynamoDB и KMS для проверки метаданных и аутентификации перед вызовом SDK в SageMaker (обратите внимание на длинную запутанную конечную точку, которая нам предоставляется).

Мы используем службу Identity Access Management (IAM) для настройки разрешений через роли - это может позволить использовать такие вещи, как доступ к определенным сегментам или объектам в S3, взаимодействие с различными службами и т. Д.

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

SageMaker обрабатывает числа, производит вычисления, выводит рекомендации и т. Д., Используя модель машинного обучения, которую мы развернули ранее, и отправляет ее обратно в лямбда-выражение через API-шлюз и обратно конечному пользователю. Это может показаться большим количеством шагов, но все может произойти за считанные секунды!

TL; DR - Обзор

SageMaker - это…

  • Управляемый сервис для создания, обучения и развертывания машинного обучения на AWS
  • Быстро!

Мы посмотрели на…

  • Упаковка вашей модели машинного обучения
  • Автономная настройка конечных точек SageMaker
  • С дружественным пользовательским интерфейсом
  • Размещение моделей на конечных точках
  • Готовим его к производству
  • Отказ от сложных движущихся частей

Другие подобные статьи можно найти в Peak Content Hub.