v04_continuous_batching
本版本引入什么
本版本加入一个小型连续批处理引擎。已有请求继续解码时可以接纳新请求,完成的请求也可以离开,而无需停止整个批次。
为什么引入
静态批次很简单,但服务流量不是静态的。如果引擎必须等批次中所有请求结束后才接纳新工作,快速请求会被慢请求阻塞,GPU 利用率也会下降。
核心原则
每个步骤从等待池和运行池中选择工作:
- 预填充工作启动新请求。
- 解码工作让运行中的请求前进一个词元。
- 已完成请求被取出并返回结果。
重要变化在于,批次现在是一串请求状态转换,而不是固定列表。
建议对比的文件
engine.py:步骤循环。scheduler.py:接纳和移除请求。request.py:生命周期字段。kvcache.py:请求在引擎中移动时的缓存所有权。
保留的权衡
策略有意保持简单,在引入固定槽位和静态缓冲区前,把连续批处理机制直接呈现出来。