资讯动态

Compute Fabric Transport(CFT)深度解析:面向智算集群的专用数据传输层

发布时间:2026/10/14 16:05:51 来源:尧图企业网站定制
1. 从一张拓扑图说起为什么需要CFT第一次接触Compute Fabric Transport这个概念是在调试一个多机多卡的分布式训练任务时。当时集群里8台服务器、每台8张计算卡跑一个中等规模的模型并行任务理论算力完全够用但实际吞吐量只有预期的六成左右。用常规的集合通信分析工具看通信耗时占比高得离谱可带宽利用率却上不去。后来把注意力从卡内转到卡间和机间的互联拓扑上才发现问题出在计算网络和存储网络、管理网络共用同一套底层传输路径互相抢资源。这就是CFT要解决的核心问题。Compute Fabric Transport直译过来是计算织物传输它本质上是一套面向大规模异构计算集群的专用数据传输层。你可以把它理解成在计算节点之间修了一条专用高速通道让计算任务之间的数据交换不再和存储读写、集群管理流量挤在一条路上。为什么现在这个话题越来越热因为计算集群的规模在快速膨胀。单机8卡、16卡已经不稀奇跨机做张量并行、流水线并行、专家并行成为常态。一旦跨机通信模式就从点对点变成了多对多全对全对传输层的带宽、延迟、拥塞控制、多路径利用都提出了完全不同的要求。传统的通用传输协议是为广域网、容错优先设计的放到计算集群这种局域网、性能优先的场景里很多机制反而是负担。CFT的定位就是针对计算集群内部的东西向流量做一套轻量化、高带宽、低延迟、可编程的传输方案。它通常和RDMA远程直接内存访问技术栈配合使用但又不完全等同于RDMA——RDMA解决的是怎么绕过内核直接访问远端内存CFT解决的是在复杂的多路径拓扑下怎么把数据高效、可靠、有序地送达。这篇文章适合谁看如果你是做分布式训练、高性能计算、智算集群运维的工程师或者正在评估计算网络方案的技术选型人员那CFT相关的知识会直接影响你的集群性能和成本。如果你只是听说过这个词但没搞明白它和普通网络的区别那从这一节开始往下看就够了。提示CFT不是一个单一协议而是一类面向计算场景的传输层技术集合。不同厂商、不同集群架构下的具体实现差异很大但核心设计目标是一致的——为计算流量提供确定性的高性能传输。2. CFT到底在传什么计算流量的三种典型模式要理解CFT的设计先得搞清楚它承载的流量长什么样。计算集群里的通信不是一种模式而是好几种截然不同的模式混在一起。把它们分清楚后面讲机制的时候才不会晕。2.1 集合通信全对全的带宽压力集合通信是分布式训练里最典型的流量模式。AllReduce、AllGather、ReduceScatter、AlltoAll这几个操作几乎撑起了数据并行和模型并行的全部通信开销。以AllReduce为例N个节点每个都有一份梯度最终要变成所有节点都持有求和后的结果。经典的Ring AllReduce把每个节点的数据切成N份沿着环传2(N-1)步每步传一份。这个过程中每个节点既是发送方又是接收方流量是持续、对称、大块的。这种流量的特点是带宽敏感、延迟相对不敏感、流量模式可预测。CFT针对这类流量重点优化的是多路径负载均衡和拥塞避免。因为一旦某条链路成为瓶颈整个环的吞吐就被它拖住了。2.2 点对点通信流水线并行的命脉流水线并行里相邻两个阶段之间要传激活值和梯度这是典型的点对点大块传输。它的特点是突发性强、对延迟敏感。因为流水线要尽量填满气泡越少越好如果一次传输延迟高了整个流水线的节奏就被打乱。CFT对这类流量的处理重点在降低单次传输的端到端延迟包括减少协议栈层级、优化内存注册和地址翻译、支持零拷贝等。很多实现会把小消息和大消息走不同的路径小消息走低延迟通道大消息走高带宽通道。2.3 参数同步与检查点突发的大流量训练过程中的参数服务器模式、检查点保存、模型加载会产生突发的大流量。这类流量和集合通信不同它往往是单向、集中、持续时间短。如果和集合通信抢同一条链路就会造成训练任务的抖动。CFT的一个关键能力就是流量隔离与优先级调度。通过给不同流量打上不同的服务等级标签让计算关键路径的流量优先通过检查点这类流量走低优先级通道避免互相干扰。流量类型典型场景带宽需求延迟敏感度CFT优化重点集合通信数据并行AllReduce极高中多路径均衡、拥塞控制点对点流水线并行高高端到端延迟、零拷贝参数同步检查点、模型加载突发高低优先级调度、流量隔离把这三类流量分清楚之后你会发现CFT的设计处处都在做权衡既要保证集合通信的大带宽又要照顾点对点的低延迟还要给突发流量留出缓冲。这种多目标优化正是CFT比通用传输协议复杂的地方。3. 拆开看内部CFT的四个核心机制CFT不是一个黑盒它由几个关键机制组合而成。理解了这几个机制你就能明白为什么它在计算集群里比通用方案更高效也能在出问题时知道该往哪个方向排查。3.1 多路径传输与包喷洒计算集群的拓扑通常是多层胖树或者轨道优化架构任意两个节点之间往往存在多条等价路径。通用传输协议一般只选一条路径比如按五元组哈希其余路径闲置。CFT的做法是包喷洒把一条消息的多个数据包分散到多条路径上同时传输。这样做的好处很直接——单条链路的带宽上限被多条链路叠加突破了。但代价是接收端要处理乱序到达的包需要更大的重排缓冲区。所以CFT通常配合选择性重传和乱序容忍窗口来使用。实际调优时包喷洒的粒度很关键。粒度太细乱序严重重排开销大粒度太粗负载均衡效果差。常见做法是按固定大小的块比如4KB或8KB做喷洒在负载均衡和乱序之间取平衡。3.2 基于信用的流控通用传输协议用滑动窗口做流控窗口大小固定或者缓慢自适应。在计算集群这种低延迟、高带宽的环境里固定窗口很容易造成链路空闲或者缓冲区溢出。CFT普遍采用基于信用的流控。接收端根据自己的缓冲区空闲情况主动给发送端发放信用额度发送端只有拿到信用才能发数据。这样做的核心好处是零丢包——因为发送端永远不会发出超过接收端处理能力的数据网络里不需要依赖丢包来反馈拥塞。零丢包对计算任务的意义很大。一次丢包重传的延迟可能是微秒级的几十倍在集合通信里会直接拖慢整个同步节奏。基于信用的流控把这个问题从根上消除了。3.3 内存语义与零拷贝CFT通常构建在RDMA之上支持内存语义操作也就是一台机器可以直接读写另一台机器的内存不需要远端CPU参与。这是低延迟的关键。但光有RDMA还不够。数据从应用缓冲区到网卡中间如果经过多次拷贝延迟和CPU开销都会上去。CFT的实现会做内存注册与地址翻译优化把常用的通信缓冲区提前注册好建立虚拟地址到物理地址的映射表传输时直接查表避免每次传输都做地址翻译。注意内存注册是有成本的注册过的内存不能被换出会占用物理内存。所以注册缓冲区的大小要合理规划不是越大越好。一般建议把集合通信的缓冲区注册为固定大小点对点通信按需动态注册。3.4 拥塞控制与自适应路由即使有多路径和信用流控网络里仍然可能出现热点。比如多个发送端同时向同一个接收端发数据接收端的上行链路就会拥塞。CFT的拥塞控制通常结合两种手段显式拥塞通知和自适应路由。显式拥塞通知让交换机在队列超过阈值时给数据包打标记接收端收到后反馈给发送端发送端降低速率。自适应路由则是在转发层面动态选择负载较轻的路径把流量从热点链路引开。这两种手段配合使用能在不丢包的前提下把网络利用率维持在较高水平。实测中开启自适应路由后集合通信的完成时间通常能降低10%到20%具体取决于拓扑的对称性和流量模式的均匀程度。4. 落地实操在集群里启用和调优CFT理论讲完了接下来是实操部分。这部分内容基于常见的计算集群部署实践具体命令和参数会因厂商和版本不同而有差异但思路是通用的。4.1 环境检查先确认硬件和驱动就绪在启用CFT之前有几项基础检查必须做。跳过这些检查直接上配置大概率会出问题。第一确认网卡支持RDMA。用ibv_devinfo查看设备列表确认有可用的RDMA设备并且端口状态是Active。如果端口是Down或者Init先解决链路问题。第二确认固件和驱动版本匹配。计算网卡的固件、驱动、OFED协议栈版本之间有严格的兼容性要求。版本不匹配可能导致性能远低于预期甚至功能不可用。建议对照厂商的兼容性矩阵逐一核对。第三确认拓扑感知。用ibnetdiscover或者厂商提供的拓扑发现工具把集群的互联拓扑摸清楚。哪些节点在同一台交换机下哪些跨交换机带宽和延迟差异有多大这些信息直接影响后续的路由和负载均衡配置。# 查看RDMA设备信息 ibv_devinfo # 查看端口状态和速率 ibstat # 发现网络拓扑 ibnetdiscover4.2 配置多路径与路由策略多路径的配置核心是让流量均匀分布到所有可用链路上。常见做法是配置等价多路径路由让转发层面自动做负载均衡。但等价多路径有个问题它通常基于流做哈希同一条流的所有包走同一条路径。对于集合通信这种大流等价多路径起不到均衡作用。这时候需要开启逐包负载均衡或者自适应路由。逐包负载均衡的配置通常涉及交换机侧的设置需要确认交换机固件支持。自适应路由则需要在网卡和交换机两侧都开启并且配置拥塞感知的阈值。# 查看当前路由表 ip route show # 查看多路径配置 ip route show table all | grep multipath提示逐包负载均衡虽然均衡效果好但对乱序重排的要求更高。如果接收端重排缓冲区不够大反而会因为乱序丢包导致性能下降。建议先在测试环境验证再上生产。4.3 信用流控的参数调优基于信用的流控有几个关键参数信用额度大小、信用更新频率、接收缓冲区大小。这几个参数互相制约需要一起调。信用额度太小发送端经常等信用链路利用率上不去。信用额度太大接收端缓冲区容易溢出反而触发重传。经验做法是让信用额度等于接收缓冲区能容纳的数据量同时留出20%左右的余量应对突发。信用更新频率也很关键。更新太慢发送端拿到信用的延迟高更新太频繁控制消息本身占用带宽。一般建议信用更新消息和数据的比例控制在1:100以内也就是每传100个数据包最多发1个信用更新。4.4 验证与基准测试配置完成后必须做基准测试验证效果。常用的工具有ib_write_bw、ib_read_bw、ib_send_bw分别测试写、读、发送的带宽和延迟。测试时要覆盖几种典型场景单流大消息、多流并发、全对全通信。单流测试看峰值带宽多流测试看负载均衡效果全对全测试看拥塞控制表现。# 测试写带宽服务端 ib_write_bw -d mlx5_0 -a # 测试写带宽客户端 ib_write_bw -d mlx5_0 -a server_ip # 测试延迟 ib_write_lat -d mlx5_0 server_ip测试结果要和理论值对比。比如100Gbps的网卡单流带宽跑到90Gbps以上算正常低于80Gbps就要查原因。常见原因包括PCIe带宽不足、内存带宽瓶颈、CPU频率不够、中断亲和性没配好。5. 踩过的坑CFT调优中的五个典型问题这一节记录的是实际调优过程中遇到过的真实问题。每个问题都附上排查思路和解决方法希望能帮你少走弯路。5.1 带宽上不去但延迟正常现象单流带宽测试只有理论值的一半但延迟测试正常。排查思路延迟正常说明链路本身没问题带宽上不去通常是发送端或接收端的处理能力不足。先查PCIe带宽用lspci -vv看网卡协商的链路宽度和速率。如果网卡插在PCIe 3.0 x8的槽上理论带宽只有64Gbps跑100Gbps网卡当然上不去。再查内存带宽。用stream或者mbw测试内存带宽如果内存带宽低于网卡带宽数据从内存到网卡的路径就会成为瓶颈。这时候要考虑用NUMA亲和性把网卡和内存绑在同一个NUMA节点上。最后查CPU。RDMA虽然绕过内核但中断处理和完成事件仍然需要CPU。如果CPU频率低或者核心数少处理不过来完成事件带宽也会受限。用perf top看CPU在忙什么如果大量时间花在中断处理上就要调整中断亲和性或者开启中断合并。5.2 多路径配置后性能反而下降现象开启逐包负载均衡后带宽没有提升延迟反而增加了。原因分析逐包负载均衡导致包乱序到达接收端重排缓冲区不够大触发大量重传。重传又加剧了乱序形成恶性循环。解决方法先增大接收端的重排缓冲区。如果还是不行降低负载均衡的粒度从逐包改成逐流或者逐块。逐块均衡在大多数场景下已经能获得不错的均衡效果同时乱序程度可控。注意不是所有场景都适合逐包负载均衡。如果流量本身就很均匀逐流哈希已经够用强行上逐包反而引入乱序开销。负载均衡策略要和流量特征匹配。5.3 集合通信卡在某个节点现象AllReduce任务中大部分节点都完成了但总是等某一个节点整体完成时间被拖长。排查思路这种木桶效应通常是因为某个节点的链路带宽低、或者该节点上有其他流量抢占。先检查该节点的网卡速率是否和其他节点一致再看该节点是否有存储流量或者管理流量在跑。如果链路速率一致用ibmonitor或者厂商工具看该节点的端口计数器看是否有丢包、重传、拥塞标记。如果有说明该节点所在的链路是热点需要调整路由或者做流量隔离。还有一种可能是该节点的CPU负载高导致完成事件处理慢。用top看CPU使用率如果某个核心跑满把中断亲和性调整到空闲核心上。5.4 信用流控导致链路空闲现象带宽利用率只有70%左右链路经常出现空闲周期。原因分析信用更新不及时发送端经常在等信用。或者信用额度设置得太保守发送端发一点就要等。解决方法先增大信用额度观察带宽是否提升。如果提升明显说明之前额度太小。然后调整信用更新频率让接收端更及时地发放信用。如果还是不行检查接收端的缓冲区是否被其他流量占用导致可用缓冲区不足。5.5 固件版本不匹配导致功能不可用现象配置了自适应路由但完全不生效流量还是走固定路径。排查思路先确认交换机固件是否支持自适应路由。很多自适应路由功能需要交换机固件在特定版本以上才支持。再确认网卡固件和驱动是否支持对应的配置接口。最后确认配置命令是否写对了有些厂商的配置命令有隐藏的依赖关系顺序错了就不生效。这类问题的通用排查方法是查厂商的版本兼容性矩阵确认所有组件的版本都在支持列表里。然后查配置手册确认命令的依赖关系和生效条件。最后用厂商提供的诊断工具确认功能是否真的开启了。问题现象最可能原因优先排查方向带宽低但延迟正常端侧处理能力不足PCIe、内存、CPU多路径后性能下降乱序重排开销大重排缓冲区、均衡粒度集合通信木桶效应单节点链路或负载异常端口计数器、CPU负载链路空闲信用流控过保守信用额度、更新频率功能不生效版本或配置不匹配兼容性矩阵、配置依赖6. 选型与演进CFT在集群架构中的位置6.1 CFT与通用传输方案的取舍在实际项目中不是所有场景都需要上CFT。如果你的集群规模小比如只有两三台机器流量模式简单通用传输方案配合RDMA已经够用上CFT反而增加复杂度。当集群规模超过一定阈值比如超过8台机器或者跨机通信占比超过30%CFT的价值就体现出来了。规模越大拓扑越复杂流量模式越多样通用方案的局限性越明显。选型时要考虑几个维度集群规模、流量模式、性能要求、运维能力、成本预算。CFT的硬件成本通常更高因为需要支持高级特性的网卡和交换机。运维复杂度也更高需要专门的网络工程师做调优。这些成本要和性能收益一起算账。6.2 从单机到集群的平滑演进很多团队是从单机多卡起步的随着模型变大逐步扩展到多机。这个演进过程中通信架构要提前规划。单机阶段卡间通信走NVLink或者PCIe不涉及网络传输。跨机阶段第一件事就是把计算网络和存储网络物理隔离不要让它们共享链路。第二件事是选择支持RDMA的网卡并且确保交换机能做无损转发。第三件事才是考虑CFT的高级特性比如多路径、自适应路由、信用流控。这个顺序很重要。如果物理隔离都没做好直接上CFT的高级特性效果会大打折扣。因为底层链路本身就在丢包或者拥塞上层再怎么优化也救不回来。6.3 未来可能的方向从目前的技术趋势看CFT相关的技术还在快速演进。几个值得关注的方向一是在网计算。把部分集合通信的操作下沉到交换机或者网卡上执行减少数据在端侧的搬运。比如在交换机上做AllReduce的局部聚合能显著降低端侧的计算和通信开销。二是可编程传输。让应用可以根据自己的流量特征定制传输策略而不是所有流量都用同一套参数。比如训练任务可以告诉传输层我这个阶段是AllReduce请用高带宽模式传输层据此调整参数。三是与调度系统联动。传输层感知到网络拥塞时反馈给调度系统调度系统调整任务放置把通信密集的任务放到网络条件更好的位置。这种跨层协同能进一步提升集群整体效率。这些方向目前还在研究和早期落地阶段但方向是明确的计算和网络的边界在模糊传输层不再是一个被动的管道而是参与计算任务优化的主动角色。我在实际项目里的体会是CFT这类技术最大的价值不在于某一个单点优化而在于它提供了一套可观测、可控制、可调优的传输框架。有了这套框架你才能把集群性能从能用调到好用从跑得起来调到跑得高效。这个过程没有银弹需要结合具体业务流量反复测试和调整但每一步优化带来的收益都是实打实的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