使用 PyTorch(一个深度学习框架,主要提供矩阵的计算和自动求导的功能) 打过几次竞赛后,发现写了很多重复代码,于是中途抽空把这些重复代码抽了出来开源了 Minetorch,目前 Minetorch 主要提供了这些功能:
- 日志
- 数据预处理「数据流」
- 自动保存训练模型
- 标准的训练流程,以及在这个流程上提供很多hooks来让用户customize
- Drawer,绘图工具,可以生成 png 或实时的在线的表格(依赖 tensorboard)
使用当前版本的 Minetorch,用户只需要创建4个实例,分别是:数据加载器、模型、优化器、损失函数,然后用这几个实例来创建一个 minetorch.Trainer
实例,并调用 Trainer 实例的 train()
方法就可以了。
Trainer 会自动调用数据加载器,把数据加载器加载的数据喂给模型,再调用损失函数计算损失值,然后用优化器去优化模型。
在实际的训练或竞赛中,会经常调参,调参完之后需要重新训练模型,这个过程会反复重复;然后高级调参工程师一般还会有一个 Excel,来记录每一次试验的参数和结果;因为需要反复调参,反复改动代码,就算是资深的调参工程师都很难保证一个干净的代码仓库, 经常是改了半天的参数,然后想再复现两三天前的一个实验结果,就完全忘记当时用的什么代码,就再也回不去了。
- Web Dashboard,不仅要提供目前已有的可视化训练过程(主要是损失曲线),还要提供数据流的可视化,训练数据可视化。Dashboard 上可以直接新建/编辑试验(调参),开始/暂停训练 etc...
- 每次训练的数据、用到的组件(代码)、结果、和最后产出的模型,需要做 snapshot 并保存下来,用户随时回到历史任意一次的训练环境。
- ...