第一章: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频率。不然你看到的时间波动,可能只是频率变化导致的。
远程配置
远程分析才是真正的挑战。你需要:
- 在远程机器上安装Nsight Systems的target组件
- 配置SSH免密登录
- 确保网络带宽足够
# 远程机器上安装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 文件,恭喜你,安装成功了。
最后说一句:安装配置这一步,花点时间做扎实了,后面能省你十倍的时间。我见过太多人跳过这一步,结果分析到一半发现数据不对,回头重新装,更浪费时间。
这张图把整个安装配置的脉络理清楚了。从安装开始,到权限、目标系统、环境变量、性能计数器,最后验证。每一步都走扎实了,后面才能安心做性能分析。