NVLink vs NVSwitch

1. NVLink 是什么?

NVLink 是由 NVIDIA 开发的一种高速互连技术,旨在实现 GPU 与 GPU 或 GPU 与 CPU 之间的高带宽、低延迟通信。它通过专用的硬件互连通道,比传统的 PCIe 通信速度更快。

  • 关键特点

    1. 高带宽:NVLink 的带宽远高于 PCIe。最新的 NVLink 版本(NVLink 4)可以提供高达 900 GB/s 的总带宽。
    2. 低延迟:通过更高效的通信协议和点对点直连设计,显著减少数据传输的延迟。
    3. 多 GPU 通信:支持多 GPU 的直接互连,允许 GPU 间的数据共享无需经过主机内存。
    4. 可扩展性:通过 NVLink,多个 GPU 可以组成一个高性能计算集群,共享内存和计算资源。
  • 典型应用场景

    1. 深度学习训练:在需要多个 GPU 协作的大规模模型训练中,NVLink 提供快速的数据交换能力。
    2. 科学计算和仿真:需要高吞吐量的计算任务,例如气候模拟、分子动力学等。
    3. 数据中心和超算:在 GPU 加速的 HPC(高性能计算)任务中实现更高效率。

2. NVSwitch 是什么?

NVSwitch 是基于 NVLink 的一种硬件交换机(Switch),用于支持多个 GPU 之间的全互连通信。它被设计用于数据中心和高性能计算系统,可以有效地连接 8 个或更多 GPU,形成一个全连接拓扑。

  • 关键特点

    1. 支持大规模 GPU 互连:NVSwitch 可以支持 16 个或更多 GPU 的高带宽通信,实现“每个 GPU 到其他所有 GPU”之间的直接数据传输。
    2. 极高带宽:NVSwitch 的交换能力可达到数 TB/s,远超单 NVLink 通道。
    3. 低延迟:通过专用的硬件设计,NVSwitch 减少了 GPU 之间的通信瓶颈。
    4. 支持 NVIDIA DGX 系统:如 NVIDIA DGX A100 和 DGX H100,这些系统都依赖 NVSwitch 提供的大规模 GPU 互连。
  • 典型应用场景

    1. AI 超算:在需要多 GPU 高效协作的场景(如 GPT 大模型训练)中,NVSwitch 提供支持。
    2. 数据中心基础设施:提高 GPU 集群的互连性能。
    3. HPC 工作负载:如复杂的物理模拟和建模任务。

3. NVLink 和 NVSwitch 的区别

NVLinkNVSwitch
类型点对点通信链路

多 GPU 交换机

功能连接两个设备(GPU-GPU 或 GPU-CPU)实现多个 GPU 的全互连
适用场景小规模 GPU 系统大规模 GPU 集群
带宽单链路带宽较高(如 50 GB/s)总体带宽更高(如数 TB/s)
硬件支持如 NVIDIA A100、H100 GPU如 DGX A100、H100 系统中的交换模块

简单来说,NVLink 是用于设备间通信的点对点连接技术,而 NVSwitch 是支持大规模 GPU 集群互连的核心交换设备。两者结合可以构建强大的 GPU 加速计算系统。

4. 查看系统中的 NVLinkNVSwitch 配置或状态

1. 使用 nvidia-smi 工具

nvidia-smi 是 NVIDIA 提供的 GPU 管理工具,可以查看 NVLink 和 NVSwitch 的基本信息。

查看 NVLink 拓扑信息

运行以下命令:nvidia-smi topo -m

输出示例:

        GPU0    GPU1    GPU2    GPU3    CPU Affinity
GPU0    X       NV1     NV1     NV1     0-11
GPU1    NV1     X       NV1     NV1     0-11
GPU2    NV1     NV1     X       NV1     12-23
GPU3    NV1     NV1     NV1     X       12-23
  • NV1 表示 GPU 之间有 1 条 NVLink
  • 如果没有 NVLink,则会显示 PHB(PCI Host Bridge)
查看 NVLink 带宽

运行以下命令:nvidia-smi nvlink --status

这将显示 NVLink 的状态和带宽信息,包括每个通道的带宽是否已启用。

输出示例:

GPU 0: Tesla V100-SXM2-16GB
    Link  0: Enabled  Speed: 25 GB/s
    Link  1: Enabled  Speed: 25 GB/s
GPU 1: Tesla V100-SXM2-16GB
    Link  0: Enabled  Speed: 25 GB/s
    Link  1: Enabled  Speed: 25 GB/s
查看 NVSwitch 拓扑

nvidia-smi nvlink -t

输出示例(有 NVSwitch 的系统):

        GPU0    GPU1    GPU2    GPU3    NVSwitch
GPU0    X       NV1     NV1     NV1     NVSwitch1
GPU1    NV1     X       NV1     NV1     NVSwitch1
GPU2    NV1     NV1     X       NV1     NVSwitch1
GPU3    NV1     NV1     NV1     X       NVSwitch1

2. 使用 NVIDIA SDK 工具

NVIDIA 提供了更详细的诊断工具(如 dcgmNsight),可以监控和测试 NVLink 和 NVSwitch 的性能。

安装 DCGM 后可以运行以下命令:dcgmi diag -r 5

这将运行 NVLink 诊断测试,并报告其状态。

3. 检查系统日志

通过查看内核日志可以获取 NVLink 和 NVSwitch 的初始化信息:

dmesg | grep -i nvlink

或查看设备是否被正确加载:

lsmod | grep nvidia

5. 分布式训练相关显存问题

1. 大模型大概有多大,模型文件有多大?

大模型也分为不同的规格,一般模型的规格会体现在模型的名称上,例如 LLaMA2-13b,13b 就是其模型参数量的大小,意思是 130亿的参数量。大模型的文件大小与其参数量有关,通常大模型是以半精度存储的, Xb 的模型文件大概是 2X GB多一些,例如 13b 的模型文件大小大约是 27GB 左右。

2. 能否用 4 * v100 32G 训练 vicuna 65b?

一般来说推理模型需要的显存约等于模型文件大小,全参训练需要的显存约为推理所需显存的三倍到四倍,正常来说,在不量化的情况下4张 v100 显卡推理 65b 的模型都会有一些吃力,无法进行训练,需要通过 LoRA 或者QLoRA 采用低秩分解的方式才可以训练。

3. 如何评估显卡利用率?

  1. flops比值法gpu利用率 = 实测的flops/显卡理论上的峰值flops。deepspeed 实测flops 100t flops,而用的是A100卡理论峰值312t flops,可以得到GPU利用率只有 32.05%。
  2. throughout估计法吞吐量 = example数量/秒/GPU * max_lengthgpu利用率 = 实际吞吐量 / 论文中的吞吐量(假设利用率100%),实测训练时处理样本速度为 3 example/s,一共有4卡,max length 2048,则吞吐量为 1536 token/s/gpu,根据llama论文可以得知,他们训练7B模型的吞吐量约为 3300 token/s/gpu,那么GPU利用率只有46.54%
  3. torch profiler分析法:利用torch profiler记录各个函数的时间,将结果在tensorboard上展示,在gpu kenel视图下,可以看到tensor core的利用率,比如30%。

4. 如何查看多机训练时的网速?

iftop -i eth2 -n  -P

iftop 是外置的命令,可以监控发送流量,接收流量,总流量,运行 iftop 到目前时间的总流量,流量峰值,过去 2s 10s 40s 的平均流量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值