Как тренировать свою модель в AWS Sagemaker? - PullRequest
0 голосов
/ 25 декабря 2018

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

Ответы [ 4 ]

0 голосов
/ 19 июля 2019

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

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

0 голосов
/ 08 января 2019

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

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

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

0 голосов
/ 12 января 2019

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

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

$ 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 и прочитать как обычный файл. Обратите внимание, что "train" в этом пути к файлу соответствует имени канала, которое вы указали во входных данных-конфиг.

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

0 голосов
/ 25 декабря 2018

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

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

https://github.com/awslabs/amazon-sagemaker-examples/blob/caa8ce243b51f6bdb15f2afc638d9c4e2ad436b9/hyperparameter_tuning/keras_bring_your_own/trainer/environment.py).

...