一、为什么算力供给不能只看算力本身
1.1 传统分工留下的盲区
早期系统里,资源调度与流量转发分属两套团队、两套软件。调度器只关心每台机器的处理器占用、内存余量、队列长度,几乎不询问链路情况。
① 任务被派到远端的节点,虽然本地算力空闲,但跨域链路拥塞,数据迟迟送不到位。 ② 多个任务在同一时段选中相近出口,出口带宽被挤占,整体吞吐反而下降。 ③ 拓扑信息缺失,调度器无法判断"近邻"关系,本可本地协作的任务被拆到两端。
这些现象说明,只盯着算力余量做决策,会忽视任务完成所依赖的传送过程。
1.2 网络应从透明管道变为可见变量
当业务对时延与带宽提出明确要求,网络就不能再被当作"插上就能通"的透明管道。它必须被建模、被度量、被放进决策公式。换言之,算力供给的质量,等于"算力余量"与"网络可达性"的交集,二者缺一不可。这也是为什么越来越多方案选择把网络指标与算力指标放在同一张视图里一起衡量。
二、网络状态的三类核心信号
要把网络纳入决策,先要把它翻译成调度器能理解的信号。最常用、也最关键的三类是带宽、时延与拓扑。
2.1 带宽:可运送数据的上限
带宽描述单位时间内链路能搬运的数据规模。对需要频繁交换中间结果的任务而言,它就是隐形的供给上限。
① 采集各链路的实时可用带宽,区分物理上限与当前占用。 ② 预测短时趋势,防止把任务放到一条即将饱和的通道上。 ③ 在多条路径间做分担,让大流量任务不至于压垮单线。
2.2 时延:交互体验的下限
时延包含传播、排队、处理等多个环节。对推理类服务,端到端时延直接决定用户感知。
① 记录节点间往返时间,建立时延画像。 ② 区分稳定时延与抖动,抖动大的链路不适合放置敏感任务。 ③ 把时延上限写进调度约束,超界即换址。
2.3 拓扑:决定就近与路径
拓扑描述节点、机房、地域之间的连接关系,是"就近"判断的依据。
① 用层级结构表达机房、区域、骨干的连接。 ② 标识冗余路径,提升容错能力。 ③ 结合拓扑做放置,让协作频繁的任务尽量落在相邻子网。
三、把网络状态接入调度决策
感知只是第一步,真正关键的是让状态进入调度逻辑。
3.1 构建统一的状态视图
不同来源的指标要先汇聚成一张图,调度器才能全局判断。
① 算力侧上报处理器、内存、显存占用。 ② 网络侧上报带宽、时延、丢包与拓扑变化。 ③ 二者打上统一时间戳,进入共享的状态库。
3.2 重定义调度目标
传统目标多是"算力最省"或"排队最短",融合之后要改成综合代价。
① 把传送代价折算成等效成本,与计算成本相加。 ② 引入业务约束,如时延上限、带宽下限。 ③ 在多个候选位置间比较综合得分,而非只看算力余量。
3.3 放置与路径联合优化
最优解往往同时改变"任务放哪"和"数据走哪"。
① 枚举候选节点及其可达路径。 ② 预估每种组合的端到端代价。 ③ 选取代价最小的一组放置与路由,下发执行。
落地时不必追求一次算尽全局最优。更稳妥的做法是:先依据当前状态做近似最优的初次分配,再在运行期间持续观测实际传送表现,发现偏差就触发再调度。这种"初分加微调"的闭环,既控制决策开销,又能随时间逼近较好结果。
四、工程落地中的关键考量
理念清晰,落地仍有不少细节要处理。
4.1 采集的代价与频率
状态不可能无限频密地采集,否则监控本身就会吃掉资源。
① 对稳定链路用较低频率,对变化快的链路提高频率。 ② 采用增量上报,只发送差异部分。 ③ 给状态打有效期,过期则按保守值处理。
4.2 不确定性的应对
网络测量本身有误差,预测也会偏离。
① 调度时保留余量,不为追求极致利用而压满链路。 ② 准备备用位置,主路径劣化时快速迁移。 ③ 用反馈闭环持续修正模型参数。
4.3 多目标之间的权衡
算网融合常要在成本、时延、能耗之间做取舍。
① 让业务方声明偏好权重。 ② 调度器按权重综合排序。 ③ 对冲突目标设优先级,先保底线再优其余。
五、典型场景与收益
5.1 分布式训练
训练任务在多地机器间频繁同步梯度,链路质量直接影响收敛速度。把带宽与拓扑纳入后,系统会把协作紧密的机器放到相邻子网,显著缩短同步时间,让宝贵算力更少地等待数据。
5.2 推理服务就近
用户请求讲究响应速度。依据时延与拓扑,把推理实例部署在离用户近、回程顺畅的节点,可让体验更顺滑,也减少跨域传送带来的额外消耗。
5.3 突发流量分担
某区域骤增请求时,单纯加算力可能受出口带宽限制。融合调度会同时考虑把部分流量引向出口空闲的邻近节点,实现整体稳定,防止局部过热引发连锁劣化。
六、小结
算网融合调度并不神秘,它的内核就是一句话:让网络状态参与算力供给的每一次决策。当带宽、时延、拓扑成为调度器的常驻输入,算力才真正从"孤立资源"变成"随需可达的服务"。对开发工程师而言,理解这套框架,意味着在设计算法时把传送过程一并建模,从而交付更稳、更快、更省的系统。