如何提高PyTorch“炼丹”速度?这位小哥总结了17种方法,可直接上手更改的那种
转载自 量子位 杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 原文链接: 如何提高PyTorch“炼丹”速度?这位小哥总结了17种方法,可直接上手更改的那种 注:文末附【Pytorch】交流群,最近赶ACL,比较忙,很多同学加了没有回过期了,可以重新加一下,备注好的一定会回复,敬请谅解。 如何提升PyTorch“炼丹”速度? 最近,有一位名叫Lorenz Kuhn的小哥,分享了他在炼丹过程中总结的 17种 投入最低、效果最好的提升训练速度的方法,而且基本上都可以直接在PyTorch中进行更改,无需引入额外的库。 不过需要注意的是,这些方法都是假设是在GPU上训练模型。 这一分享在Reddit上得到了 600 的热度。 接下来,我们便从 提速高低 开始,依次对这些方法来做介绍。 1、选择合适的学习率时间表。 选择的学习率时间表对收敛速度以及模型的泛化性能有很大影响。 Leslie Smith提出的周期性学习速率(CLR)以及 1cycle 策略可以令复杂模型的训练迅速完成。 比如在 cifar10 上训练 resnet-56 时,通过使用 1cycle,迭代次数可以减少10倍,得到与原论文相同的精度。 在最好的情况下,与传统的相比,这个时间表实现了大规模的提速。不过有一个缺点,它们引入了一些额外的超参数。 为什么这样做有效?一种可能的解释是