NVIDIA公式NsightでGPU性能を完全解析する実践ガイド
本記事では、NVIDIA公式ツールである Nsight Systems と Nsight Compute を用い、Pythonアプリケーションに正規に組み込みつつ、 Transformer・FlashAttention・最新GPU世代まで含めて GPU性能を科学的に解析する方法を解説します。
2. NVIDIA GPU内部構造の基礎(解析の前提知識)
| 要素 | 役割 |
|---|---|
| SM | GPUの演算単位。Warpを並列実行 |
| Warp | 32スレッドのSIMT実行単位 |
| CUDA Core | スカラ演算 |
| Tensor Core | 行列演算(FP16/BF16/TF32) |
| Occupancy | SMに詰め込めるWarp数 |
| Memory Bandwidth | データ供給能力 |
Nsightの解析は、これらの「どこが飽和しているか」を特定する行為です。
4. Pythonへの公式な組み込み方法②:Nsightを外部から起動
subprocessによる統合(実務標準)
import subprocess
from pathlib import Path
def run_with_nsys(script):
Path("nsys_report").mkdir(exist_ok=True)
subprocess.run([
"nsys", "profile",
"--trace=cuda,nvtx,osrt",
"--stats=true",
"--output=nsys_report/run",
"python", script
], check=True)
CI・検証・ベンチマーク環境ではこの方式が公式に推奨されています。
6. Nsight Compute:カーネル内部の公式解析
実行例
ncu --set full \
--kernel-name "aten::matmul" \
--target-processes all \
python train.py
重要指標
| 指標 | 意味 |
|---|---|
| Achieved FLOPS | 実効演算性能 |
| Tensor Core Utilization | Tensor Core使用率 |
| DRAM Throughput | メモリ帯域使用率 |
| Warp Execution Efficiency | 分岐・再実行の影響 |
8. FlashAttention / torch.compile の公式評価方法
FlashAttention や torch.compile の評価は 必ず Nsight Compute で行う必要があります。
- Tensor Core Utilization が上がっているか
- DRAM Traffic が減っているか
- Kernel Fusion が成功しているか
| --- | | Ampere | TF32 / Tensor Core 活用 | | Ada | L2増加によるMemory挙動 | | Hopper | FP8 / TMA / Async |
まとめ
GPU性能解析は「感覚」ではなく「公式計測」で行う時代です。 Nsightは難しいツールではなく、 正しく使えば最も信頼できる判断基準になります。
Roofline Modelとは何か(最小限の理解)
Roofline Modelは、ある計算がどの性能上限に支配されているかを、 Arithmetic Intensity(演算密度)という1つの指標で分類するモデルです。
- 縦軸: 実効性能(FLOPS)
- 横軸: Arithmetic Intensity(FLOP / Byte)
そしてGPU性能は、次の2つの「屋根(Roof)」のどちらかに必ず制限されます。
- Compute Roof: GPUの最大演算性能
- Memory Roof: メモリ帯域による上限
重要:
Roofline Modelの本質は「理論図」ではなく、 どちらの上限にぶつかっているかを判定するための思考フレームです。
| --- | --- | | 実効FLOPS | Achieved FLOPS | 実際に出ている演算性能 | | 理論最大FLOPS | Peak FLOPS | GPUスペック上の最大値 | | メモリ帯域使用率 | DRAM Throughput | メモリ側の飽和度 | | 演算密度 | Arithmetic Intensity | FLOP / Byte(Nsightが自動算出) |
つまり、Nsight Computeの結果を見るだけで、 Roofline Modelを頭の中で再構築できるということです。
Transformer / Attention をRooflineで考える
Transformerにおける代表的な処理をRoofline視点で分類すると、 以下のようになります。
| 処理 | Roofline分類 | 理由 |
|---|---|---|
| QKV Linear | Compute Bound | GEMM + Tensor Core |
| Attention Softmax | Memory / Latency Bound | 演算密度が低い |
| FlashAttention | Compute寄り | メモリアクセス削減 |
FlashAttentionが「速い」のではなく、 Roofline上の位置を意図的に右上へ動かしている と理解すると、本質が見えてきます。
まとめ:Rooflineは「Nsightの読み方」
Roofline Modelは、単独で使う理論ではありません。 Nsight Computeの結果をどう解釈するかを与えるフレームワークです。
Nsightを見て数値を眺めるだけの状態から、
「なぜ遅いのか」「次に何を変えるべきか」を説明できる状態へ。
それがRoofline Modelの役割です。