AWS Sagemaker 自定义训练作业容器输出损失度量。

3

我使用亚马逊tensorflow容器为起点创建了一个客户docker容器:

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

在容器中,我使用docker SAGEMAKER_PROGRAM运行自定义的keras (with TF backend)训练任务。我可以正常访问训练数据(来自EFS挂载点),并且可以生成输出到 /opt/ml/model,该输出会同步回S3。所以输入和输出都没问题:我缺少的是实时监控。
一个Sagemaker训练作业会发出系统指标,如CPU和GPU负载,您可以方便地在Sagemaker训练作业控制台上实时查看这些指标。但是,我无法找到一种方法从我的Python代码中发出有关培训工作进度的指标,例如损失、准确性等。
实际上,理想情况下,我想使用Tensorboard,但由于Sagemaker不会在EC2控制台上公开实例,因此我无法找到如何连接到Tensorboard的实例的IP地址。
因此,备选方案是尝试从训练代码中发出相关指标,以便我们可以在其运行时监视作业。
基本问题是如何实时监控在Sagemaker训练作业容器中运行的自定义训练任务的关键指标: - 是否可能使用Tensorboard解决方案?如果可以,如何进行? - 如果不是,如何从我的Python代码中发出指标,并使它们直接显示在训练作业控制台或云监控指标中?
顺便说一句:到目前为止,我未能在训练作业容器内获得足够的凭据,以访问S3或云监控。
1个回答

2

如果您正在使用客户图像进行训练,您可以指定要跟踪的度量名称和正则表达式。

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

我如何决定使用哪些指标? - Bruce wayne - The Geek Killer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接