我已经使用Amazon tensorflow容器作为起点创建了一个客户docker容器:
763104351884.dkr.ecr.us-west-2.amazonaws.com/tensorflow-training:1.15.2-gpu-py36-cu100-ubuntu18.04
在容器中,我从docker SAGEMAKER_PROGRAM运行一个自定义keras (使用TF后端)训练作业。我可以访问训练数据ok (从EFS挂载),并可以在/opt/ml/model中生成输出,该输出将同步回S3。所以输入和输出都很好:我缺少的是实时监控。
Sagemaker训练作业会发出cpu和gpu负载等系统指标,您可以在Sagemaker训练作业控制台上方便地实时查看这些指标。但我找不到一种方法来发布关于培训工作进度的指标。例如,我的python代码中的损失、准确性等。
实际上,理想情况下我希望使用Tensorboard,但是由于Sagemaker不会在EC2控制台上公开实例,所以我不知道如何找到Tensorboard要连接到的实例的IP地址。
因此,备用方法是尝试从训练代码中发出相关指标,以便我们可以在作业运行时对其进行监控。
基本问题是,我如何实时监控在Sagemaker培训作业的容器中运行的自定义培训作业的关键指标:- tensorboard解决方案可行吗?如果是这样,怎么做?-如果不是,我如何从我的python代码中发出指标,并让它们直接显示在训练作业控制台或作为cloudwatch指标?
顺便说一句:到目前为止,我还无法在训练作业容器中获得足够的凭据来访问s3或cloudwatch。
发布于 2020-04-19 23:32:00
如果您正在使用客户图像进行训练,则可以为要跟踪以进行训练的指标指定名称和正则表达式。
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+)'}])
https://stackoverflow.com/questions/61037520
复制相似问题