我为定制的超参数搜索训练了多个配置不同的模型。我使用pytorch_lightning及其日志记录(TensorboardLogger)。在运行Task.init()之后的培训脚本时,ClearML自动创建一个任务并将记录器输出连接到服务器。
我为每个应变阶段( train、val和test )在每个时期记录下列标量:loss、acc和iou
当我有多个配置时,例如networkA和networkB,第一个训练将其值记录到loss、acc和iou,而第二个则记录到networkB:loss、networkB:acc和networkB:iou。这使得价值无法比较。
我使用Task initalization的培训循环如下所示:
names = ['networkA', networkB']
for name in names:
task = Task.init(project_name="NetworkProject", task_name=name)
pl_train(name)
task.close()方法pl_train是一种用于整个训练的包装器。此方法中没有ClearML代码。
您是否有任何提示,如何正确使用循环在脚本中使用完全分离的任务?
编辑: ClearML版本为0.17.4。发行是固定在主要分支。
发布于 2021-02-19 22:31:43
免责声明我是ClearML (以前的训练)团队的一员。
pytorch_lightning正在为每个实验创建一个新的Tensorboard。当ClearML记录TB标量并再次捕获相同的标量时,它会添加一个前缀,因此如果您报告的是相同的度量,它将不会覆盖前一个标量。一个很好的例子是在培训阶段和验证阶段报告loss标量(产生“损失”和“验证:损失”)。可能是task.close()调用没有清除前面的日志,因此它“认为”这是相同的实验,因此将前缀networkB添加到loss中。只要您在完成培训后关闭任务,您就应该拥有所有具有相同度量/变体(标题/系列)的实验日志。我建议打开一个GitHub问题,这可能应该被认为是一个错误。
https://stackoverflow.com/questions/66279581
复制相似问题