单个脚本中的 ClearML 多个任务更改记录的值名称

Posted

技术标签:

【中文标题】单个脚本中的 ClearML 多个任务更改记录的值名称【英文标题】:ClearML multiple tasks in single script changes logged value names 【发布时间】:2021-05-22 13:31:11 【问题描述】:

我为自定义超参数搜索训练了具有不同配置的多个模型。我使用 pytorch_lightning 及其日志记录(TensorboardLogger)。 在 Task.init() 之后运行我的训练脚本时,ClearML 会自动创建一个任务并将记录器输出连接到服务器。

我为每个应变阶段 trainvaltest 在每个时期记录以下标量:lossacciou

当我有多个配置时,例如networkAnetworkB 第一个训练将其值记录到 lossacciou,但第二个记录到 networkB:lossnetworkB:accnetworkB:iou。这使得价值观无法比较。

我的任务初始化训练循环如下所示:

names = ['networkA', networkB']
for name in names:
     task = Task.init(project_name="NetworkProject", task_name=name)
     pl_train(name)
     task.close()

方法 pl_train 是使用 Pytorch Ligtning 进行整个训练的包装器。此方法中没有 ClearML 代码。

您是否有任何提示,如何使用完全分离的任务在脚本中正确使用循环?


编辑:ClearML 版本是 0.17.4。问题已在主分支中修复。

【问题讨论】:

【参考方案1】:

免责声明我是 ClearML(前身为 Trains)团队的一员。

pytorch_lightning 正在为每个实验创建一个新的 Tensorboard。当 ClearML 记录 TB 标量并捕获再次重新发送的相同标量时,它会添加一个前缀,因此如果您报告相同的指标,它不会覆盖前一个指标。一个很好的例子是在训练阶段和验证阶段报告loss 标量(产生“损失”和“验证:损失”)。可能是task.close() 调用没有清除以前的日志,所以它“认为”这是同一个实验,因此将前缀networkB 添加到loss。只要您在训练完成后关闭任务,您就应该使用相同的指标/变量(标题/系列)记录所有实验。我建议打开一个 GitHub 问题,这可能应该被认为是一个错误。

【讨论】:

感谢您的想法。我开了一个问题:github.com/allegroai/clearml/issues/312 问题已在主分支中修复。所以只需获得一个 >= 0.17.5 的版本(主分支或即将发布的版本)

以上是关于单个脚本中的 ClearML 多个任务更改记录的值名称的主要内容,如果未能解决你的问题,请参考以下文章

ClearML 如何获得可配置的超参数?

ClearML 如何在 AWS Sagemaker 中更改 clearml.conf 文件

在 clearml 代理中的 docker 中安装 S3 存储桶

Flyway 最佳实践:一个大型迁移脚本与多个增量脚本

用单个列从另一个表更新一个表中的多个列?

Crystal Reports 2008 中的单个条形图需要多个页面