1. 先回答问题:同样是“发送数据”,为什么需要五层接口

一张 GPU 把局部 tensor 交给其他 GPU 时,应用检查的是所有 rank 是否属于同一个 communicator、all-reduce 是否完成、下一层能否开始。NIC 不理解 tensor、expert 或模型版本,它只看到已授权的 DMA 操作和可转发报文。运行时还要在两者之间管理内存所有权、流控、拥塞反馈和故障恢复。

因此,网络栈要同时保留两种视角。语义视角描述 collective、请求、KV block、deadline 和版本;传输视角描述 buffer、队列、包、路径、credit 与 completion。前者不能被交换机自动推断,后者也不能由一个调度器的“优先级”自动实现。正确设计是在两者之间传递足够但不过度暴露的 metadata。

2. 分层地图:MPI、NCCL、RDMA、DPDK 分别承诺什么

主要对象给调用者的语义不负责的事情
MPIprocess、rank、communicator、message进程组内的点对点与 collective 语义,常用于科学计算与控制/编排层不会天然理解 GPU kernel、KV 生命周期或数据中心 QoS
NCCLGPU、stream、tensor、communicator面向 GPU 的 all-reduce、all-gather、reduce-scatter、all-to-all 与 P2P不替代全局请求路由、租户策略或存储元数据
RDMA / verbsmemory region、queue pair、WQE、CQ对已注册内存执行可完成、可受权限约束的远端数据移动不会定义“这段字节属于哪个模型 epoch”
DPDKport、queue、mbuf、ring、lcore用户态批量收发、轮询、flow steering 与自定义主机 packet pipeline不自动构成 RDMA transport,也不直接替代 NCCL collective
可编程 NIC / switchpacket、flow、queue、counter、有限状态转发、分类、限速、遥测、局部拥塞反应,以及受限的在线处理通常不能安全地理解任意模型算子、全局事务或复杂 Agent 意图

这里的“层”不是严格的一条垂直协议栈。NCCL 可以利用 RDMA transport;MPI 实现也可以调用 GPU-aware 通信路径;DPDK 可以承载控制服务、采集遥测或构建专用 gateway。关键是每层的承诺边界要清楚:调用者依赖什么,失败时谁报告,哪些状态可见,哪些动作可以重试。

3. 消息语义:同一批字节在不同层里不是同一件事

MPI 的发送/接收通常由 communicator、rank、tag 和顺序规则描述;NCCL collective 要求所有参与 rank 以相容的顺序进入同一组操作;RDMA write 关注远端地址、权限、完成队列与 buffer 生命周期;DPDK 收到的只是一个或一批 mbuf。它们之间不能简单用“发出去了”四个字概括。

例如,MoE dispatch 的正确性需要 token 的目标 expert、offset 和 combine 顺序正确。一个 RDMA write 已完成,只说明远端 DMA 的字节操作到达了约定的内存区域;它不说明接收端已验证 token count,更不说明下一层 grouped GEMM 可以读取它。相反,NCCL all-to-all 返回或事件完成也不说明整个用户请求已完成,因为后面还有 expert compute、combine 和 decode。

传输完成 ≠ 语义提交 transport_done(buffer) : NIC/DMA 层已报告完成 collective_done(group) : 参与 rank 的通信依赖已满足 object_committed(id, epoch, generation) : runtime 确认对象版本可见 request_done(request_id) : 业务流程已产生可交付结果

把这四个事件分别记录,是隔离性能问题和正确性问题的基础。否则一个“网络超时”可能其实是 communicator 不一致、目标没有 credit、控制面没有提交元数据,或者 Agent 的工具调用仍未结束。

4. 一次 GPU 到 GPU 的数据路径:从 tensor 到 packet,再到 completion

以跨节点 TP 或 MoE 通信为例,运行时先确定 communicator 与目标 rank;GPU 侧 kernel 或通信库准备局部 tensor、计数和 offset;NIC 通过 DMA 读取已授权的 GPU memory,并将数据送往网络。远端 NIC 写入接收 buffer,完成队列或 GPU/CPU 可见事件通知运行时。运行时随后按调用语义解锁下一个 kernel。

