GPU Dispatch Law——GPU 调度法则
Effort: free — 由调度器强制执行、直接读节点自身实况状态的规则;直接降低净成本。消除:显存溢出后悄悄慢 10 倍的运行、任务之间的冷启动折腾、以及被臆想围栏闲置的显卡。
在 GPU 上跑本地模型的四条规则。它们存在,是因为两种常见的失败模式方向相反、代价一样高:反复装载和溢出把卡折腾得来回抖,以及把硬件围得太死让它干坐着。两者都是丢掉的能力。把这些规则写进调度器的代码里——绝不当成一条要模型自己记住的规矩。
什么时候用
- 把任何推理任务派往本地 GPU 之前。
- 设计或 review 调度器、排程器、模型路由器时。
- 本地运行莫名其妙地慢,或某张卡莫名其妙"不可用"时。
四条规则
- 一卡同时只驻留一个模型。 任何派单之前,通过运行时自己的 API 读节点当前 已加载模型的活状态。已有别的模型驻留,就要么用它,要么先卸载。绝不在旁边再装 第二个。
- 不许溢出到系统内存——中止,不许慢跑。 派单前确认模型能完整装进这张卡的空闲 显存,工作期间断言它全程留在显存里。任何溢进系统内存的情况都是中止(ABORT), 不是降级运行——溢出的模型会悄悄慢上 10 倍,还拖垮排在它后面的每个任务。装不进 这张卡预留水位线以上空间的模型,不派给这张卡;换小模型或换卡。
- 整个工作循环里让卡保温。 用有界的 keep-alive(保活)持有模型——上下限由你 配置,绝不无限——并在循环运行期间刷新它。同一个循环内的任务之间不许冷启动折腾。
- 循环完成才卸载。 在循环结束时显式释放——不是每个任务之后。逐任务卸载是 冷启动折腾;从不卸载是泄漏。循环末释放才是那条正确的接缝。
按实测真相放行
一张卡能不能接活,由活的测量决定,绝不靠假设:
- 对节点的真实探测——不是配置里一条过期的"不可达"备注。
- 预留水位线以上的真实空闲显存——水位线是唯一的常设限制;线上的全部自由取用。
- 对交互负载的真实运行进程检查。卡上正在跑的游戏、直播或剪辑会话立刻胜出—— 但它在不在,靠测量,绝不靠一个标记文件或一份写死的"冷卡"名单去假设。
默认拒绝、"用途不明"式否决、"标记文件不存在就等于围栏开启"——全是同一个 bug:运行时拒绝了主人自己的硬件。把自家硬件围死是丢掉的能力,丢掉的能力就是缺陷。只有人类当场发话才能加围栏或撤围栏。
硬规则(踩中即失败)
- 往已有模型驻留的卡上装第二个模型。
- 检测到显存溢出后继续跑,而不是中止。
- 无界的 keep-alive,或在同一个循环内的任务之间卸载。
- 凭配置备注、标记文件或假设否决一张卡,而不是活探测。
- 靠 prompt 而不是调度器代码来执行以上任何一条。
搭配使用
- invariant-floor——实测真相和大声失败是地板法则; 本技能把它们用在 GPU 上。
- fleet-ladder——先解析派哪个模型,再决定它在哪跑。
- bounded-loops——keep-alive 和循环末释放所依附的 那个工作循环。