如何縮減PyTorch訓練時所需要的時間?

Yanwei Liu
Aug 13, 2021

--

Reddit原文

[P] Training CNN to 99% on MNIST in less than 1 second on a laptop. : MachineLearning (reddit.com)

介紹

今天早上在微信公眾號看到比用Pytorch框架快200倍!0.76秒后,笔记本上的CNN就搞定了MNIST | 开源 (qq.com)這篇文章,介紹了模型訓練提升速度的方法,提升的幅度相當驚人,可作為參考。

以下整理出文章提出的6個方法(其中1個方法只是再度提升batch size;另一個則是再度降低神經網路的大小,因此8個合併成6個):

一、Early Stopping

二、 Reduce network size

三、Optimize Data Loading
這一點比較特別,作者直接把dataset保存成一個*.pt結尾的PyTorch檔案,藉此大幅度提升訓練速度。我覺得可作為降低大資料集訓練時間所嘗試的一個方法

四、Increase batch size

五、OneCycleLR
這個方法也相當特別,起初先用接近0的learning rate進行訓練,逐漸加大learning rate,當訓練到中間epoch的時候(例如有90個epoch,45個epoch為中間值),此時的學習率為最大值,接著繼續遞減直到訓練結束。

六、Fine Tuning
持續調整參數,得到最終結果,詳細可參考tuomaso/train_mnist_fast: How to train a CNN to 99% accuracy on MNIST in less than a second on a laptop

--

--