NVIDIA GPUDirect RDMA 的 Linux device driver model 图
原始/官方结构图:NVIDIA GPUDirect RDMA, Figure 1: “GPUDirect RDMA within the Linux Device Driver Model”。GPU 与第三方设备可经 PCIe 直接 DMA 的关系是本节第 3–6 步的硬件基础;图没有描绘 MPI、NCCL collective 算法、交换 fabric 或 runtime object commit,因此不能把它当成端到端 AI 通信栈图。

有些实现会把 pack、collective 与后续计算重叠;有些使用分层 collective,先在 scale-up 域内合并,再跨 NIC 交换代表分片。无论实现怎样变化,buffer 在 DMA 结束前不得被复用,接收侧在对象提交前不得让下游读取未完整的数据。这是性能优化不可跨越的生命周期边界。

5. MPI 与 NCCL:不要把“训练通信”缩减成一个 all-reduce

训练的 data parallel 常用大规模梯度归约,tensor parallel 在模型层之间频繁做较小的归约或聚合,MoE expert parallel 需要两次 all-to-all,pipeline parallel 主要传点对点激活。它们调用的原语可能相同,但时间形态不同:梯度同步可以容忍较大的批量和一定的延迟;decode 的逐 token TP 则对启动开销与尾延迟敏感;MoE 同时受 payload、expert 不均衡与 incast 影响。

MPI 适合许多训练或模拟程序的进程编排、控制和数据分区表达,也可由实现选择 GPU-aware 路径。NCCL 更贴近 GPU tensor 与 CUDA stream 的执行依赖。两者可以同时出现在生产系统中,但资源成员关系、GPU collective 和服务请求调度分别由哪一层负责,必须写清楚。

all-reduce:每个 rank 得到归约结果 all-gather:每个 rank 得到所有分片 reduce-scatter:归约后每个 rank 留一段 all-to-all:每个 rank 向每个目标发送不同分片 总字节数相近,不代表延迟、热点和最优拓扑相同。

6. RDMA 是数据移动基座,不是业务一致性协议

RDMA 让端点通过已建立的队列和已注册的内存直接移动数据,减少传统 host copy 与内核路径介入。CPU 仍然负责控制和异常处理;数据面工作更多地交给 DMA、NIC 和队列系统,权限、资源注册、completion 与拥塞处理也随之成为显式对象。

AI 服务里最容易被误解的路径是 KV transfer。prefill worker 可以把完成的 KV block 分段发送给 decode worker,但接收端必须同时确认 request_idmodel_epoch、block generation、长度和完成状态。RDMA 完成之后还需要 runtime commit;模型热更新、请求取消或目标重启时,旧 block 不能因为“字节没坏”而被复用。

可见条件示例:
KV block is readable only when
  transport_completion == true
  AND request_id matches
  AND model_epoch matches
  AND generation matches
  AND destination has committed the block table

失败后重试也必须受 deadline、credit 和幂等键约束。

7. DPDK 在 AI 系统里到底放在哪里

DPDK 让应用在用户态以 poll-mode、批量 mbuf、per-core queue 和 lockless ring 方式处理 packet。它适合需要控制 packet path 的组件,例如高吞吐 ingress/egress gateway、专用 L4/L7 proxy、旁路 telemetry collector、负载发生器、协议实验平台或把请求元数据送进硬件流表的 control agent。它的价值是减少通用网络栈的调度与复制成本,并让开发者直接控制队列亲和性、批量大小和 CPU core。

DPDK Core Components Architecture 图
原始/官方结构图:DPDK Programmer’s Guide 2.0, Figure 1: “Core Components Architecture”。图对应用户态 EAL、hugepage memory、mempool、ring、PMD 与应用之间的基础组件关系;它是较早版本的 DPDK 架构基线,不描述 GPU/NCCL 数据路径或当前 NIC 的全部能力。本页第 17 节单独处理 2026 的 AI runtime / network 边界。

但 DPDK 不应被塞进任何“看起来很快”的位置。一个普通 HTTP/gRPC 模型网关若主要耗在 TLS、鉴权、JSON、排队和模型 router,上 DPDK 不会自动改善 TTFT;它甚至可能引入 busy polling、CPU 核独占、NUMA 亲和性和运维复杂度。GPU-NIC collective 的主数据面若已由通信库和 RDMA 管理,另写一套 DPDK packet sender 通常不会替换它,反而会破坏 completion、拥塞和 GPU memory 生命周期。

