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はマーケティング担当者の仕事を奪うのでしょうか?

先週、コピーライターのパネルがAIによってコピーライターの必要性がなくなるかどうかを議論した。一部の...

...

...

JavaScript によるデータ構造とアルゴリズムの実装と応用: Stack/Recursion/Hanno

まとめこの記事では、Stack データ構造の基本的な操作とそのいくつかの応用について紹介します。括弧...

Angel: 新しい分散型機械学習システム

Angel は、パラメータ サーバーの概念に基づいた分散型機械学習フレームワークであり、機械学習アル...

...

ロボットが国連で初めて記者の質問に答える: ロボットは人間の仕事を奪ったり、人間に反抗したりはしない

ロイター通信によると、昨日ジュネーブで開催された「AI for Good」会議で、国連国際電気通信連...

2019年のGAITCイベントが南京で開催され、世界のエリートがスマートシェアリングに注目

2017年3月、中国共産党中央委員会の政府活動報告に人工知能が記載され、人工知能は国家戦略となった。...

マスク氏の「脳変革計画」ではどのスキルツリーを活性化する必要があるのか​​?

シリコンバレーのアイアンマンの熱心な宣伝により、脳コンピューターインターフェースがホットな言葉になっ...

...

自然言語処理に加えて、単語埋め込み(Word2Vec)を使用してこれを行うこともできます。

機械学習の手法を使用して問題を解決する場合、適切なデータを持つことが重要です。残念ながら、生データは...

「Google版SORA」はぼやけたグラフィックで嘲笑されたが、世界シミュレーターとして新たな一歩を踏み出した。

インタラクティブな仮想世界を作成するために使用される、Google の 110 億のパラメータ Ge...

2020~2030年:人工知能が主流となる10年

ロボット工学者でありSF作家でもあるアイザック・アシモフは、小説『ロボット』(1950年)の中で、2...

...