Data Echoing:一种加速模型训练的方法.

方法介绍

训练一个深度学习模型的典型过程如下:

  1. 从实际数据集中读取数据,表示成张量;
  2. 打乱数据集;
  3. 进行数据增强;
  4. 取出一个数据批次;
  5. 通过梯度下降更新模型参数。

在这个流水线中,通常上游任务(upstream)是在CPU上进行的,而下游任务(downstream)是在GPUTPU上进行的;模型对一批数据进行预处理的时间要长于使用数据进行学习的时间;

作者提出了一种data echoing的方法,将预处理的数据放入一个buffer中,使用数据更新参数时从这个buffer直接或再进行一些处理来获得一个批量的数据,不断从buffer中采样直到upstream处理好了一批新的数据,更新buffer

作者讨论了该方法的一些优势:

  1. data echoing降低了达到相同精度时所需的upstream计算量;
  2. data echoing加速了算法运行的墙上时间(wall time),即进程运行的时间总量;
  3. data echoing提供了一系列echoing factor,即可选择每读入一组样本后的重复利用次数;
  4. data echoing的有效性决定于将其插入pipeline的位置;
  5. buffer中采样后进行数据打乱效果会更好;
  6. data echoing可以达到与baseline相同的实验效果。

实验

作者选择了四个模型,测试分别需要多少新样本才能够达到给定的目标值;

使用data echoing的位置非常关键,这个位置往往选择整个模型的瓶颈 bottleneck,用于平衡较慢的upstream和较快的downstream。在pipeline中有以下几个可插入的位置:

  1. example echoing before augmentation
  2. example echoing after augmentation
  3. batch echoing

插入位置的实验

echoing factor设置为$2$时,理论上只需要一半的数据量(图中虚线);由于重复使用这些样本打破了独立同分布的假设,实际上需要的样本数会更多一些。data echoing插入pipeline的位置越靠前,实际上经过后续的预处理的样本更符合独立同分布,因此所需的等效样本数越少;但所需的upstream计算量越多。

echoing factor 的实验

使用data echoing的位置在example echoing before augmentation;当逐渐增大echoing factor,由于增加了重复样本的可能性,实际所需要的样本量比理论值更多,实际减少的运行时间也比理论值更少。

batch size 的实验

大的batch size能够缓解echoing factor增大带来的数据重复问题。

batch size越大,data echoing的效果越明显。

shuffle 的实验

打乱buffer中的数据再采样能够显著减小所需的样本量。

验证集的实验

通过实验证明,使用data echoing能够用更少的数据样本实现给定的模型精度。