ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

冷前缀流量涌来时:并发许可必须覆盖完整推理请求

冷前缀流量涌来时:并发许可必须覆盖完整推理请求

一个网关函数把inflight加一,返回“允许执行”,随后在finally里减一,看起来很完整。问题是,后端推理还没开始,这个许可就已经归还了。高峰流量下,计数器显示很低,GPU 上却可能排满了冷前缀请求。

10 月的 Mooncake 项目更新涉及跨实例 KV 缓存池的连接器。共享缓存扩展了复用路径,也让网关更难仅凭一个前缀字符串判断请求代价。缓存命中信息应来自可核对的引擎状态,不能由FORCE_HIT这样的标签凭空保证。项目更新

许可的边界跟着工作走

一次冷请求的许可应该覆盖实际计算及必要的响应清理,至少不能早于后端请求结束。异常与取消也必须经过相同的释放路径。单进程协程内,可以用asyncio.Semaphore表达这个生命周期;多进程或多网关节点需要额外的全局协调,本文没有实现。Python 同步原语文档

图中的Infer到Finish都在许可范围内;错误路径绕过正常结束,仍需归还许可。图标是生命周期示意,不表示真实模型架构。

import asyncio class Gateway: def __init__(self, limit): if limit < 1: raise ValueError('positive limit required') self.permits = asyncio.Semaphore(limit) self.active = 0 self.peak = 0 async def infer(self, work): async with self.permits: self.active += 1 self.peak = max(self.peak, self.active) try: return await work() finally: self.active -= 1 async def main(): gate = Gateway(2) async def success(): await asyncio.sleep(0) return 'ok' async def fail(): await asyncio.sleep(0) raise ValueError('fixture failure') tasks = [gate.infer(success) for _ in range(5)] + [gate.infer(fail)] results = await asyncio.gather(*tasks, return_exceptions=True) assert gate.peak == 2 and gate.active == 0 assert sum(isinstance(x, ValueError) for x in results) == 1 assert await gate.infer(success) == 'ok' started = asyncio.Event() async def waiting(): started.set() await asyncio.Event().wait() cancelled = asyncio.create_task(gate.infer(waiting)) await started.wait() cancelled.cancel() await asyncio.gather(cancelled, return_exceptions=True) assert gate.active == 0 assert await gate.infer(success) == 'ok' print('peak=2; failure/cancellation released permits; next request: PASS') asyncio.run(main())

热请求也不能跳过容量账

热前缀命中只是减少了部分预填充工作,输出解码仍然消耗资源。冷流许可、总请求上限和租户额度应分开;否则热请求也可能挤满输出队列。流式接口还要说明,许可覆盖的是收到响应头、读完流,还是上游确认取消,三者不是同一个时刻。

示例已在本地验证成功请求、异常请求、主动取消和后续请求的许可回收。它使用让出调度的教学协程,没有连接 GPU、Mooncake 或模型 API;这里的peak=2是程序不变量,不是吞吐性能结论。要开展真实容量测试,应记录排队时间、预填充时间、解码时间、拒绝率和取消后的资源回收,不能把总延迟降低的倍数叫作可用性提升。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进