← Back to Portal

NVIDIA公式NsightでGPU性能を完全解析する実践ガイド【Python統合・Transformer対応】

Published on "01/06/2026 08:00:00" by Ayato

NVIDIA公式NsightでGPU性能を完全解析する実践ガイド

本記事では、NVIDIA公式ツールである Nsight SystemsNsight 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 で行う必要があります

| --- | | Ampere | TF32 / Tensor Core 活用 | | Ada | L2増加によるMemory挙動 | | Hopper | FP8 / TMA / Async |

まとめ

GPU性能解析は「感覚」ではなく「公式計測」で行う時代です。 Nsightは難しいツールではなく、 正しく使えば最も信頼できる判断基準になります。

Roofline Modelとは何か(最小限の理解)

Roofline Modelは、ある計算がどの性能上限に支配されているかを、 Arithmetic Intensity(演算密度)という1つの指標で分類するモデルです。

そしてGPU性能は、次の2つの「屋根(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の役割です。