AWS Sagemaker自定义培训工作容器排放损失度量



我使用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后端(培训作业。我可以正常访问训练数据(从EFS装载(,并可以生成/opt/ml/model的输出,该输出将同步回S3。所以输入和输出都很好:我缺少的是实时监控。

Sagemaker培训作业会发出cpu和gpu负载等系统指标,您可以方便地在Sagemakeer培训作业控制台上实时查看这些指标。但我找不到一种方法来发布有关培训工作进展的指标。即丢失、准确性等。

事实上,理想情况下,我想使用Tensorboard,但由于Sagemaker没有在EC2控制台上公开实例,我看不出如何为Tensorboard找到要连接的实例的IP地址。

因此,回退是尝试从训练代码中发出相关度量,以便我们可以在作业运行时对其进行监控。

基本问题是如何实时监控Sagemaker培训作业容器中运行的自定义培训作业的关键指标:-tensorboard解决方案可能吗?如果是,怎么办?-如果不是,我如何从python代码中发出度量,并将它们显示在培训作业控制台中或直接显示为cloudwatch度量?

BTW:到目前为止,我无法在培训作业容器中获得足够的凭据来访问s3或cloudwatch。

如果使用客户图像进行培训,则可以为要跟踪的培训指标指定名称和正则表达式。

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+)'}])

最新更新