Kubernetes上的GPU调度-拓扑感知与碎片治理的工程实践

发布时间:2026/10/11 7:27:47

Kubernetes上的GPU调度-拓扑感知与碎片治理的工程实践 摘要把 GPU 交给 Kubernetes 管难点不在能不能调度而在调度得好不好。同一批卡走 NVLink 还是跨机性能差一个量级碎片化会让集群看似有空闲却接不下大任务。本文拆解拓扑感知、碎片治理与配额设计。2026 奇点智能技术大会11 月 20-21 日 · 北京万达文华酒店的 AI Infra 专题与 C 大会的并行与异构计算专题会讨论这类调度工程。一、能调度不等于调度好默认调度器只看「有没有空闲 GPU」这一个数字不看这些 GPU 是否连在同一条高速链路上。结果是要 8 卡的任务被分散到不同机器通信成本暴涨能跑但跑得慢。二、拓扑感知的调度拓扑感知要求调度器理解 GPU 之间的连接关系同机同 NVLink 域、同机跨域、跨机。把需要强通信的任务尽量放在同一高速域是提升多卡任务性能的第一步也是收益最大的一步。三、碎片从哪来碎片来自任务大小不一小任务占满各机器零散的卡等大任务来了虽然全集群空的卡够数却没有一台机器凑得出连续 8 卡。碎片让利用率虚高、大任务排不上队。四、碎片治理手段常见手段是整机分配与反碎片策略小任务优先填满已有空位大任务预留整机。也可引入装箱策略按拓扑分组分配。核心是让空闲资源的连续性满足常见任务规格。五、配额与公平多团队共享集群时配额决定谁先拿到卡。配额太粗会互相挤占太细会加剧碎片。配额设计要同时考虑公平与效率通常按团队保留底线、按需弹性超分再配合抢占。六、设备插件与资源模型GPU 通过设备插件暴露给 K8s每张卡作为一个可分配资源。这个模型只描述数量、不描述拓扑是拓扑不感知的根源。要拓扑感知需在插件或调度器层补充连接关系信息。七、抢占与优先级高优任务应能抢占低优任务腾出整机资源。但抢占会打断训练需配合检查点。抢占策略要与检查点频率联动否则省下的等待时间会被重算吃掉。八、共享与隔离的粒度一张卡分给多个任务如时间片或显存分片能提利用率但会带来互相干扰与显存争抢。共享粒度越细利用率越高、隔离越弱需按任务敏感度决定。九、指标与可视化调度质量要用指标说话碎片率、大任务排队时长、拓扑命中率、抢占次数。没有这些指标调度优化就是凭感觉也说不清政府空闲却排不上队的现象。十、衔接大会专题11 月 20-21 日北京万达文华酒店2026 奇点智能技术大会的 AI Infra 专题会讨论算力调度与资源治理C 及系统软件技术大会的并行与异构计算专题则从硬件拓扑与运行时角度给出底层解释。带着「我们的 8 卡任务有没有连在同一条链路上」去参会能立刻判断调度是否合格。十一、弹性与预留的平衡全预留会浪费全弹性会让大任务永远抢不到整机。折中是给小任务留弹性池、给大任务留整机池两类池按队列深度动态调比例兼顾利用率与排队时长。十二、落地的最小步骤先量碎片率与大任务排队时长确认问题存在再上拓扑感知调度最后补配额与抢占。拓扑问题不清就跟不上一句先做第一项收益最大。十三、与队列系统的结合大集群常需要排队系统来管理任务优先级与资源配额调度器与队列系统要协同队列决定谁先来调度器决定放到哪。两者脱节会出现高优任务排到队首却分不到合适拓扑的尴尬。十四、多云与混合集群跨云与混合集群里各处的 GPU 型号与拓扑不同统一调度要考虑异构性。把任务需求与资源特征做匹配比把所有资源当同质处理更贴近实际也更能提利用率。十五、调度的可观测调度决策要有日志与指标为什么这个任务被放到这些卡、为什么被推迟。没有可解释的调度记录资源纠纷与性能问题都无从复盘优化也失去依据。十六、成本分摊多团队共享集群时成本要能按团队与任务分摊否则配额管理缺少依据。把资源占用换算成成本并定期出账能让团队自觉优化资源使用这比单纯行政管控有效。十七、多租户隔离多团队共用集群时除配额外还要做故障与干扰隔离一个团队的失控任务不应拖垮他人。结合 cgroup、网络配额与共享粒度的组合隔离比单纯靠配额更能保证租户间的可预测性。十八、虚拟化的调度vGPU 把一张卡切成多份调度器要理解切分关系避免把强通信任务分到同一物理卡的不同切片上互相抢。虚拟化提升了密度却也让拓扑更隐蔽调度要向上层暴露真实拓扑。十九、调度器的拓扑打分把拓扑信息量化为打分函数同域加分、跨机减分再按任务通信画像选位。打分模型比硬规则灵活能处理混合负载但要可解释否则排错时无人说得清为何这么排。二十、能耗与利用率利用率高不等于能耗优。把能耗纳入调度目标在空闲节点上做整合与下电能降成本。但要平衡整合带来的碎片与重启开销否则省了电却损了效率。二十一、与大数据调度对比Spark 等大数据调度重数据本地性GPU 训练调度重拓扑与连续资源。两者理念相通但目标不同借鉴数据本地性思路可优化训练数据的就近读取减少跨节点搬数据。二十二、推理服务的弹性推理流量有波峰波谷弹性伸缩要避免频繁启停带来的冷启动延迟。用预热池与保守缩容策略让弹性既省成本又不伤尾延迟是推理调度区别于训练的要点。二十三、调度与容量预测用历史任务画像预测各规格任务的需求峰谷提前预留对应拓扑的连续资源能把被动排队变主动准备。预测不必精确方向对了就能显著降低大任务的等待与碎片。二十四、与成本优化的联动调度决策应直接挂钩成本把闲置资源自动降配或释放把高价资源留给高优任务。调度与成本看板打通后利用率提升与账单下降能同时发生而非各管各的。二十五、故障迁移的代价节点故障时其上任务要迁移到别处迁移既要找得出连续资源又要能恢复状态。迁移代价常被低估应在调度里预留迁移余量否则故障时会因无位可去而扩大影响。补充问答问容量要预测吗答用历史画像预测需求峰谷、提前预留连续资源能把被动排队变主动准备。预测不必精确方向对就能显著降低大任务等待与碎片。问调度怎么降本答决策挂钩成本闲置资源自动降配释放高价资源留给高优。调度与成本看板打通利用率与账单能同时改善而非各管各的。问节点故障影响大吗答故障时任务要迁移既要找连续资源又要恢复状态代价常被低估。调度应预留迁移余量否则无位可去会扩大故障影响面。问多租户怎么隔离答除配额外加故障与干扰隔离cgroup、网络配额、共享粒度组合比单纯配额更能保证租户间可预测一个失控任务不拖垮他人。问vGPU 怎么调度答调度器要理解切分关系避免强通信任务分到同一物理卡的不同切片互相抢。虚拟化提升密度却让拓扑更隐蔽要向上暴露真实拓扑。问拓扑怎么打分答量化为打分函数同域加分、跨机减分按任务通信画像选位。比硬规则灵活但要可解释否则排错说不清为何这么排。问调度管能耗吗答利用率高不等于能耗优。把能耗纳入目标整合空闲节点与下电降本但要平衡整合带来的碎片与重启开销否则省电损效率。问和 Spark 调度像吗答理念通但目标不同Spark 重数据本地性GPU 训练重拓扑与连续资源。借鉴数据本地性可优化训练数据就近读取少搬跨节点数据。问推理怎么弹性答流量有峰谷频繁启停冷启动伤延迟。用预热池与保守缩容弹性既省成本又不伤尾延迟这是推理调度区别于训练的要点。问队列和调度怎么配合答队列定优先级与顺序调度定落点与拓扑。两者要联动否则会出现高优任务排到队首却拿不到合适拓扑的情况反而比低优任务更慢。问混合集群怎么调答按异构性做需求与资源的匹配而不是当同质资源处理。统一调度要考虑型号与拓扑差异否则利用率与任务性能都会受损。问调度能解释吗答应留下决策日志与指标为何这样分配、为何被推迟。可解释的调度才能复盘资源纠纷也是后续优化的依据否则只能凭感觉。问成本怎么分摊答按团队与任务把资源占用换算成成本并定期出账。透明账单能让团队自觉优化用量比行政指令更有效也让配额调整有据可依。问默认调度器的问题在哪答它只看空闲 GPU 数量不看拓扑。要 8 卡的任务可能被分到不同机器通信成本暴涨。能跑起来但性能远低于应有的水平。问碎片怎么量化答用碎片率与大任务排队时长两个指标。若集群整体空闲卡数够而大任务仍排队基本可判定是碎片问题而不是资源真的不足。问拓扑感知难做吗答基础版不难把拓扑信息注入调度决策优先同高速域分配。难在维护信息的准确性与处理拓扑变化需要设备插件与调度器配合。问共享 GPU 划算吗答提利用率但降低隔离。对延迟敏感的任务共享会互相干扰。按任务敏感度决定批处理类可共享在线推理与训练尽量独占。问抢占会不会伤训练答会所以要与检查点联动。抢占前先触发保存恢复后接着训。检查点太稀则重算多太密则开销大频率要按任务时长权衡。问小团队要自研调度吗答不必。先用社区方案加拓扑配置覆盖大部分场景。等确有特殊需求如超节点亲和再考虑定制自研调度器维护成本很高。大会信息2026 奇点智能技术大会 C 及系统软件技术大会时间2026 年 11 月 20-21 日地点中国·北京万达文华酒店大会报名免费领取大会PPT资料立即报名锁定 Lukasz Kaiser Keynote 与 70 场演讲完整资料
延伸阅读

