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

gpu-topology

GPU 拓扑与亲和性:用 nvidia-smi topo 判断 NVLink、PCIe、NUMA 与网卡位置

补充说明

nvidia-smi topo -m 输出 GPU 之间、GPU 与网卡之间的连接矩阵,标出 NVLink、PCIe 交换机、CPU 插槽和 NUMA 节点。它决定多卡训练的 rank 放置、NCCL 选路、GPU Direct 是否能生效,以及为什么两张卡看起来同型号、通信带宽却差很多。

矩阵里的常见标记:NV# 表示 NVLink,PIX 表示同一 PCIe 交换机,PXB 表示经过 PCIe 桥,PHB 表示经过 PCIe 主机桥,SYS 表示跨 NUMA/跨 CPU 插槽,NODE 表示同一 NUMA 节点。数字越大通常表示路径越长、带宽越低。

常用示例

# 查看 GPU、网卡与 CPU 的拓扑矩阵
nvidia-smi topo -m

# 矩阵中同时显示 PCI 总线 ID
nvidia-smi topo -mp

# 查看 GPU 的 CPU 亲和性
nvidia-smi topo -c

# 查看 NUMA 节点与 CPU
lscpu | grep -i numa
lscpu -e
# 确认网卡与 GPU 是否在同一 NUMA/PCIe 分支
nvidia-smi topo -m
ip -br link
ethtool -i <nic>

# 多机训练前,配合 NCCL 日志确认选中的网卡
NCCL_DEBUG=INFO NCCL_SOCKET_IFNAME=<nic> ./build/all_reduce_perf -g 8

排布 rank 时优先让通信密集的 GPU 走 NVLink,让同一 NUMA 节点的 GPU 配同一侧网卡;不要只看 GPU 编号连续,物理拓扑可能和编号不一致。

易错点与排错

相关命令

参考链接

读完自测

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

  1. NV#、PIX、SYS 分别代表什么连接?
  2. 为什么 GPU 编号相邻不代表通信带宽最高?
  3. 多机训练时,网卡位置对带宽有什么影响?
答案
  1. NV# 是 NVLink,PIX 是同一 PCIe 交换机,SYS 通常表示跨 NUMA/CPU 插槽的路径。
  2. GPU 编号是逻辑顺序,物理连接由 PCIe/NVLink 拓扑决定;相邻编号的卡可能跨 NUMA,带宽更低。
  3. 网卡与 GPU 跨 NUMA 会增加延迟、降低带宽;应让网卡与 GPU 处于同一 NUMA/PCIe 分支,并用 NCCL 环境变量明确选路。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令