2. Nsight Systems安装与配置

大家好,我是你们这次课程的讲师。在正式开始之前,我想先聊聊安装这件事。很多人觉得安装就是下一步下一步,没什么技术含量。但我见过太多团队,花了两天时间装好工具,结果跑起来全是坑。嗯,这一章我们就来把这些坑填平。

核心要点:Nsight Systems的安装不是简单的双击运行,它涉及到权限、环境变量、性能计数器等多个环节。任何一个环节出问题,你后面做的所有分析都可能不准。

1.1 各平台安装步骤

先说说我的个人习惯。我一般会在三台机器上都装一遍:本地开发机、远程训练服务器、还有一台Windows笔记本做应急分析。不同平台的安装方式差别挺大的。

Linux(Ubuntu/CentOS)

Linux是我最常用的平台,也是AI训练的主力环境。安装其实很简单:

# Ubuntu 20.04/22.04
wget https://developer.download.nvidia.com/devtools/nsight-systems/nsight-systems-2024.1.1_amd64.deb
sudo dpkg -i nsight-systems-2024.1.1_amd64.deb

# CentOS/RHEL 8
wget https://developer.download.nvidia.com/devtools/nsight-systems/nsight-systems-2024.1.1_x86_64.rpm
sudo rpm -ivh nsight-systems-2024.1.1_x86_64.rpm

装完之后,我建议你立刻验证一下:

nsys --version
# 输出类似:Nsight Systems version 2024.1.1

小技巧:我曾经在Ubuntu 22.04上遇到过依赖冲突的问题。如果你也遇到,试试用 sudo apt --fix-broken install 修复一下。

Windows

Windows安装就简单多了。去NVIDIA官网下载exe安装包,双击运行就行。但有一点要注意:

  • 路径不要有中文。我见过有人装在「D:\程序\Nsight」下面,结果命令行死活找不到命令。
  • 建议勾选「添加到PATH」。不然你每次用都要输完整路径,烦得很。

macOS

macOS用户相对少一些,但也不是没有。安装方式有两种:

# 方式一:Homebrew(推荐)
brew install nsight-systems

# 方式二:手动安装
# 下载 .dmg 文件,拖到 Applications 文件夹

说实话,macOS上跑Nsight Systems的场景不多。我一般只在做原型验证时用,真正的大规模训练还是得回到Linux上。

1.2 权限设置

权限问题是我踩过最多的坑。你想想看,好不容易装好了,一运行报「Permission denied」,多扫兴。

性能计数器权限

Nsight Systems需要读取CPU和GPU的性能计数器。在Linux上,这需要root权限或者特殊配置:

# 临时方案:用sudo运行
sudo nsys profile -o output.qdrep python train.py

# 永久方案:配置权限
echo 'kernel.perf_event_paranoid = 1' | sudo tee /etc/sysctl.d/99-nsight.conf
echo 'kernel.kptr_restrict = 0' | sudo tee -a /etc/sysctl.d/99-nsight.conf
sudo sysctl -p /etc/sysctl.d/99-nsight.conf

警告:我曾经在生产服务器上直接用了sudo运行,结果把系统日志搞乱了。建议你专门准备一台测试机,或者用容器隔离。

GPU访问权限

如果你用的是多用户环境,记得把用户加到 video 和 render 组:

sudo usermod -aG video $USER
sudo usermod -aG render $USER
# 退出重新登录生效

1.3 目标系统配置

这里分两种情况:本地分析和远程分析。我个人的经验是,能本地就本地,远程总会有各种延迟问题。

本地配置

本地最简单。装好之后直接跑就行。但要注意:

  • 关闭不必要的后台进程。比如浏览器、聊天软件,它们会干扰性能数据。
  • 固定CPU频率。不然你看到的时间波动,可能只是频率变化导致的。

远程配置

远程分析才是真正的挑战。你需要:

  1. 在远程机器上安装Nsight Systems的target组件
  2. 配置SSH免密登录
  3. 确保网络带宽足够
# 远程机器上安装target-only版本
wget https://developer.download.nvidia.com/devtools/nsight-systems/nsight-systems-target-2024.1.1_amd64.deb
sudo dpkg -i nsight-systems-target-2024.1.1_amd64.deb

# 本地机器上配置SSH
ssh-copy-id user@remote-server

避坑指南:我曾经在远程分析时发现数据一直传不回来。查了半天,原来是防火墙把端口封了。Nsight Systems默认用端口5000和5001,记得在防火墙里放开。

1.4 环境变量设置

环境变量这东西,说白了就是告诉系统「工具在哪、怎么用」。我一般会设置这几个:

环境变量 作用 推荐值
NSYS_PATH 指定Nsight Systems安装路径 /opt/nvidia/nsight-systems/2024.1.1
CUDA_HOME 指定CUDA安装路径 /usr/local/cuda
LD_LIBRARY_PATH 添加动态库搜索路径 $NSYS_PATH/lib
NSYS_GPU_METRICS 控制GPU指标采集粒度 all

你可以把这些加到 ~/.bashrc 里:

export NSYS_PATH=/opt/nvidia/nsight-systems/2024.1.1
export PATH=$NSYS_PATH/bin:$PATH
export LD_LIBRARY_PATH=$NSYS_PATH/lib:$LD_LIBRARY_PATH
export NSYS_GPU_METRICS=all

1.5 性能计数器设置

性能计数器是Nsight Systems的「眼睛」。设置不对,你看到的都是假数据。

CPU计数器

Linux上默认就能用。但如果你想看更细粒度的数据,需要开启:

# 开启所有CPU计数器
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid

# 或者只开启用户态计数器
echo 1 | sudo tee /proc/sys/kernel/perf_event_paranoid

GPU计数器

GPU计数器需要NVIDIA驱动支持。验证方法:

nvidia-smi -q | grep "GPU Utilization"
# 如果能看到数据,说明驱动没问题

注意:开启所有计数器会影响性能。我一般在调试阶段全开,正式跑训练时只开必要的几个。不然你想想看,计数器本身就在消耗CPU资源,测出来的数据能准吗?

1.6 验证安装

装完别急着用。先跑一个简单的测试:

# 创建一个测试脚本 test.py
import torch
x = torch.randn(1000, 1000).cuda()
y = torch.mm(x, x)
print(y.sum())

# 用Nsight Systems分析
nsys profile -o test_output -t cuda,nvtx python test.py

# 查看输出文件
ls -la test_output.qdrep

如果能看到 test_output.qdrep 文件,恭喜你,安装成功了。

最后说一句:安装配置这一步,花点时间做扎实了,后面能省你十倍的时间。我见过太多人跳过这一步,结果分析到一半发现数据不对,回头重新装,更浪费时间。

Nsight Systems安装配置知识体系 Nsight Systems 各平台安装 Linux (deb/rpm) Windows (exe) macOS (brew/dmg) 权限设置 性能计数器权限 GPU访问权限 目标系统配置 本地配置 远程配置 (SSH) 环境变量设置 NSYS_PATH CUDA_HOME LD_LIBRARY_PATH 性能计数器设置 CPU计数器 GPU计数器 验证安装 → 跑测试

这张图把整个安装配置的脉络理清楚了。从安装开始,到权限、目标系统、环境变量、性能计数器,最后验证。每一步都走扎实了,后面才能安心做性能分析。