1. 先把名称和责任分开

NIC 是网络接口,负责将主机或 GPU 可访问的缓冲区与以太网、RoCE 或其他互连之间的数据包收发相连。DPU 通常指带有可编程核、内存、DMA 引擎和网络数据路径的处理单元,适合在主机之外实施虚拟交换、加密、遥测、存储协议或租户策略。SmartNIC 常指可编程 NIC;不同厂商会把 DPU 与 SmartNIC 的边界划得不同。

CIPU 不是统一行业标准名。本页把它视为某个实现或产品叙事中“计算与基础设施处理单元”的标签,而不假定它等于所有 DPU、NIC 或交换芯片。判断一项功能应问四个问题:它在什么内存域运行、谁拥有队列、谁决定访问权限、失败后由谁恢复,而不是只看芯片名称。

核心原则:卸载改变的是执行地点和责任边界,不会消灭控制面、状态机、内存生命周期或故障处理。

2. CPU、GPU、NIC、DPU 的最小责任模型

组件擅长的工作不应默认承担的工作推理集群中的例子
CPU控制面、调度、异常恢复、元数据、连接建立逐 token 的高带宽 copy 和大规模矩阵计算分配请求、创建 communicator、管理 KV 元数据
GPUGEMM、attention、token packing、可并行的协议准备复杂的通用控制逻辑和长期阻塞等待MoE dispatch、TP collective 的设备端准备
NICDMA、发送/接收队列、RDMA 传输、链路级计数器替代应用一致性语义GPU Direct RDMA、RoCE 流量收发
DPU / 可编程数据路径租户隔离、虚拟化、inline 服务、数据路径遥测、局部卸载无边界地接管模型状态和全局调度网络策略、存储路径、队列整形、遥测聚合

最健康的分工是:CPU 保持“谁可以做什么”的最终权威,GPU 保持计算对象的语义,NIC/DPU 加速重复且可验证的数据路径。把路由器、缓存目录和所有重试逻辑都塞进 DPU,往往会得到一个更难调试、版本边界更模糊的分布式系统。

3. 一次 GPU 到远端 GPU 的数据路径

NVIDIA GB300 及 ConnectX-8 Data Direct Interface 的 PCIe 拓扑图
原始/官方结构图:NVIDIA DirectNIC documentation, “GB300 with CX-8 PCIe Topology”。图给出 Grace root port、CX8 PCIe switch、GPU、CX8 NIC 与 Data Direct Interface 的 PCIe 亲和性,适合说明为什么 GPU-NIC pairing 不能只看编号;它是 Grace Blackwell/CX8 平台的特定参考拓扑,不是所有 DPU、NIC 或所谓 CIPU 的通用内部结构。

这里至少有三条不同的时间线:应用提交、DMA 完成、远端可安全消费。把“NIC 发完了”误当成“远端模型状态已提交”会引入并发错误。尤其是 PD 分离、远端 KV 或 MoE all-to-all,必须把 completion、版本和缓冲区归还做成明确状态机。

4. DMA、IOMMU 与内存注册:零拷贝不等于零成本

DMA 让设备读写内存,而 IOMMU 将设备看到的 I/O 虚拟地址翻译为受控的物理页面。Linux DMA API 明确区分 CPU 虚拟地址、物理地址与 DMA 地址;驱动不能把它们当作可互换的整数。若地址不可直接映射,系统可能需要 IOMMU 映射或 bounce buffer,这会改变延迟和带宽。

注册一段 GPU 或主机内存通常意味着固定页面、建立 DMA 映射、授予设备访问,再在完成后撤销或复用。这些步骤会消耗 CPU、页表/TLB 资源和驱动状态。长寿命的 buffer pool 可以摊薄注册成本,但也增加泄漏、越权 DMA 和回收竞争风险。

T_data_path = T_enqueue + T_map_or_reuse + T_dma + T_fabric + T_remote_complete zero-copy = 少一次显式 copy;不表示没有映射、队列、缓存一致性或完成事件。

5. Queue pair 生命周期:从 WQE 到 completion

RDMA 或高性能 NIC 的发送方把 work queue element(WQE)写入发送队列,门铃通知 NIC;NIC 读取描述符和 payload,随后产生网络操作。接收方需要事先准备可写入的缓冲区或接受远端写入的已授权区域。完成队列(CQ)报告传输完成、错误或资源事件,但 CQ 到达不自动表达业务层“状态已经可以引用”。

  1. 控制面创建 queue、key、buffer 和租户/请求归属。
  2. 生产者写 descriptor,再以正确的内存顺序敲门铃。
  3. NIC 进行 DMA 与包化;DPU 可在此处施加策略或 inline 处理。
  4. 接收端完成校验、写入、通知;运行时核对 request id、epoch、block version。
  5. 消费者确认可用后,才归还 credit 和回收缓冲区。

常见 bug 是过早复用 buffer:旧 DMA 仍在飞行,新请求已经拿到同一地址。buffer id、generation、completion 和 reclamation 必须构成可审计的生命周期;单纯增加锁既解释不了所有权,也未必覆盖设备异步完成。

6. 可靠传输:可靠性在哪一层实现

