16:Learner 框架

在课程 16 中,我们深入探讨了如何构建一个名为 Learner 的灵活训练框架。我们从一个基础回调 Learner 开始,这是迈向灵活 Learner 的中间步骤。我们介绍了回调(callbacks),它们是在训练过程中的特定点调用的函数或类,并演示了如何创建一个简单的回调。我们还介绍了 CancelFitException、CancelEpochException 和 CancelBatchException 的概念。

接着,我们探索了指标(metrics)并创建了一个 MetricsCB 回调,以便在训练期间打印出指标。我们介绍了 torcheval 库,并创建了一个 DeviceCB 回调来处理将模型和数据移动到适当的设备。我们使用上下文管理器重构了代码,以简化代码并使其更容易维护并在未来添加回调。

然后,我们专注于查看模型内部,以便在训练期间诊断和修复问题。我们引入了一个 set_seed 函数,并使用 0.6 的高学习率训练了一个模型来测试训练的稳定性。最后,我们讨论了通过查看每层激活值的均值和标准差来分析训练过程,使用 PyTorch 钩子(hooks)并创建激活值的直方图。

讨论的概念

  • 构建灵活的训练框架
  • 基础回调 Learner
  • 回调和异常 (CancelFitException, CancelEpochException, CancelBatchException)
  • 指标和 MetricsCB 回调
  • torcheval 库
  • DeviceCB 回调
  • 使用上下文管理器重构代码
  • set_seed 函数
  • 分析训练过程
  • PyTorch 钩子
  • 激活值的直方图

视频

课程资源