深夜的北京城,千万人同时用手机刷视频、发消息、跑大模型。这些请求并不会只落在一台电脑上,而是被拆成无数小任务,分发给藏在数据中心里的成千上万块 GPU。问题来了:GPU 之间、GPU 和 CPU 之间,怎么把数据又快又稳地传来传去?答案就是“异构通信”——它像一座城市的交通系统:NVLink 是地铁专线,PCIe DMA 是城市主干道,RDMA 是高铁直达线,而通信拓扑则是这些道路的整体规划图。路修得好不好、车怎么调度、红绿灯怎么配合,直接决定了整座城市的运转效率。本篇文章,我们就用“城市交通”这个视角,把异构通信的每一块拼图都讲透。

岗位关联

掌握异构通信,是理解 AI Runtime 系统的关键一环。许多 AI 工程师调试多卡训练、优化推理性能时,瓶颈往往不在计算本身,而在数据搬运——学会这门“交通调度学”,你将能真正读懂性能火焰图。

目录
  1. 可视化演示
  2. 通信协议总览
  3. NVLink 高速直连
  4. PCIe DMA 搬运
  5. RDMA 远程直达
  6. 通信拓扑设计
  7. 同步与性能优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

演示多设备数据交换:H2D/D2H/D2D通信通道、all-reduce梯度聚合,以及PCIe/NVLink/RDMA带宽对比,支持模式切换与参数调节。

本节配有交互动效(进入视口后自动加载,约 3KB)。

通信类型 H2D/D2H经PCIe D2D P2P绕过主机 设备间数据交换

通信协议总览

想象一座超大规模城市:CPU 是市政府大楼,GPU 是分布在城市各处的超级工厂。每天有海量原材料(张量数据)要在市政府和工厂之间、工厂与工厂之间运输。异构通信要解决的核心问题,就是为不同运输需求选择最合适的道路。城市里有地铁专线(NVLink)、城市主干道(PCIe DMA)和跨省高铁(RDMA),每种道路的造价、速度、覆盖范围完全不同。

从技术角度看,NVLink 是 NVIDIA 私有协议,专为 GPU 到 GPU 的高速直连设计,单条链路带宽可达 900 GB/s(H100 时代);PCIe 是通用总线标准,CPU 与 GPU 之间通过 PCIe 通道连接,配合 DMA(直接内存访问)技术,可以让数据绕过 CPU 直接搬运;RDMA 则是一种网络通信技术,允许一台机器的内存直接读写另一台机器的内存,全程不需要操作系统内核参与。

选择合适的通信方式,本质上是一个“带宽—延迟—成本”的三角权衡问题。带宽决定单位时间能搬多少数据,延迟决定一次搬运要等多久,成本决定你的钱包能修几条路。工程师在设计 AI Runtime 系统时,需要像城市规划师一样,根据流量特征为每条数据通路匹配最优的运输方案。

NVLink 高速直连

回到城市交通。如果市政府旁边就是两家相邻的超级工厂,每天要互相传输几十 TB 的半成品,你会给他们修什么路?显然是一条不经过主干道、不经过市中心、点对点直达的全封闭高速公路——这就是 NVLink 的角色。

NVLink 是 NVIDIA 推出的 GPU 间高速互连协议,它在同一台服务器内将多块 GPU 用高速链路直接相连,形成一张低延迟、高带宽的 mesh 网络。以 A100 为例,第三代 NVLink 单条链路带宽 600 GB/s,而 PCIe 4.0 x16 的带宽仅 32 GB/s,两者相差近 20 倍。这意味着,在 Transformer 模型训练中,张量并行(Tensor Parallelism)的通信开销可以被压缩到几乎可以忽略的程度。

用城市交通来理解:NVLink 相当于在相邻工厂之间修了直达隧道,材料随到随运,车间里的机器永远不会因为“等料”而空转。在多卡训练中,梯度同步(AllReduce)是通信最密集的阶段,NVLink 的高带宽让这块“运输成本”大幅降低,使 GPU 集群的扩展效率从 PCIe 时代的 60% 提升到 90% 以上。当然,NVLink 的传输距离有限(通常仅限同一台服务器内部),跨服务器的通信还得靠 RDMA 接力。

