Введение

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

Мотивация использования SageMaker

Мне пришлось столкнуться с трудностями при развертывании моделей машинного обучения. Я развернул модели на AzureML, используя фреймворк Flask на Python, даже несколько лет назад использовал Openscoring в качестве опции. Когда появился PMML, было много разговоров, и вокруг ONNX тоже много шума. Со временем некоторые из них станут зрелыми, а некоторые - нет. Я рассматриваю некоторые варианты, которые делают вещи актуальными и применимыми в сегодняшнем контексте.

AWS Sagemaker

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

Разнообразие

С помощью Sagemaker можно управлять жизненным циклом практически всех типов моделей, обученных в различных фреймворках, таких как Tensorflow, Pytorch, MXnet, Chainer и т. Д. Он также поддерживает модели, написанные на MXNet, TensorFlow, Chainer, PyTorch, scikit-learn и т. Д.

Предложения

На более высоком уровне Sagemaker предлагает четыре вида услуг: наземная правда, записная книжка, обучение и вывод. В этой статье мы сосредоточимся на блокноте, обучении и выводах.

Блокнот

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

SDK для SageMaker Python

SageMaker Python SDK предоставляет следующие важные функции, связанные с машинным обучением, которые помогают в выполнении различных задач, связанных с машинным обучением.

  • Оценщики: инкапсулируйте обучение в SageMaker.
  • Модели: инкапсулируйте построенные модели машинного обучения.
  • Предикторы. Обеспечивают вывод и преобразование в реальном времени с использованием типов данных Python для конечной точки SageMaker.
  • Сеанс: предоставляет набор методов для работы с ресурсами SageMaker.

В следующем разделе мы увидим, как используется SageMaker API.

Использование Sagemaker API для различных задач - шаг за шагом

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

Следующие строки инициализируют различные переменные, которые будут использоваться позже.

Загрузить данные

Мы используем функцию sagemaker.Session.upload_data для загрузки наших наборов данных в местоположение S3. Входные данные возвращаемого значения идентифицируют местоположение - мы будем использовать это позже, когда мы начнем работу по обучению.

Обучение модели

Следующая команда выполняет обучение за вас, но за кулисами многое происходит для нас. Попробуем разобраться в этом.

точка_входа - это расположение файла кода Python (.py). Это место, где большая часть работы выполняется автором кода для работы с Sagemaker. Этот файл должен содержать реализацию следующих функций.

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

_train (аргументы)

Вышеупомянутая функция выполняет обучение модели. При вызове sg_estimator.fit вызывается функция _train. Здесь программист пишет код для обучения модели, создает tar-файл, в котором размещается модель и вспомогательная информация, и сохраняет его в расположение S3. Репозиторий модели доступен из sg_estimator.model_data. Эта информация используется при создании конечных точек sagemaker.

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

Развертывание модели

Мы рассмотрели функцию _train, которая используется для обучения модели. Необходимо реализовать четыре функции.

model_fn (model_dir): загружает модель из model_dir и возвращает переменную опорной модели.

input_fn (request_body, content_type = JPEG_CONTENT_TYPE): принимает тело запроса и отправляет обратно функцию ввода, например изображение, в случае анализа изображений.

pred_fn (input_object, model): принимает входной объект и модель и возвращает прогноз. Это место, где вам также нужно выполнить настройку.

output_fn (prediction, accept = JSON_CONTENT_TYPE): это место, где выполняется окончательная обработка перед возвратом результатов пользователю.

После реализации вышеуказанных функций вызовы развертывания могут выполняться с помощью Sagemaker API.

Обратите внимание, что с помощью sg_predictor развернутая функция может быть протестирована.

Тестирование развертывания модели:

Тестирование, чтобы увидеть, дает ли наша модель ожидаемый результат.

Загрузка изображения - собираюсь протестировать модель с изображением поля для гольфа.

Выход

Выше приведен полный жизненный цикл обучения и развертывания модели.

Вывод модели от клиента

Для этого требуется дополнительная работа. Здесь это не рассматривается, но необходимый шаг - наличие уровня Lambda и шлюза API для обеспечения доступности конечной точки Sagemaker для внешнего мира.

Некоторые замечательные функции, предоставляемые Sagemaker

  • Спотовое обучение. Вы, наверное, заметили, что есть параметр train_use_spot_instances. Это помогает сократить расходы на обучение . Это может помочь сэкономить до 90%, но есть одна загвоздка: конечному пользователю необходимо реализовать контрольную точку модели на случай, если спотовый экземпляр временно восстановлен. В обучающем эксперименте, показанном выше, достигается экономия около 75%.
  • Управляемый экземпляр. Amazon SageMaker - это полностью управляемая служба машинного обучения. Специалисты по обработке данных и разработчики могут быстро и легко создавать и обучать модели машинного обучения, не беспокоясь о конфигурации и управлении серверами. Непосредственное развертывание моделей также легко, потому что конечная точка sagemaker может, наконец, использоваться как микросервис без написания кода.
  • Стандартизованный подход, который можно использовать для всех платформ глубокого обучения. Для людей, имеющих опыт разработки программного обеспечения, мы всегда говорим о возможности повторного использования и стремимся к ней. Sagemaker в некотором роде стандартизирует процесс обучения и внедрения. Вам необходимо реализовать _train, input_fn, pred_fn, и эти функции актуальны при создании моделей машинного обучения в другом сервисе, таком как Lambda.
  • Ускоренный вывод: это снова отличная функция. Не все варианты использования должны обеспечивать вывод в реальном времени. И здесь вы можете контролировать, какой ответ вам нужен, и выбирать подходящий вариант.

  • Рентабельность. Вы платите за потраченное время. Нет необходимости держать экземпляр в рабочем состоянии для выполнения учебных заданий. Экземпляр контроллера может иметь низкую конфигурацию, которой достаточно для написания кода. Для обучения, как вы видели, вы можете выбрать использование ресурсоемких вычислений для этого экземпляра обучения. Дальнейшее снижение стоимости возможно за счет использования спотовых экземпляров, как описано выше. Еще одна вещь: вы не связаны с выбранным вами экземпляром. Если вы чувствуете, что выбрали неправильный экземпляр, у вас есть возможность изменить это. Не нужно копировать код, уничтожать экземпляр и создавать новый экземпляр.

Основополагающая правда

Мы не говорили об услуге «Истина на земле», которая также является отличным предложением, которое будет сделано позже. Это в основном решает проблему, связанную с аннотацией данных, которые используются для контролируемого обучения.

Последние мысли

Мы видим, что SageMaker - очень хороший выбор, доступный сегодня для управления жизненным циклом машинного обучения. Он предлагает потрясающую гибкость. Сколько времени нужно на обучение? Что ж, если вы занимаетесь машинным обучением, менее недели будет достаточно, чтобы вы начали. Доступно множество примеров, которые можно использовать в качестве отправной точки и модифицировать в соответствии с вашими потребностями. В целом, Sagemaker определенно рекомендуется для практиков машинного обучения.