繁体   English   中英

使用 Trains 跟踪单独的训练/测试过程

[英]Tracking separate train/test processes with Trains

在我的设置中,我运行一个脚本来训练model 并开始生成检查点。 另一个脚本监视新的检查点并评估它们。 脚本并行运行,因此评估只是训练的一个步骤。

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

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

你有两个实验吗? 一种用于测试,一种用于培训?

如果您确实有两个实验,那么我会确保模型都登录到它们中(如果它们存储在同一个共享文件夹/s3/etc 中,这将是自动的)然后您可以快速查看每个模型的性能-一。

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

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

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

编辑2:

假设您有训练 model 的主脚本。 此实验具有唯一的任务 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,我们遇到了同样的问题,并且我们在训练和测试中登录的所有内容也具有相同的名称,因为它来自相同的代码(显然)。 为了避免在训练图中出现训练/测试混乱,我们修改了 tensorflow_bind.py 为“训练”和“验证”流添加不同的前缀。 Trains 的错误修复是添加一个 logdir 名称(这对我们来说不是很清楚)。

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

干杯,达根

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM