我已经使用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负载之类的系统指标,您可以在Sagemaker培训作业控制台上方便地实时查看这些指标。但是我找不到一种方法来发布有关培训工作进度的指标。即我的python代码中的损失,准确性等。
实际上,理想情况下,我想使用Tensorboard,但由于Sagemaker不会在EC2控制台上公开该实例,所以我看不到如何找到该Tensorboard要连接的实例的IP地址。
因此,后备方法是尝试从培训代码中发出相关指标,以便我们可以在作业运行时对其进行监视。
基本问题是如何实时监控在Sagemaker培训工作中在容器中运行的自定义培训工作的关键指标:
-是否可以使用张量板解决方案?如果可以,怎么办?
-如果不是,如何从python代码中发出指标并将其显示在培训工作控制台中或直接显示为cloudwatch指标?
顺便说一句:到目前为止,我仍无法在训练作业容器内获得足够的凭据来访问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+)'}])
关于amazon-web-services - AWS Sagemaker自定义培训作业容器发射损失指标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61037520/