假如你是一家大型商场的运营经理。商场里有 VIP 会员、普通顾客和偶尔来逛逛的新客,每个人都想逛得尽兴,但商场的电力系统、电梯和空调容量有限。如果让所有人同时用最高功率的设备,变压器会跳闸,所有人一起摸黑。于是你设计了一套规则:VIP 会员在高峰期自动走专属通道、电梯优先接送;普通顾客按排队顺序进场,但每人限时两小时;当某个区域电力快要超载时,空调自动调低一档、扶梯放慢速度,保证照明系统永不瘫痪——这就是我们今天要讲的:Token 预算动态分配与智能调度。 在大模型应用中,Token 就是算力的“电量”。多个用户、多个业务同时调用大模型时,GPU 的吞吐量是有限的。如果毫无节制地放行所有请求,系统会像超载的商场一样延迟飙升、甚至崩溃。为了解决这个问题,我们需要设计一套完整的预算管理体系:给每个人发“额度卡”、按任务的重要程度决定“谁先上电梯”、快超载时触发“降级模式”、紧急时刻从低优先级任务手里“抢回电量”。这正是平台型 AI 产品从“能用”走向“好用”的关键一步。
掌握 Token 预算动态分配与智能调度,是平台型 AI 工程师做出高并发稳定系统的核心技能。它能让你在算力有限的前提下服务好所有用户,成为团队里真正懂“资源经济学”的架构师。
可视化演示
动态演示Token预算动态分配与智能的核心机制,通过总览/传输/转换/输出四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Token预算动态分配与智能:Toke Token预算管理总览与多租户 用户等级额度分配与配额策略设计 核心机制可视化 Token预算动态分配与智能整体架构与关键组件
用户分级配额
回到我们的商场。开业第一天,你发现所有顾客都在抱怨——有人想逛一整天,有人只是进来吹吹空调,但大家的待遇完全一样。VIP 顾客觉得花了钱没特权,普通顾客觉得高峰期根本挤不上电梯。于是你决定发“会员卡”:VIP 卡充值 100 个“商场合力币”,普通顾客每人发 50 个,免费客人只能领 20 个。这就是用户分级配额——根据用户的价值和需求,给每个人设定不同的 Token 预算上限。
在真实的 LLM 平台中,我们会为每个用户或租户绑定一个配额对象。VIP 用户的配额上限可能是普通用户的 5 到 10 倍,免费用户则只有最低限度的保障额度,保证他至少能发几条消息体验产品。这个配额不是永久有效的,而是按周期重置——常见的做法是每小时、每天或每月重置一次。重置周期由商业模式决定:To C 产品按月重置,To B 的 API 平台按分钟级或小时级重置。
每个用户和服务之间是多对多的关系,所以配额管理需要一套清晰的层级结构。系统为每个用户建立独立的配额桶,桶里装着剩余的 Token 数。当用户发起请求时,系统先检查配额桶是否有足够的余额,不够就直接拒绝或提示充值。这个过程可以用一个简单的公式表达:
配额系统就像一个公平的“分蛋糕机器”。没有它,VIP 用户和免费用户抢同一块 GPU 算力,最终谁都用不好。有了它,每个人都知道自己的边界,产品也能围绕额度设计增值服务——让免费用户享受基础能力,让付费用户享受畅快体验。
- 周期配额上限用户每个周期能获得的最高 Token 总量,相当于商场的“月卡额度”。
- 有效周期数从上次重置到现在经过了多少个计费周期,通常取值为 1。
- 已消耗 Token 数用户在当前周期内所有请求消耗的 Token 之和。
- 剩余额度当前周期还能使用的 Token 总量,如果小于请求所需量就拒绝服务。
任务优先级调度
商场里不止有逛街的顾客,还有补货的仓库工人、修电梯的维修师傅、以及赶时间的外卖骑手。如果所有人在高峰期同时冲向电梯,电梯门永远在开关之间反复横跳。聪明的做法是给每个任务贴上优先级标签:外卖骑手的配送请求优先级最高,因为超时会被罚款;仓库补货可以放在深夜;电梯维修则可以预约在闭店后。这就是任务优先级调度。
在 LLM 应用里,请求也分三六九等:用户在聊天框里等待回复属于“实时交互”,优先级最高;后台批量生成摘要、离线知识库向量化这类任务,晚几分钟完成也没有人感知,优先级最低。实现优先级调度最常用的数据结构是优先级队列——每个请求进入队列时携带一个 priority 值,出队时总取当前队列里最大值对应的请求。
为了让高优先级请求真正插队成功,我们还需要在前面介绍的用户配额之外,叠加一层“调度权重”。优先级越高的任务,在单位时间内能获取的 Token 预算比例越大。假如总预算有 1000 Token/秒,一个优先级为 3 的请求比优先级为 1 的请求多获得 3 倍的预算份额。这个逻辑可以用加权公平排队(WFQ)的思路来理解:
优先级调度体系让系统的响应时间有了“质感”:用户聊天永远流畅,后台任务安静地排队。作为架构师,你应该把实时性要求高的任务和离线任务分到不同的执行队列,避免后台任务阻塞在线接口。记住,调度策略的目标不是让所有请求平等,而是让重要请求跑得快、次要请求不添乱。
- 请求权重每个任务的重要程度数值,由它的优先级映射而来。
- 总预算额度当前调度周期内系统总共可分配的 Token 池。
- 所有任务权重之和队列中所有请求的权重加起来,作为分母让总分配比例归一化。
- 该请求分得预算按权重占比从总预算中分到的 Token 数量,权重越大,分配越多。
预算池总控
一个商场不可能让每个商户自己拉一根独立电线,而是统一接入总变电站,再按楼层、按商户分配电量。如果某个楼层用电少,可以把余量临时借给隔壁楼层。这就是预算池总控的核心思想:所有租户共享一个全局 Token 预算池,但各自又有独立的隔离额度,避免某一个疯狂调用的租户拖垮整个平台。
在实际系统中,预算池有三层结构:全局池、租户池、用户池。全局池的大小由 GPU 集群的总吞吐能力决定;每个租户池从全局池中划分出固定比例,防止某租户占满所有资源;用户池则在租户池内继续细分。三层的嵌套关系,保证了任何一个维度的失控都不会影响全局。
不过这里有一个精巧的数学问题:如果每个租户都只设置固定的隔离额度,那么当一个租户空闲、另一个租户繁忙时,空闲的算力就浪费了。所以我们引入“闲时余量共享”——繁忙租户可以借用空闲租户的额度,就像商场把冷清楼层的光电临时调配给热门楼层。共享的比例不能是 100%,否则就失去了隔离的意义。超额比的限制用下面的公式表达:
预算池总控是平台经济学的核心:既要保证公平,又要追求效率。正如电力调度中心要监控每个片区的电压,Token 调度中心也需要时刻掌握各租户的实时用量。如果你把共享系数设得太高,热门租户会挤占所有人的资源;设得太低,算力空闲率又会飙升。找到一个动态调节的平衡点,正是架构师的价值所在。
- 租户固定配额该租户在全局池中被分配到的保底 Token 数量。
- 共享系数一个 0 到 1 之间的可配置参数,代表允许借用多少比例的空闲额度。
- 全局空闲额度当前所有未使用的 Token 预算总和。
- 最终可用预算固定配额加上借来的共享额度,决定了该租户当前实际可用的 Token 上限。
降级与熔断策略
再精心的预算管理,也扛不住突发流量——比如商场周年庆客流直接翻了三倍。这时候你怎么办?聪明的商场经理不会拉闸断电,而是启动“节能模式”:空调温度上调两度、扶梯速度降一档、LED 屏切换为静态广告。顾客依然能购物,只是体验没那么豪华。这就是降级策略。
在 LLM 平台中,降级意味着当预算即将耗尽时,系统自动把请求切换到更便宜的模型上。比如把 GPT-4 级别的请求降级到快速的轻量模型,把长文本回答改成短答案,甚至把实时生成改成缓存命中。降级策略的触发条件是预算池的实时水位:
当水位超过 90% 时进入硬降级,超过 70% 进入软降级,持续超过 100% 则触发熔断器。
降级熔断机制是系统的“安全气囊”——平时完全看不出来,但在危急关头能保住整车人的性命。熔断器打开后,所有请求直接快速失败,不再继续消耗算力,给调度系统争取喘息的时间。等水位回落后,熔断器进入半开状态,放少量探测流量进来,确认系统恢复后再完全关闭熔断。
- 当前累计消耗整个平台已经消耗的 Token 总数。
- 全局总预算系统在某个时间窗口内可供分配的全部 Token 量。
- 水位阈值判断根据水位落区间,选择正常、软降级、硬降级或熔断。
抢占与回收机制
假设商场里有一个顾客占了电梯,却一直在里面看手机不按楼层。高峰期这显然是巨大的浪费。于是保安礼貌地请他先出来让给赶时间的顾客。这就是抢占机制:当高优先级任务急需预算,而低优先级任务正在“闲置占用”时,系统强制回收低优先级任务的部分 Token 配额。
在分布式调度系统中,抢占的实现方式有很多种。最粗粒度的是直接杀死低优先级任务,释放它占用的算力;更温和的方式是挂起任务,把它的请求占用的 GPU 显存和队列位置让出来,等预算充足时再恢复执行。回收的 Token 量不是越多越好——如果频繁地打断低优先级任务,会造成“饥饿”问题,低优先级任务永远无法完成。所以回收机制需要配合一个“回收风暴防护”限制:
抢占机制还负责处理“未用额度再分配”的场景。某些用户的配额在每天凌晨完全用不完,系统可以把这些闲置额度汇总起来,分配给当前有突发需求的房间。回收和抢占的关键,是要记录每一次操作的审计日志——谁被抢了、谁受益了、抢了多少。只有这样,调度系统的行为才是透明和可追溯的。
- 回收比例上限系数一个介于 0 和 1 之间的参数,控制单次回收的激进程度。
- 低优先级任务剩余配额被抢占任务当前还剩余的 Token 额度。
- 单次最大回收量系统一次抢占操作最多回收的 Token 数量上限。
动态调参闭环
商场运营一年后,你发现 VIP 顾客在周末的用电量是周中的三倍,而普通顾客的工作日晚上用电量暴增。如果配额规则还是年初那一套,就会出现周末 VIP 资源不够用、工作日普通顾客排队的情况。于是你让数据分析团队每周产出一份用量报表,据此调整下周的配额参数。这就是动态调参闭环——监控、分析、调整、评估,循环往复。
在 Token 调度系统中,动态调参不是工程师手工改配置,而是由一套自动化的控制回路完成。实时监控模块采集每个租户的 Token 消耗速率、失败率、平均等待时间;弹性阈值模块根据这些指标自动调整配额上限和共享系数。比如当租户 A 的请求失败率飙升时,系统判断可能是配额太低,自动将它的配额上限调高 20%,同时从空闲租户池中多分配一些共享余量。
整个控制回路的数学基础是经典的反馈控制思想,最常用的是指数移动平均平滑处理。我们不希望对毛刺数据做出过度反应,所以用量稳定性的公式为:
动态调参闭环让 Token 预算管理系统从“静态规则”进化为“智能生命体”。它像商场的暖通系统一样,根据人流自动调节送风量,既不会让人觉得闷热,也不会白白浪费电。作为架构师,你要给系统留出足够多的可观测性埋点——没有数据和反馈,一切自动化调度都是盲人摸象。
- 当前时刻实测值本时刻测得的真实 Token 消耗速率。
- 平滑系数0 到 1 之间的常数,控制历史信息和当前信息的权重配比。
- 上一时刻的平滑值前一个采样周期的历史平滑结果。
- 本时刻平滑用量用于判断是否触发阈值调整的最终指标,避免被瞬时尖峰误导。
AI 应用场景
AI 开放平台的租户配额管理
阶段:应用部署与资源调度
解决的问题:传统 API 平台对用户请求一视同仁,导致少数高并发用户占满 GPU,大量普通开发者请求超时。AI 平台需要按用户等级公平分配 Token 额度,确保付费开发者获得稳定低延迟,免费开发者能体验基础能力。
具体案例:某大模型 API 平台有 100 个企业租户和 2 万个人开发者。平台按租户等级设定配额:企业租户每分钟可调用 60 万 Token,个人开发者每分钟 1 万 Token。当整体流量达到全局预算上限时,系统自动降低免费开发者的共享系数,企业租户的请求始终排在队列最前。
智能客服系统的动态降级与熔断
阶段:模型推理与响应生成
解决的问题:电商大促期间智能客服请求量暴增 10 倍,如果所有对话都走最高规格的大模型,GPU 会被打满,导致所有用户都无法得到回复。需要通过预算水位感知来动态降级。
具体案例:某电商公司的智能客服系统接入预算调度器:平时用千亿参数模型保证回答质量;当预算水位超过 70% 时,切换到蒸馏后的轻量模型;水位超过 90% 时,直接返回预设的知识库匹配答案;持续超过 100% 时熔断器打开,系统自动返回“客服繁忙,请稍后再试”并记录工单。
企业内部多任务集群的抢占与回收
阶段:推理资源池化调度
解决的问题:企业内部同一个 GPU 集群上同时跑着实时推理任务(在线客服)和离线批处理任务(历史工单摘要生成)。低优先级批处理任务占满显存时,在线任务请求排队导致超时。需要使用抢占机制保障高优任务。
具体案例:某公司使用 Kubernetes 部署大模型推理服务,为在线推理 Pod 设置高优先级,离线批处理设置低优先级。当在线任务突发增长时,抢占器扫描低优先级 Pod,将空闲的 Token 预回收并分配给在线推理,批处理任务被挂起,60 秒后自动恢复。
Python 演示
import timeimport threadingfrom collections import deque class TokenBudget: """Token预算管理类:支持用户配额、优先级调度和动态调整""" def __init__(self, total_budget): self.total_budget = total_budget self.used_budget = 0 self.users = {} self.request_queue = deque() self.priority_weights = {1: 1.0, 2: 2.0, 3: 4.0} self.lock = threading.Lock() def register_user(self, user_id, quota, priority): self.users[user_id] = { "quota": quota, "used": 0, "priority": priority, } def can_schedule(self, user_id, tokens): user = self.users[user_id] if user["used"] + tokens > user["quota"]: return False if self.used_budget + tokens > self.total_budget: return False return True def enqueue(self, user_id, tokens): with self.lock: if not self.can_schedule(user_id, tokens): return False weight = self.priority_weights.get( self.users[user_id]["priority"], 1.0 ) self.request_queue.append((user_id, tokens, weight, time.time())) return True def _dequeue_highest_priority(self): if not self.request_queue: return None best = 0 for i in range(1, len(self.request_queue)): if self.request_queue[i][2] > self.request_queue[best][2]: best = i return self.request_queue.popleft() if False else self.request_queue[best] def process_next(self): with self.lock: best = self._dequeue_highest_priority() if best is None: return None user_id, tokens, weight, ts = best self.request_queue.remove(best) user = self.users[user_id] user["used"] += tokens self.used_budget += tokens return (user_id, tokens, weight, ts) def reclaim_from_low_priority(self, user_id, amount): """从低优先级用户回收配额""" for uid, user in self.users.items(): if uid != user_id and user["priority"] < 3: reclaim = min(amount, int(user["used"] * 0.3)) user["used"] -= reclaim self.used_budget -= reclaim self.users[user_id]["quota"] += reclaim return reclaim return 0 def auto_adjust(self): """按用量动态调整配额""" with self.lock: total_quota = sum(u["quota"] for u in self.users.values()) for uid, user in self.users.items(): if user["used"] > user["quota"] * 0.9: user["quota"] *= 1.2 elif user["used"] < user["quota"] * 0.2: user["quota"] *= 0.9 if __name__ == "__main__": tb = TokenBudget(total_budget=10000) tb.register_user("vip", quota=5000, priority=3) tb.register_user("normal", quota=2000, priority=2) tb.register_user("free", quota=500, priority=1) assert tb.enqueue("vip", 800) is True assert tb.enqueue("free", 300) is True result = tb.process_next() print("最高优先级出队:", result) print("VIP已用:", tb.users["vip"]["used"]) reclaimed = tb.reclaim_from_low_priority("vip", 1000) print("回收普通用户额度:", reclaimed)
tb = TokenBudget(total_budget=10000)创建全局预算池,总蓄水池只有 1 万个 Token,所有用户共享。tb.register_user("vip", quota=5000, priority=3)注册 VIP 用户,配额 5000,优先级权重 4 倍。if not self.can_schedule(user_id, tokens): return False入队前做双重检查,避免超额使用配额和爆掉全局池。self.request_queue.append((user_id, tokens, weight, time.time()))把请求放入队列,同时记录优先级权重,作为调度依据。self._dequeue_highest_priority()遍历队列找到权重最高的请求,保证 VIP 先生效。self.request_queue.remove(best)从队列剔除已取出请求,Python 的 deque 移除指定元素需要遍历。def reclaim_from_low_priority(self, user_id, amount)关键回收逻辑:只从优先级小于 3 的用户回收,并限制最多回收其使用的 30%。user["used"] -= reclaim低优先级用户被抢占后,已用量降低,腾出预算空间。def auto_adjust(self)动态调参:用量超 90% 的用户自动提高配额,用量低于 20% 则调低。
常见误区
误区给每个用户设置了配额之后,他的配额就是固定的,无论他怎么浪费都只能等周期结束才会重置。系统不能去动用户的额度,否则用户会投诉。
正解在平台型 AI 产品中,Token 预算是动态资源而非个人财物。商场不可能允许 VIP 顾客占用所有电梯空转,调度系统当然可以在预算紧张时回收低优先级用户的闲置额度。关键在于要设置回收比例上限,并且保留完善的审计记录,让用户知道自己的配额为什么变化。
为何常见:初学者把数据库里的 quota 字段当成硬性的“个人账户余额”,忘记了 token 是算力资源,而算力对平台来说是全局共享的稀缺物资。
误区只要把请求的 priority 设为最高,系统就会立即跳过队列执行,其他请求全部让路。
正解优先级调度只能让高优请求在队列里排得更靠前,但如果所有 GPU 资源都已被占满,再高的优先级也得等待。在真实系统中,高优先级还意味着更激进的抢占——只有当高优请求真正把低优请求的 Token 回收后,它才能获得物理算力。响应时间取决于可用算力,而不是单纯的优先级数值。
为何常见:很多人把消息队列里的 priority 和分布式调度里的资源抢占混为一谈,以为“排序靠前”就等于“立即执行”。
误区一旦触发降级或熔断,就说明系统出故障了。用户会看到错误信息,产品体验严重受损,这应该尽量避免甚至完全不允许发生。
正解降级和熔断恰恰是保护系统不被彻底打垮的机制。商场高峰期空调调低一档并不是失败,而是智慧。降级从“豪华模型”切到“轻量模型”,用户还能正常使用;熔断则直接快速失败,避免请求堆积造成雪崩。真正可怕的不是降级,而是没有降级导致全线崩溃。
为何常见:开发者往往追求“完美体验”,忽视了在资源有限的世界里,优雅降级是工程上的必然选择。
误区动态调参只是在某个监控指标超过阈值时,触发一个脚本把配额数值改大改小而已,和普通告警逻辑没什么区别。
正解动态调参是一个完整的反馈控制闭环,包含采集、平滑、决策、执行、评估五个环节。光有 if-else 不够,还需要防止系统在这些阈值之间反复震荡(抖动)。正确的做法是引入滑动窗口、平滑系数和冷却时间,让配额调整变得平滑、稳定、可预测。
为何常见:很多人把“自动化”等同于“if 条件”,低估了反馈控制系统在真实复杂流量下的稳定性设计难度。
误区抢占回收可以提升资源利用率,所以应该尽量激进,最好每次都把所有低优任务挂起,让高优任务独占全部资源。
正解过度激进会引发“回收风暴”——低优任务被频繁挂起,永远无法完成,最终产生大量半成品任务,反而浪费更多的 Token。所以回收一定要设上限比例 β,并且记录每次回收的成本。抢占机制的目标是“全局最优”,而不是“高优任务独赢”。
为何常见:初学者只看到抢占带来的高优先级提升,忽略了被抢占任务的上下文切换成本、恢复开销和用户体验损失。
面试题
Q1. 在 Token 预算管理中,“用户分级配额”的核心目的是什么?
- A.让付费用户获得无限计算资源
- B.公平分配有限算力并提升平台收益← 正确答案
- C.完全拒绝免费用户的使用请求
- D.增加代码的复杂度以便后续扩展
答案:B。分级配额的本质是“按需分配、按级保障”——给 VIP 高配额,给普通用户基础额度,给免费用户最低保障,目的是在算力有限的条件下兼顾公平与商业价值。选项 A 错在“无限”,任何系统都不可能无限分配;C 错在完全拒绝免费用户;D 不是目的而是副作用。
Q2. 下面哪个公式表示用户当前周期的剩余 Token 额度?
- A.Q = Q_limit × R_cycle - T_consumed← 正确答案
- B.Q = Q_limit + T_consumed
- C.Q = T_consumed - Q_limit
- D.Q = Q_limit ÷ T_consumed
答案:A。剩余额度 = 周期配额上限 × 有效周期数 - 已消耗 Token 数。就像商场给你的月卡额度减去你已经消费的金额。B 把消耗加进去了,方向反了;C 和 D 的运算关系不符合商业逻辑。
Q3. 加权公平排队(WFQ)中,一个请求分得的预算计算公式是 S_i = (w_i × B) / Σw_j,其中 w_i 代表什么?
- A.该请求已经消耗的 Token 数
- B.该请求在队列中的等待时间
- C.该请求的优先级权重值← 正确答案
- D.当前空闲的 GPU 数量
答案:C。w_i 是请求的优先级权重。权重越高,从总预算 B 中分得的比例越大,就像 VIP 顾客在电梯分配中拥有更高的“权重”。A 是消耗量,不参与权重计算;B 是等待时间;D 是物理资源,与分配比例无关。
Q4. 预算池总控中,“闲时余量共享”的公式为 T_effective = T_tenant + α × T_idle,其中 α 的作用是什么?
- A.控制租户的固定配额上限
- B.控制借用的激进程度,取值 0 到 1 之间← 正确答案
- C.表示全局 Token 池的总大小
- D.表示该租户已经消耗的 Token 总量
答案:B。α 是共享系数,决定空闲算力有多少比例可以被借走。α=0 表示完全不允许共享,α=1 表示所有空闲额度全部可借。A 是 T_tenant 的作用;C 是 B 的概念;D 是被减数而不是系数。
Q5. 当预算水位 W = U_current / B_total 达到 0.95 时,系统应该执行什么动作?
- A.完全正常运行
- B.软降级
- C.硬降级← 正确答案
- D.熔断
答案:C。根据水位区间:0.7 以下正常;0.7-0.9 软降级;0.9-1.0 硬降级;超过 1.0 熔断。0.95 落在“硬降级”区间,系统会把模型切换到更轻量的版本。A 是 0.7 以下的状态;B 是 0.7-0.9;D 要等到超过 100%。
Q6. Token 预算管理系统中的降级策略可以包含哪些手段?
- A.切换到更便宜的轻量模型← 正确答案
- B.把实时生成改为缓存命中← 正确答案
- C.直接关闭整个 GPU 集群
- D.缩短回答的最大长度← 正确答案
答案:ABD。降级的核心是“牺牲部分质量换取可用性”。A 和 D 是常见的模型和输出降级;B 用缓存代替实时计算,大幅减少消耗;C 是彻底关停系统,属于灾难性故障,不属于降级策略。
Q7. 抢占机制中设置“单次最大回收量 R_max = β × T_low,remaining”的目的主要是?
- A.让高优先级任务能一次性获得全部资源
- B.防止回收风暴导致低优先级任务永久饥饿← 正确答案
- C.简化低优先级任务的配额计算程序
- D.提升低优先级用户的使用体验
答案:B。如果一次抢走低优先级任务的所有剩余配额,它永远无法完成。设置 β 限制每轮只能抢一部分,让低优任务有机会继续执行。A 恰恰是公式要避免的;C 不是目的;D 与抢占本身方向相悖。
Q8. 任务优先级调度中最常采用哪些技术来实现“高优先跑”?
- A.用加权公平排队算法分配预算← 正确答案
- B.用优先级队列在请求入队时插队← 正确答案
- C.用全局锁将所有请求串行化
- D.用请求调度权重决定预算占比← 正确答案
答案:ABD。A 和 D 都是通过权重比例分配总预算,让高优请求获得更大份额;B 方法是在队列排序时抬高优先级。C 的全局锁会严重降低吞吐量,与调度优化的目标背道而驰。
Q9. 动态调参闭环中,指数移动平均公式 E_t = λ × I_t + (1-λ) × E_t-1 解决了什么问题?
- A.避免系统对瞬时毛刺流量做出过度反应← 正确答案
- B.降低模型推理的延迟时间
- C.增加用户配额的计算复杂度
- D.消除多个租户之间的数据隔离
答案:A。指数移动平均对当前实测值 I_t 和历史平滑值 E_t-1 做加权,λ 越小,历史权重越大,平滑效果越强。如果没有它,调度系统看到瞬间峰值就会频繁抖动调整。B 与延迟无关;C 和 D 都不是这个公式解决的问题。
Q10. 多个用户共享全局 Token 预算池时,下面的哪个说法是正确的?
- A.全局池没有上限,可以无限扩容
- B.租户间配额隔离可以防止单个租户拖垮整个平台← 正确答案
- C.抢占机制永远只对低优先级用户生效
- D.熔断器一旦打开就永远不会关闭
答案:B。租户隔离是预算池设计的核心——每个租户有自己的保底配额,即使某个租户用量爆炸,也不会占用其他租户和全局资源。A 错误,全局池受 GPU 吞吐限制;C 抢占也会作用于系统级批处理任务;D 熔断器会通过半开状态探测自动恢复。