DPDK 位置可能合理的职责必须避免的误用
API / ingress gateway连接分流、粗粒度限速、服务链转发、低开销包级计数把 LLM 排队、鉴权和 token 调度误当 packet-processing 问题
control/telemetry agent采集队列、流、时间戳,给 scheduler 反馈网络压力把采样 counters 当作精确的 request-level 因果证据
专用数据服务缓存/存储网关、私有协议实验、批量数据摄取绕过对象版本、ACL、backpressure 与故障恢复
测试与故障注入重放 burst、构造 incast、验证 ECN/PFC/限速策略用人工均匀流量替代真实 MoE/KV trace

8. 可编程 NIC 与交换机:可卸载什么,绝不能假装卸载什么

端点与网络设备很擅长做局部、确定、可界定资源的工作:packet parsing、flow classification、转发、包级计数、时间戳、队列选择、限速、ECN 标记、隧道封装、接收端 steering,以及在明确约束下做分块聚合或协议辅助。把这类能力放近数据路径,可以减少 host 干预、缩短反馈环路、增强可观测性。

它们通常不应承担开放式业务逻辑。交换机看不到“这个 token 是否来自过期模型”“这个 Agent tool 是否有副作用”“是否应为了租户公平抢占一个长 prefill”,也不该维护无限大或任意复杂的 per-request 状态。即使实现 in-network aggregation,也要先固定 operands、顺序/精度、故障语义和 fallback;否则一旦设备重置、路径重路由或成员变化,结果正确性会变得无法证明。

适合硬件路径的条件: bounded state + explicit key + local decision + deterministic fallback 仍应留在 runtime/control plane 的条件: cross-request policy + model/KV version + tenant accounting + workflow semantics + non-idempotent side effects

边界清楚后,卸载才有办法验证。硬件负责快速执行明确动作;runtime 保持对象所有权、全局策略和异常恢复。两者通过 flow id、service class、deadline bucket、tenant class 或 transfer generation 关联,数据面无需猜测模型内部状态。

9. 训练数据面:collective、checkpoint 与网络隔离必须同时设计

训练的典型关键路径是前向/反向计算与梯度同步的交叠。optimizer、gradient shard、checkpoint 和数据读取又会形成不同的 I/O 与网络压力。把所有流量放进同一个高优先级队列,会让周期性 checkpoint 或重启恢复挤掉 latency-sensitive collective;反过来,完全压低后台流量又会导致恢复时间不可接受。

部署时应至少区分:GPU collective、模型/数据装载、checkpoint/存储、控制与管理流量。每一类都要定义目标,如带宽下限、P99、最大 burst、可抢占性和恢复优先级。MPI 或训练框架层负责集体操作的逻辑成员关系;NCCL/通信运行时选择算法与 stream;RDMA/NIC/网络设备实现传输与流控;scheduler 负责在作业、租户与故障域之间做资源预算。

可观测性也要按这条边界组织。单看 GPU utilization 看不出某个 all-reduce 被存储流量压住;单看链路利用率也看不出是梯度、KV 还是 checkpoint 占满了队列。要让同一个 trace 可以从训练 step 到 communicator,再到 NIC queue、交换端口和速率策略。

10. 推理数据面:TP、MoE、KV 传输的网络形态不同

推理不是训练通信的缩小版。TP 在 decode 时几乎每层发生,消息较小但同步频繁,宜尽量留在低延迟 scale-up 域;MoE 的 all-to-all 一方面需要大双向 bisection bandwidth,另一方面受 expert 热点决定,均匀 microbenchmark 往往失真;P/D 分离则把一次大段 KV transfer 放在 prefill 和 decode 之间,最怕长 prompt 同时结束时向同一 decode pool incast。

所以同一台 NIC 上的流量也要有不同 policy。TP collective 可能需要最低延迟和快速失败;MoE traffic 需要按 token histogram 识别热点并控制排队;KV transfer 需要接收端 credit 与对象提交;缓存预取和后台迁移应该在 SLO 紧张时让路。把“GPU 网络带宽”作为一个全局数字会掩盖这些差异。

