HUOXIU

[SIGMOD 2023] ディープラーニングの弾性データ パイプライン システムである GoldMiner は、タスクとクラスターの効率を大幅に向上させます。

第1節:はじめに

最近、アリババクラウドの機械学習プラットフォーム(PAI)と北京大学の楊志教授のチームが共同で作成した論文「GoldMiner:ディープラーニングのためのトレーニングデータ前処理パイプラインの弾性スケーリング」が、データベース分野のトップカンファレンスであるSIGMOD 2023に採択されました。

GoldMinerは、ディープラーニングタスクにおけるデータ前処理パイプラインはステートレスであり、固有のリソース弾力性を備えていることを観察しています。これに基づき、GoldMinerはデータ前処理パイプラインをモデルトレーニング部分から分離し、自動計算グラフ分析を用いてステートレスなデータ前処理計算を特定することで、効率的な並列加速と弾力的なスケーリングを実現し、データ前処理のボトルネックを軽減し、トレーニングパフォーマンスを向上させます。クラスタスケジューラとの共同設計により、GoldMinerはデータ前処理計算のリソース弾力性をさらに活用し、クラスタスケジューリング効率を大幅に向上させます。実験では、GoldMinerによってトレーニングパフォーマンスが最大12.1倍、GPUクラスタの使用率が最大2.5倍向上することが示されています。

第2節:背景

近年、GPUアクセラレータの継続的な進化と様々なソフトウェア最適化技術の登場により、ディープラーニングの学習における計算効率は着実に向上し、新たなレベルに到達しています。しかし、ディープラーニングは本質的に依然として多段階、多リソースタスクであり、GPU上で大量の学習計算を行うだけでなく、CPU上でのデータ前処理パイプライン(データ拡張、特徴量変換など)も必要となることがよくあります。こうした前処理計算は、高品質モデルの学習に不可欠なステップです。そのため、GPU学習性能の向上はデータ前処理への負担を増大させ、データ前処理が新たな性能ボトルネックとなっています。

データ前処理のボトルネックが、タスクのトレーニング パフォーマンスとクラスター リソースの利用効率に大きな影響を与えることがわかりました。一方で、単一のトレーニング タスクでは、データ前処理のボトルネックはトレーニング パフォーマンスの低下を意味します。8 個の V100 GPU と 64 個の vCPU コアを搭載した仮想マシンでパフォーマンス テストを実施し、1 つの GPU と異なる数の vCPU を使用して、さまざまなモデルが最適なパフォーマンスを達成するために必要な vCPU の数を観察しました。結果 (下図を参照) によると、ほとんどのモデルは最適なパフォーマンスを達成するために 8 個を超える vCPU (つまり、単一の GPU が取得できる vCPU の平均数) を必要とし、一部のモデルではマシン全体の 8 個の GPU の 64 個の vCPU すべてを消費する必要があることさえあります。つまり、このようなモデルは共有クラスターで十分な CPU リソースを取得できない可能性があり、データ前処理部分のパフォーマンスが低下し、最終的にトレーニング効率に影響を与える可能性があります (下図の右側の縦軸は、8 個の vCPU のみを使用して達成できる相対的なパフォーマンスを表しています)。

一方、前述の問題はクラウド環境ではさらに深刻化し、共有クラスターにおけるリソース割り当ての効率性に影響を与えます。現在、企業は通常、GPUの利用が極めて重要なトレーニングタスクを実行するために、共有GPUクラスターを構築または購入しています。タスクに必要なCPUリソース不足を回避するため、ユーザーはタスクのCPU-GPU比率を積極的に高めることがあります。しかし、このようなユーザー定義のCPU-GPU比率は、クラスターリソースの断片化を容易に引き起こす可能性があります。例えば、マシンがCPU-GPU比率の高いタスクを実行している場合、CPUがGPUよりも優先され、アイドル状態のGPUが未割り当て状態になる可能性があります。これは高価なGPUリソ​​ースを浪費するだけでなく、タスクの待機時間も増加させます。アリババ社内のGPUクラスター内での観察では、この「GPUは十分だがCPUが不足している」状況で、タスク待機時間の約40%が無駄になっていることが明らかになりました。

前述の2つの問題に対処する1つのアプローチは、GPUベースの学習とCPUベースのデータ前処理を分離することです。これにより、これら2つの計算コンポーネントのリソース割り当てが同一マシンに縛られることを防ぎます。これにより、マシンのCPUリソースが不足している場合でも、他のマシンのリソースを利用できるようになり、1つのタスクにより多くのCPUリソースを割り当てて加速させ、断片化されたGPUが利用できなくなる問題を軽減できます。このアイデアは新しいものではありませんが、この手法を用いてタスクとクラスターの効率を効果的に向上させるには、依然としていくつかの技術的課題が残っています。

第3節:課題