有效算力利用率=计算时间计算时间+通信时间\displaystyle \text{有效算力利用率}=\frac{\text{计算时间}}{\text{计算时间}+\text{通信时间}}
通信时间越短,算力利用率越接近 1。NVLink 的价值,就是让通信时间趋近于零。
  1. 计算时间GPU 真正执行矩阵乘法等运算所花费的时间。它取决于算力峰值和算子效率。
    Tcompute=FLOPsGPU峰值算力\displaystyle T_{\text{compute}}=\frac{\text{FLOPs}}{\text{GPU峰值算力}}
  2. 通信时间数据在 GPU 之间传输所花费的时间。它取决于通信数据量和链路带宽。
    Tcomm=通信数据量链路带宽\displaystyle T_{\text{comm}}=\frac{\text{通信数据量}}{\text{链路带宽}}
  3. 利用率公式有效算力利用率等于计算时间占总时间的比例。通信时间占比越高,利用率越低。

PCIe DMA 搬运

城市里最多的路是主干道。市政府(CPU)要给工厂(GPU)发指令、传参数,走的就是 PCIe 这条主干道。但传统方式有个大问题:每次传输都要 CPU 亲自“开车”搬数据,就像市长亲自开着卡车送文件,既慢又浪费。

解决办法是 DMA(Direct Memory Access,直接内存访问)。DMA 引擎相当于一支专业的“物流车队”,CPU 只要在任务单上写下“从内存地址 A 到显存地址 B,搬运 N 字节”,剩下的苦力活全由 DMA 控制器完成。这样 CPU 就可以继续去做计算、调度等更重要的决策工作。

但 PCIe DMA 并非没有代价。首先,数据要经过“pinned memory“(锁页内存)中转——普通内存可能被操作系统换出到磁盘,导致 DMA 引擎找不到数据,所以必须先把数据”钉”在物理内存里。其次,PCIe 链路的启动延迟较高(微秒级),对于小数据量的频繁通信,启动开销甚至可能超过传输本身。

回到城市比喻:PCIe DMA 就像主干道上的专业物流车队,虽然发车准备慢(启动延迟),但一旦上路,运输量大、成本低,适合批量运送“大件货物”。在 AI Runtime 中,CPU 向 GPU 传输权重、训练数据、控制指令,主要依赖 PCIe DMA。而一个聪明的 Runtime 系统,会尽量把多次小传输合并成一次大传输,减少“发车”次数,这就是所谓的“传输合并”优化。

TPCIe=Tsetup+DBPCIe\displaystyle T_{\text{PCIe}}=T_{\text{setup}}+\frac{D}{B_{\text{PCIe}}}
总耗时 = 启动开销 + 数据量 ÷ 带宽。启动开销高,是 PCIe 在小数据场景下的“堵车费”。
  1. 启动开销发起一次 DMA 传输所需的固定开销,包括设置描述符、分配 pinned 内存、通知设备等,通常为 5-10 微秒。
    Tsetup≈5∼10 μs\displaystyle T_{\text{setup}}\approx 5\sim 10\ \mu s
  2. 传输时间数据量除以 PCIe 带宽。数据量越大,这部分占比越高。
    DBPCIe=D32 GB/s\displaystyle \frac{D}{B_{\text{PCIe}}}=\frac{D}{32\ \text{GB/s}}
  3. 权衡结论当数据量很小时(如 1 KB),启动开销占主导;当数据量很大时(如 100 MB),带宽占主导。

RDMA 远程直达

当城市与城市之间需要协作时——比如北京和上海的两个数据中心要联合训练同一个大模型——普通公路就不够用了,必须修高铁。RDMA(Remote Direct Memory Access,远程直接内存访问)就是这张跨省高铁网。

