vllm 中 async scheduling
💡
原文中文,约6400字,阅读约需16分钟。
📝
内容提要
vLLM 的异步调度实现较为复杂,本文通过具体查询请求模拟调度器与工作者的执行流程,并标注关键状态变化。分析指出,调度过程中的状态假设可能导致错误,需进行状态矫正。建议在解码阶段仅维护输出令牌数量,以简化调度器的状态管理。
🎯
关键要点
- vLLM 的异步调度实现复杂,需手动模拟调度器与工作者的执行流程。
- 调度过程中的状态假设可能导致错误,需进行状态矫正。
- 在解码阶段建议仅维护输出令牌数量,以简化调度器的状态管理。
- 调度器在执行过程中需要处理假设状态,可能导致状态不准确。
- 发现了 3 个 bug,主要是由于状态矫正不足导致的。
- vLLM v1 的初衷是统一处理 prefill、chunked prefill 和 decode。
- 引入异步调度后,worker 侧行为变得不确定,增加了复杂性。
- 建议在异步调度时不维护准确状态,仅维护输出令牌数量。
➡️