Использование тензорной доски с API обнаружения объектов в sagemaker

с помощью this я успешно создал учебное задание по sagemaker с помощью API обнаружения объектов Tensorflow в докер-контейнере. Теперь я хотел бы контролировать работу по обучению с помощью sagemaker, но не могу найти ничего, объясняющего, как это делать. Я не использую записную книжку Sagemaker. Я думаю, что могу сделать это, сохранив журналы в ведре S3 и указав там локальный экземпляр тензорной платы ... но не знаю, как сообщить API обнаружения объектов тензорного потока, где сохранять журналы (есть ли аргумент командной строки для этого ?). Что-то вроде >, но сценарий generate_tensorboard_command.py не работает, потому что в моем учебном задании нет параметра sagemaker_submit_directory ..

Дело в том, что когда я начинаю обучение, на моем s3 ничего не создается, пока работа не закончится и не загрузит все. Должен быть способ указать тензорному потоку, где сохранять журналы (s3) во время обучения, надеюсь, без изменения исходного кода API.

Изменить

Наконец-то я могу заставить его работать с принятым решением (tensorflow изначально поддерживает чтение / запись в s3), однако есть дополнительные шаги, которые нужно сделать:

  1. Отключить изоляцию сети в конфигурации учебного задания
  2. Предоставьте учетные данные образу докера для записи в корзину S3

Единственное, что Tensorflow постоянно опрашивает файловую систему (т.е. ищет обновленную модель в режиме обслуживания), и это вызывает бесполезные запросы к S3, которые вам придется заплатить (вместе с кучей ошибок в консоли). Я открыл для этого новый вопрос здесь. По крайней мере, это работает.

Изменить 2

Я был неправ, TF просто пишет журналы, а не опрашивает, так что это ожидаемое поведение, а дополнительные расходы минимальны.




Ответы (1)


Просматривая опубликованный вами пример, кажется, что model_dir, переданный в пакет обнаружения объектов TensorFlow, настроен на /opt/ml/model:

# These are the paths to where SageMaker mounts interesting things in your container.
prefix = '/opt/ml/'
input_path = os.path.join(prefix, 'input/data')
output_path = os.path.join(prefix, 'output')
model_path = os.path.join(prefix, 'model')
param_path = os.path.join(prefix, 'input/config/hyperparameters.json')

Во время процесса обучения журналы тензорной доски будут записаны в /opt/ml/model, а затем загружены в s3 как окончательный артефакт модели ПОСЛЕ обучения: https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-envvariables.html.

Вы можете отойти от шага загрузки артефакта SageMaker и указать model_dir API обнаружения объектов TensorFlow непосредственно на местоположение s3 во время обучения:

model_path = "s3://your-bucket/path/here

Это означает, что библиотека TensorFlow в задании SageMaker напрямую пишет в S3, а не в файловую систему внутри своего контейнера. Предполагая, что базовый код обнаружения объектов TensorFlow может писать непосредственно в S3 (что вам нужно будет проверить), вы сможете видеть журналы тензорной платы и контрольные точки там в реальном времени.

person Yoav Zimmerman    schedule 07.07.2020