## Memo
## Memo with LLM
### 論文情報
- **タイトル**: Profiling and Monitoring Deep Learning Training Tasks
- **著者**: Ehsan Yousefzadeh-Asl-Miandoab、Ties Robroek、Pinar Tozun
- **所属**: IT University of Copenhagen, Copenhagen, Denmark
- **カンファレンス名**: 3rd Workshop on Machine Learning and Systems (EuroMLSys '23)
- **発表年**: 2023年5月8日(Rome, Italy)
### 論文概要
本論文は、NVIDIA GPUs上での深層学習訓練タスクのプロファイリング・監視ツールの包括的な調査と評価である。nvidia-smi、dcgm、PyTorch Profiler、NVIDIA Nsight SystemsおよびNsight Computを対象に、各ツールの機能特性、制限事項、オーバーヘッドを軽量および重量の訓練シナリオで分析した結果、監視ツールはオンライン意思決定に適した低オーバーヘッドを持つ一方で、プロファイリングツールはより詳細な情報を提供するが実行オーバーヘッドが大きいことを明らかにした。
### 詳細解説
#### 問題設定
深層学習の訓練は CPU-GPU コプロセッサを主要な計算対象とする並列処理ワークロードであるが、訓練タスクの計算およびメモリ要件が利用可能な GPU リソースと必ずしも適切に一致していない。この不整合はリソース利用率の低下とパフォーマンス低下を招く。したがって、異なるユースケースの要件をより良く理解し、適切な最適化を実施するためには、訓練タスクの振る舞いを正確に監視・プロファイリングすることが不可欠である。
本論文の主要な問題は以下の通りである:
- プロファイリング・監視ツール間での機能と性能特性の差異が不明確である
- 各ツールのオーバーヘッド(実行時間、CPU/GPU メモリ、データサイズ)が定量的に明らかにされていない
- GPU 利用率メトリクスの多様性と解釈の曖昧性
#### 提案手法
本論文は新規手法を提案するのではなく、既存のプロファイリング・監視ツールの包括的な調査と定量的な評価を実施する。主な評価対象ツールは以下の通りである:
**プロファイリングツール**:
- PyTorch Profiler:フレームワーク統合のトレースベースプロファイラ
- NVIDIA Nsight Systems (nsys):システム全体のトレースベースプロファイラ
- NVIDIA Nsight Compute (ncu):マイクロアーキテクチャレベルの詳細分析ツール
**監視ツール**:
- nvidia-smi:NVIDIA Management Library (NVML) を利用した基本的な GPU 監視
- dcgm:より詳細な GPU 利用率情報と streaming multiprocessor (SM) 活動を提供
評価指標の定義:
- **GPU 利用率メトリクス**:
- GRACT(Graphics engine Activity):グラフィックスまたは計算エンジンの活動率
- SMACT(SM Activity):SM の平均活動率
- SMOCC(SM Occupancy):SM 内の並列度
- **オーバーヘッド評価指標**:
- エポック実行時間(訓練タスク 1 エポックの所要時間)
- 生成データサイズ
- CPU 使用率および CPU メモリ使用量
- GPU リソース利用率
#### 新規性
本論文の新規性は以下の点にある:
1. **包括的な比較調査**:既存のプロファイリング・監視ツール間の直接的で定量的な比較が不足していた領域で、統一された評価フレームワークと一貫した実験環境下での比較評価を実施した点
2. **GPU 利用率メトリクスの深掘り分析**:GRACT、SMACT、SMOCC などの異なる GPU 利用率メトリクスの意味と相違を詳細に解析し、高レベルメトリクス(GRACT)が実際の GPU 負荷を誤解させうることを定量的に示した点
3. **オーバーヘッドの詳細定量化**:各ツールのオーバーヘッドを複数の次元(実行時間、メモリ、データサイズ)から測定し、軽量・重量の訓練シナリオでの特性変化を明らかにした点
先行研究との比較:既存研究では CPU 向けのプロファイリング・監視ツール(top、perf、Intel VTune)の特性分析が進んでいる一方で、GPU 向けツールはまだ成熟度が低く、急速に進化している状態であった。本論文は、GPU 向けツールの現状を初めて体系的に評価する研究として貢献している。
#### 実験設定
**テストプラットフォーム**:
- CPU:AMD EPYC 7742(512GB メインメモリ)
- GPU:NVIDIA A100(40GB HBM2 メモリ、108 SM)× 4 個
- OS:DGX OS(Ubuntu 20.04.4 LTS 派生版)
- CUDA:11.6.1
**訓練シナリオ**:
1. **軽量シナリオ**:Simple CNN(MNIST データセット)
2. **重量シナリオ**:ResNet50(ImageNet データセット)
両訓練は PyTorch 1.13.1 を使用して 5 エポック実行
**評価指標の定義**:
- エポック実行時間:PyTorch 内部から取得
- ファイルサイズ:各ツール出力ファイルの総容量
- CPU/GPU メモリ使用量:top/dcgm コマンド経由で測定
- GPU 利用率:dcgm から SMACT、SMOCC、DRAMA を取得
#### 実験結果
**GPU 利用率メトリクス分析**:
カスタムマイクロベンチマークで thread block 数とスレッド数を変動させた結果、GRACT は単一スレッドでも 90% の利用率を示すなど、実際の GPU 負荷を正確に反映していないことが判明。一方、SMACT と SMOCC は GPU の並列度限界(最大 3456 thread block、スレッド/block 最大 1024)に近づくにつれて値が上昇し、より正確に SM 活動を反映することが確認された。
**ツール別オーバーヘッド**:
| ツール | 軽量シナリオのエポック時間 | 重量シナリオのエポック時間 | 生成データサイズ |
| ---------------- | ------------- | ------------- | ---------------------- |
| ベースライン(ツール無し) | 9.61 秒 | 37.06 分 | N/A |
| nvidia-smi | 9.61 秒 | 37.04 分 | ~2MB |
| dcgm | 9.68 秒 | 37.19 分 | ~8MB |
| nsys | 9.88 秒 | 39.13 分 | ~40MB (軽量) / ~5GB (重量) |
| PyTorch Profiler | 13.65 秒 | 実行不可 | ~1.4GB (軽量) |
CPU 使用率の増加:
- 監視ツール(nvidia-smi、dcgm):ベースライン比で増加なし
- nsys:軽量シナリオで約 18% CPU 使加
- PyTorch Profiler:ベースライン程度、ただし訓練後のポスト処理で著しく增加
GPU リソースへの影響:
- 全ツールとも GPU 計算利用率(SMACT、SMOCC)に対する顕著な影響なし
**結論**:
- 監視ツール(nvidia-smi、dcgm)は無視できるレベルのオーバーヘッドを持つため、リソースマネージャやタスクスケジューラへの統合に適している
- プロファイリングツールは詳細な情報提供が可能だが、実行時間・メモリ・ディスク I/O オーバーヘッドが大きく、意図的な最適化調査用途に限定すべき
- 特に Nsight Compute の profiling モードは訓練実行に大きな影響を与えるため注意が必要
- フレームワーク統合プロファイラは application-level のボトルネック検出に、システム全体プロファイラはシステムレベルの可視化に、Nsight Compute はマイクロアーキテクチャレベルの個別カーネル最適化に、それぞれ適している
---
## Abstract
深層学習の訓練タスクの極めて平易な並列処理の特性から、CPU-GPU コプロセッサが主要な汎用ハードウェアとなっている。しかし、これらのタスクの計算およびメモリ要件は、利用可能な GPU リソースと常に適切に一致しているわけではない。したがって、異なるユースケースの要件をより良く理解するために、コプロセッサ上の訓練タスクの振る舞いを監視・プロファイリングすることが重要である。本論文では、サーバーグレード NVIDIA GPU 上での深層学習訓練タスクをプロファイリング・監視するための多様なツールについて、より詳細に解明することを目指している。ツールの主な特性を調査することに加えて、軽量および重量の訓練シナリオを用いて、各ツールの機能的制限とオーバーヘッドを分析する。結果として、nvidia-smi および dcgm のような監視ツールは低オーバーヘッドのため、リソースマネージャとの統合によるオンライン意思決定に適していることが明らかになった。一方、GPU 利用率を正しく判断するためには、選択するメトリクスの集合に注意する必要がある。プロファイリングに関しては、各ツールがそれぞれの役割を果たす。フレームワークベースまたはシステム全体の GPU プロファイラはまず頻繁なカーネルまたはボトルネックを検出でき、その後、下位レベルの GPU プロファイラは特定のカーネルをマイクロアーキテクチャレベルで焦点を当てることができる。