Первоначально опубликовано на https://thelastdev.com 1 апреля 2020 г.

В предыдущих сообщениях мы исследовали Amazon SageMaker’s AutoPilot, который был потрясающим, и мы узнали, как использовать свой собственный алгоритм с Docker, что было прекрасно, но немного запутанно. В этом посте мы увидим, как легко создать собственный алгоритм, используя режим сценария в SageMaker. Мы снова будем использовать новую SageMaker Studio!

Давайте посмотрим на ресурсы, которые мы будем использовать, сколько будет стоить это руководство:

  • Уровень АМС: 300
  • Общая стоимость: скажем, 1 доллар (без развернутой конечной точки).
  • Блокнот Amazon SageMaker: мл.система на 24 часа -> 0,00364 x 24 -> 0,087$ + мл.t3.medium на 12 часов -> 0,7$ = 0,8$
  • Экземпляр Amazon SageMaker Training: 225 секунд в ml.c5.2xlarge -> 0,476 x 0,07 = 0,03

Вы можете найти код этого поста здесь: https://github.com/siakon89/machine-learning/tree/master/sagemaker/fashion-mnist-byom

Предпосылки

Единственное, что нам нужно, это набор данных. Я выбрал популярный набор данных Fashion MNIST.
Мы будем загружать Fashion MNIST из наборов данных Keras следующим образом:

Давайте посмотрим на данные, которые мы только что скачали:

Набор данных предварительной обработки

Мы должны внести некоторые коррективы в наши данные для нашей модели.

Сначала мы нормализуем изображения до 0–1. Изображения Fashion MNIST представляют собой массивы 28×28 со значениями от 0 до 255, где 0 — черный цвет, а 255 — белый цвет. Мы делим массив на 255, чтобы привести его значение к [0, 1] (строка 4–5).

Нам также нужно преобразовать наши данные из 28×28 в 28×28×1 для нашей модели (строки 8–9).

Наконец, мы сразу же кодируем наши метки (строки 13–14).

Построение модели

Мы будем использовать сверточные нейронные сети (CNN) для решения этой проблемы классификации. Постройте относительно простую CNN следующим образом:

Для этой модели мы использовали довольно простую сеть CNN с тремя слоями Conv2D, одним 64 и двумя 32, оба с размером ядра 3×3 и функцией активации, нашей любимой ReLu. Ниже приводится краткое описание модели.

_________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_28 (Conv2D) (None, 26, 26, 64) 640 _________________________________________________________________ conv2d_29 (Conv2D) (None, 24, 24, 32) 18464 _________________________________________________________________ conv2d_30 (Conv2D) (None, 22, 22, 32) 9248 _________________________________________________________________ flatten_12 (Flatten) (None, 15488) 0 _________________________________________________________________ dense_12 (Dense) (None, 10) 154890 ================================================================= Total params: 183,242 Trainable params: 183,242 Non-trainable params: 0 _________________________________________________________________

Настройка SageMaker

В том же Jupyter Notebook загружаем свои данные в S3 и «даем SageMaker» обучить нашу модель. Прежде всего, нам нужно преобразовать наши данные в двоичный формат; мы используем NumPy. После преобразования мы загружаем файлы в корзину SageMaker S3.

Обучите модель

Чтобы обучить модель, во-первых, нам нужно привести код модели в приемлемый формат с помощью SageMaker. Для этого нам нужно иметь в виду две вещи:

  1. SageMaker получит на вход файл python и запустит его с аргументами.
  2. Обучение модели будет выполняться в другом экземпляре, поэтому нам нужно получить данные из S3.

Скрипт