一部のソリューション (tf.data サービスや PyTorch DPP など) では、データ前処理計算の個別の実行をサポートしていますが、既存のテクノロジでは依然として次の課題に直面しています。

  1. 計算パーティショニングの効率性:既存の技術では、ディープラーニングフレームワークが提供するDataset/DataLoader APIを用いて、これらのAPI内にカプセル化された計算をデータ前処理計算として分離しています。しかし、これらのAPIの外部でも、個別に実行できる計算が存在する可能性があり、単純なパーティショニングアプローチではこれらの並列処理を高速化する機会を逃してしまうことが判明しました。
  2. ユーザーコードへの侵入:tf.dataサービス[1]やPyTorch DPP[2]などの技術では、データ前処理の分離を実現するために、ユーザーはコードロジックのこの部分をリファクタリングする必要があり、これは非常に侵入的です。私たちは、この分離をユーザーにとって透過的な方法で実現したいと考えています。
  3. クラスター スケジューリングとの統合: トレーニングから分離された後、データの前処理計算には実際に固有のリソース弾力性が含まれますが、既存のテクノロジでは、クラスター スケジューリング レベルでこの弾力性を検討して、クラスターの全体的なリソース利用効率を向上させることはありませんでした。

第4節:型破り

GoldMinerは、自動化された柔軟なデータ前処理サービスです。図に示すように、GoldMinerはデータワーカー(DW)とトレーニングワーカー(TW)という2つのロールを使用して、それぞれデータ前処理とトレーニング計算を実行します。GoldMinerは、データワーカーの計算(Dataset/DataLoader APIにカプセル化されていない計算を含む)を元のユーザーコードから自動的に識別できます。さらに、GoldMinerはデータ前処理計算に柔軟なスケーリングを実装し、クラスタースケジューラーとの連携設計によりクラスター効率をさらに向上させます。

GoldMiner の成功の鍵は、データ前処理計算のステートレス性を活用することにあります。ここでのステ​​ートレス性とは、データ前処理がモデルパラメータから独立していることを意味します。モデルパラメータは、トレーニングの各反復で繰り返し更新する必要があります。したがって、モデルパラメータに依存しない計算は、トレーニング部分と非同期に実行できます。ディープラーニングの計算はデータフローグラフ (DFG) として表現できることがわかっています。GoldMiner は、ユーザーの DFG を分析することで、その中のステートレスなサブグラフを自動的に識別します。次の図は、一般的な推奨モデルの DFG を示しています。データセットを単純に分割する (図の単純な分割) のとは異なり、GoldMiner は、モデルパラメータへの依存関係を識別することで、分割の範囲を後続の特徴変換操作 (期待される分割) に自動的に拡張します。実験では、この拡張により、データワーカーの並列加速がさらに 1.6 倍向上することが示されています。

GoldMinerは、自動グラフパーティショニングを基盤として、複数のデータワーカーにまたがるデータワーカーサブグラフの並列処理をさらに高速化し、データワーカーとトレーニングワーカー間のデータ転送を容易にします。データワーカーのステートレスな性質を活用することで、この分散実行はデータワーカーの数を動的にスケーリングすることを可能にし、クラスターのアイドルリソースが絶えず変化する中で、リソースをより効率的に活用します。

データワーカーのリソース弾力性を最大限に活用するために、GoldMiner は、タスクレベルとクラスターレベルの両方でリソースを動的に調整するデータワーカースケジューラを提供しています。タスクごとに、GoldMiner はデータワーカー (DW) とデータワーカー (TW) のサイズを調整して、最も効率的に拡張できる構成を検索します。クラスターレベルでは、GoldMiner はさまざまなタスク間でデータワーカーの分散を動的に調整して、特定のグローバルスケジューリング目標 (タスク完了時間の最小化など) を最適化します。これらの 2 つのレベルの調整では、統一されたパフォーマンスメトリックである、DW と TW 間でデータを転送するためのキューを利用します。このキューの状態は、DW と TW の相対的な速度と、DW を増やすことで得られる潜在的な利点を反映しています。64 GPU クラスターで実施された実験では、GoldMiner スケジューラによって平均タスク完了時間が最大 2.5 倍短縮され、GPU 割り当てが最大 2.1 倍増加することが示されています。

セクション5:アプリケーション

以前、GoldMinerをお客様の実際のレコメンデーションモデルで評価した結果、GoldMinerはユーザーモデルの高速化を1.43倍、トレーニングコストを13%削減できることが示されました。現在、GoldMinerは導入中です。

また、PyTorch 実装も開発しており、まもなく PAI-DLC と統合され、ユーザーにデータの前処理を高速化する機能を提供する予定です。

第六節:

  • 論文名: GoldMiner: 深層学習のためのトレーニングデータ前処理パイプラインの弾性スケーリング
  • 著者: Zhao Hanyu、Yang Zhi、Cheng Yu、T​​ian Chao、Ren Shiru、Xiao Wencong、Yuan Man、Chen Langshi、Liu Kaibo、Zhang Yang、Li Yong、Lin Wei
  • 論文PDFリンク: https://dl.acm.org/doi/pdf/10.1145/3589773
  • 参考文献:

[1] アンドリュー・オーディバート、ヤン・チェン、ダン・グラウル、アナ・クリモビッチ、ジリ・シムサ、チャンドラモハン・A・テッカス。 ML データ処理の分解の事例。 https://arxiv.org/abs/2210.14826

[2] Mark Zhao、Niket Agarwal、Aarti Basant、Bugra Gedik、Satadru Pan、Mustafa Ozdal、Rakesh Komuravelli、Jerry Pan、Tianshu Bao、Haowei Lu、Sundaram Narayanan、Jack Langman、Kevin Wilfong、Harsha Rastogi、Carole-Jean Wu、Christos Kozyrakis、Parik Pol. 大規模ディープレコメンデーションモデルトレーニングのためのデータストレージと取り込みの理解. ISCA'22