更多相关文章

2026/10/11 7:27:47

基于SpringBoot2+Vue3的红色革命文物征集管理系统设计与实现

1. 项目背景与需求拆解1.1 红色革命文物征集到底是什么业务场景红色革命文物,简单说就是承载红色记忆、记录革命历程的实物资料,包括纸质文献、徽章、武器、生活用品、照片等。这类文物的征集工作并不像普通人想的那样“收东西就行”,它的背后…

2026/10/11 7:27:47

从RLHF到RLAIF:Constitutional AI的训练流程与工程实现拆解

先说清楚这篇要解决什么问题 RLHF 这套流程现在做对齐的人基本都熟:先做 SFT,再训一个奖励模型,最后用 PPO 之类的算法去优化策略。它有效,但有一个绕不开的成本——偏好数据得靠人来标。标注员要读两条回复,判断哪条更…

2026/10/11 7:27:47

SAP业务表整理实战:表类型、五大模块核心表与避坑要点

做SAP项目最怕什么?不是增强不会写,也不是权限调不明白,而是业务突然问你一句“这个金额到底存在哪张表里”,你只能对着SE11翻半天。SAP业务表整理这件事,听起来像是个文档活,但实际是后续所有取数、迁移、…

2026/10/11 8:17:49

Locust压测实战:从协程并发原理到脚本编写与踩坑指南