TTFT = queue_prefill + prefill + KV_transfer + queue_decode + first_decode TPOT = decode_compute + per-layer_collective + queueing + straggler 网络优化是否有用,取决于它落在 TTFT/TPOT 的哪一项, 以及是否把另一个项的尾延迟放大。

11. Agentic serving:网络控制面要看到“程序”,但不应把程序塞进网络

Agent 请求会经历 planner、工具调用、检索、代码执行、回退和 verifier 等多个节点。一个节点等待工具时,GPU 可能空闲而 KV 仍占内存;工具结果返回后,scheduler 需要恢复正确的模型、prefix、KV tier 和优先级。控制面因此应按程序节点记账,每个节点携带 deadline、tenant、workflow id、node id、cache reference 和副作用标记,而不能只按 HTTP request 管理。

网络可以帮助控制面:gateway 提供 admission control,NIC/交换机提供 flow/queue telemetry,DPU 可执行隔离和限速,数据服务可报告 KV transfer 的 completion 与 congestion。可是调度器仍必须决定一个慢工具是否应换出 KV、一个 verifier 是否应抢占长 prefill、一次失败是否允许重试。那些决定依赖跨节点状态和业务语义,不应交给 packet pipeline。

这套分工让网络成为一个可控资源,而不是 opaque 的“另一个等待时间”。关于程序级调度、工具等待和 KV 保留策略,请配合阅读 09 Agentic serving

12. 性能模型:吞吐、延迟与 CPU 周期三者不能互相代替

DPDK 常被用来降低 packet processing 的每包开销,RDMA 常被用来减少 host data copy,NCCL 常被用来提高 GPU collective 效率;这些都不是端到端加速的同义词。一个系统的时延包含排队、批量等待、NUMA/PCIe 路径、DMA、序列化、网络 hop、重传、completion 轮询,以及下一阶段的依赖等待。

T_end_to_end = T_admission + T_queue + T_compute + T_transport + T_completion + T_next_dependency B_effective = useful_bytes / elapsed_time CPU_cost_per_packet = polling + parsing + batching + cache/NUMA effects 任何优化都要同时报告 P50/P95/P99、有效带宽、GPU 空洞、 CPU core 占用与业务成功 goodput。

例如 busy polling 可能把平均 packet latency 降低,却长期占满一个或多个 core;更大的 batch 可能提升有效带宽,却把小请求的 tail 拉高;更激进的 in-network aggregation 可能减少网络字节,却增加精度、成员重配置和失败恢复成本。评估必须把这些代价放在同一 SLO 与预算里。

13. 多租户隔离与 QoS:优先级标签必须贯穿端到端

AI 数据中心在高峰时常遇到多类流量同时 burst:EP all-to-all、KV transfer、训练 checkpoint、模型加载和租户 API 流量共用队列,即使链路没有永久失效,也会产生严重拥塞。仅在服务端设置“高优先级”不够;NIC、ToR 与 spine 还需要一致的 class、rate 和 buffer policy。

一个可审计的 QoS 设计至少包含:流量分类的来源、每类可用带宽/队列/credit、拥塞时的降级顺序、租户上限、burst 规则、控制面例外以及观测指标。不要把用户 request id 原样塞进所有包头;应使用可控且隐私可接受的 service class/flow key,把精确的业务映射留在 trusted control plane。

  • 硬实时近似类:decode 的逐层通信、明确 deadline 的 KV completion;追求低尾延迟。
  • 高吞吐类:prefill、MoE 大 payload、训练梯度;追求可预测的有效带宽。
  • 后台类:checkpoint、缓存迁移、数据导入、镜像拉取;可让路且需限速。
  • 控制类:membership、健康检查、元数据提交;字节少但不能与数据面拥塞一起消失。

14. 可观测性:从一个慢 token 追到一个慢队列

可观测系统应让应用、运行时、GPU、NIC 和网络共享可关联的时间轴。最小关联键可以是 request_idworkflow_idtransfer_idcommunicator_epochmodel_epoch 的组合。它们不必全部进入数据包,但 control plane 必须能把各层的局部事件连接起来。

