Как обучить собственную модель в AWS Sagemaker?

Я только начал работать с AWS и хочу обучить собственную модель с собственным набором данных. У меня есть моя модель как модель keras с бэкэндом тензорного потока на Python. Прочитал документацию, говорят, мне нужен образ Docker для загрузки модели. Итак, как мне преобразовать модель keras в образ Docker. Я искал в Интернете, но не нашел ничего, что четко объясняло бы процесс. Как сделать docker-образ модели keras, как загрузить его в sagemaker. А также как загрузить мои данные из файла h5 в ведро S3 для обучения? Может ли кто-нибудь помочь мне получить четкое объяснение?


person Shantanu Shinde    schedule 25.12.2018    source источник


Ответы (4)


Хотя вы можете загрузить контейнер Docker в Sagemaker для производства, похоже, вам будет лучше, если вы завершите весь конвейер Sagemaker, начиная с ваших данных в S3 и обучения через блокнот Jupyter, который поддерживает keras и TF.

После обучения модели в документации рассказывается, как сохранить и сохранить модель для производства. Для Docker вы должны создать свой контейнер Docker и отправить его в AWS ECR, а оттуда импортировать - обратите внимание, что из примеров awslabs есть очень специфическая структура каталогов Docker, которой вы должны следовать (например:

).

person Matthew Arthur    schedule 25.12.2018
comment
так что, если я просто загружу код модели keras в экземпляр jupyter и подогнаю его, он будет работать? Но тогда как я могу передать ведро s3 в качестве данных моей модели? Функция keras fit требует x и y, так что я должен там дать? - person Shantanu Shinde; 25.12.2018

Вы можете преобразовать свою модель Keras в tf.estimator и тренироваться с помощью оценщиков фреймворка TensorFlow в Sagemaker.

Это преобразование довольно простое, я повторно реализовал свои модели в TensorFlow, используя API tf.keras, который делает модель почти идентичной и тренируется с помощью оценщика Sagemaker TF в режиме сценария.

Мой первоначальный подход с использованием чистых моделей Keras был основан на контейнерах «принеси свой собственный алгоритм», аналогичных ответу Мэтью Артура.

person sniggatooth    schedule 08.01.2019

Хорошей отправной точкой для написания собственных пользовательских алгоритмов является Scikit Создание собственного контейнера алгоритмов. Он дает вам обзор Docker, шаги по упаковке вашего скрипта в контейнер, загрузке и запуску учебного задания.

Если у вас уже есть файл hdf5, вы можете просто использовать AWS CLI, чтобы загрузить его в корзину, принадлежащую вам.

$ aws s3 cp ./path/to/file.h5 s3://my-sagemaker-bucket/folder/file.h5

Затем при создании учебного задания вы можете указать [входной канал]: (http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html#SageMaker-CreateTrainingJob-request-InputDataConfig)

[{ 
  "ChannelName": "train",
  "DataSource": {
    "S3DataSource": {
      "S3Uri": "s3://my-sagemaker-bucket/folder",
      "S3DataType": "S3Prefix",
      "S3DataDistributionType": "FullyReplicated"
    }
  }
}]

Когда начинается обучение, ваш контейнерный сценарий должен быть в состоянии найти его в своей локальной файловой системе по адресу /opt/ml/input/data/train/file.h5 и иметь возможность читать его как обычный файл. Обратите внимание, что «поезд» в этом пути к файлу соответствует имени канала, которое вы указали в файле input-data-config.

Вы можете узнать больше на https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html.

person Arvind    schedule 11.01.2019

Keras теперь изначально поддерживается в SageMaker с помощью встроенных фреймворков TensorFlow и MXNet. Вы можете обучать и развертывать с помощью SageMaker, или вы можете импортировать существующие модели Keras в формате обслуживания TensorFlow и развертывать их.

Вот подробный пример: https://aws.amazon.com/blogs/machine-learning/train-and-deploy-keras-models-with-tensorflow-and-apache-mxnet-on-amazon-sagemaker/

person Julien Simon    schedule 19.07.2019