Skip to main content
QUICK REVIEW

[論文レビュー] PyTorch-Direct: Enabling GPU Centric Data Access for Very Large Graph Neural Network Training with Irregular Accesses

Seung Won Min, Wu Kun|arXiv (Cornell University)|Jan 19, 2021
Advanced Graph Neural Networks被引用数 11
ひとこと要約

PyTorch-Direct は、大規模なグラフニューラルネットワーク(GNN)の学習に向け、GPU中心のデータアクセスパラダイムを導入し、CPUの関与なしにホストメモリ内の不規則で散らばったノード特徴量にGPUが直接アクセス可能にします。統一されたテンソル型の導入とメモリアクセスパターンの最適化により、平均でデータ転送時間を 47.1% 減少させ、GNN学習を最大 1.6× に高速化するとともに、システムの電力消費量を 12.4%–17.5% 削減します。

ABSTRACT

With the increasing adoption of graph neural networks (GNNs) in the machine learning community, GPUs have become an essential tool to accelerate GNN training. However, training GNNs on very large graphs that do not fit in GPU memory is still a challenging task. Unlike conventional neural networks, mini-batching input samples in GNNs requires complicated tasks such as traversing neighboring nodes and gathering their feature values. While this process accounts for a significant portion of the training time, we find existing GNN implementations using popular deep neural network (DNN) libraries such as PyTorch are limited to a CPU-centric approach for the entire data preparation step. This "all-in-CPU" approach has negative impact on the overall GNN training performance as it over-utilizes CPU resources and hinders GPU acceleration of GNN training. To overcome such limitations, we introduce PyTorch-Direct, which enables a GPU-centric data accessing paradigm for GNN training. In PyTorch-Direct, GPUs are capable of efficiently accessing complicated data structures in host memory directly without CPU intervention. Our microbenchmark and end-to-end GNN training results show that PyTorch-Direct reduces data transfer time by 47.1% on average and speeds up GNN training by up to 1.6x. Furthermore, by reducing CPU utilization, PyTorch-Direct also saves system power by 12.4% to 17.5% during training. To minimize programmer effort, we introduce a new "unified tensor" type along with necessary changes to the PyTorch memory allocator, dispatch logic, and placement rules. As a result, users need to change at most two lines of their PyTorch GNN training code for each tensor object to take advantage of PyTorch-Direct.

研究の動機と目的

  • CPU中心のデータ準備が引き起こす大規模 GNN 学習における性能ボトルネックを解消し、CPU の過負荷と GPU 利用率の制限を回避すること。
  • PyTorch などの既存の DNN ライブラリが不規則なグラフデータアクセスのための GPU 転送前に CPU を介したデータ集約を必要としている非効率性を克服すること。
  • GPU がホストメモリ内の散らばった不規則な配置のノード特徴量に直接アクセスできるようにし、待機時間とデータ移動のオーバーヘッドを低減すること。
  • 統一されたテンソル抽象化と PyTorch のメモリアロケータおよびディスpatchロジックへの後方互換性を保った変更を導入することで、プログラマーの作業負荷を最小限に抑えること。
  • 既存の PyTorch GNN コードベースと互換性を保ちながら、顕著なエンドツーエンドの学習速度向上とシステムの電力消費量削減を達成すること。

提案手法

  • GPU カーネルがホストメモリ内のデータに事前の CPU 側でのデータ集約を経ずに直接アクセスできる新しい「統一テンソル」型を導入すること。
  • GPU がアクセス可能なホストメモリをサポートするよう、PyTorch のメモリアロケータと配置ルールを変更し、適切なアライメントとコalescing 最適化を実装すること。
  • メモリアライメントに配慮した GPU カーネルを実装し、ホストメモリ内の不規則にアラインされたデータ構造へのアクセス時の待機時間を低減すること。
  • GPU の高並列性を活用して、CPU の関与なしにホストメモリ内の散らばったデータへの直接メモリアクセスを実行すること。
  • 最大でも 1 テンソルあたり 2 行のコード変更で、既存の PyTorch 学習ワークフローに新しいパラダイムを統合すること。
  • アライメントに配慮したカーネルディスパッチとコalescedメモリアクセス戦略を通じて、メモリアクセスパターンを最適化し、帯域幅の利用効率を向上させること。

実験結果

リサーチクエスチョン

  • RQ1GPU が CPU の関与なしにホストメモリ内の不規則で散らばったデータに効率的にアクセスでき、GNN 学習におけるデータ転送のオーバーヘッドを低減できるか。
  • RQ2GPU 中心のデータアクセスモデルは、CPU 中心のアプローチと比較して、データ準備時間の短縮とエンドツーエンドの GNN 学習パフォーマンス向上にどの程度寄与するか。
  • RQ3PyTorch-Direct は、CPU 利用率の低下に伴い、GNN 学習中のシステムの電力消費量にどのような影響を与えるか。
  • RQ4既存の PyTorch GNN コードベースに GPU 中心のパラダイムを採用するにあたり、必要なプログラマーの作業負荷は最小限で済むか。
  • RQ5メモリアライメントは、GNN ワークロードにおける不規則なホストメモリデータへの直接 GPU アクセスのパフォーマンスにどのように影響するか。

主な発見

  • PyTorch-Direct は、エンドツーエンドの GNN 学習において、ベースラインの PyTorch アプローチと比較して平均で 47.1% のデータ転送時間短縮を達成した。
  • フレームワークは、さまざまなデータセットとアーキテクチャを対象に、最大 1.6× の学習パフォーマンス向上を達成しており、観察されたスループット向上は 1.01× から 1.45× の範囲であった。
  • 直接電力量計測により確認されたように、CPU 利用率の低下に起因し、システムの電力消費量は 12.4% から 17.5% 削減された。
  • マイクロベンチマークの結果、PyTorch-Direct はベースラインの PyTorch アプローチと比較して平均で 2.39× のパフォーマンス向上を達成しており、多様なシステム構成においてほぼ理想に近い帯域幅利用効率を実現した。
  • PyTorch-Direct におけるメモリアライメント最適化は、2052 バイトの特徴量に対して、単純な GPU アクセス手法と比較して 1.95× のパフォーマンス向上を示し、コalescedアクセスパターンの有効性を裏付けた。
  • ユーザーは、1 テンソルあたり最大 2 行のコード変更で PyTorch-Direct の全機能を有効化でき、後方互換性と低い導入障壁を確保した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。