Контейнер для настраиваемого обучения AWS Sagemaker: метрика потерь

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

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

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

Обучающее задание Sagemaker генерирует системные метрики, такие как загрузка процессора и графического процессора, которые вы можете удобно просматривать в режиме реального времени на консоли рабочего задания Sagemaker. Но я не могу найти способ выпускать показатели о ходе обучения. то есть потеря, точность и т. д. из моего кода Python.

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

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

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

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




Ответы (1)


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

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+)'}])
person Sifei    schedule 19.04.2020