RDMA 的核心思想是“内核旁路”:传统网络通信中,数据要从用户态拷贝到内核态,再经过网卡发送,接收端同样要经过内核处理,全程 CPU 参与多次拷贝,耗费大量资源和时间。RDMA 则允许应用程序的网卡硬件直接读写远端机器的内存,数据从发送端用户内存直接到接收端用户内存,中间完全不需要操作系统介入,CPU 几乎零消耗。

在 AI 集群中,RDMA 是跨机通信的事实标准。NVIDIA 的 NCCL 库在跨服务器场景下自动选择 RDMA 通道,配合 InfiniBand 或 RoCE 网络,实现多机多卡的高效 AllReduce。用城市比喻来说:RDMA 让“材料”从 A 城工厂的生产线上直接传送到 B 城工厂的生产线上,中途不需要任何人下车搬运——高铁直达,效率自然最高。

TRDMA=T硬件往返+DB网络\displaystyle T_{\text{RDMA}}=T_{\text{硬件往返}}+\frac{D}{B_{\text{网络}}}
RDMA 省去了内核拷贝和 CPU 中断处理,延迟可从传统 TCP 的 50 微秒降至 2 微秒以下。
  1. 硬件往返时间数据从发送端网卡到接收端网卡的物理传输时间,取决于线缆长度和交换机跳数。
    T硬件往返=距离×2光速×0.7\displaystyle T_{\text{硬件往返}}=\frac{\text{距离}\times 2}{\text{光速}\times 0.7}
  2. 带宽传输时间数据量除以网络带宽,如 100 Gbps 的 InfiniBand 网络。
    DB网络=D100 Gbps\displaystyle \frac{D}{B_{\text{网络}}}=\frac{D}{100\ \text{Gbps}}
  3. 总耗时两者相加,但因为没有内核拷贝和 CPU 中断,常数项远小于传统网络,所以总体延迟极低。

通信拓扑设计

有了路,还需要一张规划得当的“路网图”——这就是通信拓扑。拓扑决定了数据从哪到哪需要经过几跳、哪里可能堵车。就像城市交通规划,同样是连接 4 个工厂,可以修环形路、全互通立交,也可以混合搭配。

最简单的拓扑是环形(Ring):每块 GPU 只与相邻两块 GPU 直连,数据沿着环逐跳传递。它的优点是布线成本低、扩展性好;缺点是每跳都会增加延迟,节点越多延迟越高。全互联(Fully Connected)拓扑则让每块 GPU 都与其他所有 GPU 直连,任意两点一跳直达,延迟最低,但布线复杂度随节点数平方级增长,成本极其昂贵。

实际系统中常用的是混合拓扑:同一台服务器内用 NVLink 形成高密度互联,服务器之间用 RDMA 网络互联,形成两级甚至三级拓扑。这种设计既保证了局部高带宽,又控制了整体成本。NVIDIA DGX 系列服务器采用的就是这种“NVLink 域内全互联 + InfiniBand 域间全网状”的混合架构。

用城市基建来理解:环形拓扑就像二环路上的 4 个车站,绕一圈总能到达,但可能要绕远路;全互联就像每个站都有直达地铁,效率高但造价惊人。AI Runtime 系统在做任务调度时,会参考拓扑信息,把通信量大的任务尽量放在“跳数少”的节点组合上——这就是“拓扑感知调度”。

跳数平均=1N(N−1)∑i≠jd(i,j)\displaystyle \text{跳数}_{\text{平均}}=\frac{1}{N(N-1)}\sum_{i\neq j} d(i,j)
平均跳数衡量任意两个节点通信需要经过的中间节点数。跳数越少,通信延迟越低。
  1. 节点间距离$d(i,j)$ 表示节点 i 到节点 j 的最短路径跳数。环形拓扑中,相距最远的两个节点需要经过 N/2 跳。
    d(i,j)=min⁡(∣i−j∣, N−∣i−j∣)\displaystyle d(i,j)=\min(|i-j|,\ N-|i-j|)
  2. 求和对所有不重复的节点对计算距离并求和,一共 $N(N-1)$ 个有序对。
    ∑i≠jd(i,j)\displaystyle \sum_{i\neq j} d(i,j)
  3. 取平均除以节点对总数,得到平均跳数。平均跳数越接近 1,拓扑越好。