“可靠”至少包含顺序、丢失检测、重传、重复抑制、拥塞反应和错误上报。RoCE、IB 或其他传输协议可以提供一部分语义,但应用仍需定义请求取消、超时、进程重启、版本失配和多路径重试时的最终行为。网络层成功传送一个 block,不代表模型运行时仍认可该 block。

对于 KV 迁移,最小协议应该携带 request_id、模型版本、层范围、block id、generation、长度、校验信息与提交状态。接收方在所有必要块到齐且 epoch 匹配后才标为 COMMITTED;取消或失败路径必须让双方能幂等释放,不把半完成页暴露给 decode。

7. 拥塞控制:把平均带宽与尾延迟分开

AI 集群常同时承载 TP collective、EP all-to-all、KV 迁移、checkpoint、模型加载和存储读。即使平均利用率不高,多个 producer 同时向一个 NIC、ToR 或远端 GPU pool 发送,也会形成 incast。此时排队、ECN 标记、PFC pause、重传或速率收敛会直接放大 TTFT 与 token 间隔。

可靠传输要在共享 fabric 上为关键工作维持可预测的完成时间,持续打满所有包并不能保证这一点。应区分 decode 关键小消息、首 token 前的 KV completion、批量预取和后台 checkpoint,给每类流量设 credit、速率与可观测的优先级策略。

P99_request ≠ average_link_utilization P99_request = queueing + protocol_recovery + slowest_dependency + runtime_backpressure

8. 遥测卸载:不能只看网卡带宽

DPU/NIC 接近数据路径,适合采集每队列字节数、completion 延迟、ECN/CNP、重试、drop、PFC、队列水位和流量类别。它们可以把原始计数聚合成低开销遥测,但“哪个模型请求受影响”仍要由运行时 trace id 连接起来。没有跨层关联,控制面只能看到“网络很忙”,却不能知道是哪一个 EP group 或 KV admission decision 造成了热点。

建议将每个关键传输带上不可变的逻辑标识:模型版本、请求/批次、parallel group、源/目的地、payload 类别与 generation。设备侧汇总负责效率,服务侧关联负责解释。两者不可互相取代。

9. Collective 卸载:可加速局部操作,不能绕过算法依赖

all-reduce、reduce-scatter、all-gather 和 all-to-all 各自有不同瓶颈。网卡、DPU 或交换网络可以帮助 packetization、分片、协议进展、数据归约或调度,但模型层仍要决定 tensor 分片、数值类型、group 成员和何时依赖结果。一个卸载路径若不清楚“何时可见、何时可取消、谁处理失败”,吞吐提升会以正确性风险换来。

TP 高度同步,优先靠低延迟 scale-up 域;EP 的 all-to-all 对流量偏斜更敏感;PD 的 KV 迁移更像带版本的大对象点对点传输。不要把同一套 collective offload 参数用于三者。相关的并行放置与通信图可先回看 06 并行与放置07 通信与拓扑

10. 隔离:IOMMU、队列、密钥与租户边界

多租户环境中,DMA 权限不应由“知道地址”决定。IOMMU domain、memory registration key、虚拟队列、rate limit 和网络分段共同限制设备能够访问的内存及其可使用的带宽。DPU 可以承载一部分策略,但密钥轮转、模型版本、租户删除和审计仍要由控制面协调。

隔离设计应回答:请求结束时如何撤销访问?DPU 重启后旧 key 是否失效?同一 GPU 上的不同模型是否能误用彼此 KV 页?故障恢复期间是否先恢复权限、后恢复数据?这些问题决定系统是否能安全复用昂贵的 GPU memory。

11. 故障、重试与降级

数据路径错误不只是一种“网络超时”。可能是 NIC reset、DPU firmware restart、队列耗尽、IOMMU fault、交换机拥塞、远端 GPU OOM、模型 epoch 切换或请求已取消。每个故障类别都需要明确谁检测、谁通知、是否可重试以及哪些 buffer 必须隔离。

状态建议:ALLOCATED → POSTED → IN_FLIGHT → REMOTE_READY → COMMITTED → RELEASED

失败路径:任何状态 → ABORTED → 记录原因 → 幂等清理 → credit 归还
禁止:IN_FLIGHT 的页直接重新分配给新请求。

降级策略应优先保正确性:例如在远端 KV 传输不可信时重新 prefill,或把请求路由到本地完整 cache 的副本。盲目重放 RDMA 写入可能覆盖已由新 generation 接管的内存。

12. 性能账本:卸载何时值得

卸载的收益通常来自减少 CPU participation、减少 copy、将协议进展与 GPU 计算重叠,或把多租户策略从 host datapath 移走;成本则包括设备内存、队列深度、序列化、控制面复杂度、调试难度和新故障域。应以端到端请求指标判断,而非只看单链路 GB/s。

场景优先观察容易误判为卸载收益的现象
TP collective每层 P50/P99、GPU 空洞、SM 竞争通信重叠了,但 GEMM 被抢占后总时延更高
EP all-to-allper-expert token histogram、NIC 队列、尾 rank均匀 microbenchmark 很快,真实 router trace 很慢
KV migrationcommit 时延、credit、remote HBM 水位带宽够,但多个长 prompt 同时完成导致 incast
存储卸载GPU 等待 I/O、CPU 核占用、恢复路径顺序读变快,但 metadata 或小 I/O 反而拖慢