1. 为什么是Locust:Python协程并发模型与JMeter线程池的差异做性能测试的人,大部分入门用的都是JMeter。我一开始也是,界面操作直观,录制脚本也方便,跑起来之后看聚合报告,响应时间、吞吐量、错误率一目了然…

2026/10/11 8:17:49

Claude Code国内开发实战:从安装配置到高效工作流

1. 从一条命令行说起:为什么国内开发者需要认真对待Claude Code第一次听说Claude Code的时候,我正蹲在一个老项目的重构现场。那是一个前后端混在一起、依赖版本乱成一锅粥的代码库,光是把本地环境跑起来就花了我一个下午。当时同事甩过来一句…

2026/10/11 8:17:49

把架构图当代码管理:从选型到落地的工程实践

先交代一下背景。我手头这个项目叫diagram-design,听起来很普通,就是"图表设计"四个字,但它解决的是我在团队里被反复折磨了大半年的老问题:架构图、流程图、依赖图永远和代码对不上。事情的起因很常见。一次技术评审会…

2026/10/11 8:17:49

职场玄学:怎么搞定男领导?

做了10年数字化咨询,我发现一个离谱但真实的规律。一、那个让我改了5次的PPT故事从很多年前说起。那时候我刚入行,给一位男领导做项目汇报PPT、图表。年轻嘛,总想证明自己不光数据做得好,审美也不差。下了个当时全网下载量很高的高…

2026/10/11 8:17:49

Apache SkyWalking实战:轻量无侵入的微服务监控与链路追踪

最近一直在琢磨怎么给团队那几十个老服务加监控,工作量要小,效果要立得住。之前也试过一些方案,要么在代码里手动埋点,要么引入一堆 SDK 把应用体积撑大,要么只会黑盒探测——能看出来“挂了”,却永远不知道…

2026/10/11 8:12:49

Markdown实战指南:排版、转换、AI联动与避坑技巧

写文档这件事,我一直有个执念:工具应该为内容服务,而不是反过来。真正让我下决心彻底迁移到 Markdown 的,是几年前一个再普通不过的场景——我把一段排了半天版的 Word 内容复制到公众号,结果字体、行距、标题层级全部…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/11 0:02:13

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/11 0:02:13

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