同步与性能优化

路网建好了,还需要交通信号灯和调度中心来保证秩序。在多设备并行计算中,“同步”(Synchronization)就是交通信号灯:它确保所有 GPU 都完成当前阶段的计算和通信后,才一起进入下一阶段,避免“跑得快的人等跑得慢的人”产生数据错乱。

最常见的同步机制是栅栏同步(Barrier),也叫全局同步点。类比来说,就像接力赛中所有选手必须等到上一棒全部交接完毕,才能起跑下一棒。在数据并行训练中,每轮梯度更新前都需要一次全局 AllReduce + Barrier 来保证所有 GPU 看到一致的梯度。但这也会带来“木桶效应”——最慢的那块 GPU 决定了整个集群的节奏。

为了缓解同步开销,现代 Runtime 系统引入了“通信计算重叠”技术:在 GPU 执行反向传播的同时,把已就绪的梯度分片先行传输,让通信和计算并行进行。就像城市规划师把红绿灯配时优化,让车流连续通过,避免“走走停停”。另外,拓扑感知调度会优先把通信关系密切的 GPU 安排在相邻位置,从源头减少跳数。

回到城市比喻:一座城市最堵的时候永远是早晚高峰——对应到计算系统,就是梯度同步时刻。优秀的交通调度中心(Runtime 系统)会通过错峰出行(通信计算重叠)、就近安排(拓扑感知)和红绿灯优化(同步机制)来缓解拥堵。理解了这些优化手段,你就理解了为什么同样是 8 块 GPU,有的系统能跑出 7.5 倍的加速比,有的却只有 4 倍——差距不在计算,而在通信。

加速比=N1+(N−1)⋅TcommTcompute\displaystyle \text{加速比}=\frac{N}{1+(N-1)\cdot \frac{T_{\text{comm}}}{T_{\text{compute}}}}
当通信时间远小于计算时间时,加速比趋近于 N(完美线性加速)。通信占比越高,加速比越低。
  1. 理想加速比N 块 GPU 的理论加速比上限为 N,即每块 GPU 贡献一份算力。
    理想=N\displaystyle \text{理想}=N
  2. 通信开销占比$(N-1)\cdot\frac{T_{\text{comm}}}{T_{\text{compute}}}$ 表示通信时间对总时间的增量影响。GPU 越多,通信影响越大。
    通信影响=(N−1)⋅TcommTcompute\displaystyle \text{通信影响}=(N-1)\cdot\frac{T_{\text{comm}}}{T_{\text{compute}}}
  3. 实际加速比理想加速比除以 1 + 通信影响,得到了考虑通信开销后的真实加速比。

AI 应用场景

大模型推理服务部署

阶段:推理部署与资源调度

解决的问题:在 GPT 类大模型推理中,模型参数常超过单张 GPU 显存,需要将模型切分到多张 GPU 上。传统方式通过 PCIe 传输层间数据,延迟高、吞吐低,导致首 token 延迟高达秒级。利用 NVLink + RDMA 的异构通信方案,张量并行和流水线并行的通信开销大幅降低,首 token 延迟可降至百毫秒级。

具体案例:某云厂商在部署 70B 参数模型时,采用 8 卡 A100 服务器 + NVLink 全互联 + 跨机 RDMA 网络。通过拓扑感知调度,将同一 Transformer 层放到同一台服务器内,利用 NVLink 完成张量并行通信;层间数据通过 RDMA 传输。最终推理吞吐提升 3.2 倍,成本降低 40%。

多机多卡训练加速

阶段:分布式训练

解决的问题:数据并行训练中,每轮迭代需要 AllReduce 同步梯度。传统 TCP 网络延迟高、CPU 占用大,严重拖慢训练速度。RDMA 的“内核旁路”特性让梯度同步效率提升一个数量级。

具体案例:某研究机构在训练千亿参数模型时,使用 128 台服务器、1024 块 GPU,通过 RoCEv2 RDMA 网络互连。相比传统以太网,AllReduce 时间从 12 秒降至 1.8 秒,训练吞吐提升 6 倍。同步栅栏 + 通信计算重叠技术进一步消除了 70% 的等待时间。

