Featured image of post 关于实验记录的管理

关于实验记录的管理

我因为之前做实验时习惯不好(一边训练一边改代码),没有保留好实验记录惹出了一些麻烦(不知道发布的模型具体是怎么训练出来的),觉得有必要确立几条原则防止以后再出现类似的情况。 为了确保每次实验都是完全可复现的,以下是我的想法:

  1. 使用 git 管理实验代码版本,在程序内强制要求长时间训练模型前 commit 所有修改,并且在 commit 记录内写清楚每次做出的更改;
  2. 使用logging模块替代print,以将带时间戳的记录同时输出到控制台和 log 文件;
  3. 在程序运行前输出所有超参数与运行时间;
  4. 在训练时使用运行时间与 commit id 的前几位创建文件夹,并将此次训练产生的所有文件都组织到这个文件夹内,测试记录可以和模型放在一起。
  5. 固定并输出 random seed;
  6. 使用服务器训练时应及时下载训练记录。

实现

原本想自己实现的,这个时候发现了 meta 开源的 Hydra 库,似乎它提供的功能能实现其中几个想法。

使用 Hugo 构建
主题 StackJimmy 设计