13. 可观测性:一次异常要能跨五层定位

  • 运行时:请求生命周期、TTFT/TBT、cache 命中、路由决策、取消原因。
  • GPU:kernel 时间线、SM occupancy、HBM 吞吐、stream dependency。
  • 通信库:collective 类型、bytes、algorithm、group、P50/P99。
  • NIC/DPU:WQE/CQ 延迟、重试、DMA/IOMMU fault、队列水位、rate limit。
  • 网络:端口利用率、ECN/PFC、丢包、路径热点、链路 flap。

把这些事件统一到 monotonic timestamp 和 trace id,才能区分“模型变慢”是专家不均衡、GPU kernel、队列拥塞,还是某次权限/重试异常。数据中心 KV 的调度与缓存状态请配合阅读 08 数据中心 KV 与 PD

14. 2026 状态:趋势、而非营销口号

截至 2026,GPU 直接访问网络设备内存路径、可编程 NIC/DPU、GPU 发起的网络操作、以太网 AI transport 与面向多租户的 inline 服务都在快速发展。它们共同推动一个方向:让 host CPU 不再成为每次高吞吐数据移动的必经点,同时保留可验证的隔离和恢复边界。

但成熟度不能只由“支持某功能”判断。UEC 的公开 specification history 已列出 2026 年 1 月的 1.0.2 release notes;这说明标准仍在演进,不等于任一网卡、交换机、驱动、通信库和框架已经形成可互换的生产闭环。部署前仍要验证 NIC firmware、PCIe/IOMMU 拓扑、内核驱动、collective runtime 与故障注入结果。

2026 年的稳妥做法是在明确热点上做封闭试验:固定一个 payload 类型和一条已知拓扑,测量 P99,并准备可回滚的失败处理。局部收益得到验证后,再扩展到跨机架或多租户集群。训练与推理共享资源时,还要接入 18 训练与推理共用集群 的隔离与优先级策略。

15. 公众号选题映射:标题是线索,技术解释在本页

以下三条只保留公开标题、日期和链接,用于定位主题;本页没有复制其正文、图片、表格或长段落。CIPU、eRDMA 与软硬件接口的具体事实应交叉核对一手资料与实现文档。

公开文章本页对应的学习问题证据边界
谈谈 AI 时代的 CIPU 2.0
2025-04-10 · 2247493847:1
如何区分产品术语、数据路径与控制面责任。第三方公开存档;不将标题视为通用标准定义。
谈谈 Google Falcon 的可靠传输论文并对比分析 CIPU eRDMA
2025-09-05 · 2247495848:2
可靠传输、拥塞反应、DMA 生命周期与协议边界。第三方公开存档;性能和实现结论需回到论文/官方资料。
同构视角下的异构计算:谈谈 AI 的软硬件交付界面,GPGPU or DSA
2025-07-19 · 2247494485:1
为什么接口、内存所有权和故障语义比芯片命名更重要。第三方公开存档;本页为独立系统解释。

从算子侧进入可读 03 GPU 算子;从集群并行进入可读 06 并行与放置;从网络与 collective 进入可读 07 通信与拓扑

16. 上线前检查清单

  1. 画出 GPU、NIC、PCIe root complex、交换机与 DPU 的实际拓扑,不凭设备编号猜测亲和性。
  2. 为每个 DMA buffer 定义 owner、generation、最长 in-flight 时间和回收条件。
  3. 用真实 message-size、真实 MoE 路由和 PD burst 记录 P50/P95/P99,而非只跑单流峰值。
  4. 对 NIC reset、DPU restart、CQ overrun、IOMMU fault、远端 OOM 和请求取消做故障注入。
  5. 确认 telemetry 能从请求 trace id 回溯到 GPU stream、queue pair 和交换机端口。
  6. 为每项 offload 留 host fallback;无法解释的性能收益不应直接变成生产依赖。

17. 一手来源与本页边界

来源本页使用方式
Linux Kernel DMA APIDMA 地址、IOMMU 和 bounce buffer 的基本边界。
NVIDIA GPUDirect RDMA documentationGPU 与第三方设备经 PCIe 的直接数据路径及其限制。
NVIDIA DirectNIC, GB300 with CX-8 PCIe TopologyGrace Blackwell/CX8 的具体 GPU-NIC-Data Direct PCIe 亲和性例子。
NVIDIA BlueField DPU User GuideDPU、DMA、隔离和通信卸载的设备侧例子;不泛化为所有供应商实现。
Ultra Ethernet Consortium specification history2026 年公开规范版本仍持续演进的证据。
Communication Offloading on SmartNIC DPUs (2026)研究方向参考,不作为生产性能保证。

本页解释通用机制,不宣称某个芯片、供应商或 Zartbot 文章必然实现了全部机制。性能数字、互操作性和支持矩阵应以目标平台的官方 release note、驱动文档与本地 trace 为准。