在深度学习任务中,虽然可以通过堆叠参数、设计更复杂的结构来提高模型的表征能力,但这也会导致模型的计算量增加,训练时间延长,大大降低模型的产出效率。这篇文章根据博主的经验简单介绍一些加快模型训练速度的方法,以及为什么需要关注模型的训练速度。
加快深度学习模型训练速度的方法
1. 合理的超参数设计
- BatchSize。每次迭代batch的大小是影响每次推理速度的主要因素,而batchsize并非越大越好,一个经验性的可选数值是32、64、128,一般来说,每个batch的大小一旦超过64,继续增大batch带来的性能收益就微乎其微了,因此可以通过实验尝试一下这三个数值,在达到同样的性能前提下让batch尽可能的小,这也会给显存留下更大的空间,进而可以尝试更多的模型设计方式。
- epoch、学习率策略。迭代次数和学习率这两个参数需要放在一起讲,我们在挑选这两个参数时,需要每100次迭代(或者其他)保存一次模型,然后把这些模型的精度曲线、loss、和当前的学习率画到一张图像中。从图像中就可以发现,在某些学习率设置下,可能训练几个epoch模型的性能就不会继续增加了,loss也不会降低,因此找到这个平衡点之后就可以将当前学习率下的后续epoch舍弃掉,进一步降低学习率训练。一个经验性的总结是:更小的学习率通常只需要更少的epoch。因此,可以通过修改学习率和训练epoch的策略来达到相同精度的前提下降低训练时间。
2. 权值共享
- 每轮迭代的推理速度和模型的参数量、计算量息息相关,而通过设置参数权值共享,可以降低总的参数量和计算量,另外如te