编写一个具有可复用性的机器学习代码模版。

当前机器学习特别是深度学习的代码大部分工作流程都是相同或是类似的。我想在 PyTorch 的基础构建一个通用的代码模板统一和规范,通过对模版的代码复用快速复现其他人的论文的结果,或是用于生产环境。

PyTorch-Lightning

调研了一下,我认为使用 PyTorch-Lightning 会是一个不错的选择。

工程文件结构

需求分析

  1. CheckPoint 和 超参数 的 save 和 reload
  2. 数据可视化(loss, T-sne)
  3. 高效率的DataLoader
  4. 分布式多 GPU 训练
  5. 自动生成文档
  6. warmup, early stop, lr_scheduler

CheckPoint 和 超参数 的 save 和 reload

看了很多别人的代码,很多都是使用 yaml 文件配置超参数和模型结构,使用特定的命令去调用,例如 opennmt-py。

但这并不是我想要的, 我认为首先应该约定模型 checkpoint 的存放文件夹和超参数的存放文件名

数据可视化(loss, T-sne)

  • wandb
  • TensorBoardX

高效率的DataLoader

基于 PyTorch 编写的很多代码模型训练速度瓶颈常在于数据 IO

DataLoader 在 RNN 和 LSTM 上的不同

分布式多GPU训练

  • dp
  • ddp
  • ddp2