边缘-云端协同推理

阶段:混合部署与通信调度

解决的问题:边缘设备负责初步特征提取,云端负责大模型推理,两者之间需要高效的跨设备通信。PCIe DMA 本地搬运 + RDMA 远程传输的组合方案,平衡了成本和性能。

具体案例:某智能安防系统在边缘网关完成视频帧预处理,将特征向量通过 RDMA 发送至云端 GPU 集群完成行为识别。通信延迟控制在 3ms 以内,满足了实时性要求。

Python 演示

python51 行
import timeimport random class CommChannel:    """模拟一条通信通道,验证带宽与延迟对传输效率的影响"""    def __init__(self, name, bandwidth_gbps, setup_us):        self.name = name        self.bandwidth = bandwidth_gbps  # GB/s        self.setup_us = setup_us          # 启动延迟(微秒)     def transfer_time(self, data_mb):        """计算传输 data_mb 兆字节数据所需的时间(微秒)"""        transfer_us = (data_mb / 1024) / self.bandwidth * 1e6        return self.setup_us + transfer_us class GPUPair:    """模拟一对 GPU 之间的数据搬运"""    def __init__(self, channel):        self.channel = channel        self.total_bytes = 0        self.total_time_us = 0     def transfer(self, data_mb):        t = self.channel.transfer_time(data_mb)        self.total_bytes += data_mb        self.total_time_us += t        return t def simulate_training(rounds=100):    """模拟数据并行训练中每轮的梯度同步"""    nvlink  = CommChannel("NVLink",   600, 1)    pcie    = CommChannel("PCIe DMA",  32, 8)    rdma    = CommChannel("RDMA",     100, 2)     pairs = [GPUPair(nvlink), GPUPair(pcie), GPUPair(rdma)]    labels = ["NVLink 域内", "PCIe 跨设备", "RDMA 跨机"]     for _ in range(rounds):        data_mb = random.uniform(100, 500)        for pair in pairs:            pair.transfer(data_mb)     print(f"模拟 {rounds} 轮梯度同步(每轮 100~500 MB):")    for pair, label in zip(pairs, labels):        avg_us = pair.total_time_us / rounds        total_gb = pair.total_bytes / 1024        print(f"  {label:<8} 总传输 {total_gb:7.1f} GB  "              f"平均耗时 {avg_us:8.1f} μs") if __name__ == "__main__":    simulate_training(rounds=200)
目的:模拟三种通信通道在梯度同步中的耗时差异,直观展示 NVLink、PCIe、RDMA 的带宽与延迟对训练效率的影响。
  1. CommChannel.__init__定义通信通道的三要素:名字、带宽、启动延迟。
  2. transfer_time(data_mb)计算一次传输的总耗时 = 启动延迟 + 数据量/带宽。
  3. GPUPair.transfer(data_mb)记录传输的数据量和累计耗时,模拟一次梯度同步。
  4. simulate_training(rounds=100)主流程:随机生成每轮梯度数据量,在三条通道上分别传输。
  5. random.uniform(100, 500)模拟真实训练中每轮 AllReduce 的数据量波动。

常见误区

误区NVLink 带宽最高,所以所有通信都应该走 NVLink;PCIe 带宽低,能不用就不用。

正解带宽和延迟是两个独立维度。NVLink 带宽高,但只能覆盖同一台服务器内的 GPU;跨机通信必须走 RDMA 或网络。PCIe 启动延迟高,但对于大数据块传输,其带宽利用率依然可观。实际系统需要根据数据量和物理位置,动态选择最优通道——就像寄快递,同城用同城闪送(NVLink),跨省走高铁(RDMA),大宗货物用卡车(PCIe),各有各的适用范围。

为何常见:初学者只看到宣传标语上的“XX 倍带宽”,忽略了通信距离、启动开销、布线成本这些工程约束,容易陷入“参数至上”的思维。

