amazon-web-services - AWS Sagemaker 自定义训练作业容器发出损失指标

标签 amazon-web-services docker tensorflow amazon-sagemaker amazon-cloudwatch-metrics

我使用 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/

相关文章:

java - 用于 SSE-C 特定加密的 aws 预签名 URL

python - 如何将二维数组转换为keras+LSTM需要的格式

tensorflow - 在 tensorflow 中我怎样才能获得最小值索引但除了零

python - tensorflow object detection faster rcnn 随机失败

javascript - 使用 AWS Javascript 开发工具包发送 SMS

amazon-web-services - 如何启用 cloudFormation 文件中的所有 RDS 流量?

java - 亚马逊 Elastic Beanstalk 广播

docker - 将非 pid 1 进程的输出重定向到 docker 日志

tomcat - 如何在我不修改的本地 mac 上运行多个支持应用程序 (tomcat)?

docker - 如何进行代码接收和Gitlab CI(持续集成)