Amazon ec2 将模型度量输出到Cloudwatch

Amazon ec2 将模型度量输出到Cloudwatch,amazon-ec2,amazon-cloudwatch,amazon-sagemaker,Amazon Ec2,Amazon Cloudwatch,Amazon Sagemaker,我遵循aws github文档中的mnist-2指南来实施我自己的培训工作。我已经使用类似的结构编写了代码,但我希望在作业运行时可视化Cloudwatch的培训和验证指标。我是否需要手动指定我尝试观察的指标?AWS指南指出,“SageMaker会自动解析日志中内置算法发出的指标,并将这些指标发送到CloudWatch。”我只使用Tensorflow的训练和验证精度以及损失指标,我不确定这些指标是否是内置的,或者我是否需要手动调用它们。如果您不使用内置算法,与您链接的示例一样,在创建培训作业时,您

我遵循aws github文档中的mnist-2指南来实施我自己的培训工作。我已经使用类似的结构编写了代码,但我希望在作业运行时可视化Cloudwatch的培训和验证指标。我是否需要手动指定我尝试观察的指标?AWS指南指出,“SageMaker会自动解析日志中内置算法发出的指标,并将这些指标发送到CloudWatch。”我只使用Tensorflow的训练和验证精度以及损失指标,我不确定这些指标是否是内置的,或者我是否需要手动调用它们。

如果您不使用内置算法,与您链接的示例一样,在创建培训作业时,您必须定义度量。您必须定义正则表达式才能从日志中获取度量值,然后cloudwatch将为您绘图。x轴将是时间戳,您不能更改它。 基本上,只需运行训练作业并观察指标是如何输出的,然后就可以构建适当的正则表达式。例如,由于我在tensorflow中使用coco指标,定期产生以下结果:

INFO:tensorflow:Saving dict for global step 1109: DetectionBoxes_Precision/mAP = 0.111895345, DetectionBoxes_Precision/mAP (large) = 0.12102994, DetectionBoxes_Precision/mAP (medium) = 0.050807837, DetectionBoxes_Precision/mAP (small) = -1.0, DetectionBoxes_Precision/mAP@.50IOU = 0.33130914, DetectionBoxes_Precision/mAP@.75IOU = 0.03787096, DetectionBoxes_Recall/AR@1 = 0.18493989, DetectionBoxes_Recall/AR@10 = 0.36792925, DetectionBoxes_Recall/AR@100 = 0.48543888, DetectionBoxes_Recall/AR@100 (large) = 0.5131599, DetectionBoxes_Recall/AR@100 (medium) = 0.21598063, DetectionBoxes_Recall/AR@100 (small) = -1.0, Loss/classification_loss = 0.8041124, Loss/localization_loss = 0.35313264, Loss/regularization_loss = 0.15211834, Loss/total_loss = 1.30936, global_step = 1109, learning_rate = 0.28119853, loss = 1.30936
我用来计算总损失,例如:

INFO.*Loss\/total_loss = ([0-9\.]+) 
就这样,cloudwatch会及时自动绘制总损失

您可以在控制台或笔记本中定义度量,如下所示(只是我代码中的一个示例):

为了测试正则表达式,您可以使用以下工具

metrics = [{'Name': 'Loss', 'Regex': 'loss: ([0-9\.]+)'},
           {'Name': 'Accuracy', 'Regex': 'acc: ([0-9\.]+)'},
           {'Name': 'Epoch', 'Regex': 'Epoch ([0-9\.]+)'},
           {'Name': 'Validation_Acc', 'Regex': 'val_acc: ([0-9\.]+)'},
           {'Name': 'Validation_Loss', 'Regex': 'val_loss: ([0-9\.]+)'}]

tf_estimator = TensorFlow(entry_point='training.py', 
                          role=get_execution_role(),
                          train_instance_count=1, 
                          train_instance_type='ml.p2.xlarge',
                          train_max_run=172800,
                          output_path=s3_output_location,
                          framework_version='1.12',
                          py_version='py3',
                          metric_definitions = metrics,
                          hyperparameters = hyperparameters)