误区DMA 传输不经过 CPU,所以传输过程中 CPU 是空闲的,不会影响系统性能。

正解DMA 确实让数据搬运不再占用 CPU 寄存器运算,但 CPU 仍需负责:分配 pinned 内存、配置 DMA 描述符、处理完成中断、管理内存生命周期。大量小数据块的 DMA 会频繁触发中断,CPU 的开销反而更大。所以实践中要做“传输合并”,把多次小传输拼成一次大传输。

为何常见:教材强调“DMA 释放 CPU”时,常常省略了初始化配置和中断处理这些隐藏开销,导致学习者高估了 DMA 的“免打扰”程度。

误区只要买了 NVLink、InfiniBand 这些高端硬件,通信速度自然就快了,Runtime 软件层不需要做什么。

正解硬件只是修好了路,软件才是交通调度员。通信计算重叠、拓扑感知调度、传输合并、同步栅栏,这些全部依赖 Runtime 软件实现。同样的硬件,NCCL 优化得好的系统和 Naive 实现的系统,性能可以差 5 倍以上。业界常说“算力靠硬件,效率靠软件”,通信领域尤为如此。

为何常见:硬件参数容易量化对比(带宽、端口数),软件优化难以直观感知,导致人们把注意力都放在了硬件升级上。

误区为了保证数据一致性,同步点越多越好,每次通信后都加栅栏。

正解同步栅栏是“全员等待”机制,每次同步都会引入空闲等待时间,让快的 GPU 等慢的 GPU。过多的同步点会严重拖慢整体吞吐。现代系统会在“安全”和“效率”之间做精细权衡,只保留必要的同步点,并通过通信计算重叠消除大部分等待时间。就像城市交通,如果每个路口都设红灯且不允许转向,交通会彻底瘫痪。

为何常见:初学并行编程时被反复强调“数据竞争”的危险,容易走向另一个极端——过度同步。

面试题

Q1. NVLink 与其他通信方式相比,最核心的优势是什么?

单选题 · easy

  • A.支持远程网络传输,覆盖范围最广
  • B.在同一服务器内提供极高带宽和低延迟的 GPU 直连← 正确答案
  • C.完全替代 CPU 与 GPU 之间的数据传输
  • D.不需要任何软件配置即可自动工作

答案:B。NVLink 是 NVIDIA 的私有高速互连协议,核心价值在于服务器内部 GPU 点对点的高带宽低延迟直连。选项 A 是 RDMA 的特点,C 和 D 都不正确——NVLink 仍需软件配置,且不能完全替代 CPU-GPU 通路的 PCIe。

Q2. 在 PCIe DMA 传输中,"pinned memory"(锁页内存)的作用是什么?

单选题 · mid

  • A.提高 CPU 的计算频率
  • B.防止内存被换出到磁盘,保证 DMA 引擎能访问← 正确答案
  • C.增加 PCIe 链路的带宽
  • D.减少 GPU 显存的占用

答案:B。DMA 传输要求源/目标物理地址在传输期间保持有效。普通页内存可能被操作系统换出到磁盘,导致 DMA 引擎找不到数据。pinned memory 把页面“钉”在物理内存中,确保地址始终有效。它不会提升 CPU 频率或 PCIe 带宽。

Q3. RDMA(远程直接内存访问)最关键的架构创新是什么?

单选题 · mid

  • A.增加了网络带宽
  • B.实现内核旁路,让网卡硬件直接读写远端内存← 正确答案
  • C.使用了更长的光纤线缆
  • D.完全替代了 NVLink

答案:B。RDMA 的核心是内核旁路(Kernel Bypass),数据从用户态到用户态直通,不需要经过操作系统内核路由和拷贝,也不需要 CPU 中断处理。这大幅降低了延迟和 CPU 占用。A、C 只是配套技术,D 错误,RDMA 解决跨机问题,NVLink 解决服务器内问题,二者互补。

Q4. 环形拓扑相比全互联拓扑的主要缺点是什么?

单选题 · hard

  • A.布线成本过高
  • B.任意两节点通信可能需要多跳,延迟随节点数增加← 正确答案
  • C.完全无法支持多 GPU 通信
  • D.需要更多交换机

