【Bootcamp】科学实验管理

1. 主体思想

  • 实验科学:

    避免难以复现; 验证idea

  • 正确的实验:

    必须可复现; 结果可解读、可比较; 良好 code style

  • 协作

    信息公开; 经常交流

2. 错误行为

中途改动导致不可复现实验

  1. 实验启动后不要改动
  2. 如果想修改,重新复制,git 管理,做记录

修改共用模块

  1. 实验依赖于公共模块

  2. 如megdl,neupeak,共用数据,benchmark-tool

  3. 谨慎修改共用模块,复制出来修改

训练数据乱改乱放

  1. 数据放好,

  2. 起名时要起有意义的名字 ToF.IR.india.180625

  3. 数据一旦加入实验,不要轻易移动,宁可复制,不要移动

train_log

  1. 使用 git
  2. 问,明确 train_log 放在哪里
  3. 用的什么 python 2 or 3? anaconda 的,conda 安装的,miniconda 的
  4. pip install?包在 local、home、usr、anaconda?

错误工程习惯

  • 代码数据混一起。

    代码数据严格分离,数据严格按规定放在共享目录下

  • 多个 Tmux 编辑同一个文件

  • 文件、代码随意命名

随意修改实验

  • 不要动已有实验
  • 复制一份创建新实验,在新地方改(git)

私藏

  • 实验不共享,不 git push
  • 放在私有目录

报喜不报忧

自私、不负责的行为

3. 正确行为

修改实验5步走

在一个大目录下git init,目录内包含多个实验。

  1. cp -r exp1 exp2
  2. git add exp2 && git commit -m “fork exp1 to exp2” 改完就提交,这样直接 git diff
  3. 修改,改完就提交,直到 bug free

科学命名

  • xiangyu-aug-500.shufflenetv2.41Mops.SENet

Work Log

一天10-20组

  • 实验名,关键方法,关键数据,关键改动,关键结果
  • 搜参调模型,使用图表、思维导图 (work_log的记录方法)

一定要量化的定量对比

  • 对比模型
  • 有榜可刷
  • benchmark,从不科学到科学:样本量大,样本全面,样本均衡,要比实际情况难(hard case)。

实验原则

  • 每个对比实验,只修改一个参数
  • 充分利用计算资源,验证多个 ideas
  • 不要看 train_log,容易犯困 😄

时间分配

上午:分析前一天的结果; 抓紧时间写代码,调参入炉

下午:做碎片工作,看论文,与人交流

傍晚:再下一波丹

!!! 不要让丹炉闲着