Учитывая вышесказанное, нам сначала нужно принять аргументы, которые SageMaker использует в нашем скрипте, а во-вторых, нам нужно прочитать данные из S3. Мы создаем новый файл с именем model.py (вы можете использовать любое имя)

  • Строка 26–40: Настройте argparse для приема определенных аргументов. Установите скорость обучения, эпохи и многое другое с помощью командной строки, и командная строка преобразуется в аргументы в SageMaker Estimator.
  • Строка 42–45: Преобразование аргументов в переменные.
  • Строка 47–49: чтение данных из локального. Подожди... местный? Да, SageMaker копирует данные, которые вы указали в параметрах, в указанную вами папку; в нашем случае args.train будет хранить наши файлы для обучения.
  • Строка 51–73: это модель, определенная выше.
  • Строка 75–77: оценка модели.
  • Строка 79–80: Сохранение модели в args.model_dir.

Оценщик SageMaker

После настройки файла model.py нам нужно установить Estimator для режима скрипта. Мы будем использовать встроенный оценщик TensorFlow от SageMaker, чтобы использовать режим сценария.

  • Строка 1: это каталог для сохранения окончательной модели.
  • Строка 2: это экземпляр, в котором мы будем обучать нашу модель. Здесь вы можете найти список со всеми доступными инстансами в SageMaker, но для GPU вам придется увеличить лимит через службу поддержки AWS.
  • Строка 3: это гиперпараметры/аргументы для скрипта.
  • Строка 5–16: это Estimator, который создаст экземпляр для обучения модели.
  • Строка 6: Это наш скрипт, который мы создали ранее.
  • Строка 7: тип экземпляра для обучения модели.
  • Строка 8: количество экземпляров для обучения модели.
  • Строка 9: Папка для сохранения нашей модели.
  • Строка 11: роль SageMaker, необходимая для создания всего. При этом вы также можете запускать SageMaker локально.
  • Строка 12: Название тренировочного задания, которое мы будем искать в разделе «Эксперименты».
  • Строка 13: Версия Tensorflow. На сегодняшний день SageMaker поддерживает до 1.15 (мне бы хотелось увидеть 2.0 с новым дополнением TripletSemiHardLoss)
  • Строка 14: версия Python
  • Строка 15: включить режим сценария
  • Строка 18: Обучите модель с помощью сгенерированных входных данных. То, что мы заявили выше, это поезд и тестовая локация в S3.

Вы можете следить за ходом своего учебного задания либо в Jupyter Notebook, либо в разделе «Эксперимент». Помните, когда мы использовали имя tf-fashion-mnist в Estimator? Вот как мы находим работу по обучению. Дважды щелкните «Неназначенные пробные компоненты», затем найдите название задания, щелкните левой кнопкой мыши и выберите «Открыть в сведениях о пробной версии». Выберите раздел Метрики, чтобы увидеть оценку.

Кроме того, помните строку 76 в model.py, где мы печатали оценку модели?

Test MSE : [0.2660780865192413, 0.9116]

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

Вы можете найти модель в S3 и развернуть ее вручную или с помощью команды deploy endpoint из SageMaker.

Вывод

Режим сценария в SageMaker определенно упрощает весь процесс «Принеси свою собственную модель». У вас все настроено из коробки, единственное, что вам нужно сделать, это передать аргументы Estimator. Кроме того, SageMaker Studio немного упрощает мониторинг процесса обучения, а метрики — очень приятное дополнение. С другой стороны, есть ограниченная поддержка версий фреймворка, например, хотелось бы, чтобы Tensorflow 2.0 был доступен в режиме скрипта. Кроме того, было сложно настроить локальный режим для обучения моей модели. Весь процесс инициализации обычно занимает 2–4 минуты, чтобы начать обучение вашей модели, и я хотел бы сначала протестировать свою модель или запустить ее локально.

Ну вот и все на сегодня народ. Я надеюсь, что вы найдете эту статью интересной. Если у вас есть какие-либо вопросы, предложения или замечания, пожалуйста, дайте мне знать в разделе комментариев ниже или в моем аккаунте Twitter @siaterliskonsta. Обязательно ознакомьтесь с моими предыдущими публикациями о SageMaker AutoPilot и Serverless Data Lake. До следующего раза, берегите себя!

Первоначально опубликовано на https://thelastdev.com 1 апреля 2020 г.