应记录什么可以回答的问题
服务 / AgentTTFT、TPOT、workflow deadline、取消/重试、工具等待用户为什么觉得慢,是否是模型之前就排队
运行时collective 类型、bytes、rank group、算法、KV commit慢的是 TP、EP、P/D 还是调度选择
GPUstream wait、kernel duration、SM/HBM 指标、pack/unpack通信是否真的与计算重叠,谁是 straggler
NIC / DPUqueue depth、CQ delay、retry、DMA fault、ECN/CNP/PFC是端点排队、拥塞还是设备异常
交换网络port utilization、buffer watermark、drop/mark、路径不均衡burst 从哪里进入,哪个 rail 或路径形成热点

平均利用率会掩盖同步系统的尾部行为:collective 总时间由最慢 rank 决定,KV 的 P99 由最拥塞的瞬间决定。仪表盘必须能下钻到一次具体 request 或 step 的尾部事件。

15. 故障与恢复:每一层都需要自己的超时,但超时不能各自乱重试

NIC reset、链路 flap、远端 worker 重启、queue overflow、communicator 成员变化、模型 epoch 更新和 Agent 工具超时都会表现为“下游没有返回”。如果每层立刻独立重试,系统可能把一次短暂拥塞放大为重复流量、重复工具副作用或污染的 KV 可见性。

因此,控制面应给每个可恢复对象分配 epoch、generation、deadline 和 owner。端点传输层报告它知道的失败;运行时判断 collective 是否可重建、KV 是否可重新计算、请求是否应换 worker;Agent 层才决定工具动作能否重放。对有副作用的工具或写操作,网络层的“至少一次送达”绝不等价于业务层的“可以重试”。

失败处理顺序示例:
detect → stop new posts → preserve evidence → classify scope
→ invalidate affected epoch/generation → retry only idempotent units
→ rebuild communicator / reroute / recompute → expose committed result

不能证明可重试的对象,应 fail closed,而不是静默重复。

16. 一套可落地的责任划分

  1. 模型 runtime:拥有 tensor/KV 语义、communicator 生命周期、stream 依赖和对象提交条件。
  2. 服务 scheduler:拥有请求、租户、deadline、Agent program、admission 与 placement 决策。
  3. 通信库与端点:拥有 collective algorithm、DMA buffer、queue、completion、端点重试与 health signal。
  4. 网络控制面:拥有拓扑、路由、service class、速率/拥塞策略、设备配置与容量模型。
  5. DPDK / gateway / DPU:只在明确的 packet/control hotspot 上承担转发、采集、限速、隔离或协议辅助,并保留 host fallback。
  6. 可观测系统:保存跨层关联与容量证据,避免让调优依赖猜测。

这份责任划分同时定义了故障边界。每个动作都应有唯一 owner,每个跨层状态都要有版本和可观察的提交点。满足这些条件后,增加 DPDK、DPU 或可编程交换机才是受控扩展;否则只是把关键路径转移到更难调试的位置。

17. 2026 状态:网络正在更贴近 AI runtime,但还不是统一替代栈

截至 2026,AI cluster 的公开方向很清楚:更强的 scale-up 互联、更高带宽的 scale-out Ethernet/IB、GPU/NIC 更直接的数据路径、DPU/SmartNIC 卸载、面向 AI 流量的可靠传输与拥塞控制、以及以 telemetry 驱动的 runtime placement。网络不再只是“尽量不成为瓶颈”的背景设施,而是模型并行、KV 共享和多租户 SLO 的显式输入。

可编程设备仍不能随意互换。NIC firmware、PCIe/IOMMU 拓扑、GPU driver、通信库、交换 ASIC、拥塞策略、协议版本和运维工具必须成组验证。在单机架、单模型、均匀 payload 下成立的优化,换到多 rail、MoE 热点、混合训练推理或 Agent burst 后可能失效。2026 年较稳妥的做法是固定 workload 和正确性条件,验证局部 offload,再用 failure injection 与 P99 决定是否扩大范围。

