论文浏览(11) A Multigrid Method for Efficiently Training Video Models


0. 前言

  • 相关资料:
  • 论文基本信息
    • 领域:视频理解 训练加速
    • 作者单位:FAIR&得克萨斯大学奥斯汀分校
    • 发表时间:2019.12
  • 这工作对我们这种算力不够的人非常有帮助,也开源了,为啥没啥人讨论呢。
    • 可能做视频算法的,除了我们,都是有钱人吧……
    • 人生第一次训练Kinetics-400,就是现在了吗……

1. 要解决什么问题

  • 现在的视频相关模型训练时间太久。
    • 128卡在Kinetics-400上训练Slowfast也要一天多……
    • high resolution models(指的应该是3D CNN模型,如I3D、SlowFast) 性能好,但训练时间长。
    • low resolution models(指的应该是2D CNN模型,如TSN、TSM)训练时间较短,但性能差。

2. 用了什么方法

  • 提出了一个multigrid的训练模型的方法。
    • 该方法的目标是加快训练速度,且不损失太多精度。
    • 一个结论:在训练过程中,输入数据的shape不用一定是固定的。
    • 总体思路:
      • coarse-to-fine,即从粗糙到精细。
      • 主要需要平衡“预处理每个mini-batch数据的计算量”与“不同输入数据尺寸导致的模型计算量”。
  • 方法基本流程
    • 简单说,就是在训练过程中不断变换输入数据的尺寸。
    • 假设输入数据为(batch_size, t, h ,w ,c)
    • 训练过程中,batch_size, t, h ,w 都会不停的变换。
      • 刚刚提到,总体思路是从粗糙到精细。所谓粗糙就指的是h, w较小,精细指的是h, w较大。
    • 另外,随着在改变整体shape的时候,一般要求总计算量(FLOPs)不会变化太大。
  • 一些基本概念:
    • sampling grids: 按我的理解就是,当batch_size, t, h, w这些数值固定后,就是一个sampling grid。
      • 一个sampling grid就代表一次对video的重采样(resample)。
      • 对于上面没一个维度,都有两个量化数值,span/stride,前者表示所有可取的值,后者表示采样间隔。
      • 相同的input size可能会是不用的 sampling grid。
    • grid scheduling:
      • 感觉意思差不多就是training schedule,在训练过程中变化 batch_size, t, h, w 这些维度。
  • 具体实现方式:
    • multigrid training的一个重要部分就是如何选择 sampling grids
      • 本质就是怎么在训练过程中变换 batch_size, t, h, w 这几个维度。
    • 文中提出了 short cycles, long cycles, long+short cycles,如下图所示。
    • image_1ebv34bsk2pu1md4nsepai3s69.png-132.6kB

3. 效果如何

  • 在Kinetics-400上,用128GPU,训练backbone为ResNet50的SlowFast模型。
    • 横座标所谓的wall-clock time猜测就是总训练时间(刚开始看,baseline训练20小时完事了,震惊了,结果仔细一看,128GPU……)。
    • 图中所谓的 1x 这些指的是 epochs 的数量,1x就是指与baseline相同。
    • 对于1x的epochs,baseline/short cycle/long cycle/short-long cycle的训练时间分别是20/8/5/5小时……
    • image_1ebvb8l0g10dd8d11oq91a4u1pjam.png-138kB
  • 在Kinetics-400上,用1GPU训练I3D模型。
    • 训练时间从6.7天减少到2天……
    • image_1ebvcirebelblooshup81tkj13.png-35.3kB
  • 在Something-Something-V2/Charades上也尝试使用multigrid训练,效果都可以
    • 从而证明这种方法对各类数据集都有效。
      image_1ebvcku58l7s1u8d1rr41fv91d371g.png-91.8kB

4. 还存在什么问题

  • 感觉是比较工程化的项目(我喜欢),也没有太多“为什么”,做了这么多试验就是有效。

  • 等有机会,要在ava上也试试。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章