AWS Показатель потерь при отправке контейнеров для заданий по обучению Sagemaker - PullRequest
2 голосов
/ 05 апреля 2020

Я создал клиентский контейнер docker, используя контейнер тензорного потока Amazon в качестве отправной точки:

763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:1.15.2-gpu-py36-cu100-ubuntu18.04

внутри контейнера. Я запускаю пользовательское учебное задание keras (с бэкэндом TF) из docker SAGEMAKER_PROGRAM. Я могу получить доступ к данным обучения в порядке (из монтирования EFS) и могу генерировать вывод в / opt / ml / модель, которая синхронизируется с S3. Так что ввод и вывод хороши: мне не хватает мониторинга в реальном времени.

Учебное задание Sagemaker генерирует системные показатели, такие как загрузка процессора и gpu, которые вы можете удобно просматривать в режиме реального времени на консоли задания обучения Sagemaker. , Но я не могу найти способ генерировать метрики о ходе учебной работы. то есть потери, точность и т. д. c из моего python кода.

На самом деле, в идеале я хотел бы использовать Tensorboard, но, поскольку Sagemaker не отображает экземпляр на консоли EC2, я не вижу, как найти IP-адрес экземпляра для подключения к Tensorboard.

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

Основной вопрос c заключается в том, как выполнять мониторинг в режиме реального времени. Основные показатели для моей индивидуальной учебной работы, выполняемой в контейнере на учебной работе Sagemaker: - Возможно ли решение с тензорным щитом? Если так, то как? - Если нет, то как мне выводить метрики из моего python кода и отображать их в консоли учебных заданий или непосредственно в метриках облачных часов?

Кстати: пока мне не удалось получить достаточные учетные данные внутри контейнера учебных заданий для доступа либо к s3, либо к облачным часам.

1 Ответ

0 голосов
/ 20 апреля 2020

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

byo_estimator = Estimator(image_name=image_name,
                      role='SageMakerRole', train_instance_count=1,
                      train_instance_type='ml.c4.xlarge',
                      sagemaker_session=sagemaker_session,
                      metric_definitions=[{'Name': 'test:msd', 'Regex': '#quality_metric: host=\S+, test msd <loss>=(\S+)'},
                                          {'Name': 'test:ssd', 'Regex': '#quality_metric: host=\S+, test ssd <loss>=(\S+)'}])
...