paint-brush
データローダーの概要: 概要と概要@serialization

データローダーの概要: 概要と概要

長すぎる; 読むには

この論文では、研究者はデータローダーを ML トレーニング改善の鍵として強調し、ライブラリの機能性、使いやすさ、パフォーマンスを比較しています。
featured image - データローダーの概要: 概要と概要
The Serialization Publication HackerNoon profile picture
0-item

著者:

(1)イアソン・オフェイディス、イェール大学電気工学部およびイェールネットワーク科学研究所、ニューヘブン {同等の貢献}

(2)ディエゴ・キエダンスキ、イェール大学電気工学部およびイェールネットワーク科学研究所、ニューヘブン {同等の貢献}

(3)Leandros TassiulasLevon Ghukasyan、Activeloop、米国カリフォルニア州マウンテンビュー、電気工学部およびイェール大学ネットワーク科学研究所、ニューヘブン。

リンク一覧

抽象的な

機械学習モデルのトレーニング中にストレージから GPU にデータを移動する役割を担うデータローダーは、トレーニング ジョブのパフォーマンスを大幅に向上させる鍵となる可能性があります。最近の進歩は、トレーニング時間を大幅に短縮するだけでなく、S3 などのリモート ストレージからデータをロードするなどの新機能を提供することで、有望性を示しています。この論文では、データローダーをディープラーニング (DL) ワークフローの独立したコンポーネントとして区別し、その構造と機能を概説した最初の論文です。最後に、利用可能なさまざまなデータローディング ライブラリの包括的な比較、機能、使いやすさ、パフォーマンスの面でのトレードオフ、およびそこから得られる洞察を示します。

1. はじめに

(ディープ) 機械学習モデルのトレーニングには、データセット、モデル、ハードウェアが必要であり、実際の問題では 1 つ以上の GPU が必要になります。


私たちは常に、モデルのトレーニングに必要な計算時間の合計を短縮することに関心を持っています。これは、コストの削減、反復の容易化、小規模なチームにとってのアクセス性の向上など、いくつかの理由で望ましいことです。


ML パイプラインの主要コンポーネントと実行時間の関係は、多くの場合、明確です。データセットが大きいほど時間がかかり、モデルが大きいほど時間がかかり、GPU が高速であれば、合計実行時間が短縮されます。見落とされがちなパズルの重要なピースの 1 つは、これらすべての部分を結びつけるデータローダーです。データローダーは、永続的なストレージ (RAM、ディスク、またはネットワーク) からデータを読み込み、必要な変換を適用し、変換されたデータを適切なデバイスに送信してモデルが取り込めるようにします。


ほとんどの開発者は、それぞれの機械学習フレームワーク (Pytorch、Tensorflow、Jax) のデフォルトのデータローダーがすでにアプリケーション用に最適化されていると想定しており、サードパーティのデータローダーに依存することはあまりありません。興味深いことに、データローダーは ML パイプラインのより重大なボトルネックの 1 つになる可能性があることが最近明らかになりました (Mohan ら、2020 年)。その結果、データローダーのパフォーマンスを最適化および改善するための新しいライブラリや研究プロジェクトが数多く登場しています。


たとえば、MIT の研究チームが開発した新しいオープンソース ライブラリである FFCV (Leclerc 他、2022) は、デフォルトの PyTorch データローダーを使用する場合のほんのわずかな時間で ImageNet をトレーニングすることに成功しました。このようなメリットにより、Amazon Web Services (AWS) や Google Cloud Platform (GPC) などのインフラストラクチャ アズ ア サービス (IaaS) に依存する企業や研究チームの運用コストを大幅に削減できます。


データローダーが提供するもう 1 つの有望な機能は、リモートで保存されたデータをロードできることです (たとえば、S3 バケットから)。これには多くの実用的な利点があります。データセットをローカルに設定する時間が回避され、コンピューティング マシンに必要なディスク容量が削減され、チーム メンバーが同じデータセットの異なるバージョンを使用するリスクが軽減されます。トレーニング中にデータをストリーミングする必要があることの当然の欠点は、通常、ネットワーク転送速度がディスク I/O よりも遅いため、モデルのトレーニングに時間がかかることです。興味深いことに、Hub (Team、2022a) や Deep Lake (Hambardzumyan 他、2022) などの一部のライブラリは、一部のシナリオで、ローカルでデータを読み取るデフォルトの Pytorch データローダーよりもネットワーク経由で優れたパフォーマンスを実現することがわかりました。これは、データローダーが GPU が必要とする前に必要なデータをプリフェッチできるため可能です。セクション 5 でさらに詳しく説明します。


すべてのライブラリがリモート読み込みをサポートしているわけではありません。また、サポートしているライブラリであっても、必ずしも同じリモート ストレージ サービスと統合されているわけではありません。データローダーを実装する利用可能なライブラリの数が増えているため、私たちは、現在の最先端技術、すでに解決されていると思われる問題、および将来の研究で最も改善が期待できる領域を明らかにするために、包括的なベンチマークを構築することにしました。


ここで、私たちの実験と他の研究 (Kumar & Sivathanu、2020)、(Mohan et al.、2020) との特別な違いの 1 つは、容量 (GPU、RAM、SSD) が限られた小規模から中規模のワークステーションで実行されるジョブに焦点を当てていることです。これらは、予算の都合で大規模クラスターを使用できない業界のほとんどの個人や小規模チームが利用できるハードウェアを反映している可能性が高くなります。

1.1 貢献

私たちの貢献を要約すると次のようになります。


• オープンソースコード: Pytorch[1]で最も人気のあるデータ読み込みライブラリを比較するオープンソースベンチマークを構築しました。このプロジェクトはコミュニティに公開されたままなので、関心が高まるにつれて新しいライブラリやデータセットが追加されます。また、この論文でベンチマークされたライブラリのいずれかに大きな更新があった場合は、これらのベンチマークで得られた数値結果も更新する予定です。


• リモートトレーニングの実行可能性:合理的な状況下では、パブリックインターネット接続を介したデータストリームを使用して機械学習モデルをトレーニングできることを示します。特に、データを提供するコンピューティングの影響を指摘します。ダウンロード後にデータセットがローカルにキャッシュされることを想定していないため、私たちの結果は (Mohan et al., 2020) の結果とは異なります。


• 速度のためのハイパーパラメータ最適化:従来のハイパーパラメータ アプローチは、トレーニング中のモデルの全体的な精度を向上させることを目的としています。この論文では、合計実行時間の代理として、速度 (時間の経過に伴う処理サンプル数) を最適化する方法も示します。この最適化はハードウェアに依存するため、長時間実行されるジョブの前に実行するのが合理的です。このプロセスは、同等の精度達成までの時間メトリックよりも少なくとも 1 桁高速になるはずです。


この論文はCC 4.0ライセンスの下でarxivで公開されています


[1] Githubリポジトリ: https://github.com/smartnets/dataloaderbenchmarks