Appearance
高性能网络与 AI 集群:RDMA / NCCL / Zero-copy(Infra 方向)
AI Infra 训练/推理平台常聊:分布式训练通信、跨机带宽。不必深到能裸写 RDMA,但要知道概念与为何快。
一、背景数量级
- 单机内(核到核):很高带宽;机间 TCP over 10/25/100GbE 或 InfiniBand (HDR 200/400Gb/s)。
- GPU 间用 NVLink(板上/nvswitch 高带宽),跨机走 PCIe→网卡(IB/RoCE)。
- 大模型训练 = 节点间 allreduce/都需高吞吐+低延迟 → NIC 直连 GPU(GPU Direct RDMA)避免内存往返。
二、为什么 TCP 对高性能不适合(RDMA 动机)
- 内核路径:数据 内核→用户 多次拷贝 + 系统调用。
- 协议开销/ack、中断处理耗 CPU。
- 每发送一次要 copy。高吞吐小消息被延迟/拷贝吞掉。
低延迟/高带宽方向:RDMA(Remote Direct Memory Access)+ 内核旁路 + 零拷贝:
- 绕过内核协议栈,网卡直接 DMA 读写对端应用内存。
- verbs API:IB(InfiniBand)或 RoCE(RDMA over Converged Ethernet)。
- 典型:NCCL(NVIDIA Collective Communication Library)多 GPU 用 NVLink/RDMA 做 allreduce/allgather/ring 通信。
三、零拷贝相关概念
- 避免多次 user↔kernel copy:mmap、sendfile、io_uring、RDMA、GPU Direct RDMA(网卡↔GPU 显存不经主机内存)。
- 拷贝次数是面试最常量化题:“sendfile 减少几次拷贝” —— 循环里答少了内核态到用户态与用户态回内核态 2 次(实际还要结合设备)。回答“关键是多做 DMA 直达、少 copy”即够方向。
四、AI 集群高频词(能解释即加分)
- NCCL:库把 k 卡建模成通信图,因拓扑做 ring/tree allreduce,自动选 NVLink/RDMA 路径。
- ring-allreduce:各卡把数据分片沿环传平均分摊带宽(对比 naive 需要 total 2(n-1)/n 满载)。
- AllReduce:所有 rank 结果=所有输入之和(训练权重同步)。AllGather/ReduceScatter 同理原语。
- NVLink/GDS:GPU 直连带宽与 GPUDirect 存储。
- 例:用
nvidia-smi topo -m看拓扑/带宽;profiler 看 NCCL 等待。
五、宿主侧 C++ 相关点
- high-perf 网络里,用户态库仍看到:内存注册(pinned memory for RDMA)、缓冲区池复用、消息组装/切分与并行。
- 事件驱动并发常用 epoll/io_uring 与协程;可衔接 concurrency/coroutine。
六、常见问
- “大模型数据并行哪块最花时间?”—— 每 step 都 allreduce 权重;带宽/延迟决定;分片+重叠通信计算 是老话题。
- “RDMA 要不要进内核?”—— 是“绕过内核 CPU 参与拷贝”,仍是设备 DMA,只是免内核拷贝与协议过程。
- “怎么压测/定位慢?”—— ping-pong/带宽 iperf、perf 看中断、NCCL 计时/调试、看拓扑。
七、自评一句
把它放到“了解级”:讲得清为什么 TCP 拷贝慢、RDMA/NVLink/NCCL four 词、训练权重同步 is allreduce。真要专门深挖可开专题(如 NCCL 算法),需时说一声。