18. 评审与上线检查清单

  • 为每条通信路径写清楚对象、语义完成条件、buffer owner、epoch/generation 和超时 owner。
  • 画出真实 GPU、PCIe root complex、NIC、DPU、交换机与 rail 拓扑,不用设备编号推断亲和性。
  • 分别 benchmark TP 小消息、EP 非均匀 all-to-all、KV burst、checkpoint 和混合流量的 P50/P95/P99。
  • 使用真实 MoE token histogram、Agent workflow 和上下文长度分布,而不是只有均匀流量。
  • 对 DPDK busy polling、NUMA、core pinning、队列数和 backpressure 做容量预算。
  • 验证 QoS 标签从服务入口到 NIC/交换端口是否一致,并测试拥塞与 background traffic。
  • 注入 NIC reset、链路抖动、worker 重启、epoch 切换、CQ 堆积、目标 OOM 和请求取消。
  • 保留 host/runtime fallback;没有可解释回滚路径的硬件卸载不应成为生产关键依赖。

19. 公众号选题映射:网络栏目和 2025 文章如何进入这条主线

以下条目只保留用户提供的栏目名称,以及公开存档中的标题、日期和链接。本页没有复制任何原文、图片或图表;栏目名称用于把学习入口与本页的分层模型对应起来,而不把标题当作标准或实现保证。

索引入口 / 原文标题对应本页问题使用边界
网络架构师如何把业务目标、拓扑、容量、队列和故障域放进同一张设计图。用户提供的公众号总索引分支;标题级导航。
可编程网络何时把分类、遥测、限速或局部处理下沉到 NIC/交换设备,何时必须留在 runtime。用户提供的公众号总索引分支;标题级导航。
MPI进程/communicator 语义如何与 GPU collective、控制面和故障恢复衔接。用户提供的公众号总索引分支;标题级导航。
DPDK用户态 packet pipeline 在 gateway、telemetry、测试和专用数据服务中的正确边界。用户提供的公众号总索引分支;标题级导航。
网络设备测试及运维如何把 benchmark、故障注入、队列遥测和 roll-back 变成上线条件。用户提供的公众号总索引分支;标题级导航。
同构视角下的异构计算:谈谈 AI 的软硬件交付界面,GPGPU or DSA
2025-07-19 · 2247494485:1
为何交付接口、对象所有权与 fallback 比“某芯片能否卸载”更关键。第三方公开存档;只用作标题级学习索引。
谈谈 AI 时代的 CIPU 2.0
2025-04-10 · 2247493847:1
端点数据路径、控制面、可靠性和隔离应如何划分责任。第三方公开存档;只用作标题级学习索引。

20. Mainline 连接:把网络知识放回推理全链路

通信与拓扑

07 通信与拓扑:collective、NVLink、RDMA 与 TP/EP/PD 放置。

Agent 调度

09 Agentic serving:工具等待、程序级优先级与 KV 状态。

训练与推理集群

18 训练与推理共用集群:共享资源、QoS 与故障域。

文章索引

相关文章索引:按模型、GPU、网络、存储和基础设施继续浏览。

来源边界

来源与证据:区分官方资料、论文与标题级索引。

主线入口

Mainline 总目录:从架构、算子、缓存、调度到数据中心。

21. 资料边界与延伸来源

来源本页用途
MPI Forum documentsMPI 语义与术语的规范入口;具体实现行为仍应看实现文档。
NCCL User GuideGPU collective、communicator、stream 与调试接口的官方入口。
NVIDIA GPUDirect RDMA documentationGPU 与第三方设备直接数据路径及平台限制。
NVIDIA GPUDirect RDMA, Figure 1本页 GPU/第三方设备直接 DMA 图的原始驱动模型出处。
DPDK Guidesmbuf、queue、poll-mode 与应用开发的官方入口。
DPDK Programmer’s Guide 2.0, Figure 1用户态 EAL、memory、ring、mempool 与 PMD 的基础组件图;作为历史架构基线。
Ultra Ethernet Consortium specification history2026 公开规范仍持续演进的版本入口。

本页的系统解释不宣称任一实现、NIC、DPU 或可编程交换机同时提供全部能力。部署时应以目标硬件与软件版本的 release note、支持矩阵、拓扑发现和本地 failure-injection 结果为最终依据。