[論文レビュー] DistDGL: Distributed Graph Neural Network Training for Billion-Scale Graphs
DistDGL は DGL 上に構築された分散 GNN 学習システムであり、局所性を考慮したグラフ分割、データと計算の共所置、およびマルチ制約負荷バランスを用いて、100億スケールのグラフにおいて効率的でスケーラブルなミニバッチ学習を可能にする。16台のマシンで線形なスループット向上を達成し、1億ノード、30億エッジのグラフに対して1エポックの学習を13秒で完了しながら、モデルの精度を維持する。
Graph neural networks (GNN) have shown great success in learning from graph-structured data. They are widely used in various applications, such as recommendation, fraud detection, and search. In these domains, the graphs are typically large, containing hundreds of millions of nodes and several billions of edges. To tackle this challenge, we develop DistDGL, a system for training GNNs in a mini-batch fashion on a cluster of machines. DistDGL is based on the Deep Graph Library (DGL), a popular GNN development framework. DistDGL distributes the graph and its associated data (initial features and embeddings) across the machines and uses this distribution to derive a computational decomposition by following an owner-compute rule. DistDGL follows a synchronous training approach and allows ego-networks forming the mini-batches to include non-local nodes. To minimize the overheads associated with distributed computations, DistDGL uses a high-quality and light-weight min-cut graph partitioning algorithm along with multiple balancing constraints. This allows it to reduce communication overheads and statically balance the computations. It further reduces the communication by replicating halo nodes and by using sparse embedding updates. The combination of these design choices allows DistDGL to train high-quality models while achieving high parallel efficiency and memory scalability. We demonstrate our optimizations on both inductive and transductive GNN models. Our results show that DistDGL achieves linear speedup without compromising model accuracy and requires only 13 seconds to complete a training epoch for a graph with 100 million nodes and 3 billion edges on a cluster with 16 machines. DistDGL is now publicly available as part of DGL:https://github.com/dmlc/dgl/tree/master/python/dgl/distributed.
研究の動機と目的
- 単一マシンのメモリおよび計算能力を超える100億スケールのグラフ上で GNN を効率的に学習する課題に対処すること。
- 頂点の依存関係に起因する隣接ノード特徴量の取得が支配的である分散 GNN 学習における通信オーバーヘッドを低減すること。
- クラスタ全体にわたるグラフデータ、特徴量、計算を共所置することで、高い並列効率とメモリスケーラビリティを達成すること。
- マルチ制約グラフ分割とバランスの取れたミニバッチ生成を適用して、マシン間の計算負荷をバランスさせること。
- 非局所ノードを含むエゴネットにおける同期的ミニバッチ学習を用いて、大規模なグラフへのスケーリングを実現しながらも、モデルの精度を維持すること。
提案手法
- 計算分解のための一貫性のある所有者-計算ルールを用いて、クラスタ内のマシンにグラフ構造、ノード特徴量、埋め込みを分散配置する。
- 通信量の最小化と負荷バランスの両立を図るため、複数のバランス制約を適用した METIS を用いた min-cut グラフ分割を採用する。
- メッセージパッシング中に繰り返しリモートデータを取得するのを減らすために、ハローノードをパーティション間でレプリケートする。
- 同期的 SGD 学習における勾配通信オーバーヘッドを低減するために、スパースな埋め込み更新を採用する。
- トレーナーが配置されたマシンにサンプリングサーバーとメモリ内 KVStore サーバーを統合し、データと計算を共所置する。
- DGL互換の API を通じて、最小限のコード変更で推論的・従来的 GNN モデルの両方をサポートする。
実験結果
リサーチクエスチョン
- RQ1通信オーバーヘッド(特に隣接ノードデータの取得)が支配的である状況において、分散 GNN 学習をスケールに応じて効率的に実現する方法は何か?
- RQ2マルチ制約負荷バランスを伴う min-cut グラフ分割は、100億スケールのグラフ上で学習性能を顕著に向上させられるか?
- RQ3通信削減と負荷バランスを併用することで、分散 GNN 学習において線形なスループット向上を達成できる範囲はどの程度か?
- RQ4DistDGL は 16 台のマシンを用いて 1 億ノード、30 億エッジのグラフにスケーリングする際、モデルの精度をどのように維持できるか?
- RQ5DGL 上に構築されたシステムは、単一マシンから分散学習への移行を最小限のコード変更で可能にするか?
主な発見
- DistDGL は 16 台のマシンで線形なスループット向上を達成し、1 億ノード、30 億エッジのグラフに対して 1 エポックの学習をわずか 13 秒で完了しながら、モデルの精度を損なわない。
- ogbn-product グラフにおいて、マルチ制約負荷バランスを伴う METIS 分割は、デフォルトの METIS と比べて 4% の性能向上を達成し、ランダム分割と比べて 2.14 倍の性能向上を示した。
- ogbn-papers100M グラフでは、デフォルトの METIS がランダム分割よりも性能が悪く、高い不均衡が原因であったため、マルチ制約負荷バランスの必要性が浮き彫りになった。
- min-cut 分割による通信削減とマルチ制約による負荷バランスの組み合わせが、高いパフォーマンスを実現する上で不可欠である。
- ハローノードのレプリケートとスパースな埋め込み更新は、学習中の通信トラフィックを顕著に削減した。
- DistDGL は DGL の API と互換性を保ち、単一マシンから分散学習へのコード移行を最小限の作業で実現できる。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。