この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。 数十億の画像データがある場合、迅速に実験を行うにはどのような方法を使用すればよいでしょうか? 機械学習の研究をしていると、このような問題に遭遇することがよくあります。 最近、ある外国人の男性からこんな提案がありました。
彼自身の言葉を借りれば、「階段を登っているときにエレベーターをくれるようなもの」です。 どうすればこのような「酸っぱくて爽やか」な感じを実現できるのでしょうか? 機械学習パイプラインの最適化は非常に重要学術界であろうと産業界であろうと、時間やリソースなどのさまざまな要因が実験の足かせになることがよくあります。 特に、データセットと機械学習モデルのサイズが大きくなり複雑になるにつれて、実験には時間がかかり、労力もかかります。 スピードアップが重要になります。 たとえば、2012 年には、AlexNet のトレーニングに 5 ~ 6 日かかりました。 現在では、大規模なデータセットで大規模な画像モデルをトレーニングするのに、わずか数分しかかかりません。 青年は、ある観点から見れば、これはさまざまな「兵器」の出現によるものだと信じている。 たとえば、 Pytorch Lingtningもその 1 つです。 そこで彼はパイプラインに熱心に取り組み、実験サイクルを「電光石火で加速」する 6 つの方法をまとめました。 並列データ読み込みデータの読み込みと拡張は、トレーニング パイプラインのボトルネックの 1 つと見なされることがよくあります。 一般的なデータ パイプラインは次の手順で構成されます。
このプロセスでは、複数の CPU プロセスを使用してデータを並列にロードすることで最適化が可能です。 ただし同時に、次の操作を行うことでプロセスを高速化することもできます。 1. DataLoader の num_workers パラメータを CPU の数に設定します。 2. GPU を使用する場合は、DataLoader の pin_memory パラメータを True に設定します。これにより、データがページロックされたメモリに割り当てられ、GPU へのデータ転送が高速化されます。 分散データ並列処理を使用したマルチGPUトレーニングCPU と比較して、GPU はトレーニングと推論の時間を大幅に短縮します。 しかし、GPU よりも良い方法はあるのでしょうか?おそらく答えは次のようになります:
PyTorch には、複数の GPU を使用してモデルをトレーニングするためのパラダイムがいくつかあります。 一般的なパラダイムは、「DataParallel」と「DistributedDataParallel」の 2 つです。 彼は後者のアプローチを採用しました。後者のアプローチの方がよりスケーラブルなアプローチであると信じたからです。 しかし、PyTorch (および他のプラットフォーム) のトレーニング パイプラインを変更するのは簡単ではありません。 分散方式でのデータのロードや、重み、勾配、メトリックの同期などの問題を考慮する必要があります。 ただし、PyTorch Lightning を使用すると、コードをほとんど変更せずに、複数の GPU で PyTorch モデルをトレーニングすることが非常に簡単になります。 混合精度デフォルトでは、入力テンソルとモデルの重みは単精度 (float32) で定義されます。 ただし、特定の数学演算は半精度 (float16) で実行できます。 これにより、モデルのパフォーマンスを犠牲にすることなく、モデルの速度を大幅に向上させ、メモリ帯域幅を削減できます。 PyTorch Lightning で混合精度フラグを設定すると、可能な場合は自動的に半精度が使用され、それ以外の場合は単精度が保持されます。 最小限のコード変更で、モデルのトレーニングを 1.5 ~ 2 倍高速化できます。 早期終了ディープラーニングニューラルネットワークをトレーニングする場合、通常は最高の一般化パフォーマンスを達成することが期待されます。 ただし、完全に接続された多層パーセプトロンなどの標準的なディープラーニング ニューラル ネットワーク構造はすべて、過剰適合する傾向があります。 トレーニング セットでのネットワークのパフォーマンスがどんどん向上し、エラー率がどんどん低下すると、ある時点で、テスト セットでのパフォーマンスが実際に悪化し始めます。 そのため、トレーニング プロセス中に早期停止が追加されました。 具体的には、検証損失が事前に設定された評価数 (この例では 10 回の評価) に達すると、トレーニングが停止します。 この方法では、過剰適合現象を防ぐことができるだけでなく、数十エポック内で最適なモデルを見つけることもできます。 シャードトレーニングSharded Training は、Microsoft の ZeRO 研究と DeepSpeed ライブラリに基づいています。 その重要な効果は、大規模なモデルのトレーニングをスケーラブルかつ簡単に行えるようになることです。 それ以外の場合、これらのモデルは単一の GPU での使用には適していません。 Pytorch Lightning バージョン 1.2 では、Shared Training のサポートが追加されました。 私の実験では、トレーニング時間やメモリ使用量に改善は見られませんでした。 しかし彼は、このアプローチが他の実験、特に単一の GPU に収まらない大規模なモデルにも役立つ可能性があると考えています。 モデル評価と推論の最適化モデルの評価と推論中、モデルのフォワードパスに勾配を使用する必要はありません。 したがって、評価コードを torch.no_grad コンテキスト マネージャーでラップすることが可能です。 これにより、フォワードパス中に勾配が保存されなくなり、メモリ使用量が削減されます。 これにより、より大きなバッチをモデルに取り込むことができ、評価と推論が高速化されます。 パフォーマンスはどうですか?ここまで紹介してきたので、上記の方法には具体的にどのような効果があるのか知りたいと思うはずです。 この目的のために、彼はこの方法の加速効果を詳細に説明した表を作成しました。 では、これらの方法は機械学習の実験を行う上で役立ちますか? 今すぐ試してみて〜 |
<<: AIを使ってコーデックの退化を打破するクアルコムの最新のトップカンファレンス論文には大きなアイデアが盛り込まれている
ロビン・リーは標高3,500メートルで牛糞を拾い、泥を塗り、牛の皮を剥ぐという極めて型破りなことをし...
スタンフォード大学のAI 100のAI Indexプロジェクトは、人工知能の活動と進歩を追跡し、人工...
IT Homeは12月12日、マイクロソフトが2021年にウェブベースの使いやすいビデオ編集ツール...
[[352986]] 2020 年の多くの運用上の課題を踏まえて、公益事業会社は、運用する物理的およ...
[[321813]]この記事の内容の一部はブログリンク[1]からのものであり、私が読んだいくつかの論...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
背景マルチデバイス、マルチパーソン、マルチノイズなどのさまざまな複雑なオーディオおよびビデオ通信シナ...
Meta Platforms は本日、Meta が社内開発した、200 言語のテキストを翻訳できる人...
キャピタル グループは、1931 年、大恐慌の真っ只中にカリフォルニア州ロサンゼルスで設立され、現在...
監視範囲の死角、互換性のないビデオおよびアクセス制御システム、適切な境界保護の欠如...これらは、施...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
AI 生成コンテンツは効果的に識別できますか?いくつかの例を見てみましょう。テキストが AI モデル...
機械学習やデータサイエンスの分野で仕事を得るために、開発者はどのプログラミング言語を学ぶべきでしょう...