集群调度回答“哪个任务放到哪张 GPU、如何不浪费资源”。K8s 默认调度器(kube-scheduler)是两阶段流水线: ① 过滤(Filtering): 剔除不满足硬约束的节点——资源请求(CPU/内存/GPU 等扩展资源)、NodeSelector 与节点亲和性、污点容忍(Taint/Toleration)、端口与卷冲突;② 打分(Scoring): 对可行节点按策略评分(least-requested 最不拥挤 / most-requested 最紧凑 / 自定义优先级),选最高分执行 Pod 绑定。GPU 调度: GPU 由 device plugin(nvidia)上报为不可整除的扩展资源
nvidia.com/gpu,调度器按整数卡分配、不支持分数卡——显存与 SM 无法安全拆分,只按“卡”不按“MB”;要小粒度时用 MIG(Multi-Instance GPU, A100/H100 硬件切片,一张卡最多 7 个实例,如
1g.5gb、
7g.80gb),每个实例独享固定 SM 与显存分区,硬件级隔离、无性能抖动,区别于 vGPU 的时间片共享。Ray 是构建在 K8s 之上的应用级调度: Driver(入口脚本)→ Head 节点(全局控制面 GCS + Raylet)→ 每节点一个 Raylet(本地调度器 + Object Store 共享内存对象存储,同节点任务零拷贝传数据)→ Worker(执行 Task/Actor)。弹性扩缩: Ray Autoscaler 按待处理任务队列长度动态增删节点、空闲即回收;K8s 用 HPA/自定义指标(QPS、队列长度、GPU 利用率)伸缩;缩容前 drain 排空在跑任务,spot 实例被回收靠多副本与检查点续训兜底。