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!韓国、ハリー・ポッターの「透明マント」を作るためにカメレオン型ソフトロボットを開発

ブログ    
ブログ    
ブログ    

推薦する

人工知能は人類にユートピアをもたらすのか、それともディストピアをもたらすのか?

[[187202]]ロボットはユートピアをもたらすのか、それともディストピアをもたらすのか?作家ピ...

メタバースの錬金術には物理の基本法則が必要です! Nvidia副社長:現実世界のデータトレーニングは不要

次のことは直感に反するように思えるかもしれません: AI が現実世界のアプリケーション シナリオに適...

...

108 言語をサポートする Google 翻訳は、AI をどのように活用して翻訳の品質を向上させているのでしょうか?

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

世界中のロボットが1つの脳を共有する、Google DeepMindが第一歩を踏み出した

過去 1 年間、生成型人工知能の開発におけるキーワードは「ビッグ」でした。強化学習の先駆者であるリッ...

ビジュアル Transformer アーキテクチャの進歩を整理した記事: CNN と比較して、ViT が勝っているのはどこでしょうか?

注意ベースのエンコーダー/デコーダー アーキテクチャである Transformer は、自然言語処理...

2022 年の銀行業界における AI とビッグデータのトップ 10 トレンド

当初の目標は人間と同じくらい知的な機械を持つことでしたが、人工知能ではなくインテリジェントオートメー...

10社にインタビュー、機械学習のインタビュー内容をまとめました

[[226434]]まずは自己紹介をさせてください。私は機械学習の経験が4年以上あり、主な業務内容と...

...

...

インタビュアー: 「最後にアルゴリズムを書いてください。単一のリンクリストを使用して加算を実行してみましょう...」

[[286163]]質問: 空でない 2 つのリンク リストが与えられた場合、2 つの負でない整数...

...

...

ChatGPTのiOS版はBing検索機能を統合しており、有料会員のみが利用可能

6月28日、OpenAIは今年5月にリリースしたChatGPTアプリのiOS版をリリースした。このア...

最新のロボット学習システムが登場、たった1本の動画で仕事内容を学習可能

近い将来、人間はロボットにやり方を一度見せるだけで、タスクの実行方法を教えることができるようになるか...