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

Исходное сообщение здесь.

Этот учебник является продолжением моего предыдущего, Сверточная нейронная сеть с Keras Tensorflow в наборе данных CIFAR-10, классификация изображений, и вы можете найти его здесь. Пожалуйста, найдите время и бегло просмотрите статью, а также загрузите код (ноутбук IPython), потому что он вам понадобится.

Разделы, которые мы рассмотрим, следующие:

  1. Подготовить DockerFile для контейнера GPU
  2. Создание файла keras.json
  3. Создание файла python с нашей моделью, cifar_10_keras.py
  4. Настройте SageMaker для запуска нашей модели
  5. Сохраните модель, чтобы использовать ее для прогнозов.

Настройка SageMaker и среды

Есть замечательный пост от Жюльена Саймона (@julsimon), в котором объясняется, как использовать SageMaker с MXNet-Keras и запускать свой пользовательский код. . Вы можете найти его статью здесь.

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

Подготовьте DockerFile для контейнера GPU

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

  • nvidia/cuda:9.0-runtime: создает контейнер с уже установленными Ubuntu xenial и cuda9.
  • установка всех необходимых пакетов для ОС (включая python3 и (libopencv-dev)
  • Перемещение файлов (keras.json и cifar_10_keras.py) в контейнер Docker
  • установка mxnet-cu90 и keras-mxnet, чтобы иметь keras с серверной частью MXNet и возможность работать на графическом процессоре

Создание файла keras.json

Важными переменными здесь являются «image_data» и «backend».

  • image_data: channels_last означает, что у нас есть данные в следующем формате (32, 32, 3), что означает изображение 32×32 с 3 каналами цвета (RGB), если наши данные были в формате (3, 32, 32), что означает у нас сначала идут каналы цвета (RGB) а потом уже изображение 32х32
  • бэкэнд: это бэкэнд Keras, в нашем случае это MXNet

Создание файла python с нашей моделью, cifar_10_keras.py

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

Затем мы должны открыть параметры для нашей модели, заданные оценщиком.

Затем мы делаем то же самое, что и при создании модели в предыдущем руководстве.

  1. Загрузите данные из замаринованных файлов (используем функцию load_data())
  2. Предварительно обработайте данные
  3. Создайте модель
  4. Увеличьте изображения
  5. Скомпилируйте модель
  6. Обучите модель и сохраните ее

И мы закончили создание модели для SageMaker. Теперь мы собираемся настроить SageMaker для запуска нашей пользовательской модели.

Настройте SageMaker для запуска нашей модели

Мы будем идти шаг за шагом. Вы можете найти блокнот Jupyter с полным кодом здесь.

  1. Загрузите набор данных и сохраните его как рассол
  2. Создайте образ Docker с нашей пользовательской моделью
  3. Загрузить набор данных в S3
  4. Обучите алгоритм
  5. Получить сохраненную модель

1. Загрузите набор данных и сохраните его как рассол

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

  • data/train/: здесь мы сохраняем файлы train-x и train-y.
  • data/validation/: здесь мы сохраняем файлы test-x и test-y.

2. Создайте образ Docker с нашей пользовательской моделью.

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

Затем мы перемещаем нужные файлы в папку с именем build/, а затем создаем образ Docker. Когда изображение готово, мы отправляем его в ECR.

3. Загрузите набор данных на S3

Мы загружаем набор данных, созданный ранее на шаге 1.

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

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

5. Получить сохраненную модель

Вы можете найти сохраненную модель в сжатом виде в корзине S3. Вы можете скачать его, загрузить в свой алгоритм и начать прогнозировать!

Если вам нужен учебник о том, как настроить свою учетную запись для SageMaker, сообщите мне об этом в разделе комментариев ниже или вы можете написать мне @siaterliskonsta.

Вот и все на сегодня! Я знаю, что задал несколько вопросов о SageMaker, но будьте уверены, я загружу еще много руководств! Любые вопросы, которые у вас есть, вы можете найти меня в Твиттере @siaterliskonsta, я буду рад их услышать и сделаю все возможное, чтобы ответить на них! Следующий пост SageMaker будет намного проще! Мы будем использовать алгоритмы AWS! До следующего раза, берегите себя и до свидания!