使用 Trains 跟踪单独的 train/test 个流程

Tracking separate train/test processes with Trains

在我的设置中,我 运行 一个脚本 训练 模型并开始生成检查点。另一个脚本监视新的检查点并评估它们。脚本 运行 并行,因此评估仅落后于训练一步。

支持这种情况的正确 Tracks 配置是什么?

免责声明:我是 allegro.ai Trains 团队的一员

你有两个实验吗?一个用于测试 一个用于训练 ?

如果你有两个实验,那么我会确保模型都记录在它们中(如果它们存储在同一个 shared-folder/s3/etc 将是自动的) 然后就可以快速的看到每个人的表现了。

另一种选择是共享相同的实验,然后第二个过程将报告添加到原始实验,这意味着您必须以某种方式将实验 ID 传递给它。 然后你可以这样做:

task = Task.get_task(task_id='training_task_id`)
task.get_logger().report_scalar('title', 'loss', value=0.4, iteration=1)

编辑: 这两个进程总是一起启动,还是检查点测试是一般 purpose 代码?

编辑 2:

假设您有主脚本来训练模型。这个实验有一个唯一的任务 ID:

my_uid = Task.current_task().id

我们还假设您有办法将它传递给您的第二个进程(如果这是一个实际的子进程,它会继承 os 环境变量,因此您可以 os.environ['MY_TASK_ID']=my_uid

然后在评估脚本中,您可以像这样直接向主要训练任务报告:

train_task = Task.get_task(task_id=os.environ['MY_TASK_ID'])
train_task.get_logger().report_scalar('title', 'loss', value=0.4, iteration=1)

@MichaelLitvin, 我们遇到了同样的问题,而且我们在训练和测试中记录的所有内容也有相同的名称,因为它们来自相同的代码(很明显)。 为了避免 train/test 火车情节混乱,我们修改了 tensorflow_bind.py 为“火车”和“验证”流添加了不同的前缀。 Trains 的错误修正是添加了一个 logdir 名称(这对我们来说不是很清楚)。

*这是 1-2 年前完成的,所以现在可能是多余的

干杯, 大干