Pytorch フレームワークを使用するよりも 200 倍高速です。 0.76秒後、ラップトップ上のCNNはMNISTを解いた。

Pytorch フレームワークを使用するよりも 200 倍高速です。 0.76秒後、ラップトップ上のCNNはMNISTを解いた。

[[417184]]

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

MNIST のトレーニングは、コンピューター ビジョンにおける「Hello World」タスクと言えます。

PyTorch の標準コードを使用して CNN をトレーニングする場合、通常は約 3 分かかります。

しかし今では、ラップトップを使えばその時間を 200 倍以上短縮できます。

速度は0.76秒に達します!

それで、たった 1 エポックのトレーニングで 99% の精度をどうやって達成したのでしょうか?

200倍のスピードアップを実現する8つのステップ

これは、GeForce GTX 1660 Ti GPU を搭載したラップトップです。

Python 3.x と Pytorch 1.8 も必要です。

まずトレーニング用のデータセットをダウンロードし、毎回 14 エポックのトレーニングを実行します。

現時点では、テスト セットでの 2 回の実行の平均精度は 99.185%、平均実行時間は 2 分 52 秒 ± 38.1 ミリ秒です。

次に、トレーニング時間を段階的に短縮します。

1. 早めにトレーニングをやめる

3 ~ 5 エポック後、テスト精度が 99% に達するとトレーニングは早期に停止されます。

このとき、トレーニング時間は約 1/3 に短縮され、57.4 秒±6.85 秒になりました。

2. ネットワークのサイズを縮小し、正規化技術を使用して収束を高速化する

具体的には、最初の conv レイヤーの後に 2x2 最大プール レイヤーを追加して、完全接続レイヤーのパラメーターを 4 倍以上削減します。

次に、2 つのドロップアウト レイヤーのうち 1 つを削除します。

このようにして、収束に必要なエポック数は 3 未満に削減され、トレーニング時間は 30.3 秒±5.28 秒に短縮されます。

3. データの読み込みを最適化する

data_loader.save_data() を使用して、データセット全体を以前に処理した方法で pytorch 配列としてディスクに保存します。

つまり、ディスクからデータを何度も読み取るのではなく、データセット全体が一度に読み込まれ、GPU メモリに保存されます。

現時点では、平均トレーニング時間を 7.31 秒 ± 1.36 秒に短縮するために必要なエポックは 1 つだけです。

4. バッチサイズを増やす

バッチ サイズを 64 から 128 に増やすと、平均トレーニング時間が 4.66 秒 ± 583 ミリ秒に短縮されます。

5. 学習率を上げる

指数関数的減衰の代わりにスーパーコンバージェンスを使用します。

学習率はトレーニング開始時は 0 で、途中で最大値 (4.0) まで直線的に増加し、その後ゆっくりと 0 まで減少します。

これにより、トレーニング時間は 3.14 秒 ± 4.72 ミリ秒に短縮されます。

6. バッチサイズを再度増やし、ネットワークサイズを縮小する

手順 2 を繰り返し、バッチ サイズを 256 に増やします。

残りのドロップアウト層を削除し、畳み込み層の幅を狭めて補正しながら、手順 4 を繰り返します。

最終的に平均時間は 1.74 秒±18.3 ミリ秒に短縮されました。

7. 最終的な微調整

まず、最大サンプリング層が ReLU アクティベーションの前に移動されます。

次に、畳み込みカーネルのサイズを 3 から 5 に増やします。

最後に、ハイパーパラメータの調整を実行します。

学習率を 0.01 (デフォルトは 0.001)、beta1 を 0.7 (デフォルトは 0.9)、beta2 を 0.9 (デフォルトは 0.999) に設定します。

この時点で、トレーニングは 1 エポックに短縮され、762 ミリ秒 ± 24.9 ミリ秒で 99.04% の精度を達成しました。

「これは単なるHello Worldの例です」

この最終結果をありふれたものだと考える人もいます:

データの読み込み時間を最適化し、モデル サイズを縮小し、SGD の代わりに ADAM を使用することは、すべて常識的なことです。

MNIST は機械学習の「Hello World」であり、その目的は最小臨界値を示してフレームワークに慣れてもらうことだけなので、実際に MNIST を高速化しようとする人はいないと思います。それに、3 分というのはそれほど長い時間ではありません。

一部のネットユーザーは、ほとんどの人の仕事はMNISTのようなスーパークラスターにはないと考えています。したがって、彼は次のように述べた。

私が望むのは、トレーニング時間を本当に最小限に抑えることに重点を置いた取り組みをさらに進めることです。

GitHub:
https://github.com/tuomaso/train_mnist_fast

<<:  1780億のパラメータを持つこの言語モデルは、王者GPT-3に挑戦するためだけに作られたのでしょうか?

>>:  トレンド検索No.1!韓国、ハリー・ポッターの「透明マント」を作るためにカメレオン型ソフトロボットを開発

ブログ    

推薦する

新しいAIプログラミング言語はディープラーニングを超える

MIT の研究者チームは、人工知能の分野を初心者にとってよりアクセスしやすいものにするとともに、専門...

私たちに必要なのは人工知能ではなく人工知能だ

一拍遅ければそれは「人工的な愚かさ」であり、一歩遅れればそれは「知的な人工性」であり、一歩速ければそ...

...

...

...

ビジョンから現実へ: ヘルスケアにおける AI の台頭

[51CTO.com速訳]人工知能分野における音声インタラクション、コンピュータビジョン、認知コンピ...

ディープラーニングを使用して、写真用の強力な画像検索エンジンを構築します

[[412644]]数日前、鮮明に覚えている昔の写真を見返したいと思ったのですが、どこにあるのか全...

東京オリンピックでロボットが美しい風景になる

[[413763]]最近、4年に一度のオリンピックがついに東京で開催されました。フィールドでは、世界...

問題が VPN の問題であることを証明するにはどうすればよいですか?コンピュータ科学者は簡単な方法を発見した

P/NP 問題は、計算複雑性の分野における未解決の問題です。人々は、「すべての計算問題を妥当な時間内...

OpenAI が GPT-3 の微調整機能を公開、コマンド 1 行で実現可能!精度は最大4倍に向上します

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

人工知能と教育の統合が高等教育改革を促進

[[434341]]我が国の長期的な発展と人材戦略により、質の高い人材に対する需要が急速に高まってい...

SGDの素晴らしさはディープラーニングの重要性をもたらす

ビッグデータダイジェスト制作7月、ニューヨーク大学(NYU)の博士研究員であるナオミ・サフラ氏は、「...