系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

nsys

Nsight Systems 时间线:看 CPU、GPU、CUDA API、NCCL 与数据加载的重叠和空档

补充说明

Nsight Systems(nsys)做系统级时间线分析:把 CPU 线程、CUDA API、kernel、显存拷贝、NCCL 通信、cuDNN/cuBLAS、OS runtime 和 NVTX 标记放在同一条时间轴上。它回答“GPU 为什么在等”“数据加载是否拖慢训练”“通信和计算有没有重叠”,不深入到单个 kernel 内部的指令和 stall 分析;后者用 Nsight Compute(ncu)。

典型用途:训练吞吐低、GPU 利用率忽高忽低、多卡通信与计算串行、DataLoader 成为瓶颈、推理服务排队。先用 nsys 找时间线上的空档,再用 ncu 分析具体 kernel。

常用示例

# 采集 CUDA、NVTX、OS runtime 和 cuDNN/cuBLAS,生成报告
nsys profile -t cuda,nvtx,osrt,cudnn,cublas -o report ./app

# 采集后在终端看统计摘要
nsys stats report.nsys-rep

# 只采集指定时长,避免报告过大
nsys profile --duration=30 -o report ./app

# 采集 GPU 指标(需要支持的平台)
nsys profile --gpu-metrics-device=0 -o report ./app
# 用 NVTX 标记训练阶段,时间线里更容易定位
nsys profile -t cuda,nvtx -o report python train.py

# 通过 CUDA Profiler API 控制采集范围
nsys profile --capture-range=cudaProfilerApi --capture-range-end=stop -o report ./app

# 打开图形界面查看报告
nsys-ui report.nsys-rep

PyTorch 可以用 torch.cuda.nvtx.range_push/pop 或 torch.profiler 配合 NVTX;关键是给数据加载、前向、反向、优化器步进打上可读的区间名。

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. nsys 和 ncu 的分析层次有什么不同?
  2. 训练时间线里 GPU 出现规律性空档,通常先查什么?
  3. 怎样让时间线快速对应到训练阶段?
答案
  1. nsys 做系统级时间线,关注 CPU/GPU/通信/拷贝的重叠与空档;ncu 做单 kernel 级分析,关注指令、内存、occupancy 和 stall。
  2. 先查数据加载、CPU 预处理、同步点和通信是否阻塞;结合 CPU 线程、DataLoader、H2D 拷贝和 NCCL 区间判断。
  3. 在数据加载、前向、反向、优化器步进等代码段加 NVTX range,时间线里就能按名字定位。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令