答案:B。环形拓扑中,数据沿着环逐跳传递,最远节点间的通信需要经过 N/2 跳,跳数增加意味着延迟升高。全互联虽然成本高,但任意两点一跳直达。A、D 是全互联的缺点,C 与事实不符。

Q5. 以下哪些技术可以提升多 GPU 训练中的通信效率?

多选题 · mid

  • A.通信计算重叠← 正确答案
  • B.拓扑感知调度← 正确答案
  • C.传输合并← 正确答案
  • D.增加同步栅栏频率

答案:ABC。通信计算重叠让通信与计算并行执行,拓扑感知调度把通信密集的任务安排在跳数少的节点上,传输合并减少 DMA 启动次数,三项都是经典优化。增加同步栅栏频率反而会加剧等待开销,降低效率。

Q6. 数据并行训练中,同步栅栏(Barrier)的核心作用是什么?

单选题 · easy

  • A.提高 GPU 的计算频率
  • B.确保所有 GPU 完成当前阶段后再进入下一阶段← 正确答案
  • C.压缩模型的体积
  • D.自动选择最优通信路径

答案:B。同步栅栏是一个全局协调点,所有 GPU 必须全部到达才能继续,保证梯度一致性和数据正确性。它不参与频率调节、模型压缩或路径选择,那些是调度器和优化器的工作。

Q7. 关于“通信计算重叠”(Communication-Computation Overlap)的描述,正确的有哪些?

多选题 · hard

  • A.在反向传播计算的同时传输已就绪的梯度分片← 正确答案
  • B.可以减少同步栅栏的等待时间← 正确答案
  • C.需要把梯度按层切分并分时调度← 正确答案
  • D.使用 RDMA 之后就完全不再需要 CPU

答案:ABC。通信计算重叠把梯度分片后交错调度,让通信发生在计算的同时,从而隐藏通信延迟,减少同步等待。它确实需要按层切分梯度并精细调度。D 错误,RDMA 减少 CPU 参与,但 CPU 仍需负责任务调度和内存管理等。

Q8. 在训练加速比公式 $\displaystyle \frac{N}{1+(N-1)\cdot \frac{T_{\text{comm}}}{T_{\text{compute}}}}$ 中,$\frac{T_{\text{comm}}}{T_{\text{compute}}}$ 的含义是什么?

单选题 · mid

  • A.GPU 数量与带宽之比
  • B.通信时间与计算时间的比值,刻画通信对训练的拖累← 正确答案
  • C.模型参数量与数据集大小之比
  • D.CPU 与 GPU 的算力之比

答案:B。这个比值衡量每次迭代中通信耗时相对计算耗时的占比。比值越大,通信越贵,加速比越低。若通信时间为零,加速比即 N,达到理想线性扩展。A、C、D 都与公式含义无关。

Q9. 异构通信中,NVLink 主要应用场景是哪种?

单选题 · easy

  • A.跨数据中心传输
  • B.同一台服务器内 GPU 与 GPU 之间的高速通信← 正确答案
  • C.CPU 与硬盘之间通信
  • D.手机与电脑之间的通信

答案:B。NVLink 是 NVIDIA 的 GPU 间直连技术,典型应用场景是在同一台服务器内组成 GPU 高速网络,用于张量并行等通信密集任务。跨数据中心是 RDMA/网络的任务,CPU 与硬盘是存储总线,手机场景不涉及 NVLink。

Q10. 以下哪些因素会影响 PCIe DMA 传输的总耗时?

多选题 · easy

  • A.启动延迟(Setup Latency)← 正确答案
  • B.数据量大小← 正确答案
  • C.PCIe 链路带宽← 正确答案
  • D.用户界面的主题颜色

答案:ABC。$T = T_{\text{setup}} + D / B$ 中,启动延迟、数据量、带宽共同决定总耗时。主题颜色显然无关。这也提醒我们,分析性能问题时,要抓住“启动开销 + 数据量/带宽”这个基本模型,而不